Skip to content

Commit 7121962

Browse files
committed
[Bugfix] NimBLEAdvertisedDevice::isConnectable incorrect result
1 parent e6e8019 commit 7121962

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/NimBLEAdvertisedDevice.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -755,8 +755,12 @@ bool NimBLEAdvertisedDevice::isConnectable() const {
755755
if (m_isLegacyAdv) {
756756
return m_advType == BLE_HCI_ADV_RPT_EVTYPE_ADV_IND || m_advType == BLE_HCI_ADV_RPT_EVTYPE_DIR_IND;
757757
}
758-
# endif
758+
759759
return (m_advType & BLE_HCI_ADV_CONN_MASK) || (m_advType & BLE_HCI_ADV_DIRECT_MASK);
760+
# else
761+
return m_advType == BLE_HCI_ADV_TYPE_ADV_IND || m_advType == BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_HD ||
762+
m_advType == BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_LD;
763+
# endif
760764
} // isConnectable
761765

762766
/**

src/NimBLEScan.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ int NimBLEScan::handleGapEvent(ble_gap_event* event, void* arg) {
6666
# if CONFIG_BT_NIMBLE_EXT_ADV
6767
const auto& disc = event->ext_disc;
6868
const bool isLegacyAdv = disc.props & BLE_HCI_ADV_LEGACY_MASK;
69-
const auto event_type = isLegacyAdv ? disc.legacy_event_type : disc.props;
69+
const auto eventType = isLegacyAdv ? disc.legacy_event_type : disc.props;
7070
# else
7171
const auto& disc = event->disc;
7272
const bool isLegacyAdv = true;
73-
const auto event_type = disc.event_type;
73+
const auto eventType = disc.event_type;
7474
# endif
7575
NimBLEAddress advertisedAddress(disc.addr);
7676

@@ -108,16 +108,16 @@ int NimBLEScan::handleGapEvent(ble_gap_event* event, void* arg) {
108108
return 0;
109109
}
110110

111-
if (isLegacyAdv && event_type == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) {
111+
if (isLegacyAdv && eventType == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) {
112112
NIMBLE_LOGI(LOG_TAG, "Scan response without advertisement: %s", advertisedAddress.toString().c_str());
113113
}
114114

115-
advertisedDevice = new NimBLEAdvertisedDevice(event, event_type);
115+
advertisedDevice = new NimBLEAdvertisedDevice(event, eventType);
116116
pScan->m_scanResults.m_deviceVec.push_back(advertisedDevice);
117117
NIMBLE_LOGI(LOG_TAG, "New advertiser: %s", advertisedAddress.toString().c_str());
118118
} else {
119-
advertisedDevice->update(event, event_type);
120-
if (isLegacyAdv && event_type == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) {
119+
advertisedDevice->update(event, eventType);
120+
if (isLegacyAdv && eventType == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) {
121121
NIMBLE_LOGI(LOG_TAG, "Scan response from: %s", advertisedAddress.toString().c_str());
122122
} else {
123123
NIMBLE_LOGI(LOG_TAG, "Duplicate; updated: %s", advertisedAddress.toString().c_str());
@@ -134,7 +134,7 @@ int NimBLEScan::handleGapEvent(ble_gap_event* event, void* arg) {
134134
if (pScan->m_scanParams.passive || !isLegacyAdv || !advertisedDevice->isScannable()) {
135135
advertisedDevice->m_callbackSent++;
136136
pScan->m_pScanCallbacks->onResult(advertisedDevice);
137-
} else if (isLegacyAdv && event_type == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) {
137+
} else if (isLegacyAdv && eventType == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP) {
138138
advertisedDevice->m_callbackSent++;
139139
// got the scan response report the full data.
140140
pScan->m_pScanCallbacks->onResult(advertisedDevice);

0 commit comments

Comments
 (0)