Add packet reception and send routines to the ACL layer of the incomplete Bluetooth...
[pub/USBasp.git] / Demos / Host / Incomplete / BluetoothHost / Lib / BluetoothACLPackets.c
index 17503ea..c2c9902 100644 (file)
@@ -91,21 +91,35 @@ void Bluetooth_ProcessACLPackets(void)
        }\r
        else\r
        {\r
-               uint8_t DataPayload[DataHeader.PayloadLength];\r
-               Pipe_Read_Stream_LE(&DataPayload, sizeof(DataPayload));\r
-               DataHeader.PayloadLength = 0;\r
+               Bluetooth_PacketReceived(&DataHeader.PayloadLength, Bluetooth_GetChannelData(DataHeader.DestinationChannel, true));\r
        \r
-               BT_ACL_DEBUG("-- Data Payload: ", NULL);\r
-               for (uint16_t B = 0; B < sizeof(DataPayload); B++)\r
-                 printf("0x%02X ", DataPayload[B]);\r
-               printf("\r\n");\r
-\r
-               Pipe_Discard_Stream(ACLPacketHeader.DataLength);\r
-               Pipe_ClearIN();         \r
+               Pipe_SelectPipe(BLUETOOTH_DATA_IN_PIPE);\r
+               Pipe_Discard_Stream(DataHeader.PayloadLength);\r
+               Pipe_ClearIN();\r
                Pipe_Freeze();\r
        }\r
 }\r
 \r
+void Bluetooth_SendPacket(uint8_t* Data, uint16_t DataLen, Bluetooth_Channel_t* Channel)\r
+{\r
+       Bluetooth_ACL_Header_t        ACLPacketHeader;\r
+       Bluetooth_DataPacket_Header_t DataHeader;\r
+\r
+       ACLPacketHeader.ConnectionHandle      = Bluetooth_Connection.ConnectionHandle;\r
+       ACLPacketHeader.DataLength            = sizeof(DataHeader) + DataLen;\r
+       DataHeader.PayloadLength              = DataLen;\r
+       DataHeader.DestinationChannel         = Channel->RemoteNumber;\r
+\r
+       Pipe_SelectPipe(BLUETOOTH_DATA_OUT_PIPE);\r
+       Pipe_Unfreeze();\r
+       \r
+       Pipe_Write_Stream_LE(&ACLPacketHeader, sizeof(ACLPacketHeader));\r
+       Pipe_Write_Stream_LE(&DataHeader, sizeof(DataHeader));\r
+       Pipe_Write_Stream_LE(Data, DataLen);\r
+\r
+       Pipe_Freeze();\r
+}\r
+\r
 static inline void Bluetooth_SignalPacket_ConnectionRequest(Bluetooth_ACL_Header_t* ACLPacketHeader,\r
                                                             Bluetooth_DataPacket_Header_t* DataHeader,\r
                                                             Bluetooth_SignalCommand_Header_t* SignalCommandHeader)\r