diff options
Diffstat (limited to 'main/viewport_state.c')
| -rw-r--r-- | main/viewport_state.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/main/viewport_state.c b/main/viewport_state.c new file mode 100644 index 0000000..9115ce3 --- /dev/null +++ b/main/viewport_state.c @@ -0,0 +1,46 @@ +#include "viewport_state.h" + +#include <string.h> + +#include "esp_timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/semphr.h" + +static viewport_state_t s_state; +static SemaphoreHandle_t s_mutex; + +void viewport_state_init(void) +{ + memset(&s_state, 0, sizeof(s_state)); + s_state.configured = false; + s_state.state = VIEWPORT_STATE_UNCONFIGURED; + s_state.brightness = 80; + s_state.idle_timeout_ms = 60000; + s_state.orientation = VIEWPORT_ORIENTATION_PORTRAIT; + s_state.boot_us = (uint64_t)esp_timer_get_time(); + s_state.last_frame_us = -1; + + s_mutex = xSemaphoreCreateMutex(); +} + +viewport_state_t *viewport_state_get(void) +{ + return &s_state; +} + +void viewport_state_lock(void) +{ + xSemaphoreTake(s_mutex, portMAX_DELAY); +} + +void viewport_state_unlock(void) +{ + xSemaphoreGive(s_mutex); +} + +const char *viewport_state_resolution_str(void) +{ + return (s_state.orientation == VIEWPORT_ORIENTATION_PORTRAIT) + ? "480x800" + : "800x480"; +} |
