@@ -532,11 +532,12 @@ CHIP_ERROR BLEManagerImpl::ConfigureAdvertisingData(void)
532
532
533
533
CHIP_ERROR BLEManagerImpl::StartAdvertising (void )
534
534
{
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 ;
539
539
uint16_t numConnectionss = NumConnections ();
540
+ bool postAdvChangeEvent = false ;
540
541
uint8_t connectableAdv =
541
542
(numConnectionss < kMaxConnections ) ? sl_bt_advertiser_connectable_scannable : sl_bt_advertiser_scannable_non_connectable;
542
543
@@ -548,6 +549,7 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
548
549
else
549
550
{
550
551
ChipLogDetail (DeviceLayer, " Start BLE advertisement" );
552
+ postAdvChangeEvent = true ;
551
553
}
552
554
553
555
err = ConfigureAdvertisingData ();
@@ -586,18 +588,26 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
586
588
SuccessOrExit (err);
587
589
588
590
sl_bt_advertiser_configure (advertising_set_handle, 1 );
591
+
589
592
ret = sl_bt_legacy_advertiser_start (advertising_set_handle, connectableAdv);
593
+ err = MapBLEError (ret);
594
+ SuccessOrExit (err);
590
595
591
- if (SL_STATUS_OK == ret )
596
+ if (mFlags . Has (Flags:: kFastAdvertisingEnabled ) )
592
597
{
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);
598
599
}
600
+ mFlags .Set (Flags::kAdvertising );
599
601
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
+ }
601
611
602
612
exit :
603
613
return err;
@@ -606,23 +616,29 @@ CHIP_ERROR BLEManagerImpl::StartAdvertising(void)
606
616
CHIP_ERROR BLEManagerImpl::StopAdvertising (void )
607
617
{
608
618
CHIP_ERROR err = CHIP_NO_ERROR;
609
- sl_status_t ret;
610
619
611
620
if (mFlags .Has (Flags::kAdvertising ))
612
621
{
622
+ sl_status_t ret = SL_STATUS_OK;
623
+
613
624
mFlags .Clear (Flags::kAdvertising ).Clear (Flags::kRestartAdvertising );
614
625
mFlags .Set (Flags::kFastAdvertisingEnabled , true );
615
626
616
627
ret = sl_bt_advertiser_stop (advertising_set_handle);
617
628
sl_bt_advertiser_delete_set (advertising_set_handle);
618
629
advertising_set_handle = 0xff ;
619
630
err = MapBLEError (ret);
620
- SuccessOrExit ( err);
631
+ VerifyOrReturnError (err == CHIP_NO_ERROR, err);
621
632
622
633
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);
623
640
}
624
641
625
- exit :
626
642
return err;
627
643
}
628
644
0 commit comments