From 77afa21c6756e17772321ee2cb48d5954acb06ce Mon Sep 17 00:00:00 2001 From: eighty2fifty1 <57936249+eighty2fifty1@users.noreply.github.com> Date: Mon, 17 Apr 2023 20:57:13 +0900 Subject: [PATCH 1/3] Update NimBLEAdvertising.h overloaded setManufacturerData to allow vector of uint8_t to be added to manufacturer data --- src/NimBLEAdvertising.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/NimBLEAdvertising.h b/src/NimBLEAdvertising.h index 4d054706..8640dd1f 100644 --- a/src/NimBLEAdvertising.h +++ b/src/NimBLEAdvertising.h @@ -59,6 +59,7 @@ class NimBLEAdvertisementData { void setCompleteServices32(const std::vector &v_uuid); void setFlags(uint8_t); void setManufacturerData(const std::string &data); + void setManufacturerData(const std::vector &m_mfgData); void setURI(const std::string &uri); void setName(const std::string &name); void setPartialServices(const NimBLEUUID &uuid); @@ -96,6 +97,7 @@ class NimBLEAdvertising { void setAppearance(uint16_t appearance); void setName(const std::string &name); void setManufacturerData(const std::string &data); + void setManufacturerData(const std::vector &m_mfgData); void setURI(const std::string &uri); void setServiceData(const NimBLEUUID &uuid, const std::string &data); void setAdvertisementType(uint8_t adv_type); From d7c1a6986ae487d3080db8ed0c6a539124a3382c Mon Sep 17 00:00:00 2001 From: eighty2fifty1 <57936249+eighty2fifty1@users.noreply.github.com> Date: Mon, 17 Apr 2023 21:00:00 +0900 Subject: [PATCH 2/3] Update NimBLEAdvertising.cpp overloaded setManufacturerData to allow vector of uint8_t to be added directly --- src/NimBLEAdvertising.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/NimBLEAdvertising.cpp b/src/NimBLEAdvertising.cpp index d60a8e74..9b5041ae 100644 --- a/src/NimBLEAdvertising.cpp +++ b/src/NimBLEAdvertising.cpp @@ -156,6 +156,17 @@ void NimBLEAdvertising::setManufacturerData(const std::string &data) { } // setManufacturerData +/** + * @brief Set the advertised manufacturer data. + * @param [in] data The data to advertise. + */ +void NimBLEAdvertising::setManufacturerData(const std::vector &m_mfgData) { + m_advData.mfg_data = &m_mfgData[0]; + m_advData.mfg_data_len = m_mfgData.size(); + m_advDataSet = false; +} // setManufacturerData + + /** * @brief Set the advertised URI. * @param [in] uri The URI to advertise. From 5df1c4acaa98bab5a1b3dd94a17b298fbef3c8e0 Mon Sep 17 00:00:00 2001 From: h2zero Date: Sun, 14 May 2023 15:22:15 -0600 Subject: [PATCH 3/3] Fix variable name and add missing function. --- src/NimBLEAdvertising.cpp | 15 ++++++++++++++- src/NimBLEAdvertising.h | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/NimBLEAdvertising.cpp b/src/NimBLEAdvertising.cpp index 9b5041ae..ce7e642e 100644 --- a/src/NimBLEAdvertising.cpp +++ b/src/NimBLEAdvertising.cpp @@ -160,7 +160,8 @@ void NimBLEAdvertising::setManufacturerData(const std::string &data) { * @brief Set the advertised manufacturer data. * @param [in] data The data to advertise. */ -void NimBLEAdvertising::setManufacturerData(const std::vector &m_mfgData) { +void NimBLEAdvertising::setManufacturerData(const std::vector &data) { + m_mfgData = data; m_advData.mfg_data = &m_mfgData[0]; m_advData.mfg_data_len = m_mfgData.size(); m_advDataSet = false; @@ -842,6 +843,18 @@ void NimBLEAdvertisementData::setManufacturerData(const std::string &data) { } // setManufacturerData +/** + * @brief Set manufacturer specific data. + * @param [in] data The manufacturer data to advertise. + */ +void NimBLEAdvertisementData::setManufacturerData(const std::vector &data) { + char cdata[2]; + cdata[0] = data.size() + 1; + cdata[1] = BLE_HS_ADV_TYPE_MFG_DATA ; // 0xff + addData(std::string(cdata, 2) + std::string((char*)&data[0], data.size())); +} // setManufacturerData + + /** * @brief Set the URI to advertise. * @param [in] uri The uri to advertise. diff --git a/src/NimBLEAdvertising.h b/src/NimBLEAdvertising.h index 8640dd1f..14c34662 100644 --- a/src/NimBLEAdvertising.h +++ b/src/NimBLEAdvertising.h @@ -59,7 +59,7 @@ class NimBLEAdvertisementData { void setCompleteServices32(const std::vector &v_uuid); void setFlags(uint8_t); void setManufacturerData(const std::string &data); - void setManufacturerData(const std::vector &m_mfgData); + void setManufacturerData(const std::vector &data); void setURI(const std::string &uri); void setName(const std::string &name); void setPartialServices(const NimBLEUUID &uuid); @@ -97,7 +97,7 @@ class NimBLEAdvertising { void setAppearance(uint16_t appearance); void setName(const std::string &name); void setManufacturerData(const std::string &data); - void setManufacturerData(const std::vector &m_mfgData); + void setManufacturerData(const std::vector &data); void setURI(const std::string &uri); void setServiceData(const NimBLEUUID &uuid, const std::string &data); void setAdvertisementType(uint8_t adv_type);