Add bluetooth channel connection callback to the incomplete BluetoothHost demo.
[pub/USBasp.git] / Demos / Host / Incomplete / BluetoothHost / Lib / BluetoothACLPackets.c
index 108abbf..a8145c4 100644 (file)
@@ -381,14 +381,26 @@ static inline void Bluetooth_Signal_ConnectionReq(BT_Signal_Header_t* SignalComm
                        }\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
@@ -405,8 +417,7 @@ static inline void Bluetooth_Signal_ConnectionReq(BT_Signal_Header_t* SignalComm
        /* 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