feat(launcher): M3导航栈+M5通知点击跳转 (agent-202) — nav_stack(≤16深)+MSG_NAV REPORT/EXIT+launch_activity链路注入(MEOW_ACTIVITY/MEOW_CHAIN)+栈根退出回主屏; 通知点击按route_status(0拉起/1 NO ROUTE/2 SOURCE NOT FOUND/-1 NONE关面板不动作); picker协议位预留(0x0070/0x0071); 裸App兼容
launcher 4fe4103a→a42171a1; qemu实测 declare/query/nav report/exit/notify+querynotif 全过 发现: §10.5 App前台通知中心叠加会话(MSG_NOTIF_OPEN)实际未实现,文档超前,待补
This commit is contained in:
1 parent
955dbe1228
commit
85b4aea24f
9 files changed
+321
-39
No files matched your search
@@ -1133,6 +1133,27 @@ static void ipc_dispatch(struct meow_ipc_msg *m)
|
||||
logmsg("ipc: ACT_BACK -> ACK");
|
||||
break;
|
||||
}
|
||||
/* M3 导航栈(FRAMEWORK_DESIGN §3):前台应用上报导航(REPORT)或请求退出(EXIT)。
|
||||
* REPORT → 更新 nav_stack 深度/顶层;EXIT → 置退出请求,前台 waitpid 循环终止应用回主屏。
|
||||
* 均在主循环单写者上下文执行(meow_ipc_process 排空处;launch_* 前台循环也调 meow_ipc_process)。 */
|
||||
case MSG_NAV: {
|
||||
m_nav_t n;
|
||||
memset(&n, 0, sizeof n);
|
||||
memcpy(&n, m->payload, m->plen < (uint16_t)sizeof n ? m->plen : (uint16_t)sizeof n);
|
||||
n.app_id[MEOW_APP_ID_MAX - 1] = 0;
|
||||
n.current[MEOW_ACT_MAX - 1] = 0;
|
||||
if (n.nav_type == MEOW_NAV_REPORT)
|
||||
meow_nav_report(n.app_id, n.depth, n.current);
|
||||
else
|
||||
meow_nav_request_exit(); /* MEOW_NAV_EXIT(含未知值防御性按退出处理) */
|
||||
m_ack_t a;
|
||||
a.code = MEOW_OK;
|
||||
a.status = (uint32_t)n.depth;
|
||||
ipc_send(m->fd, MSG_ACK, m->req_id, &a, sizeof a);
|
||||
logmsg("ipc: NAV app=%s type=%u depth=%u top=\"%s\" -> ACK",
|
||||
n.app_id, n.nav_type, n.depth, n.current);
|
||||
break;
|
||||
}
|
||||
/* M2a:通知存储(NOTIFICATION_SYSTEM.md §4/§7/§8)。IPC 线程只入队,此处在主循环
|
||||
* 单写者落存储 + 回 ACK(与 HELLO/QUERY 同一线程模型,绝不在 socket IO 阻塞)。 */
|
||||
case MSG_NOTIFY: {
|
||||
|
||||
Reference in new issue
Block a user