/************************************************************************
*
* 文件名   ：  dquCIInit.h
* 版权说明 ：  北京交控科技有限公司 
* 版本号   ：  1.0
* 创建时间 ：  2011.12.27
* 作者     ：  研发中心软件部
* 功能描述 ：  系统配置数据初始化定义 
* 使用注意 ： 
* 修改记录 ：  
*
************************************************************************/
#ifndef DQU_CI_INIT_H
#define DQU_CI_INIT_H

#include "dquCIStru.h"
#include "dquCIJDQStruInit.h"
#include "dquCILSStruInit.h"
#include "dquEmapInit.h"
#include "dquCIPZStruFrmChar.h"
#include "dquCbtcConfigData.h"
#include "dquCIReadCommonChar.h"
#include "../DebugPrint/DebugPrint.h"
#include "../DebugPrint/ErrorCode.h"
#include "../DebugPrint/ErrorDeviceType.h"
#include "../PSC/PSCConfigDataManage.h"
#include "../CutoffPoint/CutoffPointConfigDataManage.h"
#include "AxisConfigDataManage.h"
#include "LinkLineConfigDataManage.h"
#include "ReverseCutConfigDataManage.h"
#include "EvacuationAreaManage.h"
#include "NonAutoReturnConfigDataManage.h"
#include "../SGBJ/SGBJConfigDataManage.h"
#include "../Section/AxisSectionConfigDataManage.h"
#include "../System/SystemParameterManage.h"

#define ORIGIN_TO_TERMINAL	((UINT8)0x55)	/*起点到终点*/
#define TERMINAL_TO_ORIGIN	((UINT8)0xAA)	/*终点到起点*/
/*用于记录结构成员个数最大值*/
#define MEMBERA_SUM_MAX ((UINT8)40)



/*1个字节*/
#define CHAR_LEN ((UINT8)1)
/*2个字节*/
#define SHORT_LEN ((UINT8)2)
/*4个字节*/
#define LONG_LEN ((UINT8)4)

/*dquCICfgDtStr.OCSwitchCfgStr中成员个数*/
#define OC_SWITCH_CFG_STR_MEMBER_NUM ((UINT8)2)

/*dquCICfgDtStr.OCSwitchCfgStr中成员个数_旧版*/
#define OC_SWITCH_CFG_STR_MEMBER_NUM_OLD ((UINT8)6)

/*dquCICfgDtStr.OCSignalCfgStr中成员个数*/
#define OC_SIGNAL_CFG_STR_MEMBER_NUM ((UINT8)18)
/*dquCICfgDtStr.OCPhySecCfgStr中成员个数*/
#define OC_PHYSEC_CFG_STR_MEMBER_NUM ((UINT8)6)

#define AXIS_TYPE_YONGLIE     ((UINT8)(0x01)) /*永列*/
#define AXIS_TYPE_KEANDA      ((UINT8)(0x02)) /*科安达*/
#define AXIS_TYPE_FUHAOSHENG  ((UINT8)(0x03)) /*富豪盛*/

#define INDICATOR_MAX_SIZE	((UINT16)2000) /*报警灯最大数组大小*/

/*脱轨及区间疏散防护上下行属性*/
#define LINK_TGEVACUATEDIR_UP    ((UINT8)0X55) /*只防护线路上行*/
#define LINK_TGEVACUATEDIR_DOWN  ((UINT8)0XAA) /*只防护线路下行*/
#define LINK_TGEVACUATEDIR_ALL   ((UINT8)0XFF) /*上下行都防护：默认配置*/

/*link关联物理区段的AG/BG属性*/
#define LINK_REL_PHYSEC_IS_AG         ((UINT8)0x55)   /*link关联物理区段为AG*/
#define LINK_REL_PHYSEC_IS_BG         ((UINT8)0xAA)   /*link关联物理区段为BG*/
#define LINK_REL_PHYSEC_IS_DEFAULT    ((UINT8)0xFF)   /*link关联物理区段非AG且非BG*/

/*LINK是否存在关联CG属性*/
#define LINK_EXIST_REL_CG_YES		((UINT8)0x55)	/*Link存在关联CG属性*/
#define LINK_EXIST_REL_CG_NO		((UINT8)0xAA)	/*Link不存在关联CG属性*/
#define LINK_EXIST_REL_CG_DEFAULT	((UINT8)0xFF)	/*Link不需要关联CG属性*/

/*临线属性*/
#define LINK_LINXIAN_YES		((UINT8)0x55)	/*Link具有临线属性*/
#define LINK_LINXIAN_NO			((UINT8)0xFF)	/*Link不具有临线属性*/

/*临线属性*/
#define LINK_SPECOAL_EA_YES		((UINT8)0x55)	/*Link具有特殊防护分区区域属性*/
#define LINK_SPECOAL_EA_NO		((UINT8)0xAA)	/*Link不具有特殊防护分区区域属性*/

