hci.c (729710c06902135c687d979c1a75f07905a100f1) | hci.c (33e6948b1254ceb02d68d53c2d586e29fb8c8b03) |
---|---|
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 --- 1023 unchanged lines hidden (view full) --- 1032 int offset = 3; 1033 int num_reports = packet[offset]; 1034 offset += 1; 1035 1036 int i; 1037 // log_info("HCI: handle adv report with num reports: %d", num_reports); 1038 uint8_t event[12 + LE_ADVERTISING_DATA_SIZE]; // use upper bound to avoid var size automatic var 1039 for (i=0; i<num_reports && offset < size;i++){ | 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 --- 1023 unchanged lines hidden (view full) --- 1032 int offset = 3; 1033 int num_reports = packet[offset]; 1034 offset += 1; 1035 1036 int i; 1037 // log_info("HCI: handle adv report with num reports: %d", num_reports); 1038 uint8_t event[12 + LE_ADVERTISING_DATA_SIZE]; // use upper bound to avoid var size automatic var 1039 for (i=0; i<num_reports && offset < size;i++){ |
1040 uint8_t data_length = btstack_min( packet[offset + 8], LE_ADVERTISING_DATA_SIZE); | 1040 // sanity checks on data_length: 1041 uint8_t data_length = packet[offset + 8]; 1042 if (data_length > LE_ADVERTISING_DATA_SIZE) return; 1043 if (offset + 9 + data_length + 1 > size) return; 1044 // setup event |
1041 uint8_t event_size = 10 + data_length; 1042 int pos = 0; 1043 event[pos++] = GAP_EVENT_ADVERTISING_REPORT; 1044 event[pos++] = event_size; 1045 memcpy(&event[pos], &packet[offset], 1+1+6); // event type + address type + address 1046 offset += 8; 1047 pos += 8; 1048 event[pos++] = packet[offset + 1 + data_length]; // rssi | 1045 uint8_t event_size = 10 + data_length; 1046 int pos = 0; 1047 event[pos++] = GAP_EVENT_ADVERTISING_REPORT; 1048 event[pos++] = event_size; 1049 memcpy(&event[pos], &packet[offset], 1+1+6); // event type + address type + address 1050 offset += 8; 1051 pos += 8; 1052 event[pos++] = packet[offset + 1 + data_length]; // rssi |
1049 event[pos++] = packet[offset++]; //data_length; | 1053 event[pos++] = data_length; 1054 offset++; |
1050 memcpy(&event[pos], &packet[offset], data_length); | 1055 memcpy(&event[pos], &packet[offset], data_length); |
1051 pos += data_length; | 1056 pos += data_length; |
1052 offset += data_length + 1; // rssi 1053 hci_emit_event(event, pos, 1); 1054 } 1055} 1056#endif 1057#endif 1058 1059#ifdef ENABLE_BLE --- 3858 unchanged lines hidden --- | 1057 offset += data_length + 1; // rssi 1058 hci_emit_event(event, pos, 1); 1059 } 1060} 1061#endif 1062#endif 1063 1064#ifdef ENABLE_BLE --- 3858 unchanged lines hidden --- |