Merge pull request #60 from sjanc/ext_scan

Fix data_status in BLE_GAP_EVENT_EXT_DISC
This commit is contained in:
Szymon Janc
2018-04-26 09:20:02 +02:00
committed by GitHub
2 changed files with 22 additions and 2 deletions
+5
View File
@@ -225,6 +225,11 @@ struct ble_gap_passkey_params {
}; };
#if MYNEWT_VAL(BLE_EXT_ADV) #if MYNEWT_VAL(BLE_EXT_ADV)
#define BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE 0x00
#define BLE_GAP_EXT_ADV_DATA_STATUS_INCOMPLETE 0x01
#define BLE_GAP_EXT_ADV_DATA_STATUS_TRUNCATED 0x02
struct ble_gap_ext_disc_desc { struct ble_gap_ext_disc_desc {
/*** Common fields. */ /*** Common fields. */
uint8_t props; uint8_t props;
+17 -2
View File
@@ -552,7 +552,7 @@ static int
ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, uint8_t *data, int len) ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, uint8_t *data, int len)
{ {
#if MYNEWT_VAL(BLE_EXT_ADV) #if MYNEWT_VAL(BLE_EXT_ADV)
struct ble_gap_ext_disc_desc desc = {0}; struct ble_gap_ext_disc_desc desc;
struct hci_ext_adv_report *ext_adv; struct hci_ext_adv_report *ext_adv;
struct hci_ext_adv_report_param *params; struct hci_ext_adv_report_param *params;
int num_reports; int num_reports;
@@ -577,6 +577,8 @@ ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, uint8_t *data, int len)
params = &ext_adv->params[0]; params = &ext_adv->params[0];
for (i = 0; i < num_reports; i++) { for (i = 0; i < num_reports; i++) {
memset(&desc, 0, sizeof(desc));
desc.props = (params->evt_type) & 0x1F; desc.props = (params->evt_type) & 0x1F;
if (desc.props & BLE_HCI_ADV_LEGACY_MASK) { if (desc.props & BLE_HCI_ADV_LEGACY_MASK) {
legacy_event_type = ble_hs_hci_decode_legacy_type(params->evt_type); legacy_event_type = ble_hs_hci_decode_legacy_type(params->evt_type);
@@ -585,8 +587,21 @@ ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, uint8_t *data, int len)
continue; continue;
} }
desc.legacy_event_type = legacy_event_type; desc.legacy_event_type = legacy_event_type;
desc.data_status = BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE;
} else { } else {
desc.data_status = (params->evt_type & BLE_HCI_ADV_DATA_STATUS_MASK) >> 5; switch(params->evt_type & BLE_HCI_ADV_DATA_STATUS_MASK) {
case BLE_HCI_ADV_DATA_STATUS_COMPLETE:
desc.data_status = BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE;
break;
case BLE_HCI_ADV_DATA_STATUS_INCOMPLETE:
desc.data_status = BLE_GAP_EXT_ADV_DATA_STATUS_INCOMPLETE;
break;
case BLE_HCI_ADV_DATA_STATUS_TRUNCATED:
desc.data_status = BLE_GAP_EXT_ADV_DATA_STATUS_TRUNCATED;
break;
default:
assert(false);
}
} }
desc.addr.type = params->addr_type; desc.addr.type = params->addr_type;
memcpy(desc.addr.val, params->addr, 6); memcpy(desc.addr.val, params->addr, 6);