provide hci_acl_packet_types_for_buffer_size to determine valid packet types

This commit is contained in:
matthias.ringwald 2011-07-26 19:51:27 +00:00
parent 28ee662e3a
commit 1d93f56091
2 changed files with 22 additions and 1 deletions

View File

@ -575,6 +575,27 @@ void packet_handler(uint8_t packet_type, uint8_t *packet, uint16_t size){
} }
} }
static uint16_t packet_type_sizes[] = {
0, HCI_ACL_2DH1_SIZE, HCI_ACL_3DH1_SIZE, HCI_ACL_DM1_SIZE,
HCI_ACL_DH1_SIZE, 0, 0, 0,
HCI_ACL_2DH3_SIZE, HCI_ACL_3DH3_SIZE, HCI_ACL_DM3_SIZE, HCI_ACL_DH3_SIZE,
HCI_ACL_2DH5_SIZE, HCI_ACL_3DH5_SIZE, HCI_ACL_DM5_SIZE, HCI_ACL_DH5_SIZE
};
uint16_t hci_acl_packet_types_for_buffer_size(uint16_t buffer_size){
uint16_t packet_types = 0;
int i;
for (i=0;i<16;i++){
if (packet_type_sizes[i] == 0) continue;
if (packet_type_sizes[i] <= buffer_size){
packet_types |= 1 << i;
}
}
// flip bits for "may not be used"
packet_types ^= 0x3306;
return packet_types;
}
/** Register HCI packet handlers */ /** Register HCI packet handlers */
void hci_register_packet_handler(void (*handler)(uint8_t packet_type, uint8_t *packet, uint16_t size)){ void hci_register_packet_handler(void (*handler)(uint8_t packet_type, uint8_t *packet, uint16_t size)){
hci_stack.packet_handler = handler; hci_stack.packet_handler = handler;

View File

@ -69,7 +69,7 @@ extern "C" {
#define HCI_ACL_DH5_SIZE 339 #define HCI_ACL_DH5_SIZE 339
#define HCI_ACL_2DH3_SIZE 367 #define HCI_ACL_2DH3_SIZE 367
#define HCI_ACL_3DH3_SIZE 552 #define HCI_ACL_3DH3_SIZE 552
#define HCI_ACL_2HH5_SIZE 679 #define HCI_ACL_2DH5_SIZE 679
#define HCI_ACL_3DH5_SIZE 1021 #define HCI_ACL_3DH5_SIZE 1021
// OGFs // OGFs