}\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