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

Change broadcast manuf_specific_data

Hello, i did not find any solves and i want to ask you are , how can i change my data in advert packet? I tried to do it from TIMER interrupt without advert time out and with but it doesnt work

Here is my source code:

    #define APP_CFG_NON_CONN_ADV_TIMEOUT    0																	
    #define NON_CONNECTABLE_ADV_INTERVAL    MSEC_TO_UNITS(100, UNIT_0_625_MS) 
    
       
     static void advertising_init(void)
    {
        uint32_t        err_code;
        uint8_t         flags = BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED;
    		
    		ble_advdata_t   advdata;
    	
        // Build and set advertisi ng data.
        memset(&advdata, 0, sizeof(advdata));
    	
    		//advdata.name_type               = BLE_ADVDATA_NO_NAME;
        advdata.name_type               = BLE_ADVDATA_FULL_NAME;
        advdata.flags.size              = sizeof(flags);
        advdata.flags.p_data            = &flags;
       
    
    
        ble_advdata_manuf_data_t manuf_specific_data;
    		memset(&manuf_specific_data, 0, sizeof(manuf_specific_data));
        manuf_specific_data.company_identifier = APP_COMPANY_IDENTIFIER;
        manuf_specific_data.data.p_data        = (uint8_t *) my_data;
        manuf_specific_data.data.size          = sizeof(my_data);
    		advdata.p_manuf_specific_data   = &manuf_specific_data;
    
    	
    		err_code = ble_advdata_set(&advdata, NULL);
        APP_ERROR_CHECK(err_code);
    }
    
    static void advertising_start(void)
    {
        uint32_t err_code;
    
    	  memset(&m_adv_params, 0, sizeof(m_adv_params));
    
        m_adv_params.type        = BLE_GAP_ADV_TYPE_ADV_NONCONN_IND;
        m_adv_params.p_peer_addr = NULL;                             // Undirected advertisement.
        m_adv_params.fp          = BLE_GAP_ADV_FP_ANY;
        m_adv_params.interval    = NON_CONNECTABLE_ADV_INTERVAL;
        m_adv_params.timeout     = APP_CFG_NON_CONN_ADV_TIMEOUT;
    	
        err_code = sd_ble_gap_adv_start(&m_adv_params);
        APP_ERROR_CHECK(err_code);
    
        nrf_gpio_pin_set(ADVERTISING_LED_PIN_NO);
    }
......
int main(void)
{
    // Initialize.
    leds_init();

	
    ble_stack_init();
	
		gap_params_init();
	

		advertising_init();

    // Start execution.
    advertising_start();
	

		start_timer();
    // Enter main loop.
    for (;;)
    {
        power_manage();
    }
}

    /**
     * @}
     */
    void TIMER2_IRQHandler(void)
    {
    	uint32_t err_code;
    	count++;
    	my_data[3] = count;
    	//advertising_stop(); ?????????
    	//advertising_init();??????????
    	//advertising_start();????????
    	if ((NRF_TIMER2->EVENTS_COMPARE[0] != 0) && ((NRF_TIMER2->INTENSET & TIMER_INTENSET_COMPARE0_Msk) != 0))
      {
    		NRF_TIMER2->EVENTS_COMPARE[0] = 0;           //Clear compare register 0 event	
    		nrf_gpio_pin_set(ADVERTISING_LED_PIN_NO);           //Set LED
      }
    	
    	if ((NRF_TIMER2->EVENTS_COMPARE[1] != 0) && ((NRF_TIMER2->INTENSET & TIMER_INTENSET_COMPARE1_Msk) != 0))
      {
    		NRF_TIMER2->EVENTS_COMPARE[1] = 0;           //Clear compare register 1 event
    		nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);         //Clear LED
      }
    
    }
Related