Initial commit: CCU621_M firmware project with BLE debug link support.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-08 17:28:36 +08:00
commit 9ceb218f80
1597 changed files with 724159 additions and 0 deletions
+164
View File
@@ -0,0 +1,164 @@
#ifndef SUB_COMM_TASK_H
#define SUB_COMM_TASK_H
#include <stdint.h>
#include "publicdata/type.h"
/* ======================== 副板遥控(YK) 点位定义 ======================== */
/* 说明:
* - 副板 YK 代表“主板下发到副板的输出控制命令”;
* - 当前定义的 DO11~DO16 对应副板继电器 K1~K6(协议命令 0x02);
* - 预留点位用于后续扩展,不影响现有协议与数据结构布局。 */
typedef enum
{
/* 实际点位:DO11 ~ DO16(副板输出) */
E_SUB_YK_DO11 = 0,
E_SUB_YK_DO12,
E_SUB_YK_DO13,
E_SUB_YK_DO14,
E_SUB_YK_DO15,
E_SUB_YK_DO16,
/* 预留点位:便于后续扩展(副板输出) */
E_SUB_YK_RSVD1,
E_SUB_YK_RSVD2,
E_SUB_YK_RSVD3,
E_SUB_YK_RSVD4,
E_SUB_YK_RSVD5,
E_SUB_YK_RSVD6,
E_SUB_YK_NUM
} E_SUB_YK_TYPE;
typedef union
{
/* 按 bit 存储的命令缓存(节省空间):
* - 低 12 bit 对应 E_SUB_YK_TYPE 的 12 个点位;
* - bit 取值:0=CMD_OFF1=CMD_ON
* - u8_bytes 便于协议层直接取字节序列(低字节在前)。 */
uint16_t u16_bits;
U8_T u8_bytes[2];
struct
{
/* bit-field 视图(与枚举顺序一一对应) */
uint16_t do11 : 1; /* DO11 / K1 */
uint16_t do12 : 1; /* DO12 / K2 */
uint16_t do13 : 1; /* DO13 / K3 */
uint16_t do14 : 1; /* DO14 / K4 */
uint16_t do15 : 1; /* DO15 / K5 */
uint16_t do16 : 1; /* DO16 / K6 */
uint16_t rsvd1 : 1; /* 预留1 */
uint16_t rsvd2 : 1; /* 预留2 */
uint16_t rsvd3 : 1; /* 预留3 */
uint16_t rsvd4 : 1; /* 预留4 */
uint16_t rsvd5 : 1; /* 预留5 */
uint16_t rsvd6 : 1; /* 预留6 */
uint16_t _pad : 4; /* 对齐到 16bit */
} b_yk;
} U_SUB_YK_DATA;
/* ======================== 副板遥信(YX) 点位定义 ======================== */
/* 说明:
* - 副板 YX 代表“从副板采集回来的输入状态”;
* - 当前包含:
* 1) YX13~YX2210 路 DI 输入检测
* 2) DIP1~DIP6:6 路拨码开关位(用于副板地址/模式等)
* - 具体编码由协议命令 0x01 的数据域决定(在 sub_comm_task.c 中实现映射)。 */
typedef enum
{
/* 实际点位:YX13 ~ YX22(副板输入) */
E_SUB_YX_13 = 0,
E_SUB_YX_14,
E_SUB_YX_15,
E_SUB_YX_16,
E_SUB_YX_17,
E_SUB_YX_18,
E_SUB_YX_19,
E_SUB_YX_20,
E_SUB_YX_21,
E_SUB_YX_22,
/* 拨码位:6 位 */
E_SUB_DIP_1,
E_SUB_DIP_2,
E_SUB_DIP_3,
E_SUB_DIP_4,
E_SUB_DIP_5,
E_SUB_DIP_6,
/* 预留位:8 bit(用于后续扩展副板DI/状态位) */
E_SUB_YX_RSVD1,
E_SUB_YX_RSVD2,
E_SUB_YX_RSVD3,
E_SUB_YX_RSVD4,
E_SUB_YX_RSVD5,
E_SUB_YX_RSVD6,
E_SUB_YX_RSVD7,
E_SUB_YX_RSVD8,
E_SUB_YX_NUM
} E_SUB_YX_TYPE;
typedef union
{
/* 按 bit 存储的采集缓存(节省空间):
* - 低 24 bit 对应 E_SUB_YX_TYPE 的点位(16个有效 + 8个预留);
* - bit 取值:0/1
* - u8_bytes 便于协议层直接取字节序列(低字节在前)。 */
uint32_t u32_bits;
U8_T u8_bytes[4];
struct
{
/* bit-field 视图(与枚举顺序一一对应) */
uint16_t yx13 : 1;
uint16_t yx14 : 1;
uint16_t yx15 : 1;
uint16_t yx16 : 1;
uint16_t yx17 : 1;
uint16_t yx18 : 1;
uint16_t yx19 : 1;
uint16_t yx20 : 1;
uint16_t yx21 : 1;
uint16_t yx22 : 1;
uint16_t dip1 : 1;
uint16_t dip2 : 1;
uint16_t dip3 : 1;
uint16_t dip4 : 1;
uint16_t dip5 : 1;
uint16_t dip6 : 1;
uint16_t rsvd1 : 1;
uint16_t rsvd2 : 1;
uint16_t rsvd3 : 1;
uint16_t rsvd4 : 1;
uint16_t rsvd5 : 1;
uint16_t rsvd6 : 1;
uint16_t rsvd7 : 1;
uint16_t rsvd8 : 1;
uint16_t _pad : 8; /* 对齐到 32bit */
} b_yx;
} U_SUB_YX_DATA;
/* 缓存访问接口:
* - YK:上层写入命令缓存;副板通信线程负责周期下发(协议实现后接入)
* - YX:副板通信线程刷新采集缓存;上层读取缓存即可 */
/**
* @brief 写入副板遥控(YK)命令缓存。
* @note 该函数只更新缓存;真正的串口下发由 SubComm 线程周期执行。
*/
void v_sub_comm_yk_set(E_SUB_YK_TYPE e_type, E_CMD e_cmd);
/**
* @brief 读取副板遥控(YK)命令缓存(用于调试或回显)。
*/
E_CMD e_sub_comm_yk_get(E_SUB_YK_TYPE e_type);
/**
* @brief 读取副板遥信(YX)/拨码(DIP)采集缓存。
* @return 0/1 状态值
*/
U8_T u8_sub_comm_yx_get(E_SUB_YX_TYPE e_type);
void v_sub_comm_task(void *arg);
U8_T u8_sub_comm_get_gun_num(void);
#endif