2b66f96d01
新增 scripts/check_coding_standard.py + coding-standard 钩子(S1~S9: 头文件保护宏、文件头注释、宏大写、_t 后缀、switch default、 禁 strcpy/sprintf/goto/Tab、函数注释) 修复存量违规:NET_* 字节序宏大写化、net_fd_set 等类型加 _t 后缀、 net_inet_ntoa 的 sprintf 改 snprintf、补 4 处函数注释与 ui_task.c 文件头 docs/代码规范/pre-commit使用说明.md:新增 2.8 节,修正失效文档路径
75 lines
2.1 KiB
C
75 lines
2.1 KiB
C
/*
|
|
* 模块名称:UI Task
|
|
* 模块功能:UI 主任务,等待网络就绪后初始化显示/菜单/推流并周期刷新
|
|
* 适用平台:STM32F407 系列(LVGL + CH395F 以太网)
|
|
* 作者:王建锋
|
|
* 创建日期:2026-08-30
|
|
* 修改记录:
|
|
*/
|
|
#include "ui_task.h"
|
|
|
|
#include "cmsis_os.h"
|
|
#include "sys_events.h"
|
|
|
|
#include "ui_port.h"
|
|
#include "ui_menu.h"
|
|
#include "ui_net_sink.h"
|
|
|
|
#define DBG_TAG "[UI_TASK]"
|
|
#include "dbg_log.h"
|
|
|
|
/*
|
|
* 函数功能:等待网络就绪事件
|
|
* 入口参数:无
|
|
* 返回值:无
|
|
* 限定条件:sys_evtHandle 为 NULL 时直接返回
|
|
* 函数说明:无限期等待 SYS_EVT_NET_READY 标志
|
|
*/
|
|
static void ui_task_wait_net_ready(void)
|
|
{
|
|
if (sys_evtHandle != NULL) {
|
|
osEventFlagsWait(sys_evtHandle, SYS_EVT_NET_READY,
|
|
osFlagsWaitAny, osWaitForever);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* 函数功能:UI 主任务入口,初始化显示/菜单/推流并进入刷新主循环
|
|
* 入口参数:argument - FreeRTOS 任务参数(未使用) void *
|
|
* 返回值:无
|
|
* 限定条件:FreeRTOS 已启动
|
|
* 函数说明:1. 等待 SYS_EVT_NET_READY 后依次初始化 ui_port/ui_menu/ui_net_sink
|
|
* 2. 主循环周期调用 ui_port_step 与 ui_net_sink_poll 刷新界面
|
|
*/
|
|
void ui_task_func(void *argument)
|
|
{
|
|
(void)argument;
|
|
|
|
DBG_INFO("UI task: started, wait net ready");
|
|
ui_task_wait_net_ready();
|
|
DBG_INFO("UI task: net ready, init port");
|
|
|
|
DBG_INFO("UI task: ui_port_init enter");
|
|
if (ui_port_init() != 0) {
|
|
DBG_ERROR("UI port init: FAIL");
|
|
for (;;) { osDelay(1000); }
|
|
}
|
|
DBG_INFO("UI port init: OK");
|
|
DBG_INFO("UI task: ui_menu_init enter");
|
|
if (ui_menu_init() != 0) {
|
|
DBG_ERROR("UI menu init: FAIL");
|
|
for (;;) { osDelay(1000); }
|
|
}
|
|
DBG_INFO("UI menu init: OK");
|
|
if (ui_net_sink_start(UI_NET_SINK_PORT) != 0) {
|
|
DBG_ERROR("UI net sink: start FAIL");
|
|
}
|
|
DBG_INFO("UI net sink: started (port %u)", (unsigned)UI_NET_SINK_PORT);
|
|
|
|
while (1) {
|
|
ui_port_step(10);
|
|
ui_net_sink_poll();
|
|
osDelay(10);
|
|
}
|
|
}
|