clean up
This commit is contained in:
@@ -1,97 +1,40 @@
|
||||
/*
|
||||
* MTG RFID Companion - System state machine
|
||||
* MTG RFID Companion - System state machine (ponytail: atomic scalar state)
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/semphr.h"
|
||||
#include "app_state.h"
|
||||
|
||||
static SemaphoreHandle_t s_lock;
|
||||
static app_state_t s_view = APP_STATE_SCANNER;
|
||||
static int32_t s_life = 20;
|
||||
static int32_t s_life_preset = 20;
|
||||
|
||||
const char *app_state_name(app_state_t state)
|
||||
{
|
||||
switch (state) {
|
||||
case APP_STATE_BOOT: return "BOOT";
|
||||
case APP_STATE_MENU: return "MENU";
|
||||
case APP_STATE_SCANNER: return "SCANNER";
|
||||
case APP_STATE_CARD_VIEW: return "CARD_VIEW";
|
||||
case APP_STATE_LIFE_COUNTER: return "LIFE_COUNTER";
|
||||
case APP_STATE_DICE_ROLLER: return "DICE_ROLLER";
|
||||
case APP_STATE_COMMANDER_TRACKER: return "COMMANDER_TRACKER";
|
||||
case APP_STATE_TOKEN_SPAWNER: return "TOKEN_SPAWNER";
|
||||
case APP_STATE_STORAGE_MANAGER: return "STORAGE_MANAGER";
|
||||
case APP_STATE_DEVICE_INFO: return "DEVICE_INFO";
|
||||
case APP_STATE_REGISTRATION: return "REGISTRATION";
|
||||
}
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
static void ensure_lock(void)
|
||||
{
|
||||
if (s_lock == NULL) {
|
||||
s_lock = xSemaphoreCreateMutex();
|
||||
}
|
||||
}
|
||||
static volatile app_state_t s_view = APP_STATE_SCANNER;
|
||||
static volatile int32_t s_life = 20;
|
||||
static volatile int32_t s_life_preset = 20;
|
||||
|
||||
void app_set_life(int32_t life)
|
||||
{
|
||||
ensure_lock();
|
||||
xSemaphoreTake(s_lock, portMAX_DELAY);
|
||||
s_life = life;
|
||||
xSemaphoreGive(s_lock);
|
||||
}
|
||||
|
||||
int32_t app_get_life(void)
|
||||
{
|
||||
ensure_lock();
|
||||
xSemaphoreTake(s_lock, portMAX_DELAY);
|
||||
int32_t v = s_life;
|
||||
xSemaphoreGive(s_lock);
|
||||
return v;
|
||||
return s_life;
|
||||
}
|
||||
|
||||
void app_set_life_preset(int32_t preset)
|
||||
{
|
||||
ensure_lock();
|
||||
xSemaphoreTake(s_lock, portMAX_DELAY);
|
||||
s_life_preset = preset;
|
||||
s_life = preset;
|
||||
xSemaphoreGive(s_lock);
|
||||
}
|
||||
|
||||
int32_t app_get_life_preset(void)
|
||||
{
|
||||
ensure_lock();
|
||||
xSemaphoreTake(s_lock, portMAX_DELAY);
|
||||
int32_t v = s_life_preset;
|
||||
xSemaphoreGive(s_lock);
|
||||
return v;
|
||||
return s_life_preset;
|
||||
}
|
||||
|
||||
void app_set_view(app_state_t view)
|
||||
{
|
||||
ensure_lock();
|
||||
xSemaphoreTake(s_lock, portMAX_DELAY);
|
||||
s_view = view;
|
||||
xSemaphoreGive(s_lock);
|
||||
}
|
||||
|
||||
app_state_t app_get_view(void)
|
||||
{
|
||||
ensure_lock();
|
||||
xSemaphoreTake(s_lock, portMAX_DELAY);
|
||||
app_state_t v = s_view;
|
||||
xSemaphoreGive(s_lock);
|
||||
return v;
|
||||
}
|
||||
|
||||
void app_enter_keyed_view(app_state_t view)
|
||||
{
|
||||
if (view == APP_STATE_LIFE_COUNTER || view == APP_STATE_CARD_VIEW) {
|
||||
app_set_view(view);
|
||||
}
|
||||
return s_view;
|
||||
}
|
||||
Reference in New Issue
Block a user