Files
chrg/apps/chrg/applications/thread/chrg_roll_nor.h
T
wrh e56830fc86 chore: 版本升级至V1.1.10并优化批量通信逻辑
1. 更新所有文件的版本号注释从V1.1.9到V1.1.10
2. 修改chrg_comm.c中的固件版本宏定义为0x011A
3. 新增短路保活命令优先调度逻辑,避免挤占保活窗口
4. 优化批量通信的通道轮转和重试机制
5. 改为按通道维护重试计数,避免全局计数异常
6. 新增批量通信突发计数和通道状态管理
2026-09-09 11:08:51 +08:00

125 lines
4.3 KiB
C

/****************************************************************************
文件名称 : chrg_roll_nor.h
完成日期 :
当前版本号 : V1.1.10
主要功能 : 实现北向通信轮巡请求命令。以独立线程处理。
版本历史 : 创建原始版本
说明 :
******************************************************************************/
#ifndef __CHRG_ROLL_NOR_H__
#define __CHRG_ROLL_NOR_H__
#include <rtthread.h>
#define THR_NAME_ROLL_NOR "thr.rollnor"
#define STATE_WORKING 0x03//运行标志位
enum {
IDX_GET_SOURCE_VC = 0,
IDX_GET_SOURCE_PD,
IDX_SET_SOURCE_PD,
IDX_SET_SOURCE_ID,
IDX_SET_SOURCE_CC_SET,
IDX_SER_SOURCE_VOLT,
IDX_SER_SOURCE_CURR,
IDX_SET_SOURCE_WORK,
IDX_SET_SOURCE_CCLVL,
IDX_SET_SOURCE_CV,
IDX_SET_SOURCE_STOP_STATE,
IDX_GET_SINK_VC,
IDX_GET_SINK_PD,
IDX_SET_SINK_VOLT,
IDX_SET_SINK_CURR,
IDX_SET_SINK_PD,
IDX_SET_SINK_CCLINE,
IDX_SET_SINK_CCLVL,
IDX_SET_SINK_ID,
IDX_SET_SINK_VOLT_ON,
IDX_SET_SINK_WORK,
IDX_SET_SINK_CV,
IDX_SET_SINK_WORK_STATE,
IDX_SET_SINK_STOP_TEST,//停止负载测试
IDX_SET_SINK_STORP_WAIT,
/* Source北向事务状态,追加在末尾以保持原有sub数值不变。 */
IDX_SET_SOURCE_RESET, // PD与非PD协议跨类切换前发送Source复位
IDX_WAIT_SOURCE_PROTOCOL, // 0xD0应答后的协议生效等待
/* Sink北向事务状态追加在末尾,避免改变已有sub数值。 */
IDX_SET_SINK_PD_ONLY, // 仅重发协议,协议应答后直接查询协商电压
IDX_WAIT_SINK_CC, // CC设置应答后的非阻塞稳定等待
IDX_SET_SINK_CC_BEFORE_PD, // 先设置CC,稳定后再设置协议
IDX_WAIT_SINK_CC_BEFORE_PD, // 等待CC稳定后进入协议设置
IDX_WAIT_SINK_PD_ACK, // 协议回码确认后的非发送过渡状态
IDX_SET_SINK_PD_WITH_MODE,
IDX_SET_SINK_CC_BEFORE_PD_WITH_MODE,
IDX_WAIT_SINK_CC_BEFORE_PD_WITH_MODE,
IDX_SET_SINK_MODE_AFTER_PD,
IDX_WAIT_SINK_MODE_AFTER_PD,
#if 0
IDX_SET_SINK_PD_BEFORE_CC, // 先设置协议,协议回码后再设置CC
#endif
};
struct chrg_rollnor_t {
rt_uint8_t run; // 下一轮运行方式 1:自动轮巡 2:LCD触发插入 3:控制台触发插入
rt_uint8_t part; // 自动轮巡时,多条命令序号(若存在多条命令时)
rt_uint8_t idx; // 自动轮巡时,通道序号
rt_uint8_t ch; // 触发插入时,切换的通道
rt_uint8_t type; // 1=source/0=sink
rt_uint8_t sub; // 子类型
rt_uint8_t cc_line; // cc 线
rt_uint8_t cc_level; // cc 电平
rt_uint8_t pd;
rt_uint8_t src;
rt_uint8_t pps;
rt_uint16_t voltage; // 触发插入时,当前电压 mV
rt_uint16_t current; // 触发插入时,当前电流 mA
rt_uint16_t max_vol; // 触发插入时,最大电压 mV
rt_uint16_t min_vol; // 触发插入时,最小电压 mV
rt_uint16_t max_curr; // 触发插入时,最大电流 mA
};
extern struct chrg_rollnor_t chrgrollnor;
/*****************************************************************
函数名称: chrg_roll_nor_thread_entry
函数描述: 北向通道轮巡请求数据线程体
输入参数: *data: 本线程信息
输出参数: -
返回说明: -
其它说明: -
*****************************************************************/
extern void chrg_roll_nor_thread_entry (void *data);
extern int sink_fill_pd_buf(rt_uint8_t group,rt_uint8_t pd_val, rt_uint16_t pd_volt, rt_uint16_t pd_curr, rt_uint8_t *buf);
extern void roll_nor_set(void);
/*****************************************************************
函数名称: chrg_roll_nor_source_cc_close_register
函数描述: 将Source通道登记到本轮共享CC_CLOSE等待屏障
输入参数: ch:北向通道编号
输出参数: -
返回说明: -
其它说明: 仅需要在协议切换入口为IDX_SET_SOURCE_CC_CLOSE时调用
*****************************************************************/
/*****************************************************************
函数名称: chrg_roll_nor_source_switch_reset
函数描述: 清理指定Source通道的CC_CLOSE及协议等待记录
输入参数: ch:北向通道编号
输出参数: -
返回说明: -
其它说明: 停止、角色切换或新配置覆盖旧切换状态时调用
*****************************************************************/
extern void chrg_roll_nor_source_switch_reset(rt_uint8_t ch);
#define sink_time 3
#endif