Observer Role#

The Observer role receives advertising (including extended and periodic advertising) without acting as a connection central. This page also focuses on periodic advertising synchronization from the observer side. For beacon-style broadcasting, see Broadcaster role. For extended advertising setup and scanning, see Extended advertising.

Receiving Advertising (Observer)#

An observer uses scanning to receive advertising packets and does not initiate connections. For passive and active scanning, scan parameters, and legacy advertisement reports (rsi_ble_event_adv_report_t), see Central role — Scanning. For extended scanning and extended advertising reports (rsi_ble_ae_adv_report_t), see Extended advertising.

Periodic Advertising Sync#

Periodic advertising in Bluetooth Low Energy (BLE) 5.0 and later enables synchronized data transmission without maintaining a connection. The Broadcaster transmits periodic advertising, and the Observer synchronizes to receive it. To configure periodic advertising on a broadcaster device, see Broadcaster role and Extended advertising.

Periodic Advertising Synchronization (Observer)#

Synchronizing to Periodic Advertising:

  1. Discover extended advertising using extended scanning (see Extended advertising)

  2. Receive extended advertising reports through rsi_ble_ae_report_complete_t callback (contains rsi_ble_ae_adv_report_t structure) with periodic advertising information

  3. Establish synchronization using rsi_ble_ae_set_periodic_sync() with type=1 (begin sync)

  4. Receive sync establishment confirmation through rsi_ble_ae_per_adv_sync_estbl_t callback (contains rsi_ble_per_adv_sync_estbl_t structure)

  5. Receive periodic advertising data through rsi_ble_ae_per_adv_report_t callback (contains rsi_ble_per_adv_report_t structure)

Synchronization Management:

  • Add device to periodic advertising list using rsi_ble_ae_dev_to_periodic_list()

  • Query periodic advertising list size using rsi_ble_ae_read_periodic_adv_list_size()

  • Handle sync establishment events through rsi_ble_ae_per_adv_sync_estbl_t callback (contains rsi_ble_per_adv_sync_estbl_t structure)

  • Handle synchronization lost events through rsi_ble_ae_per_adv_sync_lost_t callback (contains rsi_ble_per_adv_sync_lost_t structure)

  • Cancel sync in progress using rsi_ble_ae_set_periodic_sync() with type=2 (cancel)

  • Terminate established sync using rsi_ble_ae_set_periodic_sync() with type=3 (terminate)

  • Register callbacks using rsi_ble_adv_ext_events_register_callbacks() before starting extended scanning


APIs Used in This Section#

Topic

APIs / symbols

Reference

Observer

rsi_ble_adv_ext_events_register_callbacks(); callbacks rsi_ble_ae_report_complete_t; structs rsi_ble_ae_adv_report_t, rsi_ble_event_adv_report_t

GAP, Register Callbacks, Callbacks Declarations

Periodic sync

rsi_ble_ae_set_periodic_sync(), rsi_ble_ae_dev_to_periodic_list(), rsi_ble_ae_read_periodic_adv_list_size(); callbacks rsi_ble_ae_per_adv_sync_estbl_t, rsi_ble_ae_per_adv_report_t, rsi_ble_ae_per_adv_sync_lost_t; structs rsi_ble_per_adv_sync_estbl_t, rsi_ble_per_adv_report_t, rsi_ble_per_adv_sync_lost_t

GAP, Register Callbacks, Callbacks Declarations