Files
TSCP/TSCP/src/MSCP/PFM/PFM_Cfg.h
T
2026-07-14 17:47:43 +08:00

396 lines
18 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file PFM_Cfg.h
* @brief Platform Function Module:配置文件管理
* @details
* 读取平台配置信息
* @author GT-BU
* @date 2021.02.20
* @version V1.0
* @copyright TCT
* @par 修改日志
* <table>
* <tr><th>Date <th>Version <th>Author <th>Description
* <tr><td>2021.02.01 <td>V1.0 <td>GT-BU <td>创建初始版本
* </table>
*/
#ifndef PFM_CFG_H
#define PFM_CFG_H
#include "CM_Types.h"
#ifdef __cplusplus
extern "C"
{
#endif
extern const CM_UINT8 MSCP_SW_VERION[4]; /**< 平台软件版本 */
extern CM_UINT8 MSCP_DRV_VERION[4]; /**< 驱动软件版本 */
extern CM_UINT16 TSCP_DOC_VERION[2]; /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */
extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */
#define MSCP_CPU_1 (1u) /**< CPU ID: CPU1 */
#define MSCP_CPU_2 (2u) /**< CPU ID: CPU2 */
#define MSCP_CYC_TIME (g_PFM_Cfg.CYC_TIME)
#define TCP_CONN_MAX (9u)
/*内网透传双通道数量*/
#define INNET_RAW_DOUBLE_PASS_NUM (20u)
/*所有双通道数量*/
#define MSCP_DOUBLE_PASS_ALL_NUM (INNET_RAW_DOUBLE_PASS_NUM + 5u)
#define TSCP_CYC_DATAMAX_LEN (40000u)
/** 网络通信开关类型 */
typedef enum
{
RAW_COM_DISENABLE = 0, /**< 网络通信禁用 */
RAW_COM_UDP = 1, /**< 网络通信 UDP*/
RAW_COM_BROADCAST = 2, /**< 网络通信 UDP广播*/
RAW_COM_TCP = 3 /**< 网络通信 TCP*/
}RAW_COM_TYPE;
/** 内网透传通信配置参数 */
typedef struct
{
CM_UINT16 Port_Innet_Raw; /**< 内网透明传输端口 */
RAW_COM_TYPE Port_Type_Enable; /**< 内网透明tcp传输模式 */
CM_UINT16 Server_DevId; /**< 服务端设备类型和id */
CM_UINT16 TIME_STAMP_ENABLE; /**< 2取2乘时间戳使能开关 */
CM_UINT16 INNET_2oo2_RAW; /**< 透传通道2取开关 */
CM_UINT16 INNET_2x2_RAW; /**< 透传通道2乘开关 */
CM_CHAR IP_InnetRaw_maddr[32]; /**< 内网透传的组播IP */
}STRU_PFM_INNET_RAW_T;
/**< 倒切IP配置,记录对面插箱 */
typedef struct
{
CM_CHAR IP_Area_A[32];
CM_CHAR IP_Area_B[32];
CM_CHAR IP_Multicast_Mine[32]; /**< 所在组播域 */
CM_CHAR IP_Multicast_Dest[32]; /**< 目标组播域 */
}STRU_AREA_IP_CFG_T;
/**< CPU通信配置 */
typedef struct
{
/*注意IP字段必须为32字节*/
CM_CHAR IP_2oo2[32]; /**< 2oo2通信IP */
CM_UINT16 Port_2oo2_Data; /**< 2oo2数据通信端口 */
CM_UINT16 Port_2oo2_Data_App; /**< 应用2oo2数据通信端口 */
CM_UINT16 Port_2oo2_Data_Area; /**< 区域数据2取通信端口 */
CM_UINT16 Port_2oo2_Time; /**< 2oo2校时端口 */
CM_UINT16 Port_2oo2_Maintenance; /**< 2oo2维护端口 */
CM_UINT16 Port_2oo2_Assert;
CM_UINT16 Port_2oo2_2x2_State; /**< 2oo2 2x状态交互端口 */
CM_CHAR IP_2x2[32]; /**< 2x2通信IP */
CM_UINT16 Port_2x2_Data; /**< 2x2数据通信端口 */
CM_UINT16 Port_2x2_Time; /**< 2x2校时端口 */
CM_UINT16 Port_Area_Time; /**< 区域校时端口 */
CM_UINT16 Port_2x2_Syn; /**< 2x2同步端口 */
CM_UINT16 Port_2x2_State; /**< 2x2状态交互端口 */
CM_UINT16 Port_2x2_Area; /**< 2x2区域数据交互端口 */
CM_UINT16 Port_Area_Send; /**< 区域通信组播发送 */
CM_UINT16 Port_Area_Recv; /**< 区域通信组播接收 */
CM_CHAR IP_Com[32]; /**< 通用通信IP */
CM_CHAR IP_Out[32]; /**< 外网通信IP */
CM_CHAR IP_Com_Extend[32]; /**< 通用通信扩展IP */
CM_CHAR IP_Maintain[32]; /**< 维护通信IP */
CM_UINT16 Port_Outnet_Safe; /**< 外网安全通信端口 */
CM_UINT16 Port_Innet_Safe; /**< 内网安全通信端口 */
CM_UINT16 Port_Outnet_Raw; /**< 外网透明传输端口 */
CM_UINT16 Port_Outnet_Heart; /**< 外网心跳传输端口 */
CM_INT32 Port_Innet_Raw_Num; /**< 内网透传端口数量 */
CM_INT32 Port_Innet_Raw_Extend_Num; /**< 内网透传扩展端口数量 */
STRU_PFM_INNET_RAW_T Innet_Raw_Parameter[INNET_RAW_DOUBLE_PASS_NUM]; /*内网透传参数*/
CM_UINT16 Port_Log_Base; /**< 明文日志记录端口 */
CM_UINT16 Port_Log_Ciphertext; /**< 暗文日志记录端口 */
CM_UINT16 Port_Remote_Update; /**< 远程部署通信端口 */
}STRU_PFM_CPU_CFG_T;
/** 内网通信配置 */
typedef struct
{
CM_UINT16 InnetID; /**< 内网通信ID */
CM_UINT32 IP_G; /**< 绿网IP */
CM_UINT16 Port_Raw_G; /**< 绿网透传端口 */
CM_UINT16 Port_Safe_G; /**< 绿网安全端口 */
CM_UINT32 IP_P; /**< 紫网IP */
CM_UINT16 Port_Raw_P; /**< 紫网透传端口 */
CM_UINT16 Port_Safe_P; /**< 紫网安全端口 */
}STRU_PFM_INNET_CFG_T;
/** 平台配置数据 */
typedef struct
{
CM_UINT8 CFG_MD5[16]; /**< 配置数据md5 */
CM_CHAR APP_NAME[128]; /**< 应用文件名称 */
CM_UINT8 APP_MD5[16]; /**< 应用文件md5 */
/*注意IP字段必须为32字节*/
CM_UINT8 CPU_ID; /**< CPU ID */
CM_UINT8 BOARD_ID; /**< 板卡ID */
CM_UINT16 OUTNET_ID; /**< 外网通信ID */
CM_UINT16 INNET_ID; /**< 内网通信ID */
CM_UINT16 INNET_ID_RM; /**< 远程部署内网通信ID */
CM_UINT32 CYC_TIME; /**< 系统周期 */
CM_INT32 app_num; /**< app任务数 */
CM_UINT8 CC_VER; /**< 与CC通信协议版本 */
CM_UINT32 OutnetSafePack_Len;/**< 外网安全通信最大数据长度(根据周期长度计算) */
CM_UINT32 M_2oo2_Enable; /**< 2oo2功能开关 */
CM_UINT32 M_2x2_Enable; /**< 2x2功能开关*/
CM_UINT32 M_InnetSafe_Enable; /**< 内网安全通信功能开关 */
CM_UINT32 M_InnetRaw_Enable; /**< 内网透传通信功能开关 */
CM_UINT32 M_OutnetSafe_Enable;/**< 外网安全通信功能开关 */
CM_UINT32 M_OutnetRaw_Enable;/**< 外网透传通信功能开关 */
CM_UINT8 M_CpuUsageGet_Enable; /**< CPU使用率获取功能开关 */
CM_UINT32 M_RemoteUpdate_Enable; /**< 远程部署内网安全通信功能开关 */
CM_UINT8 M_Area_Enable; /**< 倒切配置,0x00为兼容的主线版本,0x55为CI0xAA为RC */
CM_UINT8 M_AREA_SEB_Enable; /**< 区域串口板卡使能开关 */
CM_CHAR Start_Path[32]; /**< 程序启动路径 */
CM_INT32 reboot_replycount; /**< 重启确认报文回复次数 */
CM_UINT8 M_AutoReboot_Count; /**< 自动重启次数 */
CM_UINT16 M_AutoClear_Days; /**< 连续运行多久清空宕机次数的天数 */
CM_UINT64 M_AutoClear_Second; /**< 连续运行多久清空宕机次数的秒数 */
STRU_PFM_CPU_CFG_T Local_Cfg; /*本机通信配置*/
STRU_PFM_CPU_CFG_T Peer_Cfg; /*2oo2邻机通信配置*/
STRU_PFM_CPU_CFG_T Partner_Cfg; /*2x2对机(对系)通信配置*/
STRU_AREA_IP_CFG_T Area_Cfg; /*区域通信配置(只记录必要的)*/
CM_CHAR CC_R_IP[32]; /**< 红网通控的内网IP */
CM_CHAR EXTEND_R_IP[32]; /**< 红网扩展板卡的内网IP */
CM_UINT16 CC_R_OutnetSafe_Port; /**< 红网CC的外网安全通信端口 */
CM_UINT16 CC_R_OutnetRaw_Port; /**< 红网CC的外网透传通信端口 */
CM_UINT16 CC_R_InnetRaw_Port; /**< 红网CC的内网透传通信端口 */
CM_UINT16 CC_R_Heart_Port; /**< 红网CC的内网透传通信端口 */
CM_CHAR CC_B_IP[32]; /**< 蓝网通控的内网IP */
CM_CHAR EXTEND_B_IP[32]; /**< 蓝网扩展板卡的内网IP */
CM_UINT16 CC_B_OutnetSafe_Port; /**< 蓝网CC的外网安全通信端口 */
CM_UINT16 CC_B_OutnetRaw_Port; /**< 蓝网CC的外网透传通信端口 */
CM_UINT16 CC_B_InnetRaw_Port; /**< 蓝网CC的内网透传通信端口 */
CM_UINT16 CC_B_Heart_Port; /**< 蓝网CC的内网透传通信端口 */
CM_CHAR ANOTHER_EXTEND_R_IP[32]; /**< 另一插箱红网扩展板卡的内网IP */
CM_UINT16 ANOTHER_R_OutnetSafe_Port; /**< 另一插箱红网扩展板卡的端口 */
CM_UINT16 ANOTHER_R_Heart_Port; /**< 蓝网CC的内网透传通信端口 */
CM_CHAR ANOTHER_EXTEND_B_IP[32]; /**< 另一插箱蓝网扩展板卡的内网IP */
CM_UINT16 ANOTHER_B_OutnetSafe_Port; /**< 另一插箱蓝网扩展板卡的端口 */
CM_UINT16 ANOTHER_B_Heart_Port; /**< 蓝网CC的内网透传通信端口 */
CM_CHAR Logger_IP[32]; /**< 日志记录IP */
CM_UINT16 Logger_PortBase; /**< 明文日志对端端口 */
CM_UINT16 Logger_PortCiphertext; /**< 暗文日志对端端口 */
/*以下通常仅PFM_CFG内部使用*/
STRU_PFM_CPU_CFG_T CPU_CFG[5]; /**< 各CPU的通信配置,数组1-4有效 */
CM_UINT16 INNET_COM_NUM; /**< 内网通信设备数量 */
STRU_PFM_INNET_CFG_T INNET_COM_CFG[256]; /**< 内网通信设备通信配置(数组1-INNET_COM_NUM有效) */
}STRU_PFM_CFG_T;
/** 维护模式远程部署功能配置数据 */
typedef struct
{
CM_UINT8 CFG_MD5[16]; /**< 配置数据md5 */
CM_UINT32 CYC_TIME; /**< 系统周期 */
CM_CHAR APP_NAME[128]; /**< 应用文件名称 */
CM_UINT8 APP_MD5[16]; /**< 应用文件md5 */
CM_UINT8 CPU_ID; /**< CPU ID */
CM_UINT8 BOARD_ID; /**< 板卡ID */
CM_UINT16 INNET_ID_RM; /**< 远程部署内网通信设备ID */
CM_UINT16 OUTNET_ID; /**< 外网通信设备ID */
CM_UINT32 M_2oo2_Enable; /**< 2oo2功能开关 */
CM_UINT32 M_RemoteUpdate_Enable; /**< 远程部署内网安全通信功能开关 */
CM_CHAR Start_Path[32]; /**< 程序启动路径 */
CM_INT32 reboot_replycount; /**< 重启确认报文回复次数 */
CM_UINT16 INNET_COM_NUM; /**< 内网通信设备数量 */
STRU_PFM_INNET_CFG_T INNET_COM_CFG[256]; /**< 内网通信设备通信配置(数组1-INNET_COM_NUM有效) */
}STRU_RMUP_CFG_T;
/** 应用IP配置数据 */
typedef struct
{
/*注意IP字段必须为32字节*/
CM_CHAR IP_2oo2[32]; /**< 2oo2通信IP */
CM_CHAR IP_2x2[32]; /**< 2x2通信IP */
CM_CHAR IP_Out[32]; /**< 外网通信IP */
CM_CHAR IP_Maintain[32]; /**< 维护通信IP */
/*适用透传通道-选配*/
CM_CHAR IP_Com[32]; /**< 通用通信IP */
CM_CHAR IP_Com_Extend[32];/**< 通用通信扩展IP */
CM_UINT16 Logger_PortBase; /**< 明文日志记录端口 */
CM_UINT16 Logger_PortCiphertext; /**< 暗文日志记录端口 */
}STRU_APP_CPU_CFG_T;
/** 应用外网配置数据 */
typedef struct
{
CM_CHAR CC_G_IP[32]; /**< 通控的内网IP */
CM_CHAR CC_P_IP[32]; /**< 通控的内网IP */
CM_CHAR EXTEND_G_IP[32]; /**< 扩展板卡的内网IP */
CM_CHAR EXTEND_P_IP[32]; /**< 扩展板卡的内网IP */
CM_UINT16 OutnetSafe_Port; /**< 外网安全通信端口 */
CM_UINT16 OutnetRaw_Port; /**< 外网透传通信端口 */
CM_UINT16 InnetRaw_Port; /**< 内网透传通信端口 */
}STRU_APP_CC_CFG_T;
/* 另一个插箱扩展板卡配置*/
typedef struct
{
CM_CHAR EXTEND_R_G_IP[32]; /**< 红网扩展板卡的内网IP */
CM_CHAR EXTEND_R_P_IP[32]; /**< 红网扩展板卡的内网IP */
CM_CHAR EXTEND_B_G_IP[32]; /**< 蓝网扩展板卡的内网IP */
CM_CHAR EXTEND_B_P_IP[32]; /**< 蓝网扩展板卡的内网IP */
CM_UINT16 OutnetSafe_R_Port; /**< 外网安全通信端口 */
CM_UINT16 OutnetSafe_B_Port; /**< 外网安全通信端口 */
}STRU_APP_ANOTHER_SEB_CFG_T;
/** 应用配置数据 */
typedef struct
{
/*文件配置*/
CM_CHAR FS_NAME[128]; /**< FS文件名称 */
CM_CHAR APP_NAME[128]; /**< 应用文件名称 */
/*基本开关配置*/
CM_UINT32 CYC_TIME; /**< 系统周期 */
CM_INT32 app_num; /**< app任务数 */
CM_UINT32 M_2oo2_Enable; /**< 2oo2功能开关 */
CM_UINT32 M_2x2_Enable; /**< 2x2功能开关*/
CM_UINT32 M_InnetSafe_Enable; /**< 内网安全通信功能开关 */
CM_UINT32 M_InnetRaw_Enable; /**< 内网透传通信功能开关 */
CM_UINT32 M_OutnetSafe_Enable; /**< 外网安全通信功能开关 */
CM_UINT32 M_OutnetRaw_Enable; /**< 外网透传通信功能开关 */
CM_UINT8 M_CpuUsageGet_Enable; /**< CPU使用率获取功能开关 */
CM_UINT32 M_RemoteUpdate_Enable;/**< 远程部署内网安全通信功能开关 */
CM_UINT8 M_Area_Enable; /**< 倒切配置,0x00为兼容的主线版本,0x55为CI0xAA为RC */
CM_UINT8 M_AREA_SEB_Enable; /**< 区域串口板卡使能开关 */
CM_UINT16 ID_Maintenance[257]; /*维护终端ID,可能有多个,固定下标0表示ID个数, 下标1表示主要ID*/
CM_CHAR Start_Path[32]; /**< 程序启动路径 */
CM_INT32 reboot_replycount; /**< 重启确认报文回复次数 */
CM_UINT8 M_AutoReboot_Count; /**< 自动重启次数 */
CM_UINT16 M_AutoClear_Days; /**< 连续运行多久清空宕机次数的天数 */
/*IP配置*/
STRU_APP_CPU_CFG_T CPU[4]; /*每个CPU的IP配置*/
STRU_AREA_IP_CFG_T AREA_CPU[2]; /*另一个插箱的IP配置(只记录必要的)*/
/*通用端口配置*/
CM_UINT16 Port_Outnet_Safe; /**< 外网安全通信端口 */
CM_UINT16 Port_Innet_Safe; /**< 内网安全通信端口 */
CM_UINT16 Port_Outnet_Raw; /**< 外网透明传输端口 */
CM_UINT16 Port_Remote_Update; /**< 远程部署通信端口 */
/*透传配置-选配*/
CM_INT32 Port_Innet_Raw_Num; /**< 内网透传端口数量 */
CM_INT32 Port_Innet_Raw_Extend_Num; /**< 内网透传扩展端口数量 */
STRU_PFM_INNET_RAW_T Innet_Raw_Parameter[INNET_RAW_DOUBLE_PASS_NUM]; /*内网透传参数*/
/*外网通信配置*/
STRU_APP_CC_CFG_T OutNetRed; /*外网红网通信配置*/
STRU_APP_CC_CFG_T OutNetBlue; /*外网蓝网通信配置*/
STRU_APP_ANOTHER_SEB_CFG_T Another_SEB; /*另一个插箱的扩展板卡配置, 仅RC使用*/
/*日志记录目标设备IP配置*/
CM_CHAR Logger_G_IP[32]; /**< 绿网日志记录IP */
CM_CHAR Logger_P_IP[32]; /**< 紫网日志记录IP */
/*内网通信设备注册最大支持0-254*/
CM_UINT16 INNET_COM_NUM; /**< 内网通信设备数量 */
STRU_PFM_INNET_CFG_T INNET_COM_CFG[255]; /**< 内网通信设备通信配置(数组0-254有效) */
}STRU_APP_CFG_T;
typedef struct
{
CM_UINT8 flag; /**< 应用是否注册该版本号 0代表未注册 1代表注册*/
CM_UINT8 versonName; /**< 注册版本号类别 1代表应用版本号 2代表FS版本号 3代表Scade版本号 */
CM_UINT8 verson[4]; /**< 版本号 */
}STRU_APP_REGISTER_VERSON;
typedef struct
{
CM_UINT8 versonNumber; /**< 已注册版本号数量 初始值为0 */
STRU_APP_REGISTER_VERSON registerVerson[3]; /**< 版本号信息 */
}STRU_APP_VERSON;
/** 需应用注册的版本号 */
extern STRU_APP_VERSON g_App_Verson;
/** 平台配置数据 */
extern STRU_PFM_CFG_T g_PFM_Cfg;
/** 维护模式远程部署功能配置数据 */
extern STRU_RMUP_CFG_T g_RMUP_Cfg;
/** 配置文件路径 */
extern CM_CHAR FS_FILE_PATH[100];
/* 配置文件初始化 */
void PFM_CFG_Init(void);
/* 根据内网ID查内网通信配置 */
STRU_PFM_INNET_CFG_T *PFM_INI_InnetID2Addr(IN CM_UINT16 InnetID);
/* 根据内网IP端口查内网通信配置 */
STRU_PFM_INNET_CFG_T *PFM_INI_InnetIP2Addr(IN CM_UINT32 InnetIP, IN CM_UINT16 InnetPort);
/**
* @brief 获取本机外网ID
* @return 本机外网ID
* @note 1字节类型+1字节ID,大端格式,来自INI配置文件。
*/
CM_UINT16 PFM_CFG_GetOutnetID(void);
/**
* @brief 获取本机内网ID
* @return 本机内网ID
* @note 1字节类型+1字节ID,大端格式,来自INI配置文件。
*/
CM_UINT16 PFM_CFG_GetInnetID(void);
/**
* @brief 获取板卡ID
* @return 本机的板卡ID
* @note 板卡ID的宏定义参见本文件头部
*/
CM_UINT8 PFM_CFG_GetBoardID(void);
/**
* @brief 获取CPUID
* @return CPUID
* @details
* CPUID根据配置文件确定
*/
CM_UINT8 PFM_CFG_GetCpuID(void);
/**
* @brief 根据内网IP端口查找设备通信配置(维护模式下使用)
* @param InnetIP 内网IP
* @param InnetPort 内网端口
* @return 查找结果
* - 非NULL 指向设备通信信息的指针
* - NULL 查找失败
*/
STRU_PFM_INNET_CFG_T *PFM_INI_RmInnetIP2Addr(IN CM_UINT32 InnetIP,IN CM_UINT16 InnetPort);
/**
* @brief 根据内网ID获取设备通信信息(维护模式下使用)
* @param InnetID 内网ID
* @return 查找结果
* - 非NULL 指向设备通信信息的指针
* - NULL 查找失败
*/
STRU_PFM_INNET_CFG_T *PFM_INI_RmInnetID2Addr(IN CM_UINT16 InnetID);
/**
* @brief 应用配置ip、端口、使能等可配置变量
* @param app_data 应用配置结构体 取值范围:非空
* @details 此配置用来代替main_base.ini
*/
void PFM_Set_APP_ConfigData(STRU_APP_CFG_T *app_data);
/**
* @brief 初始化应用版本号管理结构体
*/
void PFM_CFG_RegisterVerson_Init(void);
/* 根据板卡配置维护ip */
void PFM_CFG_IfconfigIp(void);
void PFM_CFG_SendDarkCfg(void);
/**
* @brief 初始化读取mainid 必须在函数PFM_CFG_Init前执行
*/
void PFM_CFG_MAINID_Init(void);
#ifdef __cplusplus
}
#endif
#endif