EMS 知识库
首页 / knowledge/代码解析/索引/功能索引

net 功能反查索引

覆盖源文件:20 个。文档本体见 docs/knowledge/代码解析/net/。 用法:在「想找的功能」列里搜关键词,即可定位到源文件。 本目录只负责 net/(云端 TCP/JSON 通信 + 整机固件升级)20 个源文件;其它模块见同级目录。

通信链路、任务与登录保活

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
网络应用任务(task_net_app)在哪、跑多快、栈多大task_net_appnet/ems.cems.c.md
25 ms 主循环里都调了哪些子流程(顺序表)task_net_appnet/ems.cems.c.md
任务启动初始化、把所有上报 tick 对齐tcp_init_emsnet/ems.cems.c.md
无线链路抖动时怎么抑制"超时断链"误判ems_tick_init_wirelessnet/ems.cems.c.md
套接字异常 / 断链后通信状态怎么复位socket_abnormal_handlenet/ems.cems.c.md
登录帧怎么组、公司名和密码取哪来的fill_login_datanet/ems.cems.c.md
私密模式(加密通道)的登录动态密码怎么算fill_login_data、get_server_data_encryption_flagnet/ems.cems.c.md
心跳帧 / 心跳保活周期fill_heart_beat_datanet/ems.cems.c.md
上行报文怎么投进以太网消息队列、队满怎么办handle_message_queuenet/ems.cems.c.md
主状态机在哪、状态怎么切换ems_time_event、changed_state_tcp_protocol、get_state_tcp_protocolnet/ems.cems.c.md
空闲态下先发哪个报文的优先级表check_idle_processnet/ems.cems.c.md
同一报文进队列最多重试几次 / 发送超时怎么丢包NET_DATA_SEND_TRY、check_idle_process、handle_message_queuenet/ems.cems.c.md
登录无应答几次算断链、心跳失败几次复位、DHCP 失败门限LOGIN_NO_ACK_NUM、LOGIN_NO_ACK_RST_NUM、HEART_RST_FAIL、DHCP_FAIL_NUMnet/ems.hems.h.md
APP / 局域网直连通道与 60 s 无活动断开app_connect_detect、g_t_app_infonet/ems.cems.c.md
本地配置被改动后怎么让云端重新回读(三个请求标志)Set_Setup_Config_Status、Set_Setup_Config_Extend1_Status、Set_Setup_Config_Extend2_Status、get_setup_config_statusnet/ems.cems.c.md
时间基准用哪个:OSTimeGet() 还是 RTC 秒SENCOND_1S、SENCOND_60S、REQUEST_UPDATE_INTERVALnet/ems.hems.h.md
TCP 单包最大长度是多少MAX_SIZE_TCP_PACKETnet/ems.hems.h.md
本模块的调试打印总开关DEBUG_TCP_CLIENT_STATEnet/ems.hems.h.md

报文帧格式与协议定义

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
上行报文的封帧格式(7 字节头 + JSON + CRC16)fill_common_datanet/ems.cems.c.md
JSON 尾部去逗号、补 } 的写法fill_common_datanet/ems.cems.c.md
下行报文接收总入口 / 收 7 字节头、取长度、校验 CRChandle_tcp_recv_datanet/server.cserver.c.md
W5500 与无线两条接收分支的差异和超时handle_tcp_recv_datanet/server.cserver.c.md
私有加密通道下行正文怎么解密handle_tcp_recv_data、get_server_data_encryption_flagnet/server.cserver.c.md
设备域(EMS=0x01)、帧方向 REQUEST/RESPONSE 定义ENDevType、ENCmdTModenet/ems.hems.h.md
全部命令字表(0x00~0xA6 各是什么)ENCmdTypenet/ems.hems.h.md
主状态机全部状态名(STATUS_*)ENStatusnet/ems.hems.h.md
即时消息 / 事件上报位掩码(哪个 bit 是什么事件)ENInfoType、set_info_status、clear_info_status、get_info_statusnet/ems.hems.h.md
升级进度上报状态枚举(UPGRADE_*)UpgradeInfoTypenet/ems.hems.h.md
通信主控块 g_stEMSInfo 里都有哪些字段STEMSTab、g_stEMSInfonet/ems.hems.h.md
调频/调度数据缓存结构体(FREQ_DISPATCH_BUFFER_T)FREQ_DISPATCH_BUFFER_T、g_t_freq_dispatch_datanet/ems.hems.h.md
升级目标枚举(EMS/BMS/INV1/INV2/INV3/Meter/EVC/AFCI)ENUpdateTypenet/server.hserver.h.md
单个升级目标的描述表字段(掩码/版本/MD5/长度/偏移/标志)STUpdateTabnet/server.hserver.h.md
升级文件掩码常量(FILE_MASK_* 8 字符掩码表)FILE_MASK_EMS、FILE_MASK_INV1、FILE_MASK_METER、FILE_MASK_BBnet/server.hserver.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_REMARKnet/server.hserver.h.md
特殊指令字符串常量表("Update"/"Restart"/"RemoteControl"…)SPECIAL_CMD_UPDATE_STR、SPECIAL_CMD_RESTART_STR、SPECIAL_CMD_REMOTE_STR 等net/server.hserver.h.md
升级版本校验掩码(只校验 EMS / 只校验逆变器等)MASK_CHECK_ALL_UPDATE、MASK_CHECK_EMS_SW、MASK_CHECK_INV1_SW、MASK_CHECK_INV2_SWnet/ems.hems.h.md
4 个 SDRAM 固件大缓冲区(g_au8NetRecvPack / g_u8_fw_sdram1/2 等)g_au8NetRecvPack、g_au8FWBuf、g_au8FWBin、g_u8_fw_sdram1、g_u8_fw_sdram2net/server.hserver.h.md

