mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-10-05 22:37:23 +00:00
Merge pull request #60 from sjanc/ext_scan
Fix data_status in BLE_GAP_EVENT_EXT_DISC
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user