Initial Demo OS
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#ifndef OS_EVENT_H
|
||||
#define OS_EVENT_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "esp_err.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* System Event IDs */
|
||||
typedef enum {
|
||||
SYS_EVENT_INPUT_SHORT_PRESS = 1, /* Single click (e.g. Next / Increment) */
|
||||
SYS_EVENT_INPUT_DOUBLE_CLICK, /* Double click (e.g. Back / Cancel) */
|
||||
SYS_EVENT_INPUT_LONG_PRESS, /* Hold 400ms (e.g. Select / Confirm) */
|
||||
SYS_EVENT_INPUT_EXTRA_LONG_PRESS, /* Hold 1500ms (e.g. Global Home / Launcher) */
|
||||
SYS_EVENT_APP_SWITCH, /* Switched to a new app */
|
||||
SYS_EVENT_TICK_1S, /* 1 Hz system heartbeat */
|
||||
SYS_EVENT_WIFI_STATUS_CHANGED, /* WiFi connection state changed */
|
||||
SYS_EVENT_BATTERY_STATUS_CHANGED, /* Battery level / charging changed */
|
||||
SYS_EVENT_CUSTOM
|
||||
} sys_event_id_t;
|
||||
|
||||
typedef struct {
|
||||
sys_event_id_t id;
|
||||
int32_t data;
|
||||
void *ptr_data;
|
||||
} sys_event_t;
|
||||
|
||||
typedef void (*sys_event_cb_t)(const sys_event_t *event, void *user_arg);
|
||||
|
||||
/**
|
||||
* @brief Initialize the global system event bus.
|
||||
*/
|
||||
esp_err_t sys_event_init(void);
|
||||
|
||||
/**
|
||||
* @brief Post an event to the global event bus.
|
||||
*/
|
||||
esp_err_t sys_event_post(sys_event_id_t id, int32_t data, void *ptr_data);
|
||||
|
||||
/**
|
||||
* @brief Subscribe to system events.
|
||||
*/
|
||||
esp_err_t sys_event_subscribe(sys_event_cb_t callback, void *user_arg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // OS_EVENT_H
|
||||
@@ -0,0 +1,51 @@
|
||||
#ifndef OS_STATUS_H
|
||||
#define OS_STATUS_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
WIFI_STATE_OFF = 0,
|
||||
WIFI_STATE_CONNECTING,
|
||||
WIFI_STATE_CONNECTED,
|
||||
WIFI_STATE_AP_MODE,
|
||||
} wifi_state_t;
|
||||
|
||||
typedef enum {
|
||||
BLE_STATE_OFF = 0,
|
||||
BLE_STATE_ADVERTISING,
|
||||
BLE_STATE_CONNECTED,
|
||||
} ble_state_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t uptime_sec;
|
||||
uint32_t free_heap;
|
||||
uint32_t min_free_heap;
|
||||
uint8_t cpu_usage_pct;
|
||||
wifi_state_t wifi_state;
|
||||
int8_t wifi_rssi;
|
||||
ble_state_t ble_state;
|
||||
bool is_charging;
|
||||
uint8_t battery_pct;
|
||||
bool status_bar_visible;
|
||||
const char *active_app_name;
|
||||
} sys_status_t;
|
||||
|
||||
void sys_status_init(void);
|
||||
void sys_status_get(sys_status_t *out_status);
|
||||
void sys_status_update(void);
|
||||
void sys_status_set_wifi(wifi_state_t state, int8_t rssi);
|
||||
void sys_status_set_ble(ble_state_t state);
|
||||
void sys_status_set_status_bar_visible(bool visible);
|
||||
bool sys_status_is_status_bar_visible(void);
|
||||
void sys_status_set_active_app_name(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // OS_STATUS_H
|
||||
Reference in New Issue
Block a user