2009年1月11日星期日

goose Data Structrue

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;

B00L test;

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 评论: