Skip to content

Commit 28d1282

Browse files
mkardous-silabsjmartinez-silabs
authored andcommitted
Add adv change event to silabs platforms (project-chip#32987)
1 parent d4b23a9 commit 28d1282

File tree

2 files changed

+54
-22
lines changed

2 files changed

+54
-22
lines changed

src/platform/silabs/efr32/BLEManagerImpl.cpp

+30-14
Original file line numberDiff line numberDiff line change
@@ -532,11 +532,12 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
532532

533533
CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
534534
{
535-
CHIP_ERROR err;
536-
sl_status_t ret;
537-
uint32_t interval_min;
538-
uint32_t interval_max;
535+
CHIP_ERROR err = CHIP_NO_ERROR;
536+
sl_status_t ret = SL_STATUS_OK;
537+
uint32_t interval_min = 0;
538+
uint32_t interval_max = 0;
539539
uint16_t numConnectionss = NumConnections();
540+
bool postAdvChangeEvent = false;
540541
uint8_t connectableAdv =
541542
(numConnectionss < kMaxConnections) ? sl_bt_advertiser_connectable_scannable : sl_bt_advertiser_scannable_non_connectable;
542543

@@ -548,6 +549,7 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
548549
else
549550
{
550551
ChipLogDetail(DeviceLayer, "Start BLE advertisement");
552+
postAdvChangeEvent = true;
551553
}
552554

553555
err = ConfigureAdvertisingData();
@@ -586,18 +588,26 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
586588
SuccessOrExit(err);
587589

588590
sl_bt_advertiser_configure(advertising_set_handle, 1);
591+
589592
ret = sl_bt_legacy_advertiser_start(advertising_set_handle, connectableAdv);
593+
err = MapBLEError(ret);
594+
SuccessOrExit(err);
590595

591-
if (SL_STATUS_OK == ret)
596+
if (mFlags.Has(Flags::kFastAdvertisingEnabled))
592597
{
593-
if (mFlags.Has(Flags::kFastAdvertisingEnabled))
594-
{
595-
StartBleAdvTimeoutTimer(CHIP_DEVICE_CONFIG_BLE_ADVERTISING_INTERVAL_CHANGE_TIME);
596-
}
597-
mFlags.Set(Flags::kAdvertising);
598+
StartBleAdvTimeoutTimer(CHIP_DEVICE_CONFIG_BLE_ADVERTISING_INTERVAL_CHANGE_TIME);
598599
}
600+
mFlags.Set(Flags::kAdvertising);
599601

600-
err = MapBLEError(ret);
602+
if (postAdvChangeEvent)
603+
{
604+
// Post CHIPoBLEAdvertisingChange event.
605+
ChipDeviceEvent advChange;
606+
advChange.Type = DeviceEventType::kCHIPoBLEAdvertisingChange;
607+
advChange.CHIPoBLEAdvertisingChange.Result = kActivity_Started;
608+
609+
ReturnErrorOnFailure(PlatformMgr().PostEvent(&advChange));
610+
}
601611

602612
exit:
603613
return err;
@@ -606,23 +616,29 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
606616
CHIP_ERROR BLEManagerImpl::StopAdvertising(void)
607617
{
608618
CHIP_ERROR err = CHIP_NO_ERROR;
609-
sl_status_t ret;
610619

611620
if (mFlags.Has(Flags::kAdvertising))
612621
{
622+
sl_status_t ret = SL_STATUS_OK;
623+
613624
mFlags.Clear(Flags::kAdvertising).Clear(Flags::kRestartAdvertising);
614625
mFlags.Set(Flags::kFastAdvertisingEnabled, true);
615626

616627
ret = sl_bt_advertiser_stop(advertising_set_handle);
617628
sl_bt_advertiser_delete_set(advertising_set_handle);
618629
advertising_set_handle = 0xff;
619630
err = MapBLEError(ret);
620-
SuccessOrExit(err);
631+
VerifyOrReturnError(err == CHIP_NO_ERROR, err);
621632

622633
CancelBleAdvTimeoutTimer();
634+
635+
// Post CHIPoBLEAdvertisingChange event.
636+
ChipDeviceEvent advChange;
637+
advChange.Type = DeviceEventType::kCHIPoBLEAdvertisingChange;
638+
advChange.CHIPoBLEAdvertisingChange.Result = kActivity_Stopped;
639+
err = PlatformMgr().PostEvent(&advChange);
623640
}
624641

625-
exit:
626642
return err;
627643
}
628644

src/platform/silabs/rs911x/BLEManagerImpl.cpp

+24-8
Original file line numberDiff line numberDiff line change
@@ -678,8 +678,9 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
678678

679679
CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
680680
{
681-
CHIP_ERROR err = CHIP_NO_ERROR;
682-
int32_t status = 0;
681+
CHIP_ERROR err = CHIP_NO_ERROR;
682+
int32_t status = 0;
683+
bool postAdvChangeEvent = false;
683684

684685
ChipLogProgress(DeviceLayer, "StartAdvertising start");
685686

@@ -695,6 +696,7 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
695696
else
696697
{
697698
ChipLogDetail(DeviceLayer, "Start BLE advertisement");
699+
postAdvChangeEvent = true;
698700
}
699701

700702
if (!(mFlags.Has(Flags::kAdvertising)))
@@ -719,15 +721,26 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
719721
StartBleAdvTimeoutTimer(CHIP_DEVICE_CONFIG_BLE_ADVERTISING_INTERVAL_CHANGE_TIME);
720722
}
721723
mFlags.Set(Flags::kAdvertising);
724+
725+
if (postAdvChangeEvent)
726+
{
727+
// Post CHIPoBLEAdvertisingChange event.
728+
ChipDeviceEvent advChange;
729+
advChange.Type = DeviceEventType::kCHIPoBLEAdvertisingChange;
730+
advChange.CHIPoBLEAdvertisingChange.Result = kActivity_Started;
731+
732+
ReturnErrorOnFailure(PlatformMgr().PostEvent(&advChange));
733+
}
722734
}
723735
else
724736
{
725737
ChipLogProgress(DeviceLayer, "rsi_ble_start_advertising Failed with status: %lx", status);
726738
}
727739

728740
exit:
741+
// TODO: Add MapBLEError to return the correct error code
729742
ChipLogError(DeviceLayer, "StartAdvertising() End error: %s", ErrorStr(err));
730-
return CHIP_NO_ERROR; // err;
743+
return err;
731744
}
732745

733746
int32_t BLEManagerImpl::SendBLEAdvertisementCommand(void)
@@ -756,7 +769,6 @@ int32_t BLEManagerImpl::SendBLEAdvertisementCommand(void)
756769
return rsi_ble_start_advertising_with_values(&ble_adv);
757770
}
758771

759-
// TODO:: Implementation need to be done.
760772
CHIP_ERROR BLEManagerImpl::StopAdvertising(void)
761773
{
762774
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -772,12 +784,16 @@ CHIP_ERROR BLEManagerImpl::StopAdvertising(void)
772784
mFlags.Set(Flags::kFastAdvertisingEnabled, true);
773785
advertising_set_handle = 0xff;
774786
CancelBleAdvTimeoutTimer();
775-
}
776-
else
777-
{
778-
ChipLogProgress(DeviceLayer, "advertising failed to stop, with status = 0x%lx", status);
787+
788+
// Post CHIPoBLEAdvertisingChange event.
789+
ChipDeviceEvent advChange;
790+
advChange.Type = DeviceEventType::kCHIPoBLEAdvertisingChange;
791+
advChange.CHIPoBLEAdvertisingChange.Result = kActivity_Stopped;
792+
err = PlatformMgr().PostEvent(&advChange);
779793
}
780794
}
795+
796+
// TODO: Add MapBLEError to return the correct error code
781797
return err;
782798
}
783799

0 commit comments

Comments
 (0)