I am working with some code from a previous provider and I found in its void bsp_event_handler(bsp_event_t event)
function this code:
case BSP_EVENT_MID_PRESS:
err_code = app_timer_stop(wake_button);
APP_ERROR_CHECK(err_code);
lock = 0;
break;
I have looked for the BSP_EVENT_MID_PRESS everywhere but I could not find any documentation about it. My concern is about my internal flag called lock
which might be causing a endless loop at main
:
lock = 1;
// do the inits()....
start_counting_press_time();
if(is_counting) {
while(lock == 1) {
}
}
In case you were wondering about the is_counting
flag, it is only assigned in this function
void start_counting_press_time(void)
{
button_is_not_pushed = nrf_gpio_pin_read(BUTTON_1) ? true : false;
if( button_is_not_pushed == 0 )
{
uint32_t err_code = app_timer_start(wake_button, APP_TIMER_TICKS(500, APP_TIMER_PRESCALER) , NULL);
APP_ERROR_CHECK(err_code);
// ...
is_counting = 1;
}
}
Is this the best way to achieve the length of a button press, so it can wake up and begin advertising after x seconds button press/release?