• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC) • 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库) • 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo 增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
58 lines
2.4 KiB
C
58 lines
2.4 KiB
C
/*
|
||
* meow_ui_sys.h — SDK 内置系统状态读取器 + 全局状态栏(A-0 核心)。
|
||
*
|
||
* 供 meow_ui 内部各 TU 协作(绘制后端 present() 前置覆盖 + 输入层事件循环 1s 轻刷)。
|
||
* 不随 meow_ui.h 发布给应用。应用侧只通过公共 API 控制显隐/全屏:
|
||
* meow_ui_set_statusbar() / meow_ui_statusbar_visible() /
|
||
* meow_ui_set_fullscreen() / meow_ui_statusbar_height()。
|
||
*
|
||
* 数据源与 launcher 的 meow_sys 同源单点一致:
|
||
* - 电量 /sys/class/power_supply/battery/{capacity,status}
|
||
* - WiFi /sys/class/net/wlan0/operstate
|
||
* - 蓝牙 实际 powered(hciconfig -a hci0 的 UP;spawn 贵 → 缓存 30s 刷一次)
|
||
* - 音量 /usr/data/meow/settings.conf 的 audio.volume(launcher 同文件)
|
||
* - 时钟 localtime_r(每秒在绘制时现取)
|
||
*/
|
||
#ifndef MEOW_UI_SYS_H
|
||
#define MEOW_UI_SYS_H
|
||
|
||
#include "meow_ui.h"
|
||
|
||
/* 系统快照(状态栏数据源)。时钟不走这里——绘制时现取 localtime。 */
|
||
typedef struct meow_sys_state {
|
||
int batt; /* 电量 %;-1=未知 */
|
||
int charging; /* 1=充电/满 */
|
||
int wifi_on; /* operstate==up */
|
||
int bt_seen; /* hci0 节点存在 */
|
||
int bt_on; /* 实际上电(hciconfig UP) */
|
||
int vol; /* 音量 0-100 */
|
||
} meow_sys_state;
|
||
|
||
/* 顶部状态栏几何(与 launcher SB_BAR_H=40 / SB_FONT=28 对齐,视觉统一)。 */
|
||
#define MUI_SBAR_H 40
|
||
#define MUI_SBAR_FONT 28
|
||
|
||
/* 首次全量读取;失败仍返回 0(字段置 -1/0)。 */
|
||
int meow_ui_sys_init(void);
|
||
|
||
/* 1s 轻刷:电量/WiFi/音量(便宜);蓝牙 30s 缓存刷新。 */
|
||
void meow_ui_sys_refresh(void);
|
||
|
||
/* 当前快照(内部只读)。 */
|
||
const meow_sys_state *meow_ui_sys_get(void);
|
||
|
||
/* 状态栏是否应绘制(= set_statusbar(1) 且 非 fullscreen)。 */
|
||
int meow_ui_sys_statusbar_active(void);
|
||
|
||
/* 状态栏高度(px):active 时 40,否则 0(供 meow_ui_statusbar_height 用)。 */
|
||
int meow_ui_sys_statusbar_height(void);
|
||
|
||
/* 自上次渲染后状态栏数据是否已变(1s 轻刷/显隐切换置位);读取即清除。
|
||
* 渲染后端 present() 用它决定是否重画顶部条(配合脏区/整帧判断)。 */
|
||
int meow_ui_sys_statusbar_force(void);
|
||
|
||
/* 把状态栏画进 back_buf(顶部 MUI_SBAR_H 行)+ 标脏。调用方负责随后上屏。 */
|
||
void meow_ui_sys_statusbar_render(void);
|
||
|
||
#endif /* MEOW_UI_SYS_H */
|