EMS 知识库
首页 / knowledge/代码解析/hmi/led

app_led_cfg.h

源文件路径:hmi/led/app_led_cfg.h 所属模块:hmi/led(人机界面 - WS2812 灯带配置层) 代码行数:83

1. 文件职责

本文件是 WS2812 灯带模块的颜色配置头,集中定义"业务状态 → RGB 颜色值"的可读符号:状态色宏(SYS_COLOR_*)、SOC 色宏(SOC_COLOR_*)、三套颜色枚举,以及两个颜色查询函数的声明。

它处在灯带数据流的"取色字典"位置:上层 hmi/led/app_led.c 用 STATUS_LED_COLOR_E/SOC_LED_COLOR_E 两个枚举描述当前该显示什么状态,本文件把状态名与函数原型暴露出去,具体映射实现在 hmi/led/app_led_cfg.c。

它同时是灯带模块的"依赖汇聚点":hmi/led/app_led.h:16 → 本文件 → led_dev.h(编码层)+ chip.h/includes.h(平台类型)+ bms.h/ems.h(数据源),因此任何包含 app_led.h 的模块都会连带看到灯带全部符号。

本文件还对外声明全局变量 sys_current_status_color(hmi/led/app_led_cfg.h:71),这是 hmi/led.c(写入方)与 hmi/led/app_led.c(读取方)之间唯一的状态通道。

2. 关键数据结构与宏

名称类型(结构体/枚举/宏/联合体)说明
__APP_LED_CFG_H__宏(防重包含)头文件保护宏,hmi/led/app_led_cfg.h:10-11
SYS_COLOR_OFF宏(0x000000)长灯带系统状态——熄灭,hmi/led/app_led_cfg.h:26
SYS_COLOR_GREEN宏(0x00FF00)正常运行绿色,hmi/led/app_led_cfg.h:27
SYS_COLOR_RED宏(0xFF0000)故障红色,hmi/led/app_led_cfg.h:28
SYS_COLOR_YELLOW宏(0xFFFF00)告警黄色(红+绿),hmi/led/app_led_cfg.h:29
SOC_COLOR_WHITE宏(0xFFFFFF)SOC 灯带白色(已联网),hmi/led/app_led_cfg.h:32
SOC_COLOR_BLUE宏(0x0000FF)SOC 灯带蓝色(未联网),hmi/led/app_led_cfg.h:33
led_color_t枚举(hmi/led/app_led_cfg.h:37-45)通用颜色枚举:LED_COLOR_NONE(0)/RED/BLUE/GREEN/WHITE/LED_COLOR_MAX。全工程无任何使用点,属预留
STATUS_LED_COLOR_E枚举(hmi/led/app_led_cfg.h:48-54)长灯带系统状态色:SYS_STATUS_NOT_RUN_LED_OFF(0,熄灭/未运行)、SYS_STATUS_NORMAL_LED_GREEN(1)、SYS_STATUS_FAULT_LED_RED(2)、SYS_STATUS_WARNING_LED_YELLOW(3)。由 hmi/led.c:654 写入 sys_current_status_color
SOC_LED_COLOR_E枚举(hmi/led/app_led_cfg.h:58-62)短灯带颜色:SOC_LED_BLUE(0,未联网)、SOC_LED_WHITE(1,已联网)。取值刻意与 g_stEMSInfo.bIsLogin(0/1)对齐,可强转
sys_current_status_color全局变量声明(STATUS_LED_COLOR_E,hmi/led/app_led_cfg.h:71)定义在 hmi/led/app_led.c:44;写入方 hmi/led.c:654,读取方 hmi/led/app_led.c:89

3. 函数清单

本文件只有函数声明,没有任何函数定义。

函数名作用域(static/全局)说明(一句话)
get_sys_color_status全局(声明,hmi/led/app_led_cfg.h:79)把 STATUS_LED_COLOR_E 系统状态枚举映射成 24 位 RGB 值,定义于 hmi/led/app_led_cfg.c:47
get_soc_color_to_rgb全局(声明,hmi/led/app_led_cfg.h:80)把 SOC_LED_COLOR_E 联网状态枚举映射成 24 位 RGB 值,定义于 hmi/led/app_led_cfg.c:79

4. 核心逻辑解析

本文件是纯声明头,无逻辑。其中的设计约定如下:

状态枚举输出 RGB对应宏
SYS_STATUS_NOT_RUN_LED_OFF0x000000SYS_COLOR_OFF
SYS_STATUS_NORMAL_LED_GREEN0x00FF00SYS_COLOR_GREEN
SYS_STATUS_FAULT_LED_RED0xFF0000SYS_COLOR_RED
SYS_STATUS_WARNING_LED_YELLOW0xFFFF00SYS_COLOR_YELLOW
SOC_LED_WHITE0xFFFFFF常量字面量(未用 SOC_COLOR_WHITE 宏)
SOC_LED_BLUE0x0000FF常量字面量(未用 SOC_COLOR_BLUE 宏)
其他0default 分支

5. 对外接口

本文件导出(供外部使用)

名称类型使用方
SYS_COLOR_OFF/GREEN/RED/YELLOW宏仅 hmi/led/app_led_cfg.c 使用
SOC_COLOR_WHITE/BLUE宏无使用点(app_led_cfg.c 直接写了字面量)
led_color_t枚举类型无使用点
STATUS_LED_COLOR_E枚举类型hmi/led/app_led.c:44、hmi/led.c:654
SOC_LED_COLOR_E枚举类型hmi/led/app_led.c:47、hmi/led/app_led.c:105
sys_current_status_color全局变量声明写入:hmi/led.c:654;读取:hmi/led/app_led.c:89
get_sys_color_status函数声明hmi/led/app_led.c:157
get_soc_color_to_rgb函数声明hmi/led/app_led.c:156

本文件间接暴露(通过 include 传递)

名称来源说明
WS2812_FLAG_U、RKP_LED_NUM、LED_SOC_NUM、LED_LONG_NUM、LED_BUFFER_SIZE、T0_PULSE/T1_PULSE、g_u16_ws2812_data、g_u_ws2812_flag、ws2812_*()hmi/led/led_dev.h(hmi/led/app_led_cfg.h:16)WS2812 编码层全部符号
chip.h、includes.h、bms.h、ems.h平台/中间件提供 u8/u32 等类型与 STEMSTab,hmi/led/app_led_cfg.h:17-20

6. 依赖关系

7. 备注与风险点