/* Check if the channel has no corresponding entry - remote did not open it first */\r
if (RFCOMMChannel == NULL)\r
{\r
- /* Find a free entry in the RFCOMM channel multiplexer state array */\r
- for (uint8_t i = 0; i < RFCOMM_MAX_OPEN_CHANNELS; i++)\r
- {\r
- /* If the channel's state is closed, the channel state entry is free */\r
- if (RFCOMM_Channels[i].State == RFCOMM_Channel_Closed)\r
- {\r
- RFCOMMChannel = &RFCOMM_Channels[i];\r
- RFCOMMChannel->DLCI = Params->DLCI;\r
- RFCOMMChannel->MTU = 0xFFFF;\r
- RFCOMMChannel->Remote.Signals = 0 | (1 << 0);\r
- RFCOMMChannel->Remote.BreakSignal = 0 | (1 << 0);\r
- RFCOMMChannel->Local.Signals = RFCOMM_SIGNAL_RTC | RFCOMM_SIGNAL_RTR | RFCOMM_SIGNAL_DV | (1 << 0);\r
- RFCOMMChannel->Local.BreakSignal = 0 | (1 << 0);\r
- RFCOMMChannel->ConfigFlags = 0;\r
- break;\r
- }\r
- }\r
+ /* Create a new entry in the channel table for the new channel */\r
+ RFCOMMChannel = RFCOMM_GetFreeChannelEntry(Params->DLCI);\r
\r
/* No free entry was found, discard the request */\r
if (RFCOMMChannel == NULL)\r