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
}
}