Files
chrg/apps/chrg/applications/thread/chrg_roll_sou.h
T
yhf c820aad809 feat: 完成项目多模块功能迭代与配置更新
1. 新增sqlite文件、协议文档、调试截图、配置ini等各类辅助文件
2. 更新Keil开发包版本与工程配置,调整编译优化等级
3. 重构继电器控制逻辑、串口收发逻辑与线程优先级
4. 新增Modbus寄存器映射、校准结构体与Ymodem升级相关代码
5. 完善南北向协议解析、快充挡位配置与调试日志
6. 修复注释格式、数组越界与线程邮箱溢出问题
7. 新增屏幕控制、功率板调试与协议格式说明文档
2026-07-18 15:32:54 +08:00

91 lines
3.4 KiB
C

/****************************************************************************
文件名称 : chrg_roll_sou.h
完成日期 :
当前版本号 : V1.0
主要功能 : 实现南向通信轮巡请求命令。以独立线程处理。
版本历史 : 创建原始版本
说明 :
******************************************************************************/
#include "chrg_south.h"
#ifndef __CHRG_ROLL_SOU_H__
#define __CHRG_ROLL_SOU_H__
#include <rtthread.h>
#define THR_NAME_ROLL_SOU "thr.rollsou"
// 单通道批量下发缓存:保存当前需要同步的寄存器列表
#define SOU_COM_BATCH_REG_MAX 16
typedef struct
{
rt_uint16_t reg_cnt; // 当前待下发寄存器数量
rt_uint16_t reg_list[SOU_COM_BATCH_REG_MAX]; // 寄存器地址数组
rt_uint16_t val_list[SOU_COM_BATCH_REG_MAX]; // 对应寄存器值数组
rt_uint8_t cur_idx; // 当前下发到第几条
rt_bool_t pending; // 本通道有待下发批量指令
} sou_com_batch_ch_t;
// COM批量下发总控结构体
typedef struct
{
sou_com_batch_ch_t ch[TOTAL_SOU_CHS];
} chrg_rollsou_com_t;
// 全局批量下发实例
extern chrg_rollsou_com_t g_sou_com_batch;
struct chrg_rollsou_t {
rt_uint8_t run; // 下一轮运行方式 1:自动轮巡 2:LCD触发插入 3:控制台触发插入4.com触发插入
rt_uint8_t part; // 自动轮巡时,多条命令序号(若存在多条命令时)
rt_uint8_t idx; // 自动轮巡时,通道序号
rt_uint8_t ch; // 触发插入时,切换的通道
rt_uint16_t reg; // LCD 触发时,寄存器地址
rt_uint16_t value; // LCD 触发时,寄存器值
rt_uint8_t *updata_data;//南向升级的数据
rt_uint16_t leng;
rt_uint8_t send_flag; //发送标志位
rt_uint8_t mode;// 0 为正常轮询,1为升级,2为校准
};
extern struct chrg_rollsou_t chrgrollsou;
/*****************************************************************
函数名称: chrg_set_sou_reg
函数描述: 南向通道设置寄存器请求命令
输入参数: idx:通道 reg:寄存器地址 value:寄存器值
输出参数: -
返回说明: -
其它说明: -
*****************************************************************/
extern void chrg_set_sou_reg (eIDX_SOU_CH idx, rt_uint16_t reg, rt_uint16_t value);
/*****************************************************************
函数名称: chrg_set_sou_reg_com
函数描述: com端南向通道设置寄存器请求命令(批量下发机制)
输入参数: idx:通道 reg:寄存器地址 value:寄存器值
输出参数: -
返回说明: -
其它说明: 每条命令加入批量队列,自动启动顺序下发,全部完成后切回轮巡
*****************************************************************/
extern void chrg_set_sou_reg_com (eIDX_SOU_CH idx, rt_uint16_t reg, rt_uint16_t value);
/*****************************************************************
函数名称: chrg_roll_sou_thread_entry
函数描述: 南向通道轮巡请求数据线程体
输入参数: *data: 本线程信息
输出参数: -
返回说明: -
其它说明: -
*****************************************************************/
extern void chrg_roll_sou_thread_entry (void *data);
extern void chrg_send_sou_upadata_data (rt_uint8_t *buf,rt_uint16_t leng);
extern void chrg_sou_com_sou_set(void);
extern int chrg_sou_com_batch_add_reg(eIDX_SOU_CH ch, rt_uint16_t reg, rt_uint16_t val);
#endif