+ /* Find the existing channel's entry in the channel table */
+ RFCOMM_Channel_t* RFCOMMChannel = RFCOMM_GetChannelData(FrameAddress->DLCI);
+
+ /* Existing entry not found, create a new entry for the channel */
+ if (RFCOMMChannel == NULL)
+ RFCOMMChannel = RFCOMM_GetFreeChannelEntry(FrameAddress->DLCI);
+
+ /* If space was found in the channel table for the new channel, ACK the request */
+ if (RFCOMMChannel != NULL)
+ {
+ BT_RFCOMM_DEBUG(1, ">> UA Sent");
+
+ /* Free channel found, or request was to the control channel - accept SABM by sending a UA frame */
+ RFCOMM_SendFrame(FrameAddress->DLCI, true, (RFCOMM_Frame_UA | FRAME_POLL_FINAL), 0, NULL, Channel);
+ }
+ else
+ {
+ BT_RFCOMM_DEBUG(1, ">> DM Sent");
+
+ /* No free channel in the multiplexer - decline the SABM by sending a DM frame */
+ RFCOMM_SendFrame(FrameAddress->DLCI, true, (RFCOMM_Frame_DM | FRAME_POLL_FINAL), 0, NULL, Channel);
+ }