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