Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Bluetooth Packet Buffering and Fragmentation (Windows CE 5.0)

Windows CE 5.0
Send Feedback

Data packets are sent to the HCI layer by using the HCI_DataPacketDown_In interface and the HCI_DataPacketDown_Out callback function.

The following code shows the function pointer declarations for HCI_DataPacketDown_In and HCI_DataPacketDown_Out.

typedef int (*HCI_DataPacketDown_In) (
  HANDLE         hDeviceContext,
  void          *pCallContext,
  unsigned short connection_handle,
  BD_BUFFER     *pBuffer
);
typedef int (*HCI_DataPacketDown_Out) (
  void    *pCallContext,
  int      iError
);

Both data and command packets are placed in the HCI queue. The upper layers of the Bluetooth stack do not control data packet fragmentation, which occurs automatically.

To reassemble data on the way up, it is required that the size of the total packet is known. If the protocol follows the L2CAP packet format ( the data is length-prefixed), then reassembly is handled by the HCI, and the packet is delivered. Reassembled data packets are notified by the HCI by using the HCI_DataPacketUp event.

The following code shows the function pointer declaration for HCI_DataPacketUp.

typedef int (*HCI_DataPacketUp) (
  void             *pUserContext,
  unsigned short    connection_handle,
  BD_BUFFER        *pBuffer
);

To indicate pre-reassembly data packets, the HCI uses the HCI_DataPacketUpAclUnbuffered event. However, if upper interface exposes the HCI_DataPacketUpAclUnbuffered, it is expected to handle the buffering of incoming asynchronous connection-less (ACL) packets, which will be reported to it immediately. In this case, there are no restrictions on the packet format.

The following code shows the function pointer declaration for HCI_DataPacketUpAclUnbuffered.

typedef int (*HCI_DataPacketUpAclUnbuffered) (
  void             *pUserContext,
  unsigned short    connection_handle,
  unsigned char     boundary,
  unsigned char     broadcast,
  BD_BUFFER        *pBuffer
);

See Bt_ddi.h for complete specifications of the HCI interface.

See Also

Host Controller Interface | Bluetooth Protocol Stack


Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.


Show:
© 2015 Microsoft