}\r
}\r
}\r
+ \r
+ uint8_t ChannelStatus = BT_CONNECTION_REFUSED_RESOURCES;\r
\r
/* Reset the channel item contents only if a channel entry was found for it */\r
if (ChannelData != NULL)\r
{\r
- ChannelData->RemoteNumber = ConnectionRequest.SourceChannel;\r
- ChannelData->PSM = ConnectionRequest.PSM;\r
- ChannelData->LocalMTU = MAXIMUM_CHANNEL_MTU;\r
- ChannelData->State = Channel_Config_WaitConfig;\r
+ /* Check if the user application will allow the connection based on its PSM */\r
+ if (Bluetooth_ChannelConnectionRequest(ConnectionRequest.PSM))\r
+ {\r
+ ChannelData->RemoteNumber = ConnectionRequest.SourceChannel;\r
+ ChannelData->PSM = ConnectionRequest.PSM;\r
+ ChannelData->LocalMTU = MAXIMUM_CHANNEL_MTU;\r
+ ChannelData->State = Channel_Config_WaitConfig;\r
+
+ ChannelStatus = BT_CONNECTION_SUCCESSFUL;\r
+ }\r
+ else\r
+ {\r
+ ChannelStatus = BT_CONNECTION_REFUSED_PSM; \r
+ }\r
}\r
\r
struct\r
/* Fill out the Connection Response in the response packet */\r
ResponsePacket.ConnectionResponse.DestinationChannel = ChannelData->LocalNumber;\r
ResponsePacket.ConnectionResponse.SourceChannel = ChannelData->RemoteNumber;\r
- ResponsePacket.ConnectionResponse.Result = (ChannelData == NULL) ? BT_CONNECTION_REFUSED_RESOURCES :\r
- BT_CONNECTION_SUCCESSFUL;\r
+ ResponsePacket.ConnectionResponse.Result = ChannelStatus;\r
ResponsePacket.ConnectionResponse.Status = 0x00;\r
\r
Bluetooth_SendPacket(&ResponsePacket, sizeof(ResponsePacket), NULL);\r