diff --git a/src/l2cap.c b/src/l2cap.c index edc2fab91..bbe8045d7 100644 --- a/src/l2cap.c +++ b/src/l2cap.c @@ -127,6 +127,7 @@ static void l2cap_ertm_retransmission_timeout_callback(btstack_timer_source_t * typedef struct l2cap_fixed_channel { btstack_packet_handler_t callback; uint8_t waiting_for_can_send_now; + uint8_t next_request; } l2cap_fixed_channel_t; #ifdef ENABLE_CLASSIC @@ -145,7 +146,10 @@ static l2cap_signaling_response_t signaling_responses[NR_PENDING_SIGNALING_RESPO static int signaling_responses_pending; static btstack_packet_callback_registration_t hci_event_callback_registration; +#define FIXED_CHANNEL_FIFO_INVALID_INDEX 0xff static l2cap_fixed_channel_t fixed_channels[L2CAP_FIXED_CHANNEL_TABLE_SIZE]; +static uint8_t fixed_channel_head_index = FIXED_CHANNEL_FIFO_INVALID_INDEX; +static uint8_t fixed_channel_tail_index = FIXED_CHANNEL_FIFO_INVALID_INDEX; #ifdef ENABLE_BLE // only used for connection parameter update events @@ -741,6 +745,10 @@ void l2cap_init(void){ l2cap_event_packet_handler = NULL; #endif memset(fixed_channels, 0, sizeof(fixed_channels)); + int i; + for (i=0;i +#include +#include + +#define L2CAP_FIXED_CHANNEL_TABLE_SIZE 3 +#define FIXED_CHANNEL_FIFO_INVALID_INDEX 0xff + +typedef struct l2cap_fixed_channel { + uint8_t waiting_for_can_send_now; + uint8_t next_request; +} l2cap_fixed_channel_t; + +static l2cap_fixed_channel_t fixed_channels[L2CAP_FIXED_CHANNEL_TABLE_SIZE]; +static uint8_t fixed_channel_head_index = FIXED_CHANNEL_FIFO_INVALID_INDEX; +static uint8_t fixed_channel_tail_index = FIXED_CHANNEL_FIFO_INVALID_INDEX; + +static void fifo_init(void){ + printf("\ninit\n"); + memset(fixed_channels, 0, sizeof(fixed_channels)); + int i; + for (i=0;i