typedef struct 
{  
    RelayConfigDataStruct  RelayCfgDtStr[RELAY_SUM_MAX];                              /*继电器配置数据数组*/
    CHAR RelayName[RELAY_SUM_MAX][JDQ_NAME_LEN];                                      /*继电器名数组*/
    UINT16 RelayCfgDtStrLen;
    SignalConfigDataStruct SgnlCfgDtStr[SIGNAL_SUM_MAX];                              /*信号机配置数据数组*/
    UINT16 SgnlCfgDtStrLen;
    SwitchConfigDataStruct  SwchCfgDtStr[SWITCH_SUM_MAX];                             /*道岔配置数据数组*/
    UINT16 SwchCfgDtStrLen;
    PhysicalSectionConfigDataStruct PsclSgmtCfgDtStr[PHYSICAL_SECTION_SUM_MAX];       /*物理区段配置数据*/
    UINT16 PsclSgmtCfgDtStrLen;
    AxisSectionConfigDataStruct   AxisSctCfgDtStr[AXIS_SECTION_SUM_MAX];              /*计轴区段配置数据数组*/
    UINT16 AxisSctCfgDtStrLen;
    LogicSectionConfigDataStruct  lgcSctCfgDtStr[LOGIC_SECTION_SUM_MAX];              /*逻辑区段配置数据数组*/
    UINT16 lgcSctCfgDtStrLen;
    EsbConfigDataStruct    EsbCfgDtStr[ESB_SUM_MAX];                                  /*ESB配置数据数组*/
    UINT16 EsbCfgDtStrLen;
    PsdConfigDataStruct   PsdCfgDtStr[PSD_SUM_MAX];                                   /*屏蔽门配置数据数组*/
    UINT16 PsdCfgDtStrLen;
    AutoRouteConfigDataStruct AutoRouteCfgDtStr[AUTO_ROUTE_SUM_MAX];                  /*自动进路配置数据数组*/
    UINT16 AutoRouteCfgDtStrLen;
    AutoReturnConfigDataStruct AutoRtnRouteCfgDtStr[AUTO_RETURN_SUM_MAX];             /*自动折返进路配置数据数组*/
    UINT16 AutoRtnRouteCfgDtStrLen;
	ReverseRouteConfigDataStruct ReverseRouteCfgDtStr[REVERSE_ROUTE_SUM_MAX];         /*反向进路配置数据数组*/
	UINT16 ReverseRouteCfgDtStrLen;
    LongRouteConfigDataStruct  LongRouteCfgDtStr[ROUTE_LONG_SUM_MAX];                 /*长调进路配置数据*/
    UINT16 LongRouteCfgDtStrLen;
    NonRouteConfigDataStruct   NonRouteCfgDtStr[NONROUTE_ID_NUM_MAX];
    UINT16 NonRouteCfgDtStrLen;
    IndicatorConfigDataStruct  IndctCfgDtStr[INDICATOR_MAX_SIZE];                                   /*指示器配置数组数组*/
    UINT16 IndctCfgDtStrLen;
    OverlapConfigDataStruct    OvlapCfgDtStr[OVERLAP_SUM_MAX];                        /*overlap配置数据数组*/
    UINT16 OvlapCfgDtStrLen;
    RouteConfigDataStruct      RouteCfgDtStr[ROUTE_SUM_MAX];                          /*进路配置数据数组*/
    UINT16 RouteCfgDtStrLen;	
	SystemParameterStructNew SystemParaStrNew;			/*新的CI系统配置参数[按行配置]*/
    UINT16 SystemParamStrLen;
	CiTransmitStruct CiTransmitStru[CI_SUM_MAX][CI_SUM_MAX];		                  /* 相关联锁配,CiTransmitStru[CI_SUM_MAX] 以发送方为主，第二层以目标方为主，*/
	UINT8 CiTransmitStrLen[CI_SUM_MAX];								                  /* 表示对应的联锁，有通信对象数据的个数 */
    TransmitRelationDataStruct TrsmtRlsDtStr[500];                                    /*联锁通信对象配置数据数组*/
    UINT16  TrsmtRlsDtStrLen;
    AllAutoReturnConfigDataStruct AllAutoRtnRouteCfgDtStr[ALL_AUTO_RETURN_SUM_MAX];   /*全自动折返进路配置数据数组*/
    UINT16 AllAutoRtnRouteCfgDtStrLen;
	GaragedoorConfigDataStruct GaragedoorCfgDtStr[GARAGE_DOOR_SUM_MAX];               /*车库门配置数据数组*/
	UINT16 GaragedoorCfgDtStrLen;
	SpksDataConfigStruct spksDataConfigStr[SPKS_SUM_MAX];	                          /* SPKS对象 */
	UINT16  spksDataConfigStrLen;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
    MJDataConfigStruct mjDataConfigStr[MJ_SUM_MAX];	                                  /* 门禁配置数据数组 */
    UINT16  mjDataConfigStrLen;
	FloodGateConfigDataStruct FloodGateCfgDtStr[FLOOD_GATE_SUM_MAX];                  /*防淹门配置数据数组*/
	UINT16 FloodGateCfgDtStrLen;
	WashMachineConfigDataStruct WashMachineCfgStr[WASHMACHINE_SUM_MAX];               /*洗车机配置数据数组*/
	UINT16  WashMachineCfgDtStrLen;  

	InvSecConfigDataStruct dquCIfg_InvSecConfigDataStru[INVA_SECT_N_COND_SWIT_SUM_MAX];  /*定义侵限区段数据结构体数组*/	
	UINT16  InvSecCfgDtStrLen;

	DiffLineDevStruct dquCIfg_DiffLineDevData[1];

	OCSwitchConfigDataStruct OCSwitchCfgStr[SWITCH_SUM_MAX];						  /*oc道岔配置数据数组*/
	UINT16 OCSwitchCfgStrLen;

	OCSignalConfigDataStruct OCSignalCfgStr[SIGNAL_SUM_MAX];						  /*oc信号机配置数据数组*/
	UINT16 OCSignalCfgStrLen;

	OCPhysicalSectionConfigDataStruct OCPhySecCfgStr[PHYSICAL_SECTION_SUM_MAX];		  /*oc物理区段配置数据数组*/
	UINT16 OCPhySecCfgStrLen;

	PscConfigDataStruct PscCfgDtStr[PSC_SUM_MAX];                                   /*站台门控制器配置数据数组*/
	UINT16 PscCfgDtStrLen;

	GroupAutoRouteConfigDataStruct GroupAutoRouteCfgStr[GROUP_AUTO_ROUTE_SUM_MAX];  /*组合自动进路配置数组*/
	UINT16 GroupAutoRouteStrLen;

	LinkDataConfigStru LinkCfgDtStr[LINK_SUM_MAX];									/*LINK配置数据*/
	UINT16 LinkCfgDtStrLen;															/* add 2022.3.8 */

	AxisConfigStru AxisCfgDtStr[AXIS_NUM_MAX];										/*计轴器配置数据*/
	UINT16 AxisCfgDtStrLen;

	CfpConfigStru stCutoffPointCfgDt[CUTOFF_POINT_SUM_MAX];									/*分界点配置数据*/
	UINT16 wCfgCfgDtLen;

	LinkLineStru LinkLineCfgDtStr[LINK_LINE_SUM_MAX];								/* 联络线配置数据 */
	UINT16 wLinkLineCfgDtLen;														/* add 20220507 */

	ReverseCutCfgDataStru stReverseCutCfgDtStr[REVERSE_CUT_SUM_MAX];				/*倒切设备配置数据*/
	UINT16 wReverseCutCfgLen;

	EaConfigStru szEaCfgDtStr[EA_CFG_SUM_MAX];										/*防护区域配置数据*/
	UINT16 wEaCfgLen;																/*防护区域配置数据长度*/

	NonAutoReturnConfigDataStruct NonAutoReturnCfgDataSt[NON_AUTO_RETURN_SUM_MAX];	/*无人折返配置数据*/
	UINT16 NonReturnCfgSum;															/*无人折返按钮数量*/

    SGBJConfigDataStruct SGBJCfgDataStru[SGBJ_SUM_MAX];  /*声光报警器配置数据*/
    UINT16 wSGBJCfgLen;  /*声光报警器数量*/
} dquCIConfigDataStr;


extern dquCIConfigDataStr dquCICfgDtStr;


/*********************************************
*函数功能：初始化继电器数据结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 RelayConfigDataStructInit(CHAR* FSName);

/*********************************************
*函数功能：初始化物理区段故障锁闭照查继电器表
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 RelayPhySecFaultLockZCStruInit(CHAR* FSName);

/*********************************************
*函数功能：初始化系统配置数据结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 SystemParameterStructInit(CHAR* FSName);

/*********************************************
*函数功能：获取信号机类型
*参数说明：pRelaySgnl继电器信号机结构体指针
        pSgnlDSU信号机结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 getSignalType(Relay_SignalStruct* pRelaySgnl,DSU_SIGNAL_STRU* pSgnl);

/*********************************************
*函数功能：从信号机结构体计算信号机继电器结构体
*参数说明：pSgnl是DSU信号机数据结构指针
          pSgnlCfgDtStr是信号机配置数据结构指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 SglCfgDtStruFromDquSignalStr(DSU_SIGNAL_STRU* pSgnl,SignalConfigDataStruct* pSgnlCfgDtStr);

/*********************************************
*函数功能：初始化信号机继电器配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 SignalConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：计算洗车机配置数据
*参数说明：relayWashMachineStruct:洗车机继电器结构体指针
           pWashMachineCfgDtStr:洗车机配置结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 WashMachineCfgDtStruFromDquStr(Relay_WashMachineStruct * relayWashMachineStruct,WashMachineConfigDataStruct* pWashMachineCfgDtStr);

/*********************************************
*函数功能：初始化洗车机继电器配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 WashMachineConfigDataStructInit(CHAR * FSName);



/*********************************************
*函数功能：从道岔结构体计算道岔继电器结构体
*参数说明：pPoint道岔继电器结构体指针
        pSwitchCfgDtStr道岔配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStruct* pSwitchCfgDtStr);

/* zt 删除单轨相关代码 2022-02-15 */


/*********************************************
*函数功能：初始化道岔继电器配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 SwitchConfigDataStructInit(CHAR * FSName);



/*********************************************
*函数功能：从物理区段结构体计算物理区段继电器结构体
*参数说明：pPhysicalSgmt物理区段结构体指针
        pPsclSgmtCfgDtStr物理区段配置数据结构体指针
		pSgnlCfgDtStr信号机配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 PhySgmtCfgDtStruFromDquSgmtStr(DSU_PHYSICAL_SGMT_STRU* pPhysicalSgmt,PhysicalSectionConfigDataStruct* pPsclSgmtCfgDtStr,SignalConfigDataStruct* pSgnlCfgDtStr);
/*********************************************
*函数功能：初始化物理区段继电器配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 PsclSgmtConfigDataStructInit(CHAR * FSName);



/*********************************************
*函数功能：计轴区段配置数据结构体计算
*参数说明：pAxleSgmt计轴区段结构体指针
        pAxScCfgDtStr计轴区段配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 AxisSecCfgDtStruFromDquSgmtStr(DSU_AXLE_SGMT_STRU* pAxleSgmt,AxisSectionConfigDataStruct* pAxScCfgDtStr);
/*********************************************
*函数功能：初始化计轴区段配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 AxisSectionConfigDataStructInit(CHAR * FSName);


/*********************************************
*函数功能：逻辑区段配置数据结构体计算
*参数说明：pLogicSgmt逻辑区段结构体指针
        pLgScCfgDtStr逻辑区段配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 LogicSecCfgDtStruFromDquSgmtStr(DSU_LOGIC_SGMT_STRU* pLogicSgmt,LogicSectionConfigDataStruct* pLgScCfgDtStr);
/*********************************************
*函数功能：初始化逻辑区段配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8  LogicSecConfigDataStructInit(CHAR * FSName);




/*********************************************
*函数功能：紧急停车按钮接口数据结构体
*参数说明：pEmergStopESB结构体指针
        pEsbCfgDtStrESB配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 EsbCfgDtStruFromDquEmergStr(DSU_EMERG_STOP_STRU * pEmergStop,EsbConfigDataStruct* pEsbCfgDtStr);
/*********************************************
*函数功能：初始化紧急停车按钮接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 EsbConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：屏蔽门配置数据结构体
*参数说明：pScreen屏蔽门结构体指针
pPsdCfgDtStr屏蔽门配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 PsdCfgDtStruFromDquEmergStr(DSU_SCREEN_STRU * pScreen, PsdConfigDataStruct* pPsdCfgDtStr);

/*********************************************
*函数功能：初始化保护区段条件道岔结构体
*参数说明：pProtectLink保护区段结构体指针
        pOvlpCfgDtStr保护区段配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 OverlapCfgDtStruFromDquStr(DSU_PROTECT_LINK_STRU * pProtectLink,OverlapConfigDataStruct* pOvlpCfgDtStr);

/*********************************************
*函数功能：初始化保护区段接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 OverlapConfigDataStructInit(CHAR * FSName);

/*****
联锁表数据内容计算
*******************/

/*********************************************
*函数功能：初始化自动进路配置数据接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 AutoRouteConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化自动折返进路配置数据接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 AutoReturnConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化反向进路接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 ReverseRouteCfgDtStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化组合进路配置数据接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 LongRouteConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：非进路配置数据结构体计算
*参数说明：pLSNoRouteDcStr非进路结构体指针
        pNonRouteCfgDtStr非进路配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 NonRouteCfgDtStruFrmLSStr( LS_NoRouteDcStru * pLSNoRouteDcStr,NonRouteConfigDataStruct * pNonRouteCfgDtStr);


/*********************************************
*函数功能：初始化非进路调车数据结构体----对外结构体
*参数说明：FSName逻文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 NonRouteConfigDataStructInit(CHAR * FSName);



/*********************************************
*函数功能：计算联锁进路数据
*参数说明：pLSRouteStr联锁进路结构体指针
        pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataStruct * pRouteCfgDtStr, OverlapConfigDataStruct* overlapStr);

/*********************************************
*函数功能：初始化进路配置数据
*参数说明：FSName逻文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 RouteConfigDataStructInit(CHAR * FSName);


/*********************************************
*函数功能：按行解析通信关系（从设备IP表里去到的数据，每行17个数据）
*参数说明：Data通信数组
*返回值：0，失败；1，成功
*********************************************/
UINT8 TransmitRelationDataStruFrmSZ(UINT16 Data[]);

/*********************************************
*函数功能：初始化通信关系数据结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 TransmitRelationDataStructInit(CHAR* FSName);


/*********************************************
*函数功能：初始化屏蔽门配置数据接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 PsdConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化表示报警灯配置数据
*参数说明：FSName逻文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 IndicatorConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化继电器所有的结构体，初始化系统配置数据、相邻联锁通信数据，
*		   初始化出站信号机关联逻辑区段/计轴区段配置数据、初始化各设备继电器配置数据、初始化计轴区段/逻辑区段配置数据、
*		   初始化ESB配置、保护区段配置、侵限区段、报警灯、SPKS、防淹门配置数据；
*		   初始化联锁表（自动通过进路、自动折返进路、全自动折返进路、反向进路、屏蔽门、组合进路、进路、非进路、通信关系、车库门、其它线路、
*		   虚拟设备等）配置数据。
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 RelayInit(CHAR* FSName);

/*********************************************
*函数功能：抵触进路初始化
*参数说明：RouteCfgDtStr进路数据
        pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 RouteOpposedConfigDataInite(RouteConfigDataStruct * RouteCfgDtStr,RouteConfigDataStruct * pRouteCfgDtStr);

/*********************************************
*函数功能：初始化全自动折返进路配置数据接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 AllAutoReturnCfgDtStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化车库门接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 GaragedoorConfigDataStructInit(CHAR * FSName);
/*********************************************
*函数功能：车库门接口数据结构体
*参数说明：pGaragedoor 结构体指针
        pGaragedoorCfgDtStr 配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 GaragedoorCfgDtStruFromDquStr(DSU_DEPOT_GATE_STRU * pGaragedoor,GaragedoorConfigDataStruct* pGaragedoorCfgDtStr);

/*
功能描述: 初始化其他线路设备配置数据结构体(对外结构体)
输入参数:	CHAR * FSName 数据文件名指针
输出参数:	无
返回值:	0 失败
		1 成功
*/
UINT8 DiffLineDevConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化防淹门接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 FloodGateConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化出站信号机关联的逻辑区段数据结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 OutStationSigRelLogSecStruInit(CHAR* FSName);

/*********************************************
*函数功能：初始化联锁功能开关配置数据结构体
*参数说明：FSName文件指针          
*返回值：无
*********************************************/
void CiFunctionSwitchStructInit(CHAR* FSName);

/*********************************************
*函数功能：初始化联锁类型配置数据结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 CiPatternInit(CHAR* FSName);

/*********************************************
*函数功能：初始化虚拟设备数据结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 VirtualDeviceInit(CHAR* FSName);

/*********************************************
*函数功能：初始化出站信号机关联的计轴区段数据结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 OutStationSigRelAxisSecStruInit(CHAR* FSName);

/*********************************************
*函数功能：计算联锁防淹门数据
*参数说明：pEmapFloodGateStr 联锁防淹门结构体指针(电子地图)
*		   pRouteCfgDtStr防淹门配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 FloodGateCfgDtStruFrmLSStr(DSU_FLOOD_GATE_STRU * pEmapFloodGateStr, FloodGateConfigDataStruct * pFloodGateCfgDtStr);


/*********************************************
*函数功能：从联锁表防护道岔与主体道岔关系表计算道岔主体道岔数据
*参数说明：
	pSwitchCfgDtStr道岔配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 SwitchCfgDtStruFromLSProHostStr(SwitchConfigDataStruct* pSwitchCfgDtStr);

/*********************************************
*函数功能：将FS对应的数据填充到结构体
*参数说明：pSrc FS数据结构体指针，pDes要赋值的结构体数组指针，ArrBuff结构体成员长度指针，realRowCount真实行数
*返回值：0，失败；1，成功
*********************************************/
UINT8 OcStruFromChar(const UINT8 *pSrc, UINT8 *pDes, const UINT8 *ArrBuff, const UINT16 realRowCount);

/*********************************************
*函数功能：获取FS配置表数据，计算有效长度
*参数说明：FSName文件指针，DataTypeID数据类型，ConfigId，表单编号
			StrArrLen结构体数组长度，StrLen结构体长度，
			pStr要存入数据的结构体数组指针，ArrBuff结构体成员长度数组
*返回值：0，失败；其他，长度
*********************************************/
UINT8 OCConfigDataStructInit(UINT16* len, CHAR* FSName, UINT32 DataTypeID, UINT32 ConfigId, UINT16 StrArrLen, void* pStr, UINT8* ArrBuff);

/*********************************************
*函数功能：初始化OC 道岔配置表数据
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 OCSwitchConfigDataStructInit(CHAR *FSName);

/*********************************************
*函数功能：初始化OC 道岔配置表数据——OC2.1.6
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 OCSwitchConfigDataStructInit_OLD(CHAR *FSName);

/*********************************************
*函数功能：解析OC 信号机表数据
*参数说明：pDataAddr 数据地址；pOCSignalCfgStr oc配置数据结构体；SwitchId信号机ID
* dataLen  每行字节长度
*返回值：0，失败；1，成功
*备注：无
*********************************************/
void R_OCSignalConfigDataFromChar(UINT8* pDataAddr,UINT16 dataLen);

/*********************************************
*函数功能：初始化OC 信号机配置表数据
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 OCSignalCfgStrConfDataStruInit(CHAR *FSName);

/*********************************************
*函数功能：OC信号机是否有蓝灯位
*参数说明：信号机ID
*返回值：0，否；1，是
*********************************************/
UINT8 OcSignalHasBlue(const UINT16 signalId);

/*********************************************
*函数功能：初始化OC 物理区段配置表数据
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 OCPhySecConfigDataStructInit(CHAR *FSName);

/* 功能描述：获取Oc Id所属的联锁Id
*  参数说明：
*		UINT16 ocId：oc编号
*  返回值：
*		UINT16：联锁id
*/
UINT16 GetCiIdByOcId(UINT16 ocId);

/*********************************************
*函数功能：初始化站台门控制器配置数据结构体----对外结构体
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 PscConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：从PSC结构体计算PSC结构体
*参数说明：pPoint站台门控制器结构体指针
pPscCfgDtStr站台门控制器配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 PscCfgDtStruFromDquPointStr(DSU_PSC_STRU* pPoint,PscConfigDataStruct* pPscCfgDtStr);

/*********************************************
*函数功能：初始化组合自动进路配置数据接口配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 GroupAutoRouteCfgDtStructInit(CHAR * FSName);

/*********************************************
*函数功能：读取虚拟联锁与OC关系表
*参数说明：FSName文件指针          
*返回值：0，失败；1，成功
*********************************************/
UINT8 ReadVirCIWithOCRelationData(CHAR* FSName);
/*********************************************
*函数功能：初始化虚拟联锁使用的报警灯配置数据
*参数说明：void
*返回值：0，失败；1，成功
*********************************************/
UINT8 InitBaojingdeng_UseVirCI(void);
/*
*函数功能：根据继电器Id 查找所属虚拟联锁
*参数说明：根据继电器ID查找指定所属虚拟联锁
*返回值：0 失败，>0 成功
* 限制条件：必须继电器数据读取完毕
*/
UINT8 GetBelongVirCiByRelayId(UINT16 relayId );

/*
*函数功能：获取dsu信息索引数组内容
*参数说明：const UINT16 linkId LINKID
           UINT16 *LinkIndex  输出LinkIndex
*返回值：CI_SUCCESS成功
*        CI_ERROR 失败
*/
UINT8 GetDsuLinkIndexNum(const UINT16 linkId,UINT16 *pLinkIndex);

/*********************************************
*函数功能：读取主体信号机与复示信号机关系表
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 ReadSigWithFushiSigRelatData(CHAR* FSName);

/*********************************************
*函数功能：读取总SPKS管辖各SPKS关系表
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 ReadTotalSpksWithSpksRelatData(CHAR* FSName);

/*
*函数功能：进路包含的逻辑区段数据初始化
*参数说明：pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*/
UINT8 RouteConfigDataStruLogDataInit(RouteConfigDataStruct * pRouteCfgDtStr, LS_RouteStruct * pLSRouteStr);

/*
*函数功能：道岔关联的逻辑区段
*参数说明：pSwitchStr 电子地图道岔结构体指针
*          pSwitchCfgDtStr 道岔对外配置结构体指针
*返回值：0，失败；1，成功
*/
UINT8 SwitchCfgLogTrackInitDquStr(DSU_POINT_STRU* pSwitchStr,SwitchConfigDataStruct* pSwitchCfgDtStr);

/*********************************************
*函数功能：LINK配置数据结构体计算
*参数说明：pLink LINK结构体指针
pLinkScCfgDtStr LINK置数据结构体指针
*返回值：0，失败；1，成功
*创建 2022.3.8
*********************************************/
UINT8 LinkCfgDtStruFromDquLinkStr(DSU_LINK_STRU* pLink, LinkDataConfigStru* pLinkScCfgDtStr);

/*********************************************
*函数功能：初始化LINK配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*创建 2022.3.8
*********************************************/
UINT8 LinkConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：计轴器配置数据结构体计算
*参数说明：pAxis 计轴器结构体指针
pAxisCfgDtStr 计轴器配置数据结构体指针
*返回值：0，失败；1，成功
*创建 2022.3.11
*********************************************/
UINT8 AxisCfgDtStruFromDquAxisStr(DSU_AXLE_STRU* pAxis, AxisConfigStru* pAxisCfgDtStr);

/*********************************************
*函数功能：初始化计轴器配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*创建 2022.3.11
*********************************************/
UINT8 AxisConfigDataStructInit(CHAR * FSName);

/*
功能描述: 初始化分界点表设备配置数据结构体(对外结构体)
输入参数:	CHAR * FSName 数据文件名指针
输出参数:	无
返回值:	0 失败
1 成功
*/
UINT8 CutoffPointConfigDataStructInit(CHAR * FSName);

/*
功能描述: 初始化联络线表设备配置数据结构体(对外结构体)
输入参数:	CHAR * FSName 数据文件名指针
输出参数:	无
返回值:	0 失败
1 成功
*/
UINT8 LinkLineConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：初始化倒切设备配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8  ReverseCutConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：倒切设备配置数据结构体计算
*参数说明：pLogicSgmt逻辑区段结构体指针
pLgScCfgDtStr逻辑区段配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 ReverseCutCfgDtStruFromDquStr(Relay_ReverseCutStruct* pReverseCutRelay, ReverseCutCfgDataStru* pReverseCutCfgDtStr);

/*********************************************
*函数功能：初始化TIOCATS设备网关配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8  GatewayConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：属于同一进路物理区段，不属于本进路，且不属于道岔防护区域逻辑区段+
*		   属于同一道岔防护区段逻辑区段，不属于本进路逻辑区段初始化
*参数说明：pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 RouteOutLgcSecConfigDataInit(RouteConfigDataStruct * pRouteCfgDtStr);

/*********************************************
*函数功能：倒切设备配置数据结构体计算
*参数说明：pLogicSgmt逻辑区段结构体指针
pLgScCfgDtStr逻辑区段配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 ReadGatewayDeviceCfgDtStru(DquGatewayDeviceStruct* pGatewayDeviceRelay, TransmitRelationDataStruct* pTrsmtRlsDtStr);

/*********************************************
*函数功能：防护区域配置数据结构体计算
*参数说明：pEa 防护区域结构体指针
pEaCfgDtStr 防护区域置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 EaConfigDataStruFromDquEaStr(DSU_EMAP_EA_STRU* pEa, EaConfigStru* pEaCfgDtStr);

/*********************************************
*函数功能：初始化防护区域配置数据结构体----对外结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 EaConfigDataStructInit(CHAR * FSName);

/*********************************************
*函数功能：解析OC 道岔配置表数据
*参数说明：pDataAddr 数据地址；
*返回值：0，失败；1，成功
*备注：cgh-合并CID-2539-5：：修改初始化《OC_配置数据表》中“物理区段模块配置表”、“信号机模块配置表”、“道岔模块配置表”的初始化方式，和其他表格的初始化方式一致
*********************************************/
void R_OCSwitchConfigDataFromChar(UINT8* pDataAddr);

/*********************************************
*函数功能：主进路及子进路相关数据初始化
*参数说明：pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 RouteMainProConfigDataInit(RouteConfigDataStruct* RouteCfgDtStr, RouteConfigDataStruct* pRouteCfgDtStr);

/*********************************************
*函数功能：逻辑区段关联进路相关数据初始化
*参数说明：pRouteCfgDtStr进路配置数据结构体指针   pLogCfgDtStr配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 LogRelateRouteDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionConfigDataStruct* pLogCfgDtStr);
/*********************************************
*函数功能：逻辑区段关联防护道岔相关数据初始化
*参数说明：pRouteCfgDtStr进路配置数据结构体指针   pLogCfgDtStr配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 LogRelateProSwDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionConfigDataStruct* pLgScCfgDtStr);


/*********************************************
*函数功能：根据电子地图中信号机属性设置信号机分段属性
*参数说明：pSgnl是DSU信号机数据结构指针
*          pSgnlCfgDtStr，信号机配置数据结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 SetSignalFenDuanAttr(DSU_SIGNAL_STRU* pSgnl, SignalConfigDataStruct* pSgnlCfgDtStr);

/*********************************************
*函数功能：从电子地图逻辑区段SPKS结构体计算SPKS继电器ID
*参数说明：pSpks是DSU逻辑区段SPKS数据结构指针
pSpksDataConfig是SPKS配置数据结构指针
*返回值：0，失败；1，成功
* by cgh 20230919
*********************************************/
UINT8 ReadDataFromDquLogSpksData(const DSU_LOGSEC_SPKS_BUTTON_STRU* pSpks, SpksDataConfigStruct* pSpksDataConfig);

/*********************************************
*函数功能：从电子地图物理区段SPKS结构体计算SPKS数据
*参数说明：pSpks是DSU物理区段SPKS数据结构指针
pSpksDataConfig是SPKS配置数据结构指针
*返回值：0，失败；1，成功
* by cgh 20230919
*********************************************/
UINT8 ReadDataFromDquPhySpksData(const DSU_SPKS_BUTTON_STRU* pSpks, SpksDataConfigStruct* pSpksDataConfig);

/*********************************************
*函数功能：计算物理区段对应的SPKS信息
*参数说明：pPsclSgmtCfgDtStr物理区段配置数据结构体指针
*返回值：0，失败；1，成功
* by cgh 20230919
*********************************************/
UINT8 PhysicRelateSpksStr(PhysicalSectionConfigDataStruct* pPsclSgmtCfgDtStr);

/*********************************************
*函数功能：初始化声光报警器配置数据结构体
*参数说明：FSName文件指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 SGBJConfigDataStructInit(CHAR* FSName);

/*********************************************
*函数功能：进路关联声光报警器配置数据初始化
*参数说明：RouteConfigDataStruct* pRouteCfgDtStr 进路配置数据结构体指针
*          LS_SGBJStruct* pLSSGBJStr 联锁声光报警器结构体指针
*返回值：0，失败；1，成功
*********************************************/
UINT8 RouteRelatedSGBJCfgDataInit(RouteConfigDataStruct* pRouteCfgDtStr, LS_SGBJStruct* pLSSGBJStr);

/*********************************************
*函数功能：计算联锁进路点式接近区段逻辑区段数据
*参数说明：pLSRouteStr联锁进路结构体指针
            pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*by cgh 20231014
*********************************************/
UINT8 RouteBlocNearLogSecInit(LS_RouteStruct* pLSRouteStr, RouteConfigDataStruct* pRouteCfgDtStr);


/*********************************************
*函数功能：计算联锁进路第一离去逻辑区段数据
*参数说明：pLSRouteStr联锁进路结构体指针
            pRouteCfgDtStr进路配置数据结构体指针
*返回值：0，失败；1，成功
*by cgh 20231014
*********************************************/
UINT8 RouteFirstLeaveLogSecInit(LS_RouteStruct* pLSRouteStr, RouteConfigDataStruct* pRouteCfgDtStr);

/*********************************************
*函数功能：进路关联转换轨进路折返信号机id数据初始化
*参数说明：RouteConfigDataStruct* pRouteCfgDtStr 进路配置数据结构体指针
*         LS_TransRouteZFSigStruct* pTransRouteZFSigStruc 转换轨进路关联折返信号机id结构体指针
*返回值：0，失败；1，成功
*Create： fan 20240725
*********************************************/
UINT8 RouteRelatedTransZFSigInit(RouteConfigDataStruct* pRouteCfgDtStr, LS_TransRouteZFSigStruct* pTransRouteZFSigStruct);

/*********************************************
*函数功能：AG LINK是否存在关联CG属性计算
*参数说明：pLinkScCfgDtStr LINK置数据结构体指针
*返回值：0，失败；1，成功
*创建 by cgh 20240821
*********************************************/
UINT8 AgLinkExistRelCGFlagCalc(LinkDataConfigStru* pLinkScCfgDtStr);

/*********************************************
*函数功能：BGlink关联的AGlink计算
*参数说明：LinkDataConfigStru* pLinkScCfgDtStr LINK置数据结构体指针
*返 回 值：0 失败
*          1 成功
*Creatd By LQ 2024.08.22
*********************************************/
UINT8 BGLinkRelAGLinkCal(LinkDataConfigStru* pLinkScCfgDtStr);

/*********************************************
*函数功能：风井区段数据初始化
*参数说明：RouteConfigDataStruct* pRouteCfgDtStr 进路配置数据结构体指针
*           LS_AirShaftStruct* pAirShaftSecStruct 风井进路结构体指针
*返回值：0，失败；1，成功
*Create： yx 2026.03.04
*********************************************/
UINT8 AirShaftSectionDataInit(RouteConfigDataStruct* pRouteCfgDtStr, LS_AirShaftStruct* pAirShaftSecStruct);
/*********************************************
*函数功能：逻辑区段关联防护道岔（遍历保护区段）
*参数说明：pLogCfgDtStr配置数据结构体指针
*返回值：0，失败；1，成功
* add mpt 20260331
*********************************************/
UINT8 LogRelateProSwDataByOverlapInit(LogicSectionConfigDataStruct* pLgScCfgDtStr);

/*********************************************
*函数功能：逻辑区段关联保护区段相关数据初始化
*参数说明：pOverlapCfgDtStr保护区段配置数据结构体指针   pLogCfgDtStr配置数据结构体指针
*返回值：0，失败；1，成功
* add by mpt 20260331
*********************************************/
UINT8 LogRelateOverlapDataInit(OverlapConfigDataStruct* pOverlapCfgDtStr, LogicSectionConfigDataStruct* pLogCfgDtStr);

/*********************************************
*函数功能：逻辑区段配置数据结构体计算
*参数说明：LogsecSwitchStruct* pSrcSwitchStructBuf 源数据
           UINT8 chSrclen 源数据长度
           AxisSwitchStruct* pDstSwitchStructBuf 目标数据
           UINT8 dstLen 目标数据长度
*返回值：-1，失败；其他为长度
*add by  mpt 20260331
*********************************************/
INT16 AxisSecCfgDtStruFromLogicSecStr(LogsecSwitchStruct* pSrcSwitchStructBuf, UINT8 chSrclen, AxisSwitchStruct* pDstSwitchStructBuf, UINT8 dstLen);

/*********************************************
*函数功能：计轴区段防护道岔初始化
*参数说明：void
*返回值：0，失败；1，成功
* add mpt 20260331
*********************************************/
UINT8 AxisSecProtectSwitchInit(void);

#endif




