This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

ble_app_tile advertising question

Hi 

I am using nrf52832 to develop a ble hid device with tile function

I merge sample code ble_app_tile to ble_app_hid_keyboard example

I use the advertising_init function  from ble_app_tile  instead of  original function   

and I found when the advertising start, it will advertise continuously and non stop until running down of battery

any sample code or discussion thread I can reference to fix this issue?

bellow is my advertising_init  function

static void advertising_init(void)
{
    NRF_LOG_INFO("advertising_init\n");
    ret_code_t            err_code;
    uint16_t              uuid, uuid_hid;

    uint16_t              tile_service_uuid;
    uint16_t              adv_interval;
    uint8_t               tile_service_data_length;
    uint8_t               tile_service_data[TILE_SERVICE_DATA_MAX_LENGTH];
    uint8_t               manuf;
	//ble_advertising_init_t init;
    ble_advdata_service_data_t service_data_array[1];   /**< Array of Service data structures. */
	
    /* manufacturing data is available */
    ble_advdata_manuf_data_t   manuf_specific_data;     /**< Manufacturer specific data. */

    /* Set manufacturing data to default */ 
    memset(&manuf_specific_data, 0, sizeof(manuf_specific_data));

	
	
	
    // Set Tile default advertising parameters.
    memset(&g_adv_params, 0, sizeof(g_adv_params));

    g_adv_params.primary_phy     = BLE_GAP_PHY_1MBPS;
    g_adv_params.duration        = APP_ADV_DURATION;
    g_adv_params.properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED;
    g_adv_params.p_peer_addr     = NULL;
    g_adv_params.filter_policy   = BLE_GAP_ADV_FP_ANY;

    // Build and set Tile advertising data.
    memset(&g_advdata, 0, sizeof(g_advdata));
		
    g_advdata.name_type               = BLE_ADVDATA_FULL_NAME;
    g_advdata.include_appearance      = true;
    g_advdata.flags                   = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;

    /* Get current advertising data and params */
    (void) tile_gap_get_adv_params(&adv_interval, &tile_service_uuid, &tile_service_data_length, tile_service_data, &manuf);

    g_adv_params.interval = adv_interval;

    if (0 != tile_service_data_length) 
    {
        service_data_array[0].service_uuid  = tile_service_uuid; 
        service_data_array[0].data.size     = tile_service_data_length; 
        service_data_array[0].data.p_data   = tile_service_data; 
        g_advdata.p_service_data_array      = service_data_array; 
        g_advdata.service_data_count        = 1;
    }

    uuid = tile_service_uuid;
	uuid_hid = BLE_UUID_HUMAN_INTERFACE_DEVICE_SERVICE;
    ble_uuid_t adv_uuids[]             = {{uuid, BLE_UUID_TYPE_BLE}, {uuid_hid,BLE_UUID_TYPE_BLE}};
    g_advdata.uuids_complete.uuid_cnt  = 2;
    g_advdata.uuids_complete.p_uuids   = adv_uuids;

    m_adv_data.adv_data.len = BLE_GAP_ADV_SET_DATA_SIZE_MAX;

    err_code = ble_advdata_encode(&g_advdata, m_adv_data.adv_data.p_data, &m_adv_data.adv_data.len);
    APP_ERROR_CHECK(err_code);
		
		
    err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, &m_adv_data, &g_adv_params);
    APP_ERROR_CHECK(err_code);
		
	err_code = bsp_indication_set(BSP_INDICATE_ADVERTISING);
    APP_ERROR_CHECK(err_code);
}

Parents Reply Children
Related