通知模型补全(agent-107: SDK icon+update_progress / IPC urgency+MSG_NOTIFY_PROGRESS / 存储 urgency+icon回退+progress / CSV加3列) + 全屏收合视觉+滑条(agent-108)
This commit is contained in:
1 parent
b3e57d4b55
commit
e8fa373a2f
18 files changed
+410
-56
No files matched your search
@@ -66,14 +66,15 @@ typedef struct meow_notif {
|
||||
char category[MEOW_NOTIF_CAT_MAX]; /* 通知类型(媒体通知="media") */
|
||||
char summary[MEOW_NOTIF_SUMMARY_MAX]; /* 标题(单行) */
|
||||
char body[MEOW_NOTIF_BODY_MAX]; /* 正文(可多行) */
|
||||
char app_icon[MEOW_NOTIF_ICON_MAX]; /* 图标 icon name 或 path */
|
||||
char app_icon[MEOW_NOTIF_ICON_MAX]; /* 图标 icon name 或 path(SDK icon;空→app 图标回退) */
|
||||
char actions[MEOW_NOTIF_ACTIONS_MAX]; /* actions[](NUL 分隔;v1 空,M2b 填) */
|
||||
char hints[MEOW_NOTIF_HINTS_MAX]; /* hints{} 原始 "k=v;..." 串(v1 空,M2b 填) */
|
||||
uint32_t expire_timeout; /* 超时 ms;0xFFFFFFFF=ONGOING 常驻 */
|
||||
uint64_t created_ms; /* 创建时刻(墙钟 epoch ms,供归档/显示) */
|
||||
uint64_t dump_at_ms; /* 转储时刻(monotonic ms,TTL=创建+10s;ONGOING 亦到此转储) */
|
||||
int32_t progress; /* MeowOS:0-100 进度;<0=无 */
|
||||
int32_t progress; /* MeowOS:0-100 进度;<0=无(实时仅改内存,落盘只在创建/结束) */
|
||||
char target_activity[MEOW_NOTIF_ACTIVITY_MAX]; /* MeowOS:点击跳转目标 activity */
|
||||
uint8_t urgency; /* 紧急度 0-3(低/普通/高/紧急);缺省 NORMAL */
|
||||
uint8_t ongoing; /* 1=常驻通知(服务死随清) */
|
||||
uint8_t media; /* 1=媒体通知(走 notify.media_quota) */
|
||||
uint8_t dismissed; /* 1=已撤下 */
|
||||
@@ -84,6 +85,10 @@ typedef struct meow_notif {
|
||||
/* 转储回调(M2c 落盘 / 本批默认仅日志):通知归档时调用。 */
|
||||
typedef void (*meow_notif_dump_cb)(const meow_notif_t *n);
|
||||
|
||||
/* 图标回退回调:post 的 n->app_icon 为空时调用,按 app_id 填该 app 默认图标(name/path)。
|
||||
* 返回 1=已填 out;0/空=无(通知中心 UI 再回退)。NULL=禁用回退(保持空 app_icon)。 */
|
||||
typedef int (*meow_notif_icon_cb)(const char *app_id, char *out, size_t outsz);
|
||||
|
||||
/* == 生命周期 == */
|
||||
int meow_notif_init(void); /* 幂等;从 meow_settings 读 notify.* 配额(B2a) */
|
||||
int meow_notif_shutdown(void); /* 保存/清理(进程退出前调;本批=归档未转储项) */
|
||||
@@ -119,12 +124,19 @@ void meow_notif_before_poweroff(void);
|
||||
/* 覆盖转储回调(NULL=恢复默认日志;M2c 接 TF 落盘)。 */
|
||||
void meow_notif_set_dump_cb(meow_notif_dump_cb cb);
|
||||
|
||||
/* 覆盖图标回退回调(NULL=禁用,空 app_icon 保持空;M5 通知中心 UI 再回退)。 */
|
||||
void meow_notif_set_icon_cb(meow_notif_icon_cb cb);
|
||||
|
||||
/* 实时更新一条活跃通知的进度(0-100,<0=清除)。仅改内存活跃槽;progress>=100 视为「结束」,
|
||||
* 立即归档(落盘快照)并(非 ONGOING)释放槽——对应「里程碑落盘」。返回 NOTIF_OK/NOTIF_ERR_NOENT。 */
|
||||
int meow_notif_update_progress(uint32_t id, int progress);
|
||||
|
||||
/* == TF 卡转储(通知#6 / M2c,NOTIFICATION_SYSTEM.md §5/§8 + MEOWOS_SPEC_REF §5.3)==
|
||||
* 把 dump_cb 接到 meow_notif_dump_tf 即把每条通知追加为一行 CSV 到
|
||||
* <卡根>/MeowOS/notifications/notifications.log,并按日志总大小滚动截断
|
||||
* (保留最新 10MB,不被电源事件清;启动时 meow_notif_init 先清板载+内存表)。
|
||||
* 字段按 meow_notif 结构(title<-summary;urgency 结构无字段故列留空;均做 CSV
|
||||
* 转义/去换行)。无卡/不可写仅打点降级,绝不崩。 */
|
||||
* 字段按 meow_notif 结构(title<-summary;app_icon<-SDK icon 空→app 图标回退;urgency 0-3;
|
||||
* progress 当前值,-1=无;均做 CSV 转义/去换行)。无卡/不可写仅打点降级,绝不崩。 */
|
||||
int meow_notif_dump_tf(const meow_notif_t *n); /* 0=成功;负=失败(无卡/IO/参数) */
|
||||
void meow_notif_clear_tf(void); /* 开机清板载通知(清空文件,保留目录) */
|
||||
void meow_notif_set_tf_path(const char *path); /* 覆盖转储日志路径;NULL=恢复默认卡路径(宿主单测用) */
|
||||
|
||||
Reference in new issue
Block a user