diff --git a/src/NimBLEAdvertisedDevice.cpp b/src/NimBLEAdvertisedDevice.cpp index c697fe7..ecfd498 100644 --- a/src/NimBLEAdvertisedDevice.cpp +++ b/src/NimBLEAdvertisedDevice.cpp @@ -734,7 +734,7 @@ uint8_t* NimBLEAdvertisedDevice::getPayload() { * @param [in] length The length of the payload in bytes. * @param [in] append Indicates if the the data should be appended (scan response). */ -void NimBLEAdvertisedDevice::setPayload(uint8_t *payload, uint8_t length, bool append) { +void NimBLEAdvertisedDevice::setPayload(const uint8_t *payload, uint8_t length, bool append) { if(!append) { m_advLength = length; m_payload.assign(payload, payload + length); diff --git a/src/NimBLEAdvertisedDevice.h b/src/NimBLEAdvertisedDevice.h index ef354bc..7d378ed 100644 --- a/src/NimBLEAdvertisedDevice.h +++ b/src/NimBLEAdvertisedDevice.h @@ -137,7 +137,7 @@ private: void setAddress(NimBLEAddress address); void setAdvType(uint8_t advType); - void setPayload(uint8_t *payload, uint8_t length, bool append); + void setPayload(const uint8_t *payload, uint8_t length, bool append); void setRSSI(int rssi); uint8_t findAdvField(uint8_t type, uint8_t index = 0, uint8_t *data_loc = nullptr); uint8_t findServiceData(uint8_t index, uint8_t* bytes); diff --git a/src/NimBLEAdvertising.cpp b/src/NimBLEAdvertising.cpp index 3e9ae4a..e68d319 100644 --- a/src/NimBLEAdvertising.cpp +++ b/src/NimBLEAdvertising.cpp @@ -471,16 +471,14 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } payloadLen += add; - if(nullptr == (m_advData.uuids16 = (ble_uuid16_t*)realloc(m_advData.uuids16, + if(nullptr == (m_advData.uuids16 = (ble_uuid16_t*)realloc((void*)m_advData.uuids16, (m_advData.num_uuids16 + 1) * sizeof(ble_uuid16_t)))) { NIMBLE_LOGC(LOG_TAG, "Error, no mem"); abort(); } - memcpy(&m_advData.uuids16[m_advData.num_uuids16].value, - &it.getNative()->u16.value, 2); - - m_advData.uuids16[m_advData.num_uuids16].u.type = BLE_UUID_TYPE_16; + memcpy((void*)&m_advData.uuids16[m_advData.num_uuids16], + &it.getNative()->u16, sizeof(ble_uuid16_t)); m_advData.uuids16_is_complete = 1; m_advData.num_uuids16++; } @@ -492,16 +490,14 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } payloadLen += add; - if(nullptr == (m_advData.uuids32 = (ble_uuid32_t*)realloc(m_advData.uuids32, + if(nullptr == (m_advData.uuids32 = (ble_uuid32_t*)realloc((void*)m_advData.uuids32, (m_advData.num_uuids32 + 1) * sizeof(ble_uuid32_t)))) { NIMBLE_LOGC(LOG_TAG, "Error, no mem"); abort(); } - memcpy(&m_advData.uuids32[m_advData.num_uuids32].value, - &it.getNative()->u32.value, 4); - - m_advData.uuids32[m_advData.num_uuids32].u.type = BLE_UUID_TYPE_32; + memcpy((void*)&m_advData.uuids32[m_advData.num_uuids32], + &it.getNative()->u32, sizeof(ble_uuid32_t)); m_advData.uuids32_is_complete = 1; m_advData.num_uuids32++; } @@ -513,16 +509,14 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } payloadLen += add; - if(nullptr == (m_advData.uuids128 = (ble_uuid128_t*)realloc(m_advData.uuids128, + if(nullptr == (m_advData.uuids128 = (ble_uuid128_t*)realloc((void*)m_advData.uuids128, (m_advData.num_uuids128 + 1) * sizeof(ble_uuid128_t)))) { NIMBLE_LOGC(LOG_TAG, "Error, no mem"); abort(); } - memcpy(&m_advData.uuids128[m_advData.num_uuids128].value, - &it.getNative()->u128.value, 16); - - m_advData.uuids128[m_advData.num_uuids128].u.type = BLE_UUID_TYPE_128; + memcpy((void*)&m_advData.uuids128[m_advData.num_uuids128], + &it.getNative()->u128, sizeof(ble_uuid128_t)); m_advData.uuids128_is_complete = 1; m_advData.num_uuids128++; } @@ -599,19 +593,19 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } if(m_advData.num_uuids128 > 0) { - free(m_advData.uuids128); + free((void*)m_advData.uuids128); m_advData.uuids128 = nullptr; m_advData.num_uuids128 = 0; } if(m_advData.num_uuids32 > 0) { - free(m_advData.uuids32); + free((void*)m_advData.uuids32); m_advData.uuids32 = nullptr; m_advData.num_uuids32 = 0; } if(m_advData.num_uuids16 > 0) { - free(m_advData.uuids16); + free((void*)m_advData.uuids16); m_advData.uuids16 = nullptr; m_advData.num_uuids16 = 0; }