首页 / knowledge/代码解析/索引/功能索引
net 功能反查索引
本页目录通信链路、任务与登录保活报文帧格式与协议定义上行数据上报组包调频 / 调度 / FFR / CT 数据采集云端下行指令处理云端配置与安规参数下发解析固件升级总流程:状态表、落盘、MD5 与 Boot各设备升级适配层与进度查询CAN 自定义帧与 CAN 日志系统信息、事件上报与杂项文件清单核对
覆盖源文件:20 个。文档本体见
docs/knowledge/代码解析/net/。 用法:在「想找的功能」列里搜关键词,即可定位到源文件。 本目录只负责net/(云端 TCP/JSON 通信 + 整机固件升级)20 个源文件;其它模块见同级目录。
通信链路、任务与登录保活
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 网络应用任务(task_net_app)在哪、跑多快、栈多大 | task_net_app | net/ems.c | ems.c.md |
| 25 ms 主循环里都调了哪些子流程(顺序表) | task_net_app | net/ems.c | ems.c.md |
| 任务启动初始化、把所有上报 tick 对齐 | tcp_init_ems | net/ems.c | ems.c.md |
| 无线链路抖动时怎么抑制"超时断链"误判 | ems_tick_init_wireless | net/ems.c | ems.c.md |
| 套接字异常 / 断链后通信状态怎么复位 | socket_abnormal_handle | net/ems.c | ems.c.md |
| 登录帧怎么组、公司名和密码取哪来的 | fill_login_data | net/ems.c | ems.c.md |
| 私密模式(加密通道)的登录动态密码怎么算 | fill_login_data、get_server_data_encryption_flag | net/ems.c | ems.c.md |
| 心跳帧 / 心跳保活周期 | fill_heart_beat_data | net/ems.c | ems.c.md |
| 上行报文怎么投进以太网消息队列、队满怎么办 | handle_message_queue | net/ems.c | ems.c.md |
| 主状态机在哪、状态怎么切换 | ems_time_event、changed_state_tcp_protocol、get_state_tcp_protocol | net/ems.c | ems.c.md |
| 空闲态下先发哪个报文的优先级表 | check_idle_process | net/ems.c | ems.c.md |
| 同一报文进队列最多重试几次 / 发送超时怎么丢包 | NET_DATA_SEND_TRY、check_idle_process、handle_message_queue | net/ems.c | ems.c.md |
| 登录无应答几次算断链、心跳失败几次复位、DHCP 失败门限 | LOGIN_NO_ACK_NUM、LOGIN_NO_ACK_RST_NUM、HEART_RST_FAIL、DHCP_FAIL_NUM | net/ems.h | ems.h.md |
| APP / 局域网直连通道与 60 s 无活动断开 | app_connect_detect、g_t_app_info | net/ems.c | ems.c.md |
| 本地配置被改动后怎么让云端重新回读(三个请求标志) | Set_Setup_Config_Status、Set_Setup_Config_Extend1_Status、Set_Setup_Config_Extend2_Status、get_setup_config_status | net/ems.c | ems.c.md |
| 时间基准用哪个:OSTimeGet() 还是 RTC 秒 | SENCOND_1S、SENCOND_60S、REQUEST_UPDATE_INTERVAL | net/ems.h | ems.h.md |
| TCP 单包最大长度是多少 | MAX_SIZE_TCP_PACKET | net/ems.h | ems.h.md |
| 本模块的调试打印总开关 | DEBUG_TCP_CLIENT_STATE | net/ems.h | ems.h.md |
报文帧格式与协议定义
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 上行报文的封帧格式(7 字节头 + JSON + CRC16) | fill_common_data | net/ems.c | ems.c.md |
JSON 尾部去逗号、补 } 的写法 | fill_common_data | net/ems.c | ems.c.md |
| 下行报文接收总入口 / 收 7 字节头、取长度、校验 CRC | handle_tcp_recv_data | net/server.c | server.c.md |
| W5500 与无线两条接收分支的差异和超时 | handle_tcp_recv_data | net/server.c | server.c.md |
| 私有加密通道下行正文怎么解密 | handle_tcp_recv_data、get_server_data_encryption_flag | net/server.c | server.c.md |
| 设备域(EMS=0x01)、帧方向 REQUEST/RESPONSE 定义 | ENDevType、ENCmdTMode | net/ems.h | ems.h.md |
| 全部命令字表(0x00~0xA6 各是什么) | ENCmdType | net/ems.h | ems.h.md |
| 主状态机全部状态名(STATUS_*) | ENStatus | net/ems.h | ems.h.md |
| 即时消息 / 事件上报位掩码(哪个 bit 是什么事件) | ENInfoType、set_info_status、clear_info_status、get_info_status | net/ems.h | ems.h.md |
| 升级进度上报状态枚举(UPGRADE_*) | UpgradeInfoType | net/ems.h | ems.h.md |
| 通信主控块 g_stEMSInfo 里都有哪些字段 | STEMSTab、g_stEMSInfo | net/ems.h | ems.h.md |
| 调频/调度数据缓存结构体(FREQ_DISPATCH_BUFFER_T) | FREQ_DISPATCH_BUFFER_T、g_t_freq_dispatch_data | net/ems.h | ems.h.md |
| 升级目标枚举(EMS/BMS/INV1/INV2/INV3/Meter/EVC/AFCI) | ENUpdateType | net/server.h | server.h.md |
| 单个升级目标的描述表字段(掩码/版本/MD5/长度/偏移/标志) | STUpdateTab | net/server.h | server.h.md |
| 升级文件掩码常量(FILE_MASK_* 8 字符掩码表) | FILE_MASK_EMS、FILE_MASK_INV1、FILE_MASK_METER、FILE_MASK_BB | net/server.h | server.h.md |
| 特殊指令的 JSON 字段名宏(Command/CmdIndex/Parameter1..3/Description) | FIELD_NAME_SPECIAL_CMD、FIELD_NAME_SPECIAL_CMD_ID、FIELD_NAME_SPECIAL_CMD_PARA1/2/3、FIELD_NAME_SPECIAL_CMD_REMARK | net/server.h | server.h.md |
| 特殊指令字符串常量表("Update"/"Restart"/"RemoteControl"…) | SPECIAL_CMD_UPDATE_STR、SPECIAL_CMD_RESTART_STR、SPECIAL_CMD_REMOTE_STR 等 | net/server.h | server.h.md |
| 升级版本校验掩码(只校验 EMS / 只校验逆变器等) | MASK_CHECK_ALL_UPDATE、MASK_CHECK_EMS_SW、MASK_CHECK_INV1_SW、MASK_CHECK_INV2_SW | net/ems.h | ems.h.md |
| 4 个 SDRAM 固件大缓冲区(g_au8NetRecvPack / g_u8_fw_sdram1/2 等) | g_au8NetRecvPack、g_au8FWBuf、g_au8FWBin、g_u8_fw_sdram1、g_u8_fw_sdram2 | net/server.h | server.h.md |
上行数据上报组包
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 主运行数据帧(0x05 / 0x44)在哪组包、都有什么字段 | fill_system_run_info | net/ems.c | ems.c.md |
| 电网/PV/逆变器/BMS/能量统计拼帧顺序 | fill_system_run_info | net/ems.c | ems.c.md |
| 系统状态三态(Fault/Protection/Normal)怎么判 | fill_system_run_info、ems_read_fault_code、bms_read_fault_code | net/ems.c | ems.c.md |
| 扩展运行数据帧(0x16 / 0x4E):充电桩/备电盒/欧盟 14a/RRCR/WLV | fill_system_run_info_extend1 | net/ems.c | ems.c.md |
| A/B 簇(电池簇)状态上报 | fill_system_run_info_extend1、bms_is_a_cluster_valid | net/ems.c | ems.c.md |
| MID 电表段上报条件 | fill_system_run_info_extend1 | net/ems.c | ems.c.md |
| 能量数据帧 0x1D(PV/电网/电池/充电桩能量) | fill_system_energy_data、get_energy_data_enable | net/ems.c | ems.c.md |
| 秒级实时数据帧 0x10 | fill_system_second_data | net/ems.c | ems.c.md |
| 调试运行数据帧 0x23(电表三相 + 调度/MD 信息) | fill_system_debug_run_data、send_debug_run_info_data | net/ems.c | ems.c.md |
| 油机运行数据帧 0x36(油位/电压电流/功率/告警数组) | fill_send_gen_run_data | net/ems.c | ems.c.md |
| 电池单体数据帧 0x55(单体温度/电压数组) | fill_system_cell_run_data | net/ems.c | ems.c.md |
| 电池详细信息帧 0xA3(欧盟电池法约 20 个数组字段) | fill_bms_self_info | net/ems.c | ems.c.md |
| 电池混搭信息帧 0xA6(型号/容量/DOD + BatBrand 数组) | fill_mix_bat_data | net/ems.c | ems.c.md |
| 0xA3 上传周期怎么定(缺省 600 s、禁止返回 0) | ems_get_upload_interval、UPLOAD_INTERVAL_0xA3 | net/ems.c | ems.c.md |
| 主配置上报帧 0x04 / 0x43(容量/型号/版本/时控段/并机/IP/无线模块) | fill_send_config_data | net/ems.c | ems.c.md |
| 扩展配置 1 帧 0x15 / 0x4D(充电桩/28 组时控表/SOC 校准/EPO) | fill_send_config_data_extend1 | net/ems.c | ems.c.md |
| 扩展配置 2 帧 0x61(削峰填谷/CSIP/GFCI/AFCI/并机通信方式) | fill_send_config_data_extend2 | net/ems.c | ems.c.md |
| 读配置请求帧 0x03 / 0x14 / 0x60 | fill_read_config_data | net/ems.c | ems.c.md |
| 安规配置上报帧 0x4B / 0x58(电压/频率保护/GFCI/孤岛/P-V、Q-V) | fill_send_safety_config_data | net/ems.c | ems.c.md |
| 设置安规配置请求帧 0x4A / 0x57 | fill_set_safety_config_data | net/ems.c | ems.c.md |
| 自检 / 安规测试数据帧 0x45 / 0x47(OVP/UVP/OFP/UFP 各阶) | send_self_test_data | net/ems.c | ems.c.md |
| 即时消息帧 0x09(重启原因/断链/升级完成/EventLog) | fill_send_info、obtain_event_log_data | net/ems.c | ems.c.md |
| AFCI 日志分包上传帧 0x62 | fill_send_afci_log | net/ems.c | ems.c.md |
| CT 采样曲线帧 0x1A(25 包 × 2 通道 × 200 点) | fill_system_grid_ct_sampling_info | net/ems.c | ems.c.md |
| 老化测试结果帧 0x18 | fill_burnin_data、aging_mode_send_data_flag | net/ems.c | ems.c.md |
| 故障录波分包帧 0x56(汇川方案,当前不编译) | fill_send_fault_record_data、fault_scord_init、set_fault_scord_status | net/ems.c | ems.c.md |
电池日志上传帧(旧实现,已被 #if 0 屏蔽) | fill_bat_log_ack、fill_bat_log_data_send | net/ems.c | ems.c.md |
| 定长采样通道数组拼成 JSON 数组(INOVANCE 条件编译) | fill_channel_data | net/ems.c | ems.c.md |
调频 / 调度 / FFR / CT 数据采集
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 常规 FCAS 数据怎么采样(1 s 一点,10 点一组) | get_fcas_data | net/ems.c | ems.c.md |
| FCAS 上报帧 0x11 怎么组(10 组 × 10 点,8 个数组) | fill_system_fcas_data | net/ems.c | ems.c.md |
| 快 / 极快 FCAS(200 ms、50 ms)与 0x1B / 0x19 分包 | get_fcas_data、fill_system_fast_fcas_data | net/ems.c | ems.c.md |
| FFR 100 ms 采样与 0x12 上报帧 | get_ffr_data、fill_system_ffr_data_100ms | net/ems.c | ems.c.md |
| 调度数据按云端下发的采集间隔采样 | get_dispatch_data、fill_system_dispatch_data | net/ems.c | ems.c.md |
| 调度帧包数怎么算(10000 / interval / 10) | fill_system_dispatch_data | net/ems.c | ems.c.md |
| 采样缓存的时间戳怎么拆成 7 字节 | fill_freq_dispatch_data_time | net/ems.c | ems.c.md |
| CT 采样曲线就绪标志 → 发送标志 | get_grid_ct_sampling_data | net/ems.c | ems.c.md |
| 调频/调度/FFR 各自的采样周期与数组上限表 | get_fcas_data、get_dispatch_data、get_ffr_data | net/ems.c | ems.c.md |
云端下行指令处理
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 特殊指令(0x08)总入口在哪、一共支持哪些 Command | handle_special_cmd | net/server.c | server.c.md |
| "Update" 升级指令怎么解析、哪些条件才允许强制升级 | handle_special_cmd、handle_special_cmd_for_dev | net/server.c | server.c.md |
| 升级 URL 里怎么抠出版本号和 MD5 | handle_special_cmd_for_dev | net/server.c | server.c.md |
| 指令流水号 CmdIndex 怎么存、响应怎么回填 | get_special_cmd_id_code、g_as8SpecialCmdId | net/server.c | server.c.md |
| Extra 指令的二级参数表(index 高字节分组 + 低字节索引) | handle_server_parameter_set | net/server.c | server.c.md |
| 云端改设备 SN(index=65534) | handle_server_extra_command | net/server.c | server.c.md |
| 云端改 MAC 地址(index=65535,单播校验) | handle_server_extra_command | net/server.c | server.c.md |
| 电池 SN 替换(index=65533,"源SN,目标SN") | handle_server_extra_command | net/server.c | server.c.md |
| 远程调度指令(使能/8 点功率/最短 90 s 运行时长) | handle_server_dispatch_command、g_u8DispatchFlag | net/server.c | server.c.md |
| 收到调度指令后怎么立刻唤醒 logic 任务 | handle_server_dispatch_command | net/server.c | server.c.md |
| 云端设置功率因数 / 无功(flag 0/1/2/3 含义) | handle_server_power_factor_command | net/server.c | server.c.md |
| 充电桩启停(EVChargeEN,按桩号/枪号) | handle_server_evc_charge_enable_command | net/server.c | server.c.md |
| 调试运行数据上报使能 / 时长 / 间隔 | handle_server_debug_run_info_command、send_debug_run_info_data | net/server.c | server.c.md |
| SOC 校准指令(SetSOCCalibrationg)怎么触发一次立即校准 | handle_server_soc_calibration_enable_command、g_u8_soc_calibration_flag | net/server.c | server.c.md |
| 智能化控制(SmartDispatch)参数下发与失败关断 | handle_server_smart_dispatch_command、set_smart_control_parameter | net/server.c | server.c.md |
| 实时能量数据上传开关(SendEnergyDataEN) | handle_server_energy_data_enable_command、g_u8_send_energy_data_flag | net/server.c | server.c.md |
| 服务器域名 / 端口 / 加密位切换(ICDCUpdate / ExpandICDCUpdate) | handle_special_icdcupdate_cmd | net/server.c | server.c.md |
| 系统自检使能(SYSSelfTest) | handle_server_sys_self_test_command、g_u8_sys_self_test_flag | net/server.c | server.c.md |
| BMS 激活时间下发(按电池 SN 匹配 YYYY-MM-DD) | handle_server_set_bms_activate_time_command | net/server.c | server.c.md |
| 电池强制充电指令 / 充电截止 SOC | handle_server_set_force_charge_command、g_u8_set_charge_flag | net/server.c | server.c.md |
| 一键停机(SYSShutDownEN)与停机天数 | handle_server_sys_shutdown_command、g_u8_sys_shutdownen_flag | net/server.c | server.c.md |
| 安规配置上传 / 设置指令(UploadSafetyConfig,1=查询 2=设置) | handle_server_upload_safety_config | net/server.c | server.c.md |
| 云端指定报文上传间隔(UploadInterval) | set_upload_interval、handle_set_upload_interval | net/server.c | server.c.md |
| 云端修改电芯品牌(SetBatBrand) | handle_set_bat_brand | net/server.c | server.c.md |
| 远程控制(ForcedCharge / ForcedWork / CloseMOS)三种模式 | handle_special_cmd | net/server.c | server.c.md |
| 断点续传指令(Resume)解析与查重 | handle_special_cmd、g_resume_info | net/server.c | server.c.md |
| 云端对时(SyncTime:Unix 秒 + 时区偏移) | set_sys_rtc、g_u8SyncFlag | net/server.c | server.c.md |
| 重启 EMS 指令(Restart) | handle_special_cmd、g_u8RestartFlag | net/server.c | server.c.md |
| 硬复位函数在哪、谁调用 | system_hard_reset | net/server.c | server.c.md |
| 特殊指令应答帧 0x08 怎么组、成功/失败字符串 | handle_response_special_cmd | net/ems.c | ems.c.md |
| 设置配置成功应答帧 0x42 / 0x4C | respond_set_config_data、respond_set_config_data_extend1 | net/ems.c | ems.c.md |
| 断点续传应答帧(Resume + CmdIndex) | Handle_Response_Resume、g_u8_resp_resume_flag | net/ems.c | ems.c.md |
| 强制升级请求应答(占用中回 Error) | handle_response_force_update、set_response_force_upd_status | net/ems.c | ems.c.md |
云端配置与安规参数下发解析
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 配置下发总解析(约 300 个 JSON 字段)在哪个函数 | deal_get_config_data | net/server.c | server.c.md |
| 配置解析的 5 种模式(const 表 / 时间表 / sscanf 数组块 / 字符串切割 / 单字段) | deal_get_config_data | net/server.c | server.c.md |
| SN 校验不通过就整包丢弃(配置 / 安规的区别) | deal_get_config_data、deal_get_safety_config_data | net/server.c | server.c.md |
| 布尔字段 "KEY":true/false 怎么解析 | parse_bool_field | net/server.c | server.c.md |
| 按 1/2/4 字节宽度往目标地址写值(避免表驱动写坏内存) | json_store_by_size | net/server.c | server.c.md |
| 时控时段(当日分钟数 → 时/分)怎么换算 | deal_get_config_data、g_json_time_map | net/server.c | server.c.md |
| 充放电时段 TIMEChaDis1..28 解析与 3 条缺省回填规则 | deal_get_config_data | net/server.c | server.c.md |
| 强制馈网时段 TIMEfeedin1..6 | deal_get_config_data | net/server.c | server.c.md |
| 干节点时段 DryTime1 / DryTime2 | deal_get_config_data | net/server.c | server.c.md |
| 峰谷电价 PeShValue 11 项解析 | deal_get_config_data | net/server.c | server.c.md |
| 南澳 CSIP 参数 CsipAus 15 项 | deal_get_config_data | net/server.c | server.c.md |
| 充电桩 EV1 / EVC1..6 配置数组解析与相数、电流缺省回填 | deal_get_config_data | net/server.c | server.c.md |
| BMS 激活时间 12 组日期字符串切割 | deal_get_config_data | net/server.c | server.c.md |
| WiFi 密码下发(空串回填默认值、变化则 net_init) | deal_get_config_data | net/server.c | server.c.md |
| Modbus 地址 / 波特率下发(波特率变化立即 uart3_init) | deal_get_config_data | net/server.c | server.c.md |
| IP / 子网掩码 / 网关下发 | deal_get_config_data | net/server.c | server.c.md |
| CT 变比 / 电表取反 / 相序调整字段 | deal_get_config_data、parse_meter_data | net/server.c | server.c.md |
| 配置解析收尾:连续投递 15 个 Flash 保存任务 | deal_get_config_data、save_job_post | net/server.c | server.c.md |
| 安规参数下发(97 项)解析,全部走 inverter_set_* | deal_get_safety_config_data | net/server.c | server.c.md |
| 小数串转整数:parse_fixed 的 scale 含义(10/100/1) | deal_get_safety_config_data、parse_fixed | net/server.c | server.c.md |
| 过/欠压、过/欠频各 3 段保护与恢复值 | deal_get_safety_config_data | net/server.c | server.c.md |
| 孤岛 / 零线 / LN 突变 / AFCI / GFCI 检测使能 | deal_get_safety_config_data | net/server.c | server.c.md |
| 有功/无功下垂(P-U、Q-U 曲线 4 点、Q 点对应 PF) | deal_get_safety_config_data | net/server.c | server.c.md |
| 低压穿越 FRT / 频率变化率 / PELoss / VolDrop | deal_get_safety_config_data | net/server.c | server.c.md |
| 无线电表一帧 35 字段 CSV 怎么解析 | parse_meter_data | net/server.c | server.c.md |
| 电表整体取反(三相电流/有功/无功/PF 取反 + 交换正反向电能) | parse_meter_data | net/server.c | server.c.md |
| 无线表 SN 变化怎么触发重新上报 | parse_meter_data、Set_Setup_Config_Status | net/server.c | server.c.md |
| 无线表离线怎么处理(通信丢失计数) | parse_meter_data、wireless_meter_handle_lost | net/server.c | server.c.md |
| 安规配置的 SN 校验失败为什么整包丢弃 | deal_get_safety_config_data | net/server.c | server.c.md |
| 空壳函数 / 未实现残留 | store_system_set_data | net/server.c | server.c.md |
固件升级总流程:状态表、落盘、MD5 与 Boot
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 升级状态表读写接口总览(掩码/版本/MD5/长度/偏移/标志) | set_updt_file_mask、set_ver_from_server、get_curr_md5_code_fw_file、get_length_file_updating、get_curr_offset_file_request、clear_curr_offset_file_request | net/upd_download.c | upd_download.c.md |
| 强制升级标志 / 已应答标记怎么读写 | set_flag_force_update、get_flag_force_update、set_response_force_upd_status、get_response_force_upd_status | net/upd_download.c | upd_download.c.md |
| "已取到文件信息"标志与"固件已就绪"标志 | set_status_update_file_info、Set_Status_Is_Updated_From_Server、Get_Status_Is_Updated_From_Server | net/upd_download.c | upd_download.c.md |
| 特殊升级指令码怎么存(16 字节门限 vs 32 字节缓冲) | set_id_code_for_updt_cmd | net/upd_download.c | upd_download.c.md |
| 固件块写 SDRAM(带 3 次重试、返回 0/1) | Save_Data_To_FW_Area_InSdram | net/upd_download.c | upd_download.c.md |
| 固件块写外挂 SPI Flash(带 3 次重试) | save_data_to_fw_area_inFlash | net/upd_download.c | upd_download.c.md |
| 落主用分区(APP1)还是备份分区(APP2)怎么选 | set_save_firm_in_app_flash_flag、get_save_firm_in_app_flash_flag | net/upd_download.c | upd_download.c.md |
| 设备固件整包 MD5 校验 + 置完成标志 | calculate_dev_FW_Flash_MD5 | net/upd_download.c | upd_download.c.md |
| MD5 校验失败置哪个错误位 | calculate_dev_FW_Flash_MD5、g_t_upgrade_run_info | net/upd_download.c | upd_download.c.md |
| EMS 自身固件 MD5 校验主流程(分块读回 + 流式 MD5) | calculate_ems_flash_md5、calculate_ems_flash_md5_read_data | net/ems_download.c | ems_download.c.md |
| MD5 通过后写升级配置、延时 500 ms、硬复位进 Boot | calculate_ems_flash_md5、save_updt_config_info_to_external_flash、system_hard_reset | net/ems_download.c | ems_download.c.md |
| 升级配置表 STUpdateTab 落盘(含自身 CRC16) | save_updt_config_info_to_external_flash | net/ems_download.c | ems_download.c.md |
| 云端升级的版本/文件信息怎么存到本地 | save_ems_server_update_info | net/ems_download.c | ems_download.c.md |
| EMS 固件在 SPI Flash 上的分区地址表(主/备 × 配置/固件) | START_ADDR_SPI_FLASH_EMS_FW、START_ADDR_SPI_FLASH_EMS_FW_CFG_INFO、START_ADDR_SPI_FLASH_EMS_APP2_FW、START_ADDR_SPI_FLASH_EMS_APP2_FW_CFG_INFO | net/ems_download.h | ems_download.h.md |
| APP 固件长度上下限(APP_MIN_SIZE / APP_MAX_SIZE) | APP_MIN_SIZE、APP_MAX_SIZE | net/ems_download.h | ems_download.h.md |
| 落盘地址宏(主/备固件区,upd_download 侧重复定义) | START_ADDR_SPI_FLASH_EMS_FW、END_ADDR_SPI_FLASH_EMS_FW(配套头文件 net/upd_download.h) | net/upd_download.c | upd_download.c.md |
| 远程升级轮询状态机(CHECK_NO → CHECK_EMS → … → CHECK_AFCI) | load_current_update_data、load_current_update_data_setCurrUpt | net/server.c | server.c.md |
| 为什么逆变器两台必须串行升级(INV2 特殊处理) | load_current_update_data | net/server.c | server.c.md |
| 升级并发门禁:当前是否已有设备在升级 | check_force_upgradable_flag、check_updt_force_is_none | net/server.c | server.c.md |
| 该发"校验文件信息"还是"取固件分片"(两个门禁判据) | is_goto_update_check_status、is_goto_get_update_file_status | net/server.c | server.c.md |
| 哪些设备在请求强制升级响应(INV1→INV2→INV3→BMS→Meter→EMS→EVC→AFCI) | check_need_response_updt_devcie | net/server.c | server.c.md |
| 升级校验请求帧 0x20(掩码/软硬件版本/MD5/型号) | request_update_file_info、fill_system_upgrade_data | net/ems.c | ems.c.md |
| 固件分片请求帧 0x21(offset + 每次最多 1024 字节) | request_update_file_content | net/ems.c | ems.c.md |
| 取分片前要拿 g_pUpdateSem 信号量、超时 3 s | request_update_file_content、g_pUpdateSem | net/ems.c | ems.c.md |
| 升级进度上报帧 0x24 与 UPGRADE_* 状态迁移 | send_upgrade_info_data、fill_system_upgrade_data | net/ems.c | ems.c.md |
| 升级失败原因串(WEB_ERROR / DOWNLOAD_ERROR / MD5_ERROR / TIMEOUT / BOOT_ERROR) | send_upgrade_info_data、UPGRADE_INFO_T | net/ems.c | ems.c.md |
| 云端校验响应(0x20 回帧)成功/失败怎么处理、失败 5 次后清表 | handle_check_update、MAX_CNT_REQ_FILE_ERROR | net/server.c | server.c.md |
| 固件文件信息合法性校验(长度开区间、MD5 必须 32 字符) | set_file_updating_info、set_file_updating_info_for_dev | net/server.c | server.c.md |
| 文件信息 4 项一致性判定(掩码/厂商型号/硬版本/MD5) | check_server_fw_is_updating、check_server_fw_is_updating_for_dev | net/server.c | server.c.md |
| 固件分片接收 0x21 的五级门禁(掩码→偏移→FWType→长度→数据) | handle_fw_file_from_server | net/server.c | server.c.md |
| 固件 HEX 转 BIN 后按设备分派落盘 | save_fw_to_spi_flash、save_fw_to_sdram、save_fw_to_flash | net/server.c | server.c.md |
| 已下载偏移怎么累加 | increase_current_offset_file_updt | net/server.c | server.c.md |
| 当前升级点的查询接口(掩码/版本/长度/偏移/强制位) | get_current_point_file_mask、get_current_point_version_force_updt、get_current_point_file_len_updt、get_current_point_offset_file_updt、get_current_point_flag_force_updt | net/server.c | server.c.md |
| 当前升级点文件信息标志读写 / 是否为空 | get_current_point_updt_file_info、set_current_point_updt_file_info、get_curr_updt_point_is_null | net/server.c | server.c.md |
| 当前升级状态与升级目标设备号 | get_updt_status_current、set_updt_status_current、get_updt_dev_type_curr | net/server.c | server.c.md |
| 本地升级文件 MD5 缓存(用于一致性比对) | get_local_md5_ems_upt_file、save_ems_server_update_info | net/server.c | server.c.md |
| Bootloader 版本号怎么读(片内 Flash 0x08000000+0x22B4) | get_ems_boot_ver | net/ems_boot_handle.c | ems_boot_handle.c.md |
| 旧 Boot V1.00.03 静默升级到 V1.00.04(打补丁 + MD5 双向校验) | ems_boot_handle、on_chip_flash_write | net/ems_boot_handle.c | ems_boot_handle.c.md |
| Boot 补丁期间的调度器锁定与看门狗喂狗点 | ems_boot_handle、OSSchedLock | net/ems_boot_handle.c | ems_boot_handle.c.md |
| 是否允许进入 BOOT 升级的准入判定(352 KB 魔法数) | ems_upgrade_boot_check | net/ems_boot_handle.c | ems_boot_handle.c.md |
| 片内 Flash 逐字节写 + 3 次整段重试 | on_chip_flash_write | net/ems_boot_handle.c | ems_boot_handle.c.md |
| 整机是否处于"下载中" / "升级中"的唯一聚合判据 | IsSystemDownload、IsSystemUpgrade | net/ems_download.c | ems_download.c.md |
| 断点续传数据怎么发、失败重试 10 次后清缓冲 | Get_Resume_Status_Current、resume_buff_sdram、g_u8ReumeFailCnt | net/ems.c | ems.c.md |
| 升级期间常规运行数据被抑制的条件 | is_goto_get_update_file_status、get_resume_index_length | net/ems.c | ems.c.md |
各设备升级适配层与进度查询
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| BMS 是否正在下载 / 是否已完成 / 下载百分比 | IsDownloadBMS、IsUpgradeBMS、GetPercentDownloadBMS(配套头文件 net/bms_download.h) | net/bms_download.c | bms_download.c.md |
| BMS 两个标志的语义区别("云端要求下载" vs "已完成更新") | IsDownloadBMS、IsUpgradeBMS | net/bms_download.c | bms_download.c.md |
| 逆变器主机(INVC(M))下载标志与百分比 | IsDownloadINV、GetPercentDownloadINV(配套头文件 net/inv_download.h) | net/inv_download.c | inv_download.c.md |
| 逆变器从机(INVC(S))下载标志与百分比 | IsDownloadCHG、GetPercentDownloadCHG | net/inv_download.c | inv_download.c.md |
| 逆变器 ARM 协处理器(INVC(ARM))下载标志与百分比 | IsDownloadInv3、GetPercentDownloadInv3、Get_Response_For_Inv3_Force_Update | net/inv_download.c | inv_download.c.md |
| 逆变器固件是否已就绪(各厂商升级模块的入口判据) | is_inverter_firm_download_finished | net/inv_download.c | inv_download.c.md |
| 贝瓦(BW)单核板逆变器完成判据 | is_bwinv_firm_download_finished | net/inv_download.c | inv_download.c.md |
| INV3 固件块写 SDRAM(唯一写路径,3 次重试) | Save_Data_To_Inv3_FW_Area | net/inv_download.c | inv_download.c.md |
| INV2 服务器版本串写入(带截断保护) | Set_Inv2_Ver_From_Server | net/inv_download.c | inv_download.c.md |
| 三种逆变器升级目标的枚举值 / 掩码 / SDRAM 缓冲区对应表 | UPDT_INV1、UPDT_INV2、UPDT_INV3、FILE_MASK_INV1、FILE_MASK_INV2、FILE_MASK_INV3 | net/inv_download.c | inv_download.c.md |
| 电表强制下载标志与下载百分比 | IsDownloadMeter、GetPercentDownloadMeter(配套头文件 net/meter_download.h) | net/meter_download.c | meter_download.c.md |
| 本次要升级哪类电表(电网表 / 光伏表 / 正泰无线表 / MID) | get_Meter_Updt_File_Mask、set_meter_updt_object、get_meter_updt_object、METER_SITE_E | net/meter_download.c | meter_download.c.md |
| 电表升级对象的空掩码兜底("00000000") | get_Meter_Updt_File_Mask、FILE_MASK_DEFAULT | net/meter_download.c | meter_download.c.md |
| 充电桩(EVC)硬件版本上报 / 下载标志 / 下载百分比 | get_evc_hard_version、is_download_evc、get_percent_download_evc(配套头文件 net/evc_download.h) | net/evc_download.c | evc_download.c.md |
| EVC "云端下载"与"本地刷写"两段式进度怎么分工 | is_download_evc、get_percent_download_evc | net/evc_download.c | evc_download.c.md |
| AFCI 机型串映射(BYTE_AFCI_S / BYTE_AFCI_T / 空串) | get_afci_type | net/afci_download.c | afci_download.c.md |
| AFCI 硬件版本 / 强制下载标志 / 下载百分比 | get_afci_hard_version、IsDownloadAFCI、GetPercentDownloadAFCI(配套头文件 net/afci_download.h) | net/afci_download.c | afci_download.c.md |
| AFCI 固件下载完成标志(决定是否停发常规帧) | is_afci_firm_download_finished、get_afci_Updt_File_Mask | net/afci_download.c | afci_download.c.md |
| 各下载百分比公式(offset * 100 / len)与除零窗口 | GetPercentDownloadEMS、GetPercentDownloadBMS、GetPercentDownloadINV、GetPercentDownloadMeter、GetPercentDownloadAFCI、get_percent_download_evc | net/ems_download.c | ems_download.c.md |
| EMS 自身下载标志 / 下载百分比 / 空桩接口 | IsDownloadEMS、GetPercentDownloadEMS、GetPercentUpgradeEMS | net/ems_download.c | ems_download.c.md |
CAN 自定义帧与 CAN 日志
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 云端下发自定义 CAN 帧(CanSend,ID:DATA:TYPE 格式) | handle_server_can_send_command | net/server.c | server.c.md |
| CAN 日志采集指令(UploadCanLog)与防重入 | start_can_log_capture、is_can_log_capturing | net/server.c | server.c.md |
| CAN 日志采集控制块与按 ID 分配的 SDRAM 缓存区 | s_can_log_ctrl、s_can_log_raw_buffers | net/server.c | server.c.md |
| CAN 日志采集/上报两态机(25 ms 节拍,单次最多 60 帧 / 5 ms) | check_can_log_upload_task | net/ems.c | ems.c.md |
| CAN 日志是否还有未上报分片 | is_can_log_upload_ready、can_log_calc_total_pack | net/ems.c | ems.c.md |
| CAN 日志分包上报帧 0x63(按 ID 独立分包) | fill_send_can_log_data | net/ems.c | ems.c.md |
| 采集超时导致条数不足时的 "Partial" 标记 | fill_send_can_log_data、CAN_LOG_CAPTURE_TIMEOUT_MS | net/ems.c | ems.c.md |
| 回复云端 UploadCanLog 指令 | reply_upload_can_log | net/ems.c | ems.c.md |
| CAN 日志时间戳格式化 / 8 字节 CAN 数据转 HEX 串 | can_log_format_timestamp、can_log_byte_to_hex | net/ems.c | ems.c.md |
| CAN 日志采集的自测入口(只执行一次) | test_can_log_upload_custom | net/ems.c | ems.c.md |
| CAN 日志相关容量上限常量(ID 数、总条数、每包条数) | MAX_CAN_LOG_ID_COUNT、MAX_CAN_LOG_COUNT、CAN_LOG_PACK_COUNT_PER_PACK | net/server.c | server.c.md |
系统信息、事件上报与杂项
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 本机 16 字节 SN 从哪取 | get_system_sn | net/server.c | server.c.md |
| EMS 硬件类型 / 硬件版本上报(FW_TYPE_EMS3_6) | get_ems_hard_type、get_ems_hard_version | net/server.c | server.c.md |
| 事件位怎么置 / 清 / 读(跨模块事件上报开关) | set_info_status、clear_info_status、get_info_status | net/ems.c | ems.c.md |
| 重启事件开机会自动上报一次 | task_net_app、set_info_status、SYSTEM_RESTART | net/ems.c | ems.c.md |
| 从云事件里取最低置位的一位并做副作用(SERVER_SWITCH → net_init) | handle_tcp_recv_data、get_info_status | net/server.c | server.c.md |
| 读取本地事件日志内容 | obtain_event_log_data | net/ems.c | ems.c.md |
| 错误日志上报(0x0F / STATUS_SEND_ERROR_LOG) | handle_tcp_recv_data、g_t_error_log_tab | net/server.c | server.c.md |
| 任务存活心跳变量 u32EMSTaskTick 谁维护、超时告警 | task_net_app、g_stEMSInfo.u32EMSTaskTick | net/ems.c | ems.c.md |
| 跨模块"有事要上报/要应答"的 20 余个全局标志清单 | g_u8RestartFlag、g_u8SetConfigFlag、g_u8RemoteControlFlag、g_u8SyncFlag、g_u8DispatchFlag、g_u8ExtraFlag | net/ems.h | ems.h.md |
| 事件日志(net_event_log)与故障日志的对接点 | g_t_error_log_tab、read_event_log_data | net/ems.c | ems.c.md |
| 老化模式数据同步(0x18 收到后的动作) | handle_tcp_recv_data、aging_mode_data_sync | net/server.c | server.c.md |
| WiFi 信息上报响应处理 | handle_tcp_recv_data、wireless_status_refresh | net/server.c | server.c.md |
| 常被外部 include 的公共头(谁依赖本模块) | STEMSTab、STUpdateTab、ENCmdType、g_stEMSInfo | net/ems.h | ems.h.md |
| 升级状态表与固件落盘的声明集合头(只有原型无实现) | IsDownloadBMS、is_download_evc、IsDownloadAFCI、IsDownloadMeter、IsDownloadINV、get_ems_boot_ver | net/bms_download.h | bms_download.h.md |
| 头文件里声明了但工程内无实现的旧接口(残留原型) | Get_BMS_Ver_From_Server、Set_Status_Is_Updated_BMS_From_Server、Get_Meter_Ver_From_Server、calculate_evc_flash_md5、set_flag_inv1_force_update、Clear_Inv2_Update_Info | net/inv_download.h | inv_download.h.md |
文件清单核对
| 源文件 | 文档 | 是否已在表中出现 |
|---|---|---|
net/afci_download.c | afci_download.c.md | 已在表中出现 |
net/afci_download.h | afci_download.h.md | 已在表中出现(头文件节 + AFCI 行内标注"配套头文件") |
net/bms_download.c | bms_download.c.md | 已在表中出现 |
net/bms_download.h | bms_download.h.md | 已在表中出现(头文件节 + BMS 行内标注"配套头文件") |
net/ems.c | ems.c.md | 已在表中出现 |
net/ems.h | ems.h.md | 已在表中出现 |
net/ems_boot_handle.c | ems_boot_handle.c.md | 已在表中出现 |
net/ems_boot_handle.h | ems_boot_handle.h.md | 已在表中出现(头文件节,薄接口头) |
net/ems_download.c | ems_download.c.md | 已在表中出现 |
net/ems_download.h | ems_download.h.md | 已在表中出现 |
net/evc_download.c | evc_download.c.md | 已在表中出现 |
net/evc_download.h | evc_download.h.md | 已在表中出现(头文件节 + EVC 行内标注"配套头文件") |
net/inv_download.c | inv_download.c.md | 已在表中出现 |
net/inv_download.h | inv_download.h.md | 已在表中出现(头文件节 + INV1/INV2/INV3 行内标注"配套头文件") |
net/meter_download.c | meter_download.c.md | 已在表中出现 |
net/meter_download.h | meter_download.h.md | 已在表中出现(头文件节 + Meter 行内标注"配套头文件") |
net/server.c | server.c.md | 已在表中出现 |
net/server.h | server.h.md | 已在表中出现 |
net/upd_download.c | upd_download.c.md | 已在表中出现 |
net/upd_download.h | upd_download.h.md | 已在表中出现(头文件节 + upd_download 行内标注"配套头文件") |