Hello,
i got problem wher program cant go in while loop in main while advertising is running. Im using ble uart template. So was thinking to stop advertising when button is pressed but i didnt find solution noowher how to stop advertising. In beacon mode i can acces to while loop in main.
Here is my funtion to start advertising.
void advertising_start(void) { uint32_t err_code = ble_advertising_start(&m_advertising, BLE_ADV_MODE_FAST ); APP_ERROR_CHECK(err_code); }
Kev said:program cant go in while loop in main while advertising is running
What, exactly, do you mean by that.
It doesn't seem to make much sense - pretty much all of the SDK examples enter their main while loop while they are advertising!
To Stop (and re-start) advertising, see:
https://devzone.nordicsemi.com/f/nordic-q-a/48461/restart-advertisement-timeout-before-its-actual-timeout-restart-whenever-there-is-a-button-press
void Button_Handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action){ ready_to_flash_led = true ; SET_LED(LED_1, ON); } while(1){ if(ready_to_flash_led == true ){ write_flash_led(0x30); ready_to_flash_led = false; } }
Here is my button handler. When i press button LED goes on, but in main while loop on if sentence doesnt trigger writing to flash function. If i run code in beacon mode or advertising in idle mode it goes into while loop.
static void advertising_init(void) { uint32_t err_code; ble_advertising_init_t init; memset(&init, 0, sizeof(init)); init.advdata.name_type = BLE_ADVDATA_FULL_NAME; init.advdata.include_appearance = false; init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE; 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; init.config.ble_adv_fast_interval = APP_ADV_INTERVAL; init.config.ble_adv_fast_timeout = APP_ADV_DURATION; init.evt_handler = on_adv_evt; err_code = ble_advertising_init(&m_advertising, &init); APP_ERROR_CHECK(err_code); ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG); }
Here is my advertising_init function.