From e2341d8c82578fc6649ba380399ece85848fc2bc Mon Sep 17 00:00:00 2001 From: Andrii Bilynskyi Date: Thu, 20 Apr 2023 03:11:26 +0300 Subject: [PATCH] [Telink] Fix crash during boot (#26163) --- src/platform/telink/BLEManagerImpl.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/platform/telink/BLEManagerImpl.cpp b/src/platform/telink/BLEManagerImpl.cpp index d072b38b1a063b..91711842726acf 100644 --- a/src/platform/telink/BLEManagerImpl.cpp +++ b/src/platform/telink/BLEManagerImpl.cpp @@ -273,17 +273,6 @@ inline CHIP_ERROR BLEManagerImpl::PrepareAdvertisingRequest(void) mAdvertisingRequest.advertisingData = Span(advertisingData); mAdvertisingRequest.scanResponseData = nameSize ? Span(scanResponseData) : Span{}; - mAdvertisingRequest.onStarted = [](int rc) { - if (rc == 0) - { - ChipLogProgress(DeviceLayer, "CHIPoBLE advertising started"); - } - else - { - ChipLogError(DeviceLayer, "Failed to start CHIPoBLE advertising: %d", rc); - } - }; - return CHIP_NO_ERROR; } @@ -339,7 +328,13 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void) #endif // Request advertising - ReturnErrorOnFailure(BLEAdvertisingArbiter::InsertRequest(mAdvertisingRequest)); + ReturnErrorOnFailure(System::MapErrorZephyr(bt_le_adv_stop())); + const bt_le_adv_param params = BT_LE_ADV_PARAM_INIT(mAdvertisingRequest.options, mAdvertisingRequest.minInterval, + mAdvertisingRequest.maxInterval, nullptr); + ReturnErrorOnFailure(System::MapErrorZephyr( + bt_le_adv_start(¶ms, mAdvertisingRequest.advertisingData.data(), mAdvertisingRequest.advertisingData.size(), + mAdvertisingRequest.scanResponseData.data(), mAdvertisingRequest.scanResponseData.size()))); + ChipLogProgress(DeviceLayer, "CHIPoBLE advertising started"); // Transition to the Advertising state... if (!mFlags.Has(Flags::kAdvertising)) @@ -375,7 +370,7 @@ CHIP_ERROR BLEManagerImpl::StopAdvertising(void) return CHIP_ERROR_INCORRECT_STATE; } - BLEAdvertisingArbiter::CancelRequest(mAdvertisingRequest); + ReturnErrorOnFailure(System::MapErrorZephyr(bt_le_adv_stop())); // Transition to the not Advertising state... if (mFlags.Has(Flags::kAdvertising))