首页 / knowledge/代码解析/net
ems_boot_handle.h
源文件路径:
net/ems_boot_handle.h所属模块:net(网络应用层 — EMS 固件升级) 代码行数:17
1. 文件职责
本文件是 net/ems_boot_handle.c 的公开接口头,只做两件事:提供 include guard,声明 Bootloader 版本读取与升级准入判定两个函数。
它本身不含任何数据结构、宏常量或内联实现,属于典型的"薄接口头"。
它是 net 任务升级链路(net/ems_download.c)与云端/Modbus 状态上报链路(net/ems.c、midware/interface/modbus/modbus.c)访问片内 Boot 版本信息的唯一入口声明。
由于所有实现细节(补丁偏移、MD5 白名单、Flash 操作)都被封在 .c 的 static 中,头文件不再暴露任何内部状态。
2. 关键数据结构与宏
| 名称 | 类型 | 说明 |
|---|---|---|
__EMS_BOOT_HANDLE_H__ | 宏(include guard) | 头文件保护宏(:9-10) |
本文件未定义任何结构体、枚举、联合体、位域或业务宏常量。所需的 u8 / u32 基础类型由 includes.h 提供。
3. 函数清单
本文件不含函数定义,只含函数声明。
| 函数名 | 作用域 | 说明 |
|---|---|---|
char *get_ems_boot_ver(void) | 全局(声明,定义在 net/ems_boot_handle.c:196) | 读取并从静态缓冲返回 Bootloader 版本字符串 |
u8 ems_upgrade_boot_check(u32 file_len) | 全局(声明,定义在 net/ems_boot_handle.c:215) | 判定当前 Boot 与文件长度是否满足升级条件 |
4. 核心逻辑解析
本文件无逻辑代码。相关逻辑说明见 docs/knowledge/代码解析/net/ems_boot_handle.c.md 的第 4 节。
补充说明头文件层面的设计要点:
#include <includes.h>(:12)是 uCOS-II 工程的总入口头,会引入u8、u32、BOOLEAN等基础类型。代价是任何 include 本头文件的编译单元都会被牵连进整套 uCOS-II/外设类型定义,编译耦合度偏高。- 两个函数都不带"未使用形参"提示;
ems_upgrade_boot_check的file_len在实现中未使用(见.c备注)。
5. 对外接口
本文件导出
| 符号 | 使用者 |
|---|---|
get_ems_boot_ver | net/ems.c、midware/interface/modbus/modbus.c |
ems_upgrade_boot_check | net/ems_download.c |
本文件调用的外部函数 / 变量
无(仅 #include <includes.h> 引入类型定义)。
6. 依赖关系
- 依赖:
UCOSII/uCOS-CONFIG/includes.h(:12) - 被依赖:
net/ems_boot_handle.c(自身实现文件,:13)net/ems_download.c(:17,调用ems_upgrade_boot_check)net/ems.c、midware/interface/modbus/modbus.c(使用get_ems_boot_ver)
7. 备注与风险点
- 头文件名与宏名一致、无拼写问题。
- 未定义任何模块级常量,若将来需要对外暴露 Boot 版本长度或版本偏移,目前只能靠调用方各自硬编码(
net/ems_boot_handle.c:217等处即硬编码了"V1.00.03"/"V1.00.04")。 includes.h的宽依赖会拖高编译时间,但这是本工程的整体风格,非本文件独有。- 无版本宏、无
extern "C"保护(纯 C 工程,可接受)。