|
|
|
/****************************************************************************
|
|
|
|
** File name : HTCP56Time.h
|
|
|
|
** Description : define data type
|
|
|
|
** Create date : 2018.09.01
|
|
|
|
** Auther by : Liuyx
|
|
|
|
** Version info : V1.0.01
|
|
|
|
** Copyright (C) 2002-2018 xi'an huatek, Inc Co., Ltd
|
|
|
|
** Update record:
|
|
|
|
** DATE AUTHER DESC
|
|
|
|
** -------------------------------------------------------------------------
|
|
|
|
** 2018.09.01 Liuyx first build
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef __HT_CP56TIME_H
|
|
|
|
#define __HT_CP56TIME_H
|
|
|
|
//
|
|
|
|
// CP56Time IEC 60870-5-104 time data type implementation
|
|
|
|
//
|
|
|
|
#pragma pack (push ,1)
|
|
|
|
#include <time.h>
|
|
|
|
|
|
|
|
#ifndef _WIN32
|
|
|
|
typedef struct _SYSTEMTIME {
|
|
|
|
unsigned short wYear;
|
|
|
|
unsigned short wMonth;
|
|
|
|
unsigned short wDayOfWeek;
|
|
|
|
unsigned short wDay;
|
|
|
|
unsigned short wHour;
|
|
|
|
unsigned short wMinute;
|
|
|
|
unsigned short wSecond;
|
|
|
|
unsigned short wMilliseconds;
|
|
|
|
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
|
|
|
|
|
|
|
|
typedef struct _FILETIME {
|
|
|
|
unsigned long dwLowDateTime;
|
|
|
|
unsigned long dwHighDateTime;
|
|
|
|
} FILETIME, *PFILETIME, *LPFILETIME;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct cp56time {
|
|
|
|
u_short msec;
|
|
|
|
u_char min :6;
|
|
|
|
u_char res1 :1;
|
|
|
|
u_char iv :1;
|
|
|
|
u_char hour :5;
|
|
|
|
u_char res2 :2;
|
|
|
|
u_char su :1;
|
|
|
|
u_char mday :5;
|
|
|
|
u_char wday :3;
|
|
|
|
u_char month :4;
|
|
|
|
u_char res3 :4;
|
|
|
|
u_char year :7;
|
|
|
|
u_char res4 :1;
|
|
|
|
} cp56time ;
|
|
|
|
|
|
|
|
|
|
|
|
class CP56Time
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
SYSTEMTIME stime;
|
|
|
|
bool valid;
|
|
|
|
bool genuine;
|
|
|
|
bool summer;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CP56Time(unsigned char *data);
|
|
|
|
~CP56Time(void);
|
|
|
|
|
|
|
|
void GetTimeString(char *buf, size_t size);
|
|
|
|
FILETIME _GetFileTime(void);
|
|
|
|
SYSTEMTIME _GetSystemTime(void);
|
|
|
|
|
|
|
|
time_t GetTime(void);
|
|
|
|
|
|
|
|
void ActualTimeToCP56Time(unsigned char *data);
|
|
|
|
|
|
|
|
void TimeToCP56Time(FILETIME *ft, unsigned char *data);
|
|
|
|
void TimeToCP56Time(SYSTEMTIME *st, unsigned char *data);
|
|
|
|
|
|
|
|
void CP56TimeToTime(unsigned char *data, FILETIME *ft);
|
|
|
|
void CP56TimeToTime(unsigned char *data, SYSTEMTIME *st);
|
|
|
|
};
|
|
|
|
#pragma pack (pop)
|
|
|
|
#endif // end __HT_CP56TIME_H
|
|
|
|
|