+ Bluetooth_ProcessACLPackets();\r
+ \r
+ for (uint8_t i = 0; i < BLUETOOTH_MAX_OPEN_CHANNELS; i++)\r
+ {\r
+ Bluetooth_Channel_t* ChannelData = &Bluetooth_Connection.Channels[i];\r
+ \r
+ bool MustSendConfigReq = true;\r
+ \r
+ switch (ChannelData->State)\r
+ {\r
+ case Channel_Config_WaitConfig:\r
+ ChannelData->State = Channel_Config_WaitReqResp;\r
+ break;\r
+ case Channel_Config_WaitSendConfig:\r
+ ChannelData->State = Channel_Config_WaitResp;\r
+ break;\r
+ default:\r
+ MustSendConfigReq = false;\r
+ break;\r
+ }\r
+ \r
+ if (MustSendConfigReq)\r
+ {\r
+ BT_ACL_Header_t ACLPacketHeader;\r
+ BT_DataPacket_Header_t DataHeader;\r
+ BT_Signal_Header_t SignalCommandHeader;\r
+ BT_Signal_ConfigurationReq_t ConfigurationRequest;\r
+\r
+ ACLPacketHeader.ConnectionHandle = Bluetooth_Connection.ConnectionHandle;\r
+ ACLPacketHeader.DataLength = sizeof(DataHeader) + sizeof(SignalCommandHeader) + sizeof(ConfigurationRequest);\r
+ DataHeader.PayloadLength = sizeof(SignalCommandHeader) + sizeof(ConfigurationRequest);\r
+ DataHeader.DestinationChannel = BT_CHANNEL_SIGNALING;\r
+ SignalCommandHeader.Code = BT_SIGNAL_CONFIGURATION_REQUEST;\r
+ SignalCommandHeader.Identifier = ++Bluetooth_Connection.SignallingIdentifier;\r
+ SignalCommandHeader.Length = sizeof(ConfigurationRequest);\r
+ \r
+ ConfigurationRequest.DestinationChannel = ChannelData->RemoteNumber;\r
+ ConfigurationRequest.Flags = 0;\r
+\r
+ Pipe_SelectPipe(BLUETOOTH_DATA_OUT_PIPE);\r
+ Pipe_Unfreeze();\r
+ \r
+ Pipe_Write_Stream_LE(&ACLPacketHeader, sizeof(ACLPacketHeader));\r
+ Pipe_Write_Stream_LE(&DataHeader, sizeof(DataHeader));\r
+ Pipe_Write_Stream_LE(&SignalCommandHeader, sizeof(SignalCommandHeader));\r
+ Pipe_Write_Stream_LE(&ConfigurationRequest, sizeof(ConfigurationRequest));\r
+\r
+ Pipe_Freeze();\r
+\r
+ #if (ACL_DEBUG_LEVEL > 1)\r
+ BT_ACL_DEBUG("Packet Sent", NULL);\r
+ BT_ACL_DEBUG("-- Connection Handle: 0x%04X", (ACLPacketHeader.ConnectionHandle & 0x0FFF));\r
+ BT_ACL_DEBUG("-- Data Length: 0x%04X", ACLPacketHeader.DataLength);\r
+ BT_ACL_DEBUG("-- Destination Channel: 0x%04X", DataHeader.DestinationChannel);\r
+ BT_ACL_DEBUG("-- Payload Length: 0x%04X", DataHeader.PayloadLength); \r
+ #endif\r
+ #if (ACL_DEBUG_LEVEL > 0)\r
+ BT_ACL_DEBUG(">> L2CAP Configuration Request", NULL);\r
+ #endif\r
+ #if (ACL_DEBUG_LEVEL > 1)\r
+ BT_ACL_DEBUG("-- Destination Channel: 0x%04X", ConfigurationRequest.DestinationChannel);\r
+ #endif\r
+ }\r
+ }\r
+}\r
+\r
+static void Bluetooth_ProcessACLPackets(void)\r
+{\r
+ BT_ACL_Header_t ACLPacketHeader;\r
+ BT_DataPacket_Header_t DataHeader;\r