/********************************************************
*                                                                                                            
* 文 件 名： LogRecord.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2011-09-22
* 作    者： 
* 功能描述： 联锁机数据读取程序头文件 
* 函数包括：
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _LOG_RECORD_H_
#define _LOG_RECORD_H_ 


#include "CommonTypes.h"
#include "Convert.h"
#include "../Relay/RelayConfigDataManage.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../System/CiSystemDefine.h"
#include "../Signal/SignalConfigDataManage.h"
#include "../Signal/SignalDataManage.h"
#include "../Section/PhysicalSectionConfigDataManage.h"
#include "../Section/PhysicalSectionDataManage.h"
#include "../Switch/SwitchConfigDataManage.h"
#include "../Switch/SwitchDataManage.h"
#include "../Route/RouteConfigDataManage.h"
#include "../ReverseRoute/ReverseRouteConfigDataManage.h"
#include "../Route/RouteDataManage.h"
#include "../NonRoute/NonRouteConfigDataManage.h"
#include "../NonRoute/NonRouteDataManage.h"
#include "../Section/LogicSectionConfigDataManage.h"
#include "../Section/LogicSectionDataManage.h"
#include "../WashMachine/WashMachineDataManage.h"
#include "../PSD/PSDDataManage.h"
#include "../Garagedoor/GaragedoorDataManage.h"
#include "../FloodGate/FloodGateDataManage.h"
#include "../FloodGate/FloodGateDefine.h"
#include "../VirtualDevice/VirtualDevDefine.h"
#include "../Train/TrainDataManage.h"
#include "../CutoffPoint/CutoffPointDataManage.h"
#include "../CutoffPoint/CutoffPointConfigDataManage.h"
#include "../Route/LogicalRouteDataManage.h"
#include "NonAutoReturnDataManage.h"
#include "NonAutoReturnConfigDataManage.h"

#ifdef PLATFORM_LABVIEW_DEBUG
#include "stdio.h"
#include "time.h"
#include "string.h"
#include "direct.h"
#include "io.h"
#include "windows.h"
#endif

typedef struct s_VirCIKeyRtnIndicatorState_stru/*虚拟联锁无人折返指示灯使用*/
{
	UINT8 PrintVirCiIndicatorDevId;/*指示灯设备ID*/
	UINT8 PrintVirCiFlashState;/*闪灯或稳灯类型*/
	UINT8 PrintVirCiSteadyState;/*指示灯状态*/
}VirCIKeyRtnIndicatorState;

typedef struct s_VirCIKeyData_stru/*虚拟联锁关键数据打印使用*/
{
	UINT8 virtualCiId;/*本联锁所属虚拟联锁ID数组*/
	UINT8 virAllSignalBrightFlag;/*全站亮灯标志*/
	UINT8 virAllSwitchYLockFlag;/*全站引导总锁标志*/
	UINT8 virLabourCancelLinShiXianState;/*人工取消临时限速*/
	UINT8 cimode;/*控制模式*/
	UINT8 autoTriggerflag;/*自动触发标识*/
	UINT8 ZfwFlag;   /*总复位标识*/
	UINT32 ZfwStartCycNum;/*总复位命令开始周期*/
	UINT32 ZfwValidCycNum; /*ZFW总复位继电器有效周期*/
	VirCIKeyRtnIndicatorState RtnIndicatorKeyData[RELAY_DRIVE_STATE_DOWN];/*无人折返指示灯数据*/
	UINT8 ZfwjHunXianFLag;/*总复位混线标志*/
}VirCIKeyDataStru;


#ifdef PLATFORM_LABVIEW_DEBUG
/*
* 功能描述： 获取系统时间
* 参数说明： UINT8 flag   选择时间格式
*			 char *timeformat   时间结构体
* 返回值  ： void 
*/
SYSTEMTIME getcurrentTime(UINT8 flag, UINT8 *timeformat);


/*
* 功能描述： 更新打印文件路径
* 参数说明： void
* 返回值  ： 0: 更新路径失败
*			 1: 更新路径成功
*/
UINT8 UpdatePrintFilePath(void);

/*
* 功能描述： 获取文件路径
* 参数说明： void
* 返回值  ： NULL: 获取文件路径失败
*			 非NULL: 获取文件路径成功
*/
UINT8* GetFileString(void);

/*
* 功能描述： 打印数据队列函数 与平台打印一致
* 参数说明： const UINT8 printMode, 打印模式:10十进制,16十六进制,8八进制,2二进制
*            UINT8 printData[], 打印数据队列
*            UINT32 printDataLen, 打印数据长度或标准输出的格式输出数值
* 返回值  ： 0:打印失败
*            1:打印成功
*/
UINT8 Out_Array_Buffer(const UINT8 printMode, UINT8 printData[], UINT32 printDataLen);

#endif

extern UINT8 colString[RELAY_SUM_MAX];/*采集数据*/
extern UINT16 colStringLength;
extern UINT8 drvString[RELAY_SUM_MAX];/*驱动数据*/
extern UINT16 drvStringLength;
/*
* 功能描述： 继电器采集数据打印接口函数
* 参数说明： UINT8* thisString, 本周期数据
* 返回值  ： 0: 打印失败
*			 1: 打印成功		  
*/

UINT8 RecordCollectDataLog(UINT8* thisString);

/*
* 功能描述： 继电器驱动数据打印接口函数
* 参数说明： UINT8* thisString, 本周期数据
* 返回值  ： 0: 打印失败
*			 1: 打印成功	
*/

UINT8 RecordDriverDataLog(UINT8* thisString);

/*
* 功能描述： 设备状态数据打印接口函数
* 参数说明： UINT8 Flag, 打印标志
* 返回值  ： 0: 打印失败
*			 1: 打印成功
*/

UINT8 RecordDeviceDataLog(UINT8 Flag);

/*
* 功能描述： 继电器比较
* 参数说明： const UINT8* lastString, 上一周期字符串
*			 const UINT8* thisString, 本周期字符串
*			 UINT8 rec, 0为采集，4为驱动
* 返回值  ： 0: 无变化
*            1: 有变化
*/
UINT8 RelayComPare(UINT8* lastString, const UINT8* thisString, UINT8 rec);

/*
* 功能描述： 清空字符串
* 参数说明： UINT8* str
* 返回值  ： void
*/
void CleanString(UINT8* str);

/*
* 功能描述： 对比设备数据
* 参数说明： UINT8* deviceStruAddr1, 设备1的结构数据首地址
*            const UINT16 deviceStruLen1, 设备1的结构数据长度
*            const UINT8* deviceStruAddr2, 设备2的结构数据首地址
*            const UINT16 deviceStruLen2, 设备2的结构数据长度
* 返回值  ： 0: 数据一致
*            1: 数据不一致
*            2: 结构类型不一致
*/
UINT8 DeviceCompara(UINT8* deviceStruAddr1, const UINT16 deviceStruLen1,
                    const UINT8* deviceStruAddr2, const UINT16 deviceStruLen2);

/*
* 功能描述： 获取虚拟联锁关键数据
* 参数说明：无
* 返回值  ： 无
*/
void GetVirCIKeyDataStru(void);

/*
* 功能描述： 打印当前系统时间
* 参数说明：无
* 返回值  ： 无
*/
void PrintfNowTime(void);
#endif
