Hello,
I need to change my advertising Message periodically. In detail message (A) is sent in every 100ms and message (B) ist sent every 3000ms.
I defined 2 timer:
static void advertising_100ms_handler(void * p_context) {
uint32_t err_code;
uint8_t laenge = 0;
uint8_t i;
uint8_t m_addl_adv_manuf_data[15];
m_addl_adv_manuf_data[0] = 0x11;
m_addl_adv_manuf_data[1] = 0x07;
m_addl_adv_manuf_data[2] = 0x00;
m_addl_adv_manuf_data[3] = 0x00;
for(i = 0; i <= 18; i++)
m_addl_adv_manuf_data[i+4] = 0;
laenge = 0x12;
err_code = sd_ble_gap_adv_data_set(m_addl_adv_manuf_data, laenge, NULL, 0);
APP_ERROR_CHECK(err_code);
nrf_gpio_pin_set(1);
nrf_gpio_pin_clear(1);
}
static void advertising_3000ms_handler(void * p_context) {
uint32_t err_code;
uint8_t laenge = 0;
uint8_t i;
uint8_t m_addl_adv_manuf_data[15];
m_addl_adv_manuf_data[0] = 0x11; //Laenge ohne [0] Laengenbyte
m_addl_adv_manuf_data[1] = 0x07; //flag
m_addl_adv_manuf_data[2] = 0xff; //company identifier
m_addl_adv_manuf_data[3] = 0xff; //company identifier
for(i = 0; i <= 18; i++) //16 Byte Payload
m_addl_adv_manuf_data[i+4] = 0xff;
laenge = 0x12;
err_code = sd_ble_gap_adv_data_set(m_addl_adv_manuf_data, laenge, NULL, 0);
APP_ERROR_CHECK(err_code);
nrf_gpio_pin_set(2);
nrf_gpio_pin_clear(2);
}
Both timers funktions are exectued right. But the advertising message isn´t changing, message a is sent. But message b isn´t visualized in my sniffer. This isn´t very astonishing because my app is running into HARD FAULT. I canßt tell where my code is corrupting. Is anybody able to see my mistake or can provide a better solution?