9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
349 lines
17 KiB
Markdown
349 lines
17 KiB
Markdown
# 平台联网任务功能说明(CCU601E_D / plat_comm)
|
||
|
||
本文档描述 **`CCU601E_D\app\plat_comm`** 目录内**平台联网任务**的整体架构、状态机、链路层与业务层分工,以及与计量、Flash、OCPP 的衔接。内容基于当前工程源码归纳;各子模块细节见文末**关联文档**。
|
||
|
||
---
|
||
|
||
## 1. 模块定位
|
||
|
||
| 项目 | 说明 |
|
||
|------|------|
|
||
| **任务** | FreeRTOS 任务 **`TASK_ID_PlatComm`**,入口 **`v_Plat_Comm`**,周期约 **100ms**(由任务睡眠配置决定)。 |
|
||
| **职责** | 多平台(最多 **2 路**)的 **TCP 建链 → 平台登录 → 周期收发 → 私有逻辑**;与 **FTP 远程升级 / 诊断日志上传** 分时调度;对上层屏蔽 **4G / 网线** 差异。 |
|
||
| **协议栈** | 业务协议由 **`MasterFuncArray`** 注册(当前工程默认 **OCPP 1.6 + WebSocket**);传输由 **`bs_connect_impl`** 统一 **发送/接收**。 |
|
||
| **全局控制块** | **`BS_TASK_CTRL_DATA s_bs_task_ctrl`**(`plat_comm_task.c` / `plat_comm_task.h`)。 |
|
||
|
||
---
|
||
|
||
## 2. 编译开关与平台槽位
|
||
|
||
定义见 **`app/publicdata/public_define.h`**(摘要):
|
||
|
||
| 宏 | 典型值 | 含义 |
|
||
|----|--------|------|
|
||
| **`MAX_BS_NUM`** | 2 | 同时支持的平台通道数(槽位 0 / 1)。 |
|
||
| **`BS_OCPP_EN`** | 1 | OCPP 协议栈参与编译。 |
|
||
| **`BS_IES_EN`** | 1 | 积成平台(`plat_comm/ieszt/`,登录+心跳);详见 **[ieszt/IES积成平台功能说明.md](ieszt/IES积成平台功能说明.md)**。 |
|
||
| **`BS_GWSDK_EN`** | 0 | 国网 SDK 平台(`gwsdk/`,本仓库目录可能未包含)。 |
|
||
| **`BS_TLS_MBEDTLS_EN`** | 视工程 | 网口 **wss://** 时 MCU 侧 **mbedTLS** 封装。 |
|
||
| **`LWIP_FTP_UPGRADE_ENABLE`** | 视工程 | 网线 **LwIP FTP** 固件下载状态机。 |
|
||
|
||
运行时使能与联网方式**不只看宏**,还读系统配置:
|
||
|
||
- **`E_BS_GET_SYS_DATA_PLAT_EN`**:`u8_gunNo` = 0 → 平台 A,= 1 → 平台 B;0 关闭、1 使能。
|
||
- **`E_BS_GET_SYS_DATA_NET_TYPE`**:0 = **4G(EC200A)**,1 = **网线(LwIP)**。
|
||
|
||
初始化在 **`v_plat_data_init()`**(`plat_comm_task.c`)中写入各槽位 **`bs_enable`**、**`u8_netType`**。
|
||
|
||
---
|
||
|
||
## 3. 目录结构一览
|
||
|
||
```
|
||
plat_comm/
|
||
├── plat_comm_task.c / .h # 联网任务主循环、平台函数表、重连入口
|
||
├── 平台联网任务功能说明.md # 本文档
|
||
├── impl/
|
||
│ ├── bs_connect_impl.c / .h # TCP/TLS 建链、统一 v_bs_send / u16_bs_recv
|
||
│ └── bs_public_impl.c / .h # 桩枪数据桥接、未结订单、FTP 调度、OCPP 配置读写
|
||
├── ocpp/ # OCPP 1.6(详见 ocpp/OCPP功能模块说明.md)
|
||
├── ieszt/ # 积成 IESZT(详见 ieszt/IES积成平台功能说明.md)
|
||
├── 4g_module/ # EC200A AT、TCP、FTP(详见 4G模块AT指令配置功能说明.md)
|
||
└── lwip_module/ # 网口 socket、LwIP FTP 升级(详见 lwip_ftp功能说明.md)
|
||
```
|
||
|
||
---
|
||
|
||
## 4. 联网任务主状态机(`v_Plat_Comm`)
|
||
|
||
### 4.1 平台函数表 `MasterFuncArray`
|
||
|
||
每个使能槽位绑定一组回调(**`plat_comm_task.c`**):
|
||
|
||
| 回调 | OCPP 实现 | 作用 |
|
||
|------|-----------|------|
|
||
| **`v_bs_data_init`** | `v_ocpp_init_data` | 上电/全量复位:OCPP 上下文、离线 MV FRAM、定时器等。 |
|
||
| **`v_bs_tcp_connect`** | `v_ocpp_tcp_connect` | **TCP + WebSocket 握手**(内部先 `u8_tcp_connect`)。 |
|
||
| **`v_bs_logon_connect`** | `v_ocpp_logo_on` | **BootNotification** 登录,成功置 **`u8_log_on_flag`**。 |
|
||
| **`v_bs_recv_data`** | `v_ocpp_recv_data` → `ocpp_recv` | 收包并解析 JSON(CALL / CALLRESULT)。 |
|
||
| **`v_bs_send_ctrl`** | `v_ocpp_send_ctrl` → `ocpp_send_mag_ctrl` | 周期/事件驱动主动上送(Heartbeat、MV、StopTx 等)。 |
|
||
| **`v_bs_private_logic`** | `v_ocpp_private_logic` | 超时重连、未结订单、离线 MV 落盘、鉴权检查等。 |
|
||
|
||
未使能槽位(**`bs_enable == 0`**)在本轮循环中跳过。
|
||
|
||
**`BS_IES_EN`** 时槽位 **0** 常为 **`"ieszt"`**(`v_ies_*`),协议态在 **`s_bs_task_ctrl.s_ies_data`**(含 **`IES_SEND_TIMER` + `s_timerCnt[]`**,与 OCPP **`s_timerCnt`** 同套路),详见 **[ieszt/IES积成平台功能说明.md](ieszt/IES积成平台功能说明.md)**。
|
||
|
||
### 4.2 单槽位连接状态(`S_BS_CTRL_DATA`)
|
||
|
||
| 字段 | 含义 |
|
||
|------|------|
|
||
| **`u8_TCP_connect_flag`** | 1 = 传输层已就绪(OCPP 下为 TCP+WS 成功)。 |
|
||
| **`u8_log_on_flag`** | 1 = 平台登录成功(BootNotification Accepted/Pending)。 |
|
||
| **`u8_netType`** | 0 = 4G,1 = 网线。 |
|
||
| **`fd`** | 网口 socket 描述符;4G 路径不使用。 |
|
||
| **`is_secure` / `tls_ctx`** | 网口 **wss** 时 TLS 会话(**`BS_TLS_MBEDTLS_EN`**)。 |
|
||
| **`u8_updata_flag`** | 远程升级进行中:0 无,1 FTP 固件,2 SDK OTA 等。 |
|
||
| **`u8_4g_soft_tcp_reconnect`** | 4G:**软重连**(仅 QICLOSE+QIOPEN,不整网重驻网)。 |
|
||
| **`s_gundata[]`** | 每枪:`txFlag_tradUpload`、`txFlag_startResult`、`txFlag_autoStart` 等与 OCPP/flow 协同。 |
|
||
|
||
### 4.3 每周期调度顺序(`v_plat_comm_network_round`)
|
||
|
||
对每个使能槽位 **i**:
|
||
|
||
```text
|
||
若 u8_TCP_connect_flag == 0
|
||
→ v_bs_tcp_connect() // 建链
|
||
否则若 u8_log_on_flag == 0
|
||
→ v_bs_logon_connect() // 登录
|
||
否则
|
||
→ v_bs_send_ctrl() // 已登录:主动发送
|
||
|
||
→ v_bs_recv_data() // 收包(任意阶段均可收)
|
||
→ v_bs_private_logic(i) // 私有逻辑(未结单、离线 MV、超时等)
|
||
```
|
||
|
||
日志示例:`[0] tcp connect`、`[0] logOn is ok`(`Plat_Comm_LOG`)。
|
||
|
||
### 4.4 与 FTP 的分时调度(4G 重点)
|
||
|
||
**`u8_plat_comm_ftp_transfer_active()`** 为真时(**`u8_updata_flag != 0`**,或 4G 下 **`u8_log_file_upload`** 置位):
|
||
|
||
- **偶数周期**:仅 **`v_plat_comm_network_round()`**(保证 OCPP 仍能 recv/send)。
|
||
- **奇数周期**:仅 **`v_plat_comm_ftp_round()`** → **`v_ftp_update_action()`** + 双路 **`v_bs_recv_data()`**(收 **+QFTP*** 等 URC)。
|
||
|
||
无 FTP 时:每周期只跑联网,相位复位。
|
||
|
||
> 原因:4G 与 FTP **共用一根 UART**;若在同一周期内既跑大量 AT 又跑 **QISEND**,易出现粘连、**`break off=0`**。详见 **`4g_module/4G模块AT指令配置功能说明.md`**。
|
||
|
||
---
|
||
|
||
## 5. 重连与初始化策略(`v_set_bs_renew`)
|
||
|
||
**`void v_set_bs_renew(U8_T u8_bs)`**(`plat_comm_task.c`)为各模块统一的「断链重连」入口:
|
||
|
||
| 联网方式 | 行为 |
|
||
|----------|------|
|
||
| **网线** | **`v_bs_eth_close_socket`**:关 socket、清 **`fd`**、**`u8_TCP_connect_flag`**,避免 LwIP **socket 泄漏**导致「再也连不上」。 |
|
||
| **4G** | 清 TCP 标志、**`fd=-1`**,置 **`u8_4g_soft_tcp_reconnect=1`**(下次 **`u8_tcp_connect`** 走软重开 Socket)。 |
|
||
| **公共** | **`u8_log_on_flag=0`**;**不在此处**调用 **`v_bs_data_init`**,避免每次断线都 **整模组重驻网**。 |
|
||
|
||
**全量 OCPP 复位**(含 **`v_ocpp_mv_offline_init`**、运行态 RAM)由 **`v_ocpp_init_data` / `v_ocpp_init_data_ex`** 在 **上电** 或 **TCP 长时间失败**(如 RX 超时 2min)时触发,与软重连区分。
|
||
|
||
OCPP 侧 **WS 握手失败**会关 socket 并清 **`u8_TCP_connect_flag`**,下一周期重试(**`v_ocpp_tcp_connect`**)。
|
||
|
||
---
|
||
|
||
## 6. 连接实现层(`impl/bs_connect_impl`)
|
||
|
||
### 6.1 URL 解析
|
||
|
||
**`parse_websocket_url_simple(url, ws_url_t *)`** 解析配置中的服务器串,得到:
|
||
|
||
- **`host`**、**`port`**、**`path`**(WebSocket 路径)
|
||
- **`is_secure`**:`ws://` → 0,`wss://` → 1
|
||
- **`apn_str`**(4G 用,来自变量区 APN)
|
||
|
||
全局 **`url_info`** 供网口/4G 共用。
|
||
|
||
### 6.2 `u8_tcp_connect(u8_id)`
|
||
|
||
| `u8_netType` | 路径 |
|
||
|--------------|------|
|
||
| **0(4G)** | 若 **`u8_4g_soft_tcp_reconnect`**:`s8_ec200a_tcp_socket_soft_reopen()`;失败累计达 **`EC200A_TCP_SOFT_REOPEN_FAIL_MAX`** 再 **`v_bs_4G_data_init()`**。否则 **`s8_ec200a_4g_init()`** 推进模组状态机至 Socket 就绪。 |
|
||
| **1(网线)** | **`eth_do_tcp_connect`**:`netif_is_link_up` 检查 → **`lwip_tcp_connect`** → 可选 **`bs_tls_client_connect`**(wss)。成功写 **`fd`**,返回 1。 |
|
||
|
||
### 6.3 统一收发
|
||
|
||
| 接口 | 4G | 网线 |
|
||
|------|-----|------|
|
||
| **`v_bs_send`** | 透传 **`v_4g_send_data`** / 非透传 **`v_ec200a_tcp_app_send`(QISEND/QSSLSEND)** | **`lwip_tcp_send`** 或 **`bs_tls_client_send`** |
|
||
| **`u16_bs_recv`** | **`u16_4g_recv_data`** / **`u16_ec200a_tcp_app_recv`(QIRD/QSSLRECV)** | **`lwip_tcp_recv`** / **`bs_tls_client_recv`**;对端关闭或 errno 异常 → **`eth_close_socket`** |
|
||
|
||
每次 **`v_bs_send`** 后 **`mSleep(Plat_Send_Sleep)`**(默认 50ms),并累加 **`u8_sendCnt`** 用于任务末尾睡眠补偿。
|
||
|
||
接收缓冲区上限:**`BS_BUF_SIZE_RECV`**(约 3KB,远程升级 JSON 可能较长)。
|
||
|
||
---
|
||
|
||
## 7. 公共实现层(`impl/bs_public_impl`)
|
||
|
||
面向 **flow / meter / fault / UI / OCPP** 的**统一数据与控制 API**,是「业务世界」与「平台任务」的边界。
|
||
|
||
### 7.1 主要能力分类
|
||
|
||
| 分类 | 代表接口 | 说明 |
|
||
|------|----------|------|
|
||
| **系统/枪数据读** | **`u32_bs_get_sys_data`**、**`u8_get_str_data`** | 枪状态、电量、SOC、订单流水号、桩编号、4G 信号等。 |
|
||
| **充电控制** | **`v_bs_charge_action_ctrl`** | 启停充、改订单字段(含 **`preTradeNo`** 写入计量日志)。 |
|
||
| **状态/订单标志** | **`v_bs_log_txFlag_tradUpload`**、**`u8_bs_get_flow_state`** | 与 **`s_gundata`**、flowctrl 联动。 |
|
||
| **未结订单** | **`s8_plat_get_unsettled_order`** | 优先 **EEPROM 掉电临时单**,再 **Flash 未结索引**;OCPP 补单数据源。 |
|
||
| **结算确认** | **`v_bs_platform_settlement_confirm`** | StopTx 成功后删未结索引。 |
|
||
| **FTP** | **`v_ftp_update_action`** | 按 **`t_ftp_update_info`** 与 **`u8_netType`** 分发 4G / LwIP FTP。 |
|
||
| **OCPP 配置** | **`u8_set_ocpp_cfg_info`**、**`v_get_ocpp_cfg_info`** | 读写 Flash 中的 OCPP 配置项。 |
|
||
| **本地鉴权** | **`v_ocpp_offline_local_authentication_check`**、**`u8_card_info_add`** | 离线卡列表与即插即充。 |
|
||
|
||
### 7.2 未结订单来源(与掉电续传)
|
||
|
||
**`s8_plat_get_unsettled_order`** 顺序:
|
||
|
||
1. **EEPROM 临时记录**(**`v_check_temp_chg_record_valid`**):充电中每 60s 快照;真正掉电后上电读出,置 **`E_FAULT_13073`**(异常掉电)。**充电中(flow=2)不当作掉电单**,避免误 StopTx。
|
||
2. **Flash 未结列表**(**`unsettled_order_mng`**):正常结束但未收到平台确认的订单索引。
|
||
|
||
计量侧:**`v_meterlog_restore_temp_from_eeprom`** 上电恢复 RAM;**`preTradeNo` 更新后立即写 EEPROM**(见 **`meter_calculate_impl.c`**)。
|
||
|
||
### 7.3 FTP 全局参数 `T_FTP_UPDATE_INFO`
|
||
|
||
由 OCPP **UpdateFirmware** / **GetDiagnostics** 解析 **`parse_ftp_url()`** 填入:
|
||
|
||
- 服务器地址、端口、用户、密码、路径、文件名
|
||
- **`u8_netType`**:决定走 **4G AT FTP** 还是 **LwIP FTP**
|
||
- **`u8_log_file_upload`**(OCPP 扩展):1 = 诊断日志上传,0 = 固件升级
|
||
|
||
**`v_ftp_update_action()`** 每 FTP 半周期推进一步,避免阻塞 PlatComm。
|
||
|
||
---
|
||
|
||
## 8. 4G 子系统(`4g_module/`)
|
||
|
||
| 项目 | 说明 |
|
||
|------|------|
|
||
| **模组** | Quectel **EC200A** |
|
||
| **业务 TCP** | **`QIOPEN` / `QSSLOPEN`**(wss 时模组内置 TLS),PDP **`EC200A_TCP_PDP_CTX_ID`** |
|
||
| **FTP** | 独立 PDP **`EC200A_FTP_PDP_CTX_ID`**,与业务 TCP **禁止同 context** |
|
||
| **模式** | **`EC200A_TCP_USE_TRANSPARENT_MODE`**:透传 vs **`QISEND`/`QIRD`** 缓冲模式 |
|
||
| **与 PlatComm** | 仅通过 **`bs_connect_impl`** 的 **`v_bs_send`/`u16_bs_recv`** 接入;FTP 由 **`v_ftp_update_action`** 驱动 |
|
||
|
||
**详细 AT 流程、QFTPGET/QFREAD 分片、与 OCPP 互斥宏** → **`4g_module/4G模块AT指令配置功能说明.md`**。
|
||
|
||
---
|
||
|
||
## 9. 网口子系统(`lwip_module/`)
|
||
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| **`lwip_module.c`** | **`lwip_tcp_connect` / `send` / `recv` / `close`**,非阻塞 socket |
|
||
| **`lwip_ftp_upgrade.c`** | 网线 **FTP 固件下载** 状态机(PASV/RETR/按 1024B 写 Flash) |
|
||
|
||
**`eth_do_tcp_connect`** 在 PHY **link down** 时不建连;重连前必须 **`v_bs_eth_close_socket`**。
|
||
|
||
**详细状态机与触发条件** → **`lwip_module/lwip_ftp功能说明.md`**。
|
||
|
||
---
|
||
|
||
## 10. OCPP 子系统(`ocpp/`)
|
||
|
||
在 **`BS_OCPP_EN`** 下,OCPP 作为 **`MasterFuncArray`** 中的一套 **Master** 实现:
|
||
|
||
```text
|
||
TCP (u8_tcp_connect)
|
||
→ WebSocket 握手 (websocket_build)
|
||
→ BootNotification (v_ocpp_logo_on)
|
||
→ ocpp_send_mag_ctrl:Heartbeat / StatusNotification / MeterValues / Start&StopTransaction …
|
||
→ ocpp_recv → recv_mags:平台下行与 CALLRESULT
|
||
→ v_ocpp_private_logic:未结单 s8_unsettled_order_chaek、离线 MV 桥接、RX 超时重连
|
||
```
|
||
|
||
**离线 MeterValues**:未连接或未登录时 **`BS_ocpp_mv_offline_bridge`** 写 Flash;联网后 **session 补发**(在线会话)或 **unsettled 补发**(掉电/未结单)。
|
||
|
||
**完整 PDU 列表、未结单状态机、session_001x 类问题修复说明** → **`ocpp/OCPP功能模块说明.md`**。
|
||
|
||
---
|
||
|
||
## 11. 端到端数据流(示意)
|
||
|
||
### 11.1 正常充电上送(已登录)
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph tasks
|
||
FC[FlowCtrl / Meterfee]
|
||
PC[PlatComm v_Plat_Comm]
|
||
end
|
||
subgraph ocpp
|
||
SEND[ocpp_send_mag_ctrl / send_mag]
|
||
WS[ws_send / bs_websocket]
|
||
end
|
||
subgraph link
|
||
BS[v_bs_send / u16_bs_recv]
|
||
TCP[u8_tcp_connect 4G or LwIP]
|
||
end
|
||
FC -->|订单/枪状态| PUB[bs_public_impl]
|
||
PUB --> SEND
|
||
PC --> SEND
|
||
SEND --> WS --> BS --> TCP
|
||
TCP --> CSMS[CSMS]
|
||
CSMS --> TCP --> BS --> WS --> RECV[ocpp_recv / recv_mags]
|
||
RECV --> PUB
|
||
PC --> RECV
|
||
```
|
||
|
||
### 11.2 掉电后补单(简化)
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant M as meter/EEPROM
|
||
participant P as bs_public_impl
|
||
participant O as BS_ocpp_ctrl
|
||
participant S as CSMS
|
||
M->>P: s8_plat_get_unsettled_order
|
||
P->>O: s_unsettled_order_data
|
||
alt 无 preTradeNo
|
||
O->>S: Authorize
|
||
S->>O: Accepted
|
||
O->>S: StartTransaction
|
||
S->>O: transactionId
|
||
end
|
||
O->>S: MeterValues 离线补发
|
||
O->>S: StopTransaction PowerLoss
|
||
```
|
||
|
||
---
|
||
|
||
## 12. 关键全局变量与调试
|
||
|
||
| 符号 | 位置 | 用途 |
|
||
|------|------|------|
|
||
| **`s_bs_task_ctrl`** | `plat_comm_task.c` | 双平台连接态、枪标志、OCPP **`ocpp_data`**、IES **`s_ies_data`** |
|
||
| **`t_ftp_update_info`** | `bs_public_impl.c` | FTP 升级/日志参数 |
|
||
| **`url_info`** | `bs_connect_impl.c` | 解析后的 host/port/TLS |
|
||
| **`private_ocpp_data`** | `BS_ocpp_ctrl.c` | OCPP 定时器、未结单指针、pending 通知 |
|
||
| **`Plat_Comm_LOG` / `OCPP_PRINTF_LOG`** | 宏 | 任务日志(**`TASK_ID_PlatComm`** / **0xFF**) |
|
||
|
||
**常见日志关键字**
|
||
|
||
| 日志 | 含义 |
|
||
|------|------|
|
||
| `[n] tcp connect` | 第 n 槽传输层就绪 |
|
||
| `[n] logOn is ok` | BootNotification 成功 |
|
||
| `Load pwr-loss order gun=` | EEPROM 掉电单加载 |
|
||
| `Unsettled: send StopTx` | 未结单补 StopTransaction |
|
||
| `MV offline: session send ok` | 在线会话离线 MV 补发 |
|
||
| `ws handshake fail` | WS 失败,将重试 TCP |
|
||
| `End rx TO, relink` / `RX TO, relink` | 收包超时触发 **`v_set_bs_renew`** |
|
||
|
||
---
|
||
|
||
## 13. 关联文档索引
|
||
|
||
| 文档路径 | 内容 |
|
||
|----------|------|
|
||
| **`ocpp/OCPP功能模块说明.md`** | OCPP 报文、未结单、离线 MV、Boot/Heartbeat、平台下行指令 |
|
||
| **`ieszt/IES积成平台功能说明.md`** | IES 0x68 协议、`S_BS_IES_CTRL_DATA`、登录/心跳与 PlatComm 七回调 |
|
||
| **`4g_module/4G模块AT指令配置功能说明.md`** | EC200A 初始化、透传/非透传、FTP 与 OCPP 分时、配置宏 |
|
||
| **`lwip_module/lwip_ftp功能说明.md`** | 网线 FTP 升级状态机、与 **`v_ftp_update_action`** 关系 |
|
||
| **`BSP/flash_file_mgr/`**(工程内) | 订单 Flash、未结索引、OCPP 离线 MV FRAM/SPI |
|
||
| **`app/meter_calculate/`**(工程内) | 订单 RAM、EEPROM 临时单、周期存盘 |
|
||
|
||
---
|
||
|
||
## 14. 维护说明
|
||
|
||
1. **新增平台协议**:在 **`plat_comm/`** 下增加子目录,实现 **`MasterFuncPtl`** 七个回调,并在 **`MasterFuncArray`** 中注册;**`BS_*_EN`** 与 **`E_BS_GET_SYS_DATA_PLAT_EN`** 对齐。
|
||
2. **修改建链逻辑**:优先改 **`bs_connect_impl.c`**,业务层保持 **`v_bs_send`/`u16_bs_recv`** 不变。
|
||
3. **FTP 与 OCPP 并发**:改 **`plat_comm_task.c`** 相位策略或 **`ec200a_4g_cfg.h`** 互斥宏前,须在 **4G 实机** 验证 **QISEND** 与 **QFTP** 不互相破坏。
|
||
4. **未结/掉电单**:同时核对 **`bs_public_impl.c`**、**`meter_calculate_impl.c`**、**`BS_ocpp_ctrl.c`** 三处,避免 EEPROM 周期快照被误判为掉电单。
|
||
|
||
---
|
||
|
||
*文档版本:与 CCU601E_D plat_comm 源码同步维护;若宏或文件名变更,请以实际编译配置为准。*
|