CPU0和CPU1的交互问题
Posted: 2025年 Aug 1日 16:38
我们现在有个需求,就是每次按键都显示不同的动画,怎么实现
我们现在有个需求,就是每次按键都显示不同的动画,怎么实现
CPU0通过IPC发生消息到CPU1,CPU1根据消息来显示一些内容。你可以在按键里发送自定义的TY_DISPLAY_TYPE_E 给CPU1,CPU1按需去显示UI。
CPU0:发送消息
Code: Select all
typedef enum { // 目前支持的事件,可以自己扩展
TY_DISPLAY_TP_HUMAN_CHAT,
TY_DISPLAY_TP_AI_CHAT,
TY_DISPLAY_TP_STAT_SLEEP,
TY_DISPLAY_TP_STAT_WAKEUP,
TY_DISPLAY_TP_STAT_NETCFG,
TY_DISPLAY_TP_STAT_NET,
TY_DISPLAY_TP_STAT_POWERON,
TY_DISPLAY_TP_STAT_ONLINE,
TY_DISPLAY_TP_CHAT_MODE,
TY_DISPLAY_TP_CHAT_STAT,
TY_DISPLAY_TP_MALLOC,
TY_DISPLAY_TP_EMOJI,
TY_DISPLAY_TP_VOLUME
TY_DISPLAY_TP_ASR_EMOJI,
TY_DISPLAY_TP_STAT_IDLE,
TY_DISPLAY_TP_STAT_LISTEN,
TY_DISPLAY_TP_STAT_SPEAK,
TY_DISPLAY_TP_STAT_BATTERY,
TY_DISPLAY_TP_STAT_CHARGING,
TY_DISPLAY_TP_LANGUAGE,
} TY_DISPLAY_TYPE_E;
// 调用这个接口发送消息给CPU1
OPERATE_RET tuya_ai_display_msg(char *msg, int len, TY_DISPLAY_TYPE_E display_tp)
CPU1:接收线程:
Code: Select all
STATIC VOID_T __tuya_ai_display_thread(VOID_T *arg)
{
TY_DISPLAY_MSG_T disp_msg;
OPERATE_RET rt = OPRT_OK;
tuya_ui_init();
for (;;) {
rt = tkl_queue_fetch(disp_msg_queue, &disp_msg, TKL_QUEUE_WAIT_FROEVER);
lv_vendor_disp_lock();
tuya_ui_app(&disp_msg); // 这里处理不同类型的ui,wechat、robot、xiaozhi等
lv_vendor_disp_unlock();
if (disp_msg.data && disp_msg.len) {
tkl_system_psram_free(disp_msg.data);
}
}
}