nrf52832 Bluetooth low energy broadcast

nrf52832 Bluetooth Low Energy 5.x

Article directory

  • nrf52832 Bluetooth Low Energy 5.x
    • broadcast
    • Features of broadcasting:
  • 1. Modify the code demonstration
    • Broadcast initialization
    • Modify broadcast name
    • Modify broadcast time
    • Modify broadcast content and parameters
  • Summarize

Broadcast

Broadcasting is the basis of low-power Bluetooth communication, broadcasting information to the outside world and waiting to be connected;
Broadcast contains device information, such as (broadcast name, service UUID, etc.)
The host initiates a connection request after searching for the broadcast.

Features of broadcasting:

Broadcast Structure

Broadcast Channel

Broadcast interval
Broadcast interval is usually: 20ms to 10.24s; (must be an integer multiple of 1.25ms)\

Broadcast event classification

——————————

1. Modify code demonstration

Broadcast initialization

/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{<!-- -->
    uint32_t err_code;
    ble_advertising_init_t init;

    memset( & amp;init, 0, sizeof(init));
    //Display the complete broadcast name
    init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
//Display icon: false does not display; true displays
    init.advdata.include_appearance = false;
//Low power Bluetooth mode, does not support limited discoverable mode and BR/EDR
    init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
    //Service UUID number
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids = m_adv_uuids;
    
    init.config.ble_adv_fast_enabled = true;
//broadcast interval
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
//broadcast timeout
    init.config.ble_adv_fast_timeout = APP_ADV_DURATION;
//Callback function for broadcast events
    init.evt_handler = on_adv_evt;

    err_code = ble_advertising_init( & amp;m_advertising, & amp;init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set( & amp;m_advertising, APP_BLE_CONN_CFG_TAG);
}

Modify broadcast name



Modify macro definition and modify name

#define DEVICE_NAME "ble name" /**< Name of device. Will be included in the advertising data. */

Modify broadcast time

Enter slow broadcast mode when the broadcast times out

/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{<!-- -->
    uint32_t err_code;
    ble_advertising_init_t init;

    memset( & amp;init, 0, sizeof(init));
    //Display the complete broadcast name
    init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
//Display icon: false does not display; true displays
    init.advdata.include_appearance = false;
//generally discoverable mode
    init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    //Service UUID number
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids = m_adv_uuids;
    
    init.config.ble_adv_fast_enabled = true;
//broadcast interval
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
//broadcast timeout
    init.config.ble_adv_fast_timeout = APP_ADV_DURATION;//Set to 0 to maintain broadcast mode


    init.config.ble_adv_slow_enabled =true; //Increase slow broadcast
init.config.ble_adv_slow_interval = 1600; // Broadcast interval 1s
init.config.ble_adv_slow_timeout =0; //No timeout
\t\t 
//Callback function for broadcast events
    init.evt_handler = on_adv_evt;
\t\t
    err_code = ble_advertising_init( & amp;m_advertising, & amp;init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set( & amp;m_advertising, APP_BLE_CONN_CFG_TAG);
}

Modify broadcast content and parameters

/**@brief Function for initializing the Advertising functionality.
 */
static void advertising_init(void)
{<!-- -->
    uint32_t err_code;
    ble_advertising_init_t init;
ble_advdata_manuf_data_t my_advdata_manuf_data_t;
static uint8_t my_advdata_data[27]={<!-- -->0x00,0x11,0x22,0x33,0x44};
 

    memset( & amp;init, 0, sizeof(init));
    //Display the complete broadcast name
    init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
//Display icon: false does not display; true displays
    init.advdata.include_appearance = false;
//generally discoverable mode
    init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
    //Service UUID number
    init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
    init.srdata.uuids_complete.p_uuids = m_adv_uuids;
    
//Add manufacturer data
my_advdata_manuf_data_t.company_identifier =0x5257;
my_advdata_manuf_data_t.data.p_data=my_advdata_data;
my_advdata_manuf_data_t.data.size=5;
init.advdata.p_manuf_specific_data = & amp; my_advdata_manuf_data_t;
\t\t
    init.config.ble_adv_fast_enabled = true;
//broadcast interval
    init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
//broadcast timeout
    init.config.ble_adv_fast_timeout = APP_ADV_DURATION;


    init.config.ble_adv_slow_enabled =true; //Increase slow broadcast
init.config.ble_adv_slow_interval = 1600; // Broadcast interval 1s
init.config.ble_adv_slow_timeout =0; //No timeout
\t\t 
//Callback function for broadcast events
    init.evt_handler = on_adv_evt;
\t\t
    err_code = ble_advertising_init( & amp;m_advertising, & amp;init);
    APP_ERROR_CHECK(err_code);

    ble_advertising_conn_cfg_tag_set( & amp;m_advertising, APP_BLE_CONN_CFG_TAG);
\t\t

}

Manually stop broadcasting and start broadcasting

 err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle);
    APP_ERROR_CHECK(err_code);
 err_code =ble_advertising_start( & amp;m_advertising,BLE_ADV_MODE_FAST);
  APP_ERROR_CHECK(err_code);

Summary

For example: The above is what we will talk about today. This article only briefly introduces the implementation and use of broadcast, and Nordic provides a large number of functions and methods that allow us to process data quickly and conveniently.