Fix some coding issues and a possible race condition
This commit is contained in:
@@ -53,6 +53,7 @@ void button_init()
|
||||
enum button_state button_read_event()
|
||||
{
|
||||
uint64_t time_delta;
|
||||
uint64_t activation_stmp;
|
||||
enum button_state temp_state;
|
||||
|
||||
if (override_state != BUTTON_IDLE) {
|
||||
@@ -66,7 +67,13 @@ enum button_state button_read_event()
|
||||
int_state = BUTTON_IDLE;
|
||||
return temp_state;
|
||||
} else {
|
||||
time_delta = systick_get_global_tick() - to_active_timestamp;
|
||||
/* Unfortunately I don't jave a better idea for now to ensure,
|
||||
* that to_active_timestamp is read atomically
|
||||
*/
|
||||
__disable_irq();
|
||||
activation_stmp = to_active_timestamp;
|
||||
__enable_irq();
|
||||
time_delta = systick_get_global_tick() - activation_stmp;
|
||||
if (time_delta >= BUTTON_LONG_ON_TIME_MS)
|
||||
return BUTTON_LONG;
|
||||
else if (time_delta >= BUTTON_SHORT_ON_TIME_MS)
|
||||
|
@@ -791,7 +791,7 @@ static void gui_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_entr
|
||||
}
|
||||
}
|
||||
|
||||
int gui_handle()
|
||||
int gui_handle(void)
|
||||
{
|
||||
int32_t rot_delta;
|
||||
enum button_state button;
|
||||
@@ -813,7 +813,7 @@ int gui_handle()
|
||||
return 1;
|
||||
}
|
||||
|
||||
void gui_init()
|
||||
void gui_init(void)
|
||||
{
|
||||
rotary_encoder_setup();
|
||||
button_init();
|
||||
|
Reference in New Issue
Block a user