When Kotlin provides the identity via callback (from the identity characteristic read), the address_to_identity mapping gets set BEFORE the 16-byte handshake data arrives through _data_received_callback. Previously, _handle_identity_handshake would see the identity already exists and return False, causing the 16-byte handshake data to be passed to the reassembler where it fails with "Invalid fragment type 0xXX". The fix checks if received 16-byte data matches the known identity and consumes it silently if so. This prevents the handshake data from being misinterpreted as a fragment. Symptoms fixed: - BLEReassembler: Invalid fragment type 0xc9 (first byte of peer identity) - Messages not flowing even though connections appear established Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| BLEAgent.py | ||
| BLEFragmentation.py | ||
| BLEGATTServer.py | ||
| BLEInterface.py | ||
| bluetooth_driver.py | ||
| linux_bluetooth_driver.py | ||