feat(sdk): meow_config_* App配置读写API(agent-158)
- 6 API: meow_config_dir/set/get/int/bool/remove; 落 TF MeowData/<pkg>/data/<key>.cfg(env MEOW_DATA_DIR, 回退/tmp/meowcfg_<pid>) - 与系统设置 meow_settings_*(板载settings.conf) 区分; key清洗[A-Za-z0-9._-]→_ 防路径穿越; 值上限4096; 降级不崩(pthread_once/mutex) - MEOW_CFG_* 错误码(避开 meow_ipc.h 枚举命名空间, 防宏展开冲突); 数值与 MEOWOS_API/meow_settings.h 同值 - meow_ui.a=92e61fb8(新增config成员) hello=5e31d919不变(0回归, 静态链未拉入新成员); build_sdk 0warning; 宿主test_meow_ui_config ALL PASS - 未重链launcher(launcher未用config); 遗留真机验证MEOW_DATA_DIR落盘/无卡降级
This commit is contained in:
1 parent
9c733fcf73
commit
dcba5975a2
4 files changed
+388
-1
No files matched your search
@@ -21,6 +21,17 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* meow_config_*(§9.2)专用返回码。数值与 MEOWOS_API.md §1 的同名错误码一致,
|
||||
* 但用 meow_cfg 前缀——因为 MEOW_OK/MEOW_ERR_* 这个命名空间已被共享协议头
|
||||
* meow_ipc.h(枚举)与 launcher meow_settings.h(宏)占用,SDK 的 meow_notify_ipc.c
|
||||
* 同 TU include meow_ui.h + meow_ipc.h,若在此定义同名宏会导致「宏展开枚举标识符」冲突。 */
|
||||
#define MEOW_CFG_OK 0 /* 成功 */
|
||||
#define MEOW_CFG_ERR_INVAL -1 /* 参数/取值非法(空 key、NULL out、outsz<=0 等) */
|
||||
#define MEOW_CFG_ERR_NOENT -2 /* 键未设/文件不存在 */
|
||||
#define MEOW_CFG_ERR_IO -5 /* 读写(存储/文件)失败 */
|
||||
#define MEOW_CFG_ERR_NOMEM -6 /* 路径超长 */
|
||||
#define MEOW_CFG_ERR_NODEV -10 /* 无数据目录(卡不在/只读/不可建) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -611,6 +622,30 @@ int meow_notify_has_active(void); /* 1=尚有活动通知,0=无 *
|
||||
const char *meow_notify_urgency_str(meow_notify_urgency u);
|
||||
const char *meow_notify_category_str(meow_notify_category cat);
|
||||
|
||||
/* ============================================================ */
|
||||
/* §9.2 应用配置读写(meow_config_*,M2.x 最小可用版) */
|
||||
/* ============================================================ */
|
||||
/* App 自有配置读写:与系统设置 meow_settings_*(板载 settings.conf、系统级、带 schema)
|
||||
* 明确区分——这是单个 App 自己的键值偏好,落 TF 数据目录,不占板载、无 schema。
|
||||
*
|
||||
* - 数据目录:优先 env MEOW_DATA_DIR(launcher 注入 /usr/data/mnt/sd_0/MeowData/<pkg>/data,
|
||||
* 见 app_launcher.c launch_app);无 env(手动跑/宿主测/无卡)回退 /tmp/meowcfg_<pid>
|
||||
* (非持久但仍可写)。meow_config_dir() 返回最终目录;空/不可建返回 NULL。
|
||||
* - 文件布局:每键一小文件 <data>/<sanitized_key>.cfg,内容=值字符串(空串=0 字节文件)。
|
||||
* key 只允许 [A-Za-z0-9._-],其余字符替换为 '_'(杜绝路径穿越);key 上限 64。
|
||||
* - 轻量:每次 get 读文件(App 配置小),不做大内存缓存;pthread_once 惰性初始化目录。
|
||||
* - 失败降级:无数据目录/写失败 → 返回负错误码(见上 MEOW_CFG_ERR_*),不崩不阻塞。
|
||||
*
|
||||
* 返回码:MEOW_CFG_OK(0) 成功;(set) 负=失败;(get) MEOW_CFG_ERR_NOENT(-2)=键未设/文件不存在;
|
||||
* meow_config_int/bool 对任何非 MEOW_CFG_OK 一律返回 def。
|
||||
* 错误码数值同 MEOWOS_API.md §1 / meow_settings_*(MEOW_ERR_*)一致,便于 App 习惯。 */
|
||||
const char *meow_config_dir(void); /* 当前 App 数据目录(data);空/不可建 NULL */
|
||||
int meow_config_set(const char *key, const char *val);/* 写 <data>/<key>.cfg;成功 MEOW_CFG_OK(0) */
|
||||
int meow_config_get(const char *key, char *out, int outsz); /* 读;未设/不存在返回 MEOW_CFG_ERR_NOENT */
|
||||
int meow_config_int(const char *key, int def); /* 便捷 int;未设/非法返回 def */
|
||||
int meow_config_bool(const char *key, int def); /* 便捷 bool;未设/非法返回 def */
|
||||
void meow_config_remove(const char *key); /* 删键(无该键/无目录则静默) */
|
||||
|
||||
/* ============================================================ */
|
||||
/* §5.7 应用可读 TF 卡字体列表(M2.58:字体索引 / 查列表 / 丢失降级默认) */
|
||||
/* ============================================================ */
|
||||
|
||||
Reference in new issue
Block a user