X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/8f3d4e69c3ccc88f0572a90a367eeaa98e3675c2..5fa0e9c00733a13df54dab638fc7bd79231d968e:/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 e58a001eb..df8dfc5c1 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c @@ -28,6 +28,13 @@ this software. */ +/** \file + * + * Bluetooth L2CAP layer management code. This module managed the creation, + * configuration and teardown of L2CAP channels, and manages packet reception + * and sending to and from other Bluetooth devices. + */ + /* TODO: Make SendPacket respect receiver's MTU TODO: Make ReceivePacket stitch together MTU fragments (?) @@ -192,7 +199,7 @@ static void Bluetooth_ProcessIncommingACLPackets(void) Pipe_Read_Stream_LE(PacketData, DataHeader.PayloadLength); Pipe_ClearIN(); Pipe_Freeze(); - + Bluetooth_PacketReceived(PacketData, DataHeader.PayloadLength, Bluetooth_GetChannelData(DataHeader.DestinationChannel, CHANNEL_SEARCH_LOCALNUMBER)); } @@ -227,8 +234,10 @@ uint8_t Bluetooth_SendPacket(void* Data, const uint16_t DataLen, Bluetooth_Chann DataHeader.DestinationChannel = (Channel == NULL) ? BT_CHANNEL_SIGNALING : Channel->RemoteNumber; Pipe_SelectPipe(BLUETOOTH_DATA_OUT_PIPE); + + Pipe_WaitUntilReady(); Pipe_Unfreeze(); - + /* Write the packet contents to the pipe so that it can be sent to the remote device */ Pipe_Write_Stream_LE(&ACLPacketHeader, sizeof(ACLPacketHeader)); Pipe_Write_Stream_LE(&DataHeader, sizeof(DataHeader)); @@ -247,7 +256,7 @@ uint8_t Bluetooth_SendPacket(void* Data, const uint16_t DataLen, Bluetooth_Chann return BT_SENDPACKET_NoError; } -/** Opens a bluetooth channel to the currently connected remote device, so that data can be exchanged. +/** Opens a Bluetooth channel to the currently connected remote device, so that data can be exchanged. * * \note The channel is not immediately opened when this function returns - it must undergo a two way * connection and configuration process first as the main Bluetooth stack processing task is @@ -310,7 +319,7 @@ Bluetooth_Channel_t* Bluetooth_OpenChannel(const uint16_t PSM) return ChannelData; } -/** Closes a bluetooth channel that is open to the currently connected remote device, so that no further data +/** Closes a Bluetooth channel that is open to the currently connected remote device, so that no further data * can be exchanged. * * \note The channel is not immediately closed when this function returns - it must undergo an asynchronous @@ -363,11 +372,11 @@ static inline void Bluetooth_Signal_ConnectionReq(const BT_Signal_Header_t* cons Pipe_ClearIN(); Pipe_Freeze(); - + BT_ACL_DEBUG(1, "<< L2CAP Connection Request"); BT_ACL_DEBUG(2, "-- PSM: 0x%04X", ConnectionRequest.PSM); BT_ACL_DEBUG(2, "-- Source Channel: 0x%04X", ConnectionRequest.SourceChannel); - + /* Try to retrieve the existing channel's information structure if it exists */ Bluetooth_Channel_t* ChannelData = Bluetooth_GetChannelData(ConnectionRequest.SourceChannel, CHANNEL_SEARCH_REMOTENUMBER);