hci.c (24b3c62931f131de8243230463f3536778ba1e63) hci.c (5611a760af48d1ce1beea59c7908be73bd2393f1)
1/*
2 * Copyright (C) 2014 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 807 unchanged lines hidden (view full) ---

816
817 int i;
818 log_info("HCI: handle adv report with num reports: %d", num_reports);
819 uint8_t event[12 + LE_ADVERTISING_DATA_SIZE]; // use upper bound to avoid var size automatic var
820 for (i=0; i<num_reports;i++){
821 uint8_t data_length = packet[offset + 8];
822 uint8_t event_size = 10 + data_length;
823 int pos = 0;
1/*
2 * Copyright (C) 2014 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 807 unchanged lines hidden (view full) ---

816
817 int i;
818 log_info("HCI: handle adv report with num reports: %d", num_reports);
819 uint8_t event[12 + LE_ADVERTISING_DATA_SIZE]; // use upper bound to avoid var size automatic var
820 for (i=0; i<num_reports;i++){
821 uint8_t data_length = packet[offset + 8];
822 uint8_t event_size = 10 + data_length;
823 int pos = 0;
824 event[pos++] = GAP_LE_ADVERTISING_REPORT;
824 event[pos++] = GAP_LE_EVENT_ADVERTISING_REPORT;
825 event[pos++] = event_size;
826 memcpy(&event[pos], &packet[offset], 1+1+6); // event type + address type + address
827 offset += 8;
828 pos += 8;
829 event[pos++] = packet[offset + 1 + data_length]; // rssi
830 event[pos++] = packet[offset++]; //data_length;
831 memcpy(&event[pos], &packet[offset], data_length);
832 pos += data_length;

--- 2210 unchanged lines hidden (view full) ---

3043 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
3044 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
3045}
3046
3047void hci_emit_security_level(hci_con_handle_t con_handle, gap_security_level_t level){
3048 log_info("hci_emit_security_level %u for handle %x", level, con_handle);
3049 uint8_t event[5];
3050 int pos = 0;
825 event[pos++] = event_size;
826 memcpy(&event[pos], &packet[offset], 1+1+6); // event type + address type + address
827 offset += 8;
828 pos += 8;
829 event[pos++] = packet[offset + 1 + data_length]; // rssi
830 event[pos++] = packet[offset++]; //data_length;
831 memcpy(&event[pos], &packet[offset], data_length);
832 pos += data_length;

--- 2210 unchanged lines hidden (view full) ---

3043 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
3044 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
3045}
3046
3047void hci_emit_security_level(hci_con_handle_t con_handle, gap_security_level_t level){
3048 log_info("hci_emit_security_level %u for handle %x", level, con_handle);
3049 uint8_t event[5];
3050 int pos = 0;
3051 event[pos++] = GAP_SECURITY_LEVEL;
3051 event[pos++] = GAP_EVENT_SECURITY_LEVEL;
3052 event[pos++] = sizeof(event) - 2;
3053 bt_store_16(event, 2, con_handle);
3054 pos += 2;
3055 event[pos++] = level;
3056 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
3057 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
3058}
3059
3060void hci_emit_dedicated_bonding_result(bd_addr_t address, uint8_t status){
3061 log_info("hci_emit_dedicated_bonding_result %u ", status);
3062 uint8_t event[9];
3063 int pos = 0;
3052 event[pos++] = sizeof(event) - 2;
3053 bt_store_16(event, 2, con_handle);
3054 pos += 2;
3055 event[pos++] = level;
3056 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
3057 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
3058}
3059
3060void hci_emit_dedicated_bonding_result(bd_addr_t address, uint8_t status){
3061 log_info("hci_emit_dedicated_bonding_result %u ", status);
3062 uint8_t event[9];
3063 int pos = 0;
3064 event[pos++] = GAP_DEDICATED_BONDING_COMPLETED;
3064 event[pos++] = GAP_EVENT_DEDICATED_BONDING_COMPLETED;
3065 event[pos++] = sizeof(event) - 2;
3066 event[pos++] = status;
3067 bt_flip_addr( &event[pos], address);
3068 pos += 6;
3069 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
3070 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
3071}
3072

--- 509 unchanged lines hidden ---
3065 event[pos++] = sizeof(event) - 2;
3066 event[pos++] = status;
3067 bt_flip_addr( &event[pos], address);
3068 pos += 6;
3069 hci_dump_packet( HCI_EVENT_PACKET, 0, event, sizeof(event));
3070 hci_stack->packet_handler(HCI_EVENT_PACKET, event, sizeof(event));
3071}
3072

--- 509 unchanged lines hidden ---