1. 新增sqlite文件、协议文档、调试截图、配置ini等各类辅助文件 2. 更新Keil开发包版本与工程配置,调整编译优化等级 3. 重构继电器控制逻辑、串口收发逻辑与线程优先级 4. 新增Modbus寄存器映射、校准结构体与Ymodem升级相关代码 5. 完善南北向协议解析、快充挡位配置与调试日志 6. 修复注释格式、数组越界与线程邮箱溢出问题 7. 新增屏幕控制、功率板调试与协议格式说明文档
91 lines
3.4 KiB
C
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
|
|
|
|
|