text/plain
•
1.04 KB
•
45 lines
#pragma once
#include <stdint.h>
// Screen types enum
typedef enum {
SCREEN_NONE = 0,
SCREEN_HOME,
SCREEN_DEMO,
// Add future screens here: SCREEN_SETTINGS, SCREEN_MENU, etc.
} screen_type_t;
// Global app config (available to all screens)
typedef struct {
uint8_t volume; // 0-100
uint8_t brightness; // 0-100
} app_state_t;
// Forward declarations for screen state types
typedef struct home_screen_state home_screen_state_t;
typedef struct demo_screen_state demo_screen_state_t;
// Tagged union for current screen state
typedef struct {
screen_type_t type;
union {
home_screen_state_t *home;
demo_screen_state_t *demo;
// Add future screens here
};
} ui_state_t;
// Globals
extern app_state_t app_state;
extern ui_state_t ui_state;
// Dispatch functions
ui_state_t setup_screen(screen_type_t type);
void free_screen(void);
void update_screen(void);
// Navigation helper
#define navigate_to(screen_type) do { \
free_screen(); \
ui_state = setup_screen(screen_type); \
} while(0)