diff --git a/src/platform/P6/BLEManagerImpl.cpp b/src/platform/P6/BLEManagerImpl.cpp index b1211857d88d81..7393472e4ef9f0 100644 --- a/src/platform/P6/BLEManagerImpl.cpp +++ b/src/platform/P6/BLEManagerImpl.cpp @@ -48,6 +48,8 @@ extern "C" { using namespace ::chip; using namespace ::chip::Ble; +#define BLE_SERVICE_DATA_SIZE 10 + namespace chip { namespace DeviceLayer { namespace Internal { @@ -787,9 +789,11 @@ void BLEManagerImpl::SetAdvertisingData(void) ChipBLEDeviceIdentificationInfo mDeviceIdInfo; uint16_t deviceDiscriminator = 0; uint8_t localDeviceNameLen; - uint8_t service_data[9]; + uint8_t service_data[BLE_SERVICE_DATA_SIZE]; uint8_t * p = service_data; + static_assert(BLE_SERVICE_DATA_SIZE == sizeof(ChipBLEDeviceIdentificationInfo) + 2, "BLE Service Data Size is incorrect"); + // Initialize the CHIP BLE Device Identification Information block that will be sent as payload // within the BLE service advertisement data. err = ConfigurationMgr().GetBLEDeviceIdentificationInfo(mDeviceIdInfo); @@ -838,6 +842,7 @@ void BLEManagerImpl::SetAdvertisingData(void) UINT8_TO_STREAM(p, mDeviceIdInfo.DeviceVendorId[1]); UINT8_TO_STREAM(p, mDeviceIdInfo.DeviceProductId[0]); UINT8_TO_STREAM(p, mDeviceIdInfo.DeviceProductId[1]); + UINT8_TO_STREAM(p, 0); // Additional Data Flag adv_elem[num_elem].advert_type = BTM_BLE_ADVERT_TYPE_NAME_COMPLETE; adv_elem[num_elem].len = localDeviceNameLen;