X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/1f682ca2de8df89e3fef0077b33070cf2c85e798..55db57e1ede3c44a3b027cb442fa12e969b37f4b:/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c?ds=sidebyside diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c index 108abbf3d..a8145c47d 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c @@ -381,14 +381,26 @@ static inline void Bluetooth_Signal_ConnectionReq(BT_Signal_Header_t* SignalComm } } } + + uint8_t ChannelStatus = BT_CONNECTION_REFUSED_RESOURCES; /* Reset the channel item contents only if a channel entry was found for it */ if (ChannelData != NULL) { - ChannelData->RemoteNumber = ConnectionRequest.SourceChannel; - ChannelData->PSM = ConnectionRequest.PSM; - ChannelData->LocalMTU = MAXIMUM_CHANNEL_MTU; - ChannelData->State = Channel_Config_WaitConfig; + /* Check if the user application will allow the connection based on its PSM */ + if (Bluetooth_ChannelConnectionRequest(ConnectionRequest.PSM)) + { + ChannelData->RemoteNumber = ConnectionRequest.SourceChannel; + ChannelData->PSM = ConnectionRequest.PSM; + ChannelData->LocalMTU = MAXIMUM_CHANNEL_MTU; + ChannelData->State = Channel_Config_WaitConfig; + + ChannelStatus = BT_CONNECTION_SUCCESSFUL; + } + else + { + ChannelStatus = BT_CONNECTION_REFUSED_PSM; + } } struct @@ -405,8 +417,7 @@ static inline void Bluetooth_Signal_ConnectionReq(BT_Signal_Header_t* SignalComm /* Fill out the Connection Response in the response packet */ ResponsePacket.ConnectionResponse.DestinationChannel = ChannelData->LocalNumber; ResponsePacket.ConnectionResponse.SourceChannel = ChannelData->RemoteNumber; - ResponsePacket.ConnectionResponse.Result = (ChannelData == NULL) ? BT_CONNECTION_REFUSED_RESOURCES : - BT_CONNECTION_SUCCESSFUL; + ResponsePacket.ConnectionResponse.Result = ChannelStatus; ResponsePacket.ConnectionResponse.Status = 0x00; Bluetooth_SendPacket(&ResponsePacket, sizeof(ResponsePacket), NULL);