Broadcaster Role#

The Broadcaster role transmits advertising data without accepting connections. Use this page for legacy and extended beacon-style advertising and for periodic advertising on the broadcaster side. For extended advertising parameters, opermode setup, and extended scanning, see Extended advertising.

Beacon Support#

Beacon applications use the Broadcaster role to transmit advertising data that can be received by Observer devices (scanners). Beacons are commonly used for location services, proximity detection, and broadcasting sensor data.

Broadcaster Role Implementation#

Non-Connectable Advertising:

  • Use ADV_NONCONN_IND for advertising-only beacons (non-connectable, non-scannable — no scan response).

  • Use ADV_SCAN_IND when the beacon must remain non-connectable but still answer scan requests with scan response data.

  • Ideal for one-way data transmission.

Setting Up Beacon:

  1. Configure advertising data with rsi_ble_set_advertise_data(). If you need a scan response, use a scannable non-connectable type such as ADV_SCAN_IND and set the payload with rsi_ble_set_scan_response_data() (ADV_NONCONN_IND does not transmit scan response data).

  2. Start advertising with rsi_ble_start_advertising_with_values() using the chosen non-connectable type.

  3. Advertising continues indefinitely until stopped.

Beacon Data Format:

  • Follow standard advertising data format (AD structure).

  • Common beacon formats: iBeacon, Eddystone, AltBeacon.

  • Include manufacturer-specific data (AD type 0xFF) for custom beacons.

  • Maximum 31 bytes for legacy advertising, up to 200 bytes for extended advertising.

Extended Advertising for Beacons:

  • Use extended advertising for larger beacon payloads (see Extended advertising).

  • Use rsi_ble_start_ae_advertising() for extended advertising.

Beacon Best Practices:

  • Use appropriate advertising interval (balance range vs. power).

  • Include device identifier in advertising data.

  • Consider using periodic advertising for synchronized beacons (see Periodic Advertising (Broadcaster)).

  • Monitor advertising status and handle errors.

Periodic Advertising (Broadcaster)#

Periodic advertising builds on extended advertising: the broadcaster sends periodic events on secondary channels. Observers discover the extended advertising train first, then establish periodic sync (see Observer role — Periodic Advertising Sync).

Setting Up Periodic Advertising:

  1. Create or use an advertising set for extended advertising (use rsi_ble_app_adv_set_clear_or_remove() if needed).

  2. Configure extended advertising parameters using rsi_ble_set_ae_params().

  3. Set extended advertising data and optionally scan response data using rsi_ble_set_ae_data() through the type field.

  4. Set periodic advertising parameters using rsi_ble_app_set_periodic_ae_params().

  5. Set periodic advertising data using rsi_ble_set_ae_data() with the periodic advertising data type.

  6. Start extended advertising with rsi_ble_start_ae_advertising().

  7. Enable periodic advertising using rsi_ble_app_set_periodic_ae_enable().

Periodic Advertising Parameters:

  • Interval: Time between periodic advertising events (7.5ms to 81.92s)

  • Advertising Data: Up to 200 bytes per packet (same limit as extended advertising; Extended advertising)

  • Synchronization: Periodic advertising includes sync information for observers

Use Cases:

  • Location beacons with periodic updates

  • Sensor data broadcasting

  • Time-synchronized data transmission

  • Large data payloads without connection overhead


APIs Used in This Section#

Topic

APIs / symbols

Reference

Beacon

rsi_ble_set_advertise_data(), rsi_ble_set_scan_response_data(), rsi_ble_start_advertising_with_values(), rsi_ble_start_ae_advertising(), rsi_ble_set_ae_params(), rsi_ble_app_set_periodic_ae_params(), rsi_ble_app_set_periodic_ae_enable()

GAP

Periodic advertising — broadcaster

rsi_ble_app_adv_set_clear_or_remove(), rsi_ble_set_ae_params(), rsi_ble_set_ae_data(), rsi_ble_app_set_periodic_ae_params(), rsi_ble_app_set_periodic_ae_enable(), rsi_ble_start_ae_advertising()

GAP