IECGoosePdu ::= SEQUENCE {
gocbRef [0] IMPLICIT VISIBLE-STRING,
timeAllowedtoLive [1] IMPLICIT INTEGER,
datSet [2] IMPLICIT VISIBLE-STRING,
goID [3] IMPLICIT VISIBLE-STRING OPTIONAL,
t [4] IMPLICIT UtcTime,
stNum [5] IMPLICIT INTEGER,
sqNum [6] IMPLICIT INTEGER,
test [7] IMPLICIT BOOLEAN DEFAULT FALSE,
confRev [8] IMPLICIT INTEGER,
ndsCom [9] IMPLICIT BOOLEAN DEFAULT FALSE,
numDatSetEntries [10] IMPLICIT INTEGER,
allData [11] IMPLICIT SEQUENCE OF Data,
security [12] ANY OPTIONAL,
-- reserved for digital signature
}
对于 ISO/IEC8802-3帧结构,其帧头部分长度固定,通过一个结构与其对应,其定义如下:
struct gooseFrameHead //ByteLength
{
BYTE DMac[6];
BYTE SMac[6];
WORD TPID;
WORD TCI;
WORD Ethertype,
WORD AFPID;
WORD Length;
WORD Reservedl;
WORD Reserved2;
}
对于 APDU部分,定义了如下的数据结构来保存解析后的APDU的信息:
struct GOOSEAPDUInfo
{
int iLength;
CStrign gocbRef,
int timeAllowedotLlve;
CString dataSet;
CString goID ;
CString t;
int stNum;
int sqNum;
B
int confRev;
BOOL ndsCom ;
int numDatSetEntries;
cList <DataSetEntry_Info,DatasetEntry_Info&>DataSetEntryList;
}
对于数据集成员的信息,使用了模板类CList来保存数据集成员的信息,动态分配内存。其中,数据集部分的定义如下:
struct DataSetEntry_Info
{
int i_index;
CString sType;
CString sValue;
CString sNote;
}
0 评论:
发表评论