上行数据上报组包

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
主运行数据帧(0x05 / 0x44)在哪组包、都有什么字段fill_system_run_infonet/ems.cems.c.md
电网/PV/逆变器/BMS/能量统计拼帧顺序fill_system_run_infonet/ems.cems.c.md
系统状态三态(Fault/Protection/Normal)怎么判fill_system_run_info、ems_read_fault_code、bms_read_fault_codenet/ems.cems.c.md
扩展运行数据帧(0x16 / 0x4E):充电桩/备电盒/欧盟 14a/RRCR/WLVfill_system_run_info_extend1net/ems.cems.c.md
A/B 簇(电池簇)状态上报fill_system_run_info_extend1、bms_is_a_cluster_validnet/ems.cems.c.md
MID 电表段上报条件fill_system_run_info_extend1net/ems.cems.c.md
能量数据帧 0x1D(PV/电网/电池/充电桩能量)fill_system_energy_data、get_energy_data_enablenet/ems.cems.c.md
秒级实时数据帧 0x10fill_system_second_datanet/ems.cems.c.md
调试运行数据帧 0x23(电表三相 + 调度/MD 信息)fill_system_debug_run_data、send_debug_run_info_datanet/ems.cems.c.md
油机运行数据帧 0x36(油位/电压电流/功率/告警数组)fill_send_gen_run_datanet/ems.cems.c.md
电池单体数据帧 0x55(单体温度/电压数组)fill_system_cell_run_datanet/ems.cems.c.md
电池详细信息帧 0xA3(欧盟电池法约 20 个数组字段)fill_bms_self_infonet/ems.cems.c.md
电池混搭信息帧 0xA6(型号/容量/DOD + BatBrand 数组)fill_mix_bat_datanet/ems.cems.c.md
0xA3 上传周期怎么定(缺省 600 s、禁止返回 0)ems_get_upload_interval、UPLOAD_INTERVAL_0xA3net/ems.cems.c.md
主配置上报帧 0x04 / 0x43(容量/型号/版本/时控段/并机/IP/无线模块)fill_send_config_datanet/ems.cems.c.md
扩展配置 1 帧 0x15 / 0x4D(充电桩/28 组时控表/SOC 校准/EPO)fill_send_config_data_extend1net/ems.cems.c.md
扩展配置 2 帧 0x61(削峰填谷/CSIP/GFCI/AFCI/并机通信方式)fill_send_config_data_extend2net/ems.cems.c.md
读配置请求帧 0x03 / 0x14 / 0x60fill_read_config_datanet/ems.cems.c.md
安规配置上报帧 0x4B / 0x58(电压/频率保护/GFCI/孤岛/P-V、Q-V)fill_send_safety_config_datanet/ems.cems.c.md
设置安规配置请求帧 0x4A / 0x57fill_set_safety_config_datanet/ems.cems.c.md
自检 / 安规测试数据帧 0x45 / 0x47(OVP/UVP/OFP/UFP 各阶)send_self_test_datanet/ems.cems.c.md
即时消息帧 0x09(重启原因/断链/升级完成/EventLog)fill_send_info、obtain_event_log_datanet/ems.cems.c.md
AFCI 日志分包上传帧 0x62fill_send_afci_lognet/ems.cems.c.md
CT 采样曲线帧 0x1A(25 包 × 2 通道 × 200 点)fill_system_grid_ct_sampling_infonet/ems.cems.c.md
老化测试结果帧 0x18fill_burnin_data、aging_mode_send_data_flagnet/ems.cems.c.md
故障录波分包帧 0x56(汇川方案,当前不编译)fill_send_fault_record_data、fault_scord_init、set_fault_scord_statusnet/ems.cems.c.md
电池日志上传帧(旧实现,已被 #if 0 屏蔽)fill_bat_log_ack、fill_bat_log_data_sendnet/ems.cems.c.md
定长采样通道数组拼成 JSON 数组(INOVANCE 条件编译)fill_channel_datanet/ems.cems.c.md

调频 / 调度 / FFR / CT 数据采集

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
常规 FCAS 数据怎么采样(1 s 一点,10 点一组)get_fcas_datanet/ems.cems.c.md
FCAS 上报帧 0x11 怎么组(10 组 × 10 点,8 个数组)fill_system_fcas_datanet/ems.cems.c.md
快 / 极快 FCAS(200 ms、50 ms)与 0x1B / 0x19 分包get_fcas_data、fill_system_fast_fcas_datanet/ems.cems.c.md
FFR 100 ms 采样与 0x12 上报帧get_ffr_data、fill_system_ffr_data_100msnet/ems.cems.c.md
调度数据按云端下发的采集间隔采样get_dispatch_data、fill_system_dispatch_datanet/ems.cems.c.md
调度帧包数怎么算(10000 / interval / 10)fill_system_dispatch_datanet/ems.cems.c.md
采样缓存的时间戳怎么拆成 7 字节fill_freq_dispatch_data_timenet/ems.cems.c.md
CT 采样曲线就绪标志 → 发送标志get_grid_ct_sampling_datanet/ems.cems.c.md
调频/调度/FFR 各自的采样周期与数组上限表get_fcas_data、get_dispatch_data、get_ffr_datanet/ems.cems.c.md

云端下行指令处理

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
特殊指令(0x08)总入口在哪、一共支持哪些 Commandhandle_special_cmdnet/server.cserver.c.md
"Update" 升级指令怎么解析、哪些条件才允许强制升级handle_special_cmd、handle_special_cmd_for_devnet/server.cserver.c.md
升级 URL 里怎么抠出版本号和 MD5handle_special_cmd_for_devnet/server.cserver.c.md
指令流水号 CmdIndex 怎么存、响应怎么回填get_special_cmd_id_code、g_as8SpecialCmdIdnet/server.cserver.c.md
Extra 指令的二级参数表(index 高字节分组 + 低字节索引)handle_server_parameter_setnet/server.cserver.c.md
云端改设备 SN(index=65534)handle_server_extra_commandnet/server.cserver.c.md
云端改 MAC 地址(index=65535,单播校验)handle_server_extra_commandnet/server.cserver.c.md
电池 SN 替换(index=65533,"源SN,目标SN")handle_server_extra_commandnet/server.cserver.c.md
远程调度指令(使能/8 点功率/最短 90 s 运行时长)handle_server_dispatch_command、g_u8DispatchFlagnet/server.cserver.c.md
收到调度指令后怎么立刻唤醒 logic 任务handle_server_dispatch_commandnet/server.cserver.c.md
云端设置功率因数 / 无功(flag 0/1/2/3 含义)handle_server_power_factor_commandnet/server.cserver.c.md
充电桩启停(EVChargeEN,按桩号/枪号)handle_server_evc_charge_enable_commandnet/server.cserver.c.md
调试运行数据上报使能 / 时长 / 间隔handle_server_debug_run_info_command、send_debug_run_info_datanet/server.cserver.c.md
SOC 校准指令(SetSOCCalibrationg)怎么触发一次立即校准handle_server_soc_calibration_enable_command、g_u8_soc_calibration_flagnet/server.cserver.c.md
智能化控制(SmartDispatch)参数下发与失败关断handle_server_smart_dispatch_command、set_smart_control_parameternet/server.cserver.c.md
实时能量数据上传开关(SendEnergyDataEN)handle_server_energy_data_enable_command、g_u8_send_energy_data_flagnet/server.cserver.c.md
服务器域名 / 端口 / 加密位切换(ICDCUpdate / ExpandICDCUpdate)handle_special_icdcupdate_cmdnet/server.cserver.c.md
系统自检使能(SYSSelfTest)handle_server_sys_self_test_command、g_u8_sys_self_test_flagnet/server.cserver.c.md
BMS 激活时间下发(按电池 SN 匹配 YYYY-MM-DD)handle_server_set_bms_activate_time_commandnet/server.cserver.c.md
电池强制充电指令 / 充电截止 SOChandle_server_set_force_charge_command、g_u8_set_charge_flagnet/server.cserver.c.md
一键停机(SYSShutDownEN)与停机天数handle_server_sys_shutdown_command、g_u8_sys_shutdownen_flagnet/server.cserver.c.md
安规配置上传 / 设置指令(UploadSafetyConfig,1=查询 2=设置)handle_server_upload_safety_confignet/server.cserver.c.md
云端指定报文上传间隔(UploadInterval)set_upload_interval、handle_set_upload_intervalnet/server.cserver.c.md
云端修改电芯品牌(SetBatBrand)handle_set_bat_brandnet/server.cserver.c.md
远程控制(ForcedCharge / ForcedWork / CloseMOS)三种模式handle_special_cmdnet/server.cserver.c.md
断点续传指令(Resume)解析与查重handle_special_cmd、g_resume_infonet/server.cserver.c.md
云端对时(SyncTime:Unix 秒 + 时区偏移)set_sys_rtc、g_u8SyncFlagnet/server.cserver.c.md
重启 EMS 指令(Restart)handle_special_cmd、g_u8RestartFlagnet/server.cserver.c.md
硬复位函数在哪、谁调用system_hard_resetnet/server.cserver.c.md
特殊指令应答帧 0x08 怎么组、成功/失败字符串handle_response_special_cmdnet/ems.cems.c.md
设置配置成功应答帧 0x42 / 0x4Crespond_set_config_data、respond_set_config_data_extend1net/ems.cems.c.md
断点续传应答帧(Resume + CmdIndex)Handle_Response_Resume、g_u8_resp_resume_flagnet/ems.cems.c.md
强制升级请求应答(占用中回 Error)handle_response_force_update、set_response_force_upd_statusnet/ems.cems.c.md

云端配置与安规参数下发解析

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
配置下发总解析(约 300 个 JSON 字段)在哪个函数deal_get_config_datanet/server.cserver.c.md
配置解析的 5 种模式(const 表 / 时间表 / sscanf 数组块 / 字符串切割 / 单字段)deal_get_config_datanet/server.cserver.c.md
SN 校验不通过就整包丢弃(配置 / 安规的区别)deal_get_config_data、deal_get_safety_config_datanet/server.cserver.c.md
布尔字段 "KEY":true/false 怎么解析parse_bool_fieldnet/server.cserver.c.md
按 1/2/4 字节宽度往目标地址写值(避免表驱动写坏内存)json_store_by_sizenet/server.cserver.c.md
时控时段(当日分钟数 → 时/分)怎么换算deal_get_config_data、g_json_time_mapnet/server.cserver.c.md
充放电时段 TIMEChaDis1..28 解析与 3 条缺省回填规则deal_get_config_datanet/server.cserver.c.md
强制馈网时段 TIMEfeedin1..6deal_get_config_datanet/server.cserver.c.md
干节点时段 DryTime1 / DryTime2deal_get_config_datanet/server.cserver.c.md
峰谷电价 PeShValue 11 项解析deal_get_config_datanet/server.cserver.c.md
南澳 CSIP 参数 CsipAus 15 项deal_get_config_datanet/server.cserver.c.md
充电桩 EV1 / EVC1..6 配置数组解析与相数、电流缺省回填deal_get_config_datanet/server.cserver.c.md
BMS 激活时间 12 组日期字符串切割deal_get_config_datanet/server.cserver.c.md
WiFi 密码下发(空串回填默认值、变化则 net_init)deal_get_config_datanet/server.cserver.c.md
Modbus 地址 / 波特率下发(波特率变化立即 uart3_init)deal_get_config_datanet/server.cserver.c.md
IP / 子网掩码 / 网关下发deal_get_config_datanet/server.cserver.c.md
CT 变比 / 电表取反 / 相序调整字段deal_get_config_data、parse_meter_datanet/server.cserver.c.md
配置解析收尾:连续投递 15 个 Flash 保存任务deal_get_config_data、save_job_postnet/server.cserver.c.md
安规参数下发(97 项)解析,全部走 inverter_set_*deal_get_safety_config_datanet/server.cserver.c.md
小数串转整数:parse_fixed 的 scale 含义(10/100/1)deal_get_safety_config_data、parse_fixednet/server.cserver.c.md
过/欠压、过/欠频各 3 段保护与恢复值deal_get_safety_config_datanet/server.cserver.c.md
孤岛 / 零线 / LN 突变 / AFCI / GFCI 检测使能deal_get_safety_config_datanet/server.cserver.c.md
有功/无功下垂(P-U、Q-U 曲线 4 点、Q 点对应 PF)deal_get_safety_config_datanet/server.cserver.c.md
低压穿越 FRT / 频率变化率 / PELoss / VolDropdeal_get_safety_config_datanet/server.cserver.c.md
无线电表一帧 35 字段 CSV 怎么解析parse_meter_datanet/server.cserver.c.md
电表整体取反(三相电流/有功/无功/PF 取反 + 交换正反向电能)parse_meter_datanet/server.cserver.c.md
无线表 SN 变化怎么触发重新上报parse_meter_data、Set_Setup_Config_Statusnet/server.cserver.c.md
无线表离线怎么处理(通信丢失计数)parse_meter_data、wireless_meter_handle_lostnet/server.cserver.c.md
安规配置的 SN 校验失败为什么整包丢弃deal_get_safety_config_datanet/server.cserver.c.md
空壳函数 / 未实现残留store_system_set_datanet/server.cserver.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_requestnet/upd_download.cupd_download.c.md
强制升级标志 / 已应答标记怎么读写set_flag_force_update、get_flag_force_update、set_response_force_upd_status、get_response_force_upd_statusnet/upd_download.cupd_download.c.md
"已取到文件信息"标志与"固件已就绪"标志set_status_update_file_info、Set_Status_Is_Updated_From_Server、Get_Status_Is_Updated_From_Servernet/upd_download.cupd_download.c.md
特殊升级指令码怎么存(16 字节门限 vs 32 字节缓冲)set_id_code_for_updt_cmdnet/upd_download.cupd_download.c.md
固件块写 SDRAM(带 3 次重试、返回 0/1)Save_Data_To_FW_Area_InSdramnet/upd_download.cupd_download.c.md
固件块写外挂 SPI Flash(带 3 次重试)save_data_to_fw_area_inFlashnet/upd_download.cupd_download.c.md
落主用分区(APP1)还是备份分区(APP2)怎么选set_save_firm_in_app_flash_flag、get_save_firm_in_app_flash_flagnet/upd_download.cupd_download.c.md
设备固件整包 MD5 校验 + 置完成标志calculate_dev_FW_Flash_MD5net/upd_download.cupd_download.c.md
MD5 校验失败置哪个错误位calculate_dev_FW_Flash_MD5、g_t_upgrade_run_infonet/upd_download.cupd_download.c.md
EMS 自身固件 MD5 校验主流程(分块读回 + 流式 MD5)calculate_ems_flash_md5、calculate_ems_flash_md5_read_datanet/ems_download.cems_download.c.md
MD5 通过后写升级配置、延时 500 ms、硬复位进 Bootcalculate_ems_flash_md5、save_updt_config_info_to_external_flash、system_hard_resetnet/ems_download.cems_download.c.md
升级配置表 STUpdateTab 落盘(含自身 CRC16)save_updt_config_info_to_external_flashnet/ems_download.cems_download.c.md
云端升级的版本/文件信息怎么存到本地save_ems_server_update_infonet/ems_download.cems_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_INFOnet/ems_download.hems_download.h.md
APP 固件长度上下限(APP_MIN_SIZE / APP_MAX_SIZE)APP_MIN_SIZE、APP_MAX_SIZEnet/ems_download.hems_download.h.md
落盘地址宏(主/备固件区,upd_download 侧重复定义)START_ADDR_SPI_FLASH_EMS_FW、END_ADDR_SPI_FLASH_EMS_FW(配套头文件 net/upd_download.h)net/upd_download.cupd_download.c.md
远程升级轮询状态机(CHECK_NO → CHECK_EMS → … → CHECK_AFCI)load_current_update_data、load_current_update_data_setCurrUptnet/server.cserver.c.md
为什么逆变器两台必须串行升级(INV2 特殊处理)load_current_update_datanet/server.cserver.c.md
升级并发门禁:当前是否已有设备在升级check_force_upgradable_flag、check_updt_force_is_nonenet/server.cserver.c.md
该发"校验文件信息"还是"取固件分片"(两个门禁判据)is_goto_update_check_status、is_goto_get_update_file_statusnet/server.cserver.c.md
哪些设备在请求强制升级响应(INV1→INV2→INV3→BMS→Meter→EMS→EVC→AFCI)check_need_response_updt_devcienet/server.cserver.c.md
升级校验请求帧 0x20(掩码/软硬件版本/MD5/型号)request_update_file_info、fill_system_upgrade_datanet/ems.cems.c.md
固件分片请求帧 0x21(offset + 每次最多 1024 字节)request_update_file_contentnet/ems.cems.c.md
取分片前要拿 g_pUpdateSem 信号量、超时 3 srequest_update_file_content、g_pUpdateSemnet/ems.cems.c.md
升级进度上报帧 0x24 与 UPGRADE_* 状态迁移send_upgrade_info_data、fill_system_upgrade_datanet/ems.cems.c.md
升级失败原因串(WEB_ERROR / DOWNLOAD_ERROR / MD5_ERROR / TIMEOUT / BOOT_ERROR)send_upgrade_info_data、UPGRADE_INFO_Tnet/ems.cems.c.md
云端校验响应(0x20 回帧)成功/失败怎么处理、失败 5 次后清表handle_check_update、MAX_CNT_REQ_FILE_ERRORnet/server.cserver.c.md
固件文件信息合法性校验(长度开区间、MD5 必须 32 字符)set_file_updating_info、set_file_updating_info_for_devnet/server.cserver.c.md
文件信息 4 项一致性判定(掩码/厂商型号/硬版本/MD5)check_server_fw_is_updating、check_server_fw_is_updating_for_devnet/server.cserver.c.md
固件分片接收 0x21 的五级门禁(掩码→偏移→FWType→长度→数据)handle_fw_file_from_servernet/server.cserver.c.md
固件 HEX 转 BIN 后按设备分派落盘save_fw_to_spi_flash、save_fw_to_sdram、save_fw_to_flashnet/server.cserver.c.md
已下载偏移怎么累加increase_current_offset_file_updtnet/server.cserver.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_updtnet/server.cserver.c.md
当前升级点文件信息标志读写 / 是否为空get_current_point_updt_file_info、set_current_point_updt_file_info、get_curr_updt_point_is_nullnet/server.cserver.c.md
当前升级状态与升级目标设备号get_updt_status_current、set_updt_status_current、get_updt_dev_type_currnet/server.cserver.c.md
本地升级文件 MD5 缓存(用于一致性比对)get_local_md5_ems_upt_file、save_ems_server_update_infonet/server.cserver.c.md
Bootloader 版本号怎么读(片内 Flash 0x08000000+0x22B4)get_ems_boot_vernet/ems_boot_handle.cems_boot_handle.c.md
旧 Boot V1.00.03 静默升级到 V1.00.04(打补丁 + MD5 双向校验)ems_boot_handle、on_chip_flash_writenet/ems_boot_handle.cems_boot_handle.c.md
Boot 补丁期间的调度器锁定与看门狗喂狗点ems_boot_handle、OSSchedLocknet/ems_boot_handle.cems_boot_handle.c.md
是否允许进入 BOOT 升级的准入判定(352 KB 魔法数)ems_upgrade_boot_checknet/ems_boot_handle.cems_boot_handle.c.md
片内 Flash 逐字节写 + 3 次整段重试on_chip_flash_writenet/ems_boot_handle.cems_boot_handle.c.md
整机是否处于"下载中" / "升级中"的唯一聚合判据IsSystemDownload、IsSystemUpgradenet/ems_download.cems_download.c.md
断点续传数据怎么发、失败重试 10 次后清缓冲Get_Resume_Status_Current、resume_buff_sdram、g_u8ReumeFailCntnet/ems.cems.c.md
升级期间常规运行数据被抑制的条件is_goto_get_update_file_status、get_resume_index_lengthnet/ems.cems.c.md

各设备升级适配层与进度查询

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
BMS 是否正在下载 / 是否已完成 / 下载百分比IsDownloadBMS、IsUpgradeBMS、GetPercentDownloadBMS(配套头文件 net/bms_download.h)net/bms_download.cbms_download.c.md
BMS 两个标志的语义区别("云端要求下载" vs "已完成更新")IsDownloadBMS、IsUpgradeBMSnet/bms_download.cbms_download.c.md
逆变器主机(INVC(M))下载标志与百分比IsDownloadINV、GetPercentDownloadINV(配套头文件 net/inv_download.h)net/inv_download.cinv_download.c.md
逆变器从机(INVC(S))下载标志与百分比IsDownloadCHG、GetPercentDownloadCHGnet/inv_download.cinv_download.c.md
逆变器 ARM 协处理器(INVC(ARM))下载标志与百分比IsDownloadInv3、GetPercentDownloadInv3、Get_Response_For_Inv3_Force_Updatenet/inv_download.cinv_download.c.md
逆变器固件是否已就绪(各厂商升级模块的入口判据)is_inverter_firm_download_finishednet/inv_download.cinv_download.c.md
贝瓦(BW)单核板逆变器完成判据is_bwinv_firm_download_finishednet/inv_download.cinv_download.c.md
INV3 固件块写 SDRAM(唯一写路径,3 次重试)Save_Data_To_Inv3_FW_Areanet/inv_download.cinv_download.c.md
INV2 服务器版本串写入(带截断保护)Set_Inv2_Ver_From_Servernet/inv_download.cinv_download.c.md
三种逆变器升级目标的枚举值 / 掩码 / SDRAM 缓冲区对应表UPDT_INV1、UPDT_INV2、UPDT_INV3、FILE_MASK_INV1、FILE_MASK_INV2、FILE_MASK_INV3net/inv_download.cinv_download.c.md
电表强制下载标志与下载百分比IsDownloadMeter、GetPercentDownloadMeter(配套头文件 net/meter_download.h)net/meter_download.cmeter_download.c.md
本次要升级哪类电表(电网表 / 光伏表 / 正泰无线表 / MID)get_Meter_Updt_File_Mask、set_meter_updt_object、get_meter_updt_object、METER_SITE_Enet/meter_download.cmeter_download.c.md
电表升级对象的空掩码兜底("00000000")get_Meter_Updt_File_Mask、FILE_MASK_DEFAULTnet/meter_download.cmeter_download.c.md
充电桩(EVC)硬件版本上报 / 下载标志 / 下载百分比get_evc_hard_version、is_download_evc、get_percent_download_evc(配套头文件 net/evc_download.h)net/evc_download.cevc_download.c.md
EVC "云端下载"与"本地刷写"两段式进度怎么分工is_download_evc、get_percent_download_evcnet/evc_download.cevc_download.c.md
AFCI 机型串映射(BYTE_AFCI_S / BYTE_AFCI_T / 空串)get_afci_typenet/afci_download.cafci_download.c.md
AFCI 硬件版本 / 强制下载标志 / 下载百分比get_afci_hard_version、IsDownloadAFCI、GetPercentDownloadAFCI(配套头文件 net/afci_download.h)net/afci_download.cafci_download.c.md
AFCI 固件下载完成标志(决定是否停发常规帧)is_afci_firm_download_finished、get_afci_Updt_File_Masknet/afci_download.cafci_download.c.md
各下载百分比公式(offset * 100 / len)与除零窗口GetPercentDownloadEMS、GetPercentDownloadBMS、GetPercentDownloadINV、GetPercentDownloadMeter、GetPercentDownloadAFCI、get_percent_download_evcnet/ems_download.cems_download.c.md
EMS 自身下载标志 / 下载百分比 / 空桩接口IsDownloadEMS、GetPercentDownloadEMS、GetPercentUpgradeEMSnet/ems_download.cems_download.c.md

CAN 自定义帧与 CAN 日志

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
云端下发自定义 CAN 帧(CanSend,ID:DATA:TYPE 格式)handle_server_can_send_commandnet/server.cserver.c.md
CAN 日志采集指令(UploadCanLog)与防重入start_can_log_capture、is_can_log_capturingnet/server.cserver.c.md
CAN 日志采集控制块与按 ID 分配的 SDRAM 缓存区s_can_log_ctrl、s_can_log_raw_buffersnet/server.cserver.c.md
CAN 日志采集/上报两态机(25 ms 节拍,单次最多 60 帧 / 5 ms)check_can_log_upload_tasknet/ems.cems.c.md
CAN 日志是否还有未上报分片is_can_log_upload_ready、can_log_calc_total_packnet/ems.cems.c.md
CAN 日志分包上报帧 0x63(按 ID 独立分包)fill_send_can_log_datanet/ems.cems.c.md
采集超时导致条数不足时的 "Partial" 标记fill_send_can_log_data、CAN_LOG_CAPTURE_TIMEOUT_MSnet/ems.cems.c.md
回复云端 UploadCanLog 指令reply_upload_can_lognet/ems.cems.c.md
CAN 日志时间戳格式化 / 8 字节 CAN 数据转 HEX 串can_log_format_timestamp、can_log_byte_to_hexnet/ems.cems.c.md
CAN 日志采集的自测入口(只执行一次)test_can_log_upload_customnet/ems.cems.c.md
CAN 日志相关容量上限常量(ID 数、总条数、每包条数)MAX_CAN_LOG_ID_COUNT、MAX_CAN_LOG_COUNT、CAN_LOG_PACK_COUNT_PER_PACKnet/server.cserver.c.md

系统信息、事件上报与杂项

想找的功能(关键词 / 用户可能的问法)入口函数或符号源文件文档
本机 16 字节 SN 从哪取get_system_snnet/server.cserver.c.md
EMS 硬件类型 / 硬件版本上报(FW_TYPE_EMS3_6)get_ems_hard_type、get_ems_hard_versionnet/server.cserver.c.md
事件位怎么置 / 清 / 读(跨模块事件上报开关)set_info_status、clear_info_status、get_info_statusnet/ems.cems.c.md
重启事件开机会自动上报一次task_net_app、set_info_status、SYSTEM_RESTARTnet/ems.cems.c.md
从云事件里取最低置位的一位并做副作用(SERVER_SWITCH → net_init)handle_tcp_recv_data、get_info_statusnet/server.cserver.c.md
读取本地事件日志内容obtain_event_log_datanet/ems.cems.c.md
错误日志上报(0x0F / STATUS_SEND_ERROR_LOG)handle_tcp_recv_data、g_t_error_log_tabnet/server.cserver.c.md
任务存活心跳变量 u32EMSTaskTick 谁维护、超时告警task_net_app、g_stEMSInfo.u32EMSTaskTicknet/ems.cems.c.md
跨模块"有事要上报/要应答"的 20 余个全局标志清单g_u8RestartFlag、g_u8SetConfigFlag、g_u8RemoteControlFlag、g_u8SyncFlag、g_u8DispatchFlag、g_u8ExtraFlagnet/ems.hems.h.md
事件日志(net_event_log)与故障日志的对接点g_t_error_log_tab、read_event_log_datanet/ems.cems.c.md
老化模式数据同步(0x18 收到后的动作)handle_tcp_recv_data、aging_mode_data_syncnet/server.cserver.c.md
WiFi 信息上报响应处理handle_tcp_recv_data、wireless_status_refreshnet/server.cserver.c.md
常被外部 include 的公共头(谁依赖本模块)STEMSTab、STUpdateTab、ENCmdType、g_stEMSInfonet/ems.hems.h.md
升级状态表与固件落盘的声明集合头(只有原型无实现)IsDownloadBMS、is_download_evc、IsDownloadAFCI、IsDownloadMeter、IsDownloadINV、get_ems_boot_vernet/bms_download.hbms_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_Infonet/inv_download.hinv_download.h.md

文件清单核对

源文件文档是否已在表中出现
net/afci_download.cafci_download.c.md已在表中出现
net/afci_download.hafci_download.h.md已在表中出现(头文件节 + AFCI 行内标注"配套头文件")
net/bms_download.cbms_download.c.md已在表中出现
net/bms_download.hbms_download.h.md已在表中出现(头文件节 + BMS 行内标注"配套头文件")
net/ems.cems.c.md已在表中出现
net/ems.hems.h.md已在表中出现
net/ems_boot_handle.cems_boot_handle.c.md已在表中出现
net/ems_boot_handle.hems_boot_handle.h.md已在表中出现(头文件节,薄接口头)
net/ems_download.cems_download.c.md已在表中出现
net/ems_download.hems_download.h.md已在表中出现
net/evc_download.cevc_download.c.md已在表中出现
net/evc_download.hevc_download.h.md已在表中出现(头文件节 + EVC 行内标注"配套头文件")
net/inv_download.cinv_download.c.md已在表中出现
net/inv_download.hinv_download.h.md已在表中出现(头文件节 + INV1/INV2/INV3 行内标注"配套头文件")
net/meter_download.cmeter_download.c.md已在表中出现
net/meter_download.hmeter_download.h.md已在表中出现(头文件节 + Meter 行内标注"配套头文件")
net/server.cserver.c.md已在表中出现
net/server.hserver.h.md已在表中出现
net/upd_download.cupd_download.c.md已在表中出现
net/upd_download.hupd_download.h.md已在表中出现(头文件节 + upd_download 行内标注"配套头文件")