@@ -38,6 +38,7 @@ NimBLEAdvertisedDevice::NimBLEAdvertisedDevice(const ble_gap_event* event, uint8
3838 m_callbackSent{0 },
3939 m_advLength{event->ext_disc .length_data },
4040 m_isLegacyAdv{!!(event->ext_disc .props & BLE_HCI_ADV_LEGACY_MASK)},
41+ m_dataStatus{event->ext_disc .data_status },
4142 m_sid{event->ext_disc .sid },
4243 m_primPhy{event->ext_disc .prim_phy },
4344 m_secPhy{event->ext_disc .sec_phy },
@@ -60,7 +61,13 @@ NimBLEAdvertisedDevice::NimBLEAdvertisedDevice(const ble_gap_event* event, uint8
6061void NimBLEAdvertisedDevice::update (const ble_gap_event* event, uint8_t eventType) {
6162# if CONFIG_BT_NIMBLE_EXT_ADV
6263 const auto & disc = event->ext_disc ;
63- m_isLegacyAdv = disc.props & BLE_HCI_ADV_LEGACY_MASK;
64+ if (m_dataStatus == BLE_GAP_EXT_ADV_DATA_STATUS_INCOMPLETE) {
65+ m_payload.insert (m_payload.end (), disc.data , disc.data + disc.length_data );
66+ m_dataStatus = disc.data_status ;
67+ return ;
68+ }
69+
70+ m_isLegacyAdv = disc.props & BLE_HCI_ADV_LEGACY_MASK;
6471# else
6572 const auto & disc = event->disc ;
6673# endif
@@ -617,6 +624,18 @@ uint8_t NimBLEAdvertisedDevice::getSecondaryPhy() const {
617624uint16_t NimBLEAdvertisedDevice::getPeriodicInterval () const {
618625 return m_periodicItvl;
619626} // getPeriodicInterval
627+
628+ /* *
629+ * @brief Get the advertisement data status.
630+ * @return The advertisement data status.
631+ * One of:
632+ * * BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE (0) - Complete extended advertising data
633+ * * BLE_GAP_EXT_ADV_DATA_STATUS_INCOMPLETE (1) - Incomplete extended advertising data, more to come
634+ * * BLE_GAP_EXT_ADV_DATA_STATUS_TRUNCATED (2) - Incomplete extended advertising data, no more to come
635+ */
636+ uint8_t NimBLEAdvertisedDevice::getDataStatus () const {
637+ return m_dataStatus;
638+ } // getDataStatus
620639# endif
621640
622641uint8_t NimBLEAdvertisedDevice::findAdvField (uint8_t type, uint8_t index, size_t * data_loc) const {
0 commit comments