Initial Demo OS

This commit is contained in:
dark98
2026-09-03 00:46:04 +01:00
commit 1491821e96
45 changed files with 2908 additions and 0 deletions
+87
View File
@@ -0,0 +1,87 @@
#include "os_status.h"
#include <string.h>
#include "esp_system.h"
#include "esp_timer.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
static sys_status_t s_status = {
.uptime_sec = 0,
.free_heap = 0,
.min_free_heap = 0,
.cpu_usage_pct = 0,
.wifi_state = WIFI_STATE_OFF,
.wifi_rssi = 0,
.ble_state = BLE_STATE_OFF,
.is_charging = true,
.battery_pct = 100,
.status_bar_visible = true,
.active_app_name = "Clock"
};
static portMUX_TYPE s_status_mux = portMUX_INITIALIZER_UNLOCKED;
void sys_status_init(void)
{
portENTER_CRITICAL(&s_status_mux);
s_status.uptime_sec = 0;
s_status.free_heap = esp_get_free_heap_size();
s_status.min_free_heap = esp_get_minimum_free_heap_size();
s_status.status_bar_visible = true;
portEXIT_CRITICAL(&s_status_mux);
}
void sys_status_get(sys_status_t *out_status)
{
if (!out_status) return;
portENTER_CRITICAL(&s_status_mux);
memcpy(out_status, &s_status, sizeof(sys_status_t));
portEXIT_CRITICAL(&s_status_mux);
}
void sys_status_update(void)
{
portENTER_CRITICAL(&s_status_mux);
s_status.uptime_sec = (uint32_t)(esp_timer_get_time() / 1000000ULL);
s_status.free_heap = esp_get_free_heap_size();
s_status.min_free_heap = esp_get_minimum_free_heap_size();
portEXIT_CRITICAL(&s_status_mux);
}
void sys_status_set_wifi(wifi_state_t state, int8_t rssi)
{
portENTER_CRITICAL(&s_status_mux);
s_status.wifi_state = state;
s_status.wifi_rssi = rssi;
portEXIT_CRITICAL(&s_status_mux);
}
void sys_status_set_ble(ble_state_t state)
{
portENTER_CRITICAL(&s_status_mux);
s_status.ble_state = state;
portEXIT_CRITICAL(&s_status_mux);
}
void sys_status_set_status_bar_visible(bool visible)
{
portENTER_CRITICAL(&s_status_mux);
s_status.status_bar_visible = visible;
portEXIT_CRITICAL(&s_status_mux);
}
bool sys_status_is_status_bar_visible(void)
{
bool visible;
portENTER_CRITICAL(&s_status_mux);
visible = s_status.status_bar_visible;
portEXIT_CRITICAL(&s_status_mux);
return visible;
}
void sys_status_set_active_app_name(const char *name)
{
portENTER_CRITICAL(&s_status_mux);
s_status.active_app_name = name;
portEXIT_CRITICAL(&s_status_mux);
}