@@ -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,16 @@ 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.reserve (m_advLength + disc.length_data );
66+ m_payload.insert (m_payload.end (), disc.data , disc.data + disc.length_data );
67+ m_dataStatus = disc.data_status ;
68+ m_advLength = m_payload.size ();
69+ return ;
70+ }
71+
72+ m_dataStatus = disc.data_status ;
73+ m_isLegacyAdv = disc.props & BLE_HCI_ADV_LEGACY_MASK;
6474# else
6575 const auto & disc = event->disc ;
6676# endif
@@ -617,6 +627,18 @@ uint8_t NimBLEAdvertisedDevice::getSecondaryPhy() const {
617627uint16_t NimBLEAdvertisedDevice::getPeriodicInterval () const {
618628 return m_periodicItvl;
619629} // getPeriodicInterval
630+
631+ /* *
632+ * @brief Get the advertisement data status.
633+ * @return The advertisement data status.
634+ * One of:
635+ * * BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE (0) - Complete extended advertising data
636+ * * BLE_GAP_EXT_ADV_DATA_STATUS_INCOMPLETE (1) - Incomplete extended advertising data, more to come
637+ * * BLE_GAP_EXT_ADV_DATA_STATUS_TRUNCATED (2) - Incomplete extended advertising data, no more to come
638+ */
639+ uint8_t NimBLEAdvertisedDevice::getDataStatus () const {
640+ return m_dataStatus;
641+ } // getDataStatus
620642# endif
621643
622644uint8_t NimBLEAdvertisedDevice::findAdvField (uint8_t type, uint8_t index, size_t * data_loc) const {
0 commit comments