hci: handle connection collision, ignore page timeout after incoming connection event

This commit is contained in:
Matthias Ringwald 2025-01-22 11:49:48 +01:00
parent 0ca3fe1c31
commit be7469f189

View File

@ -3859,15 +3859,20 @@ static void event_handler(uint8_t *packet, uint16_t size){
if (conn) { if (conn) {
switch (conn->state){ switch (conn->state){
// expected states // expected states
case ACCEPTED_CONNECTION_REQUEST:
case SENT_CREATE_CONNECTION: case SENT_CREATE_CONNECTION:
break; break;
// unexpected state -> ignore // Page Timeout after incoming connection indicates connection collision => ignore event
case RECEIVED_CONNECTION_REQUEST:
case ACCEPTED_CONNECTION_REQUEST:
if (hci_event_connection_complete_get_status(packet) == ERROR_CODE_PAGE_TIMEOUT) {
return;
}
break;
// unexpected state -> ignore and don't forward event to app
default: default:
// don't forward event to app
return; return;
} }
if (!packet[2]){ if (hci_event_connection_complete_get_status(packet) == ERROR_CODE_SUCCESS){
conn->state = OPEN; conn->state = OPEN;
conn->con_handle = little_endian_read_16(packet, 3); conn->con_handle = little_endian_read_16(packet, 3);