Add Mecurial repository mirror link to the library documentation.
[pub/USBasp.git] / Demos / Host / Incomplete / BluetoothHost / Lib / BluetoothACLPackets.c
index 160aa3a..df8dfc5 100644 (file)
   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);
 
@@ -489,7 +498,6 @@ static inline void Bluetooth_Signal_ConfigurationReq(const BT_Signal_Header_t* c
 
        BT_ACL_DEBUG(1, "<< L2CAP Configuration Request");
        BT_ACL_DEBUG(2, "-- Destination Channel: 0x%04X", ConfigurationRequest.DestinationChannel);
-       BT_ACL_DEBUG(2, "-- Remote MTU: 0x%04X", ChannelData->RemoteMTU);
        BT_ACL_DEBUG(2, "-- Options Len: 0x%04X", OptionsLen);
 
        /* Only look at the channel configuration options if a valid channel entry for the local channel number was found */