You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

379 lines
13 KiB
C

1 year ago
/****************************************************************************/
/* Copyright (c) 2007,<2C><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾ */
/* All rights reserved. */
/* */
/* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/** iec61850<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺͺ<CDBA><EAB6A8>
* @file ai_def.h */
/* */
/* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ע<><D7A2> */
/* 2007/07/12 DJF <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
/****************************************************************************/
#ifndef IEC61850_AI_DEF_H
#define IEC61850_AI_DEF_H
#include "sysincs.h"
#include "glbtypes.h"
#include "mms_def2.h"
#include "mmsobj.h"
#ifdef __cplusplus
extern "C" {
#endif
/**61850<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum{
IEC61850_OP_UNKNOWN = 0,
IEC61850_OP_ASSOC,
IEC61850_OP_RELEASE ,
IEC61850_OP_ABORT,
IEC61850_OP_GETSRVDIR,
IEC61850_OP_GETLDDIR,
IEC61850_OP_GETLNDIR,
IEC61850_OP_GETDODEF,
IEC61850_OP_READ,
IEC61850_OP_WRITE,
IEC61850_OP_GETSGV,
IEC61850_OP_SETSGV,
IEC61850_OP_SELVAL,
IEC61850_OP_SELECT,
IEC61850_OP_CANCEL,
IEC61850_OP_OPER,
IEC61850_OP_CRTDS,
IEC61850_OP_DELDS,
IEC61850_OP_GETDSDIR,
IEC61850_OP_GETDSVAL,
IEC61850_OP_SETDSVAL,
IEC61850_OP_GETFAV,
IEC61850_OP_GETFILE,
IEC61850_OP_SETFILE,
IEC61850_OP_DELFILE ,
IEC61850_OP_QUERYLOGBT,
IEC61850_OP_QUERYLOGA,
IEC61850_OP_RPTENA // <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
}IEC61850_OP;
/**
* ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><EFBFBD>ֵ
*/
typedef enum
{
AC_CHANNEL_A,
AC_CHANNEL_B,
AC_CHANNEL_UNKNOWN
}AC_CHANNEL;
#define MAX_REFERENCE_LENGTH 129
/**
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef ST_CHAR AI_OBJ_REF[MAX_REFERENCE_LENGTH + 1];
/**
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD>id<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>ʶһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef ST_INT AI_OBJ_ID;
/**
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef enum{
VAL_TYPE_UNKNOWN = 0,
VAL_TYPE_BOOLEAN,
VAL_TYPE_INT8,
VAL_TYPE_INT16,
VAL_TYPE_INT32,
VAL_TYPE_INT128,
VAL_TYPE_INT8U,
VAL_TYPE_INT16U,
VAL_TYPE_INT32U,
VAL_TYPE_FLOAT32,
VAL_TYPE_FLOAT64,
VAL_TYPE_CODEDENUM, //<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ȵ<EFBFBD>bitstring, 2bit
VAL_TYPE_TCMD, //<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ȵ<EFBFBD>bitstring, 2bit
VAL_TYPE_OSTRING8, //<2F>䳤octet string,<2C><><EFBFBD>󳤶<EFBFBD>8<EFBFBD><38><EFBFBD>ֽ<EFBFBD>
VAL_TYPE_OSTRING64, //<2F>䳤octet string,<2C><><EFBFBD>󳤶<EFBFBD>64<36><34><EFBFBD>ֽ<EFBFBD>
VAL_TYPE_VSTRING64, //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>64
VAL_TYPE_VSTRING65, //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>65
VAL_TYPE_VSTRING129, //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>129
VAL_TYPE_VSTRING255 , //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>255
VAL_TYPE_UNISTRING255, //utf-8<>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>255<35><35><EFBFBD>ַ<EFBFBD>
VAL_TYPE_QUALITY, //<2F>䳤bitstring 13bit
VAL_TYPE_TIMESTAMP, //utctime
VAL_TYPE_ENTRYTIME, //binary time<6D><65>btime6<65><36>ʽ
VAL_TYPE_OPTFLDS, //<2F>䳤bitstring 10bit
VAL_TYPE_TRGC, //<2F>䳤bitstring 6bit
VAL_TYPE_CHECK, //<2F>䳤bitstring 2bit
VAL_TYPE_ENTRYID, //<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ȵ<EFBFBD>octet string, 8<><38><EFBFBD>ֽ<EFBFBD>
VAL_TYPE_STRUCT //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
}AI_VAL_TYPE;
/*da <20><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>,ÿ<><C3BF><EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>AI_OBJ_VAL<41>е<EFBFBD>ö<EFBFBD><C3B6>ֵһ<D6B5><D2BB> */
#define AI_DATYPE_UNKNOWN VAL_TYPE_UNKNOWN
#define AI_DATYPE_BOOLEAN VAL_TYPE_BOOLEAN
#define AI_DATYPE_INT8 VAL_TYPE_INT8
#define AI_DATYPE_INT16 VAL_TYPE_INT16
#define AI_DATYPE_INT32 VAL_TYPE_INT32
#define AI_DATYPE_INT128 VAL_TYPE_INT128
#define AI_DATYPE_INT8U VAL_TYPE_INT8U
#define AI_DATYPE_INT16U VAL_TYPE_INT16U
#define AI_DATYPE_INT32U VAL_TYPE_INT32U
#define AI_DATYPE_FLOAT32 VAL_TYPE_FLOAT32
#define AI_DATYPE_FLOAT64 VAL_TYPE_FLOAT64
#define AI_DATYPE_CODEDENUM VAL_TYPE_CODEDENUM
#define AI_DATYPE_TCMD VAL_TYPE_CODEDENUM
#define AI_DATYPE_OSTRING8 VAL_TYPE_OSTRING8
#define AI_DATYPE_OSTRING64 VAL_TYPE_OSTRING64
#define AI_DATYPE_VSTRING64 VAL_TYPE_VSTRING64
#define AI_DATYPE_VSTRING65 VAL_TYPE_VSTRING65
#define AI_DATYPE_VSTRING129 VAL_TYPE_VSTRING129
#define AI_DATYPE_VSTRING255 VAL_TYPE_VSTRING255
#define AI_DATYPE_UNISTRING255 VAL_TYPE_UNISTRING255
#define AI_DATYPE_QUALITY VAL_TYPE_QUALITY
#define AI_DATYPE_TIMESTAMP VAL_TYPE_TIMESTAMP
#define AI_DATYPE_ENTRYTIME VAL_TYPE_ENTRYTIME
#define AI_DATYPE_OPTFLDS VAL_TYPE_OPTFLDS
#define AI_DATYPE_TRGC VAL_TYPE_TRGC
#define AI_DATYPE_CHECK VAL_TYPE_CHECK
#define AI_DATYPE_ENTRYID VAL_TYPE_ENTRYID
#define AI_DATYPE_STRUCT VAL_TYPE_STRUCT
/**
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef enum
{
OBJECT_TYPE_UNKNOWN = 0,
OBJECT_TYPE_IED,
OBJECT_TYPE_LD,
OBJECT_TYPE_LN,
OBJECT_TYPE_DS,
OBJECT_TYPE_FCN, //<2F><>fc<66><63>ln
OBJECT_TYPE_FCD,
OBJECT_TYPE_FCDA,
OBJECT_TYPE_CB //<2F><><EFBFBD>ƿ<EFBFBD>
}AI_OBJ_TYPE;
typedef ST_INT AI_FCO_SUBTYPE; //ֵΪAI_CBTYPE_XXX AI_LNTYPE_XXX AI_DOTYPE_XXX AI_DATYPE_XXX<58><58>
#define AI_FCO_SUBTYPE_UNKNOWN 0
/** cb<63><62><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> */
#define AI_CBTYPE_UNKNOWN 0
#define AI_CBTYPE_SGCB 1 //SP
#define AI_CBTYPE_URCB 2 //RP
#define AI_CBTYPE_BRCB 3 //BR
#define AI_CBTYPE_LCB 4 //LG
#define AI_CBTYPE_GOCB 5 //GO
#define AI_CBTYPE_GSCB 6 //GS
#define AI_CBTYPE_MSVCB 7 //MS
#define AI_CBTYPE_USVCB 8 //US
/** ln <20><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>*/
#define AI_LNTYPE_UNKNOWN 0 /* NOT IN STANDARD LN TYPE */
#define AI_LNTYPE_LLN0 1
#define AI_LNTYPE_LPHD 2
#define AI_LNTYPE_PDIF 3
#define AI_LNTYPE_PDIR 4
#define AI_LNTYPE_PDIS 5
#define AI_LNTYPE_PDOP 6
#define AI_LNTYPE_PDUP 7
#define AI_LNTYPE_PFRC 8
#define AI_LNTYPE_PHAR 9
#define AI_LNTYPE_PHIZ 10
#define AI_LNTYPE_PIOC 11
#define AI_LNTYPE_PMRI 12
#define AI_LNTYPE_PMSS 13
#define AI_LNTYPE_POPF 14
#define AI_LNTYPE_PPAM 15
#define AI_LNTYPE_PSCH 16
#define AI_LNTYPE_PSDE 17
#define AI_LNTYPE_PTEF 18
#define AI_LNTYPE_PTOC 19
#define AI_LNTYPE_PTOF 20
#define AI_LNTYPE_PTOV 21
#define AI_LNTYPE_PTRC 22
#define AI_LNTYPE_PTTR 23
#define AI_LNTYPE_PTUC 24
#define AI_LNTYPE_PTUF 25
#define AI_LNTYPE_PTUV 26
#define AI_LNTYPE_PUPF 27
#define AI_LNTYPE_PVOC 28
#define AI_LNTYPE_PVPH 29
#define AI_LNTYPE_PZSU 30
#define AI_LNTYPE_RADR 31
#define AI_LNTYPE_RBDR 32
#define AI_LNTYPE_RBRF 33
#define AI_LNTYPE_RDIR 34
#define AI_LNTYPE_RDRE 35
#define AI_LNTYPE_RDRS 36
#define AI_LNTYPE_RFLO 37
#define AI_LNTYPE_RPSB 38
#define AI_LNTYPE_RREC 39
#define AI_LNTYPE_RSYN 40
#define AI_LNTYPE_CALH 41
#define AI_LNTYPE_CCGR 42
#define AI_LNTYPE_CILO 43
#define AI_LNTYPE_CPOW 44
#define AI_LNTYPE_CSWI 45
#define AI_LNTYPE_GAPC 46
#define AI_LNTYPE_GGIO 47
#define AI_LNTYPE_GSAL 48
#define AI_LNTYPE_IARC 49
#define AI_LNTYPE_IHMI 50
#define AI_LNTYPE_ITCI 51
#define AI_LNTYPE_ITMI 52
#define AI_LNTYPE_ANCR 53
#define AI_LNTYPE_ARCO 54
#define AI_LNTYPE_ATCC 55
#define AI_LNTYPE_AVCO 56
#define AI_LNTYPE_MDIF 57
#define AI_LNTYPE_MHAI 58
#define AI_LNTYPE_MHAN 59
#define AI_LNTYPE_MMTR 60
#define AI_LNTYPE_MMXN 61
#define AI_LNTYPE_MMXU 62
#define AI_LNTYPE_MSQI 63
#define AI_LNTYPE_MSTA 64
#define AI_LNTYPE_SARC 65
#define AI_LNTYPE_SIMG 66
#define AI_LNTYPE_SIML 67
#define AI_LNTYPE_SPDC 68
#define AI_LNTYPE_XCBR 69
#define AI_LNTYPE_XSWI 70
#define AI_LNTYPE_TCTR 71
#define AI_LNTYPE_TVTR 72
#define AI_LNTYPE_YEFN 73
#define AI_LNTYPE_YLTC 74
#define AI_LNTYPE_YPSH 75
#define AI_LNTYPE_YPTR 76
#define AI_LNTYPE_ZAXN 77
#define AI_LNTYPE_ZBAT 78
#define AI_LNTYPE_ZBSH 79
#define AI_LNTYPE_ZCAB 80
#define AI_LNTYPE_ZCAP 81
#define AI_LNTYPE_ZCON 82
#define AI_LNTYPE_ZGEN 83
#define AI_LNTYPE_ZGIL 84
#define AI_LNTYPE_ZLIN 85
#define AI_LNTYPE_ZMOT 86
#define AI_LNTYPE_ZREA 87
#define AI_LNTYPE_ZRRC 88
#define AI_LNTYPE_ZSAR 89
#define AI_LNTYPE_ZTCF 90
#define AI_LNTYPE_ZTCR 91
/** do<64><6F><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> */
#define AI_DOTYPE_UNKNOWN 0 /* NOT IN STANDARD TYPE */
#define AI_DOTYPE_SPS 1
#define AI_DOTYPE_DPS 2
#define AI_DOTYPE_INS 3
#define AI_DOTYPE_ACT 4
#define AI_DOTYPE_ACD 5
#define AI_DOTYPE_SEC 6
#define AI_DOTYPE_BCR 7
#define AI_DOTYPE_MV 8
#define AI_DOTYPE_CMV 9
#define AI_DOTYPE_SAV 10
#define AI_DOTYPE_SPC 11
#define AI_DOTYPE_DPC 12
#define AI_DOTYPE_INC 13
#define AI_DOTYPE_BSC 14
#define AI_DOTYPE_ISC 15
#define AI_DOTYPE_APC 16
#define AI_DOTYPE_SPG 17
#define AI_DOTYPE_ING 18
#define AI_DOTYPE_ASG 19
#define AI_DOTYPE_CURVE 20
#define AI_DOTYPE_DPL 21
#define AI_DOTYPE_LPL 22
#define AI_DOTYPE_CSD 23
#define AI_DOTYPE_WYE 24
#define AI_DOTYPE_DEL 25
#define AI_DOTYPE_SEQ 26
#define AI_DOTYPE_HMV 27
#define AI_DOTYPE_HWYE 28
#define AI_DOTYPE_HDEL 29
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iec61850v2.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cdc<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AI_DOTYPE_ENC 30
#define AI_DOTYPE_ENS 31
#define AI_DOTYPE_ENG 32
#define AI_DOTYPE_HST 33
#define AI_DOTYPE_ORG 34
#define AI_DOTYPE_TSG 35
#define AI_DOTYPE_CSG 36
#define AI_DOTYPE_ERS 37
/**
* 61850<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
*/
#define ST_OSTRING8 OCTET_STRING8_TDEF /* octet string */
#define ST_OSTRING64 OCTET_STRING64_TDEF /* octet string */
#define ST_VSTRING255 VISIBLE_STRING255_TDEF /* Visible String */
#define ST_VSTRING64 VISIBLE_STRING64_TDEF /* Visible String */
#define ST_VSTRING65 VISIBLE_STRING65_TDEF /* Visible String */
#define ST_VSTRING129 VISIBLE_STRING129_TDEF /* Visible String */
#define ST_USTRING255 UNICODE_STRING255_TDEF /* utf8String */
#define ST_TIMESTAMP TimeStamp_TDEF /* utc time */
#define ST_ENTRYTIME EntryTime_TDEF /* btime6 */
#define ST_QUALITY Quality_TDEF /* BVstring13 */
#define ST_ENTRYID EntryID_TDEF /* 8<><38><EFBFBD>ֽڵ<D6BD>8λλ<CEBB><CEBB> */
#define ST_OPTFLDS OPTFLDS_TDEF /* BVstring10 */
#define ST_TRGOP TRG_CONDITION_TDEF /* BVstring6 */
#define ST_CHECK Check_TDEF /* BVstring2 */
/**
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
AI_VAL_TYPE type; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_INT size; /**< <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>ռ<EFBFBD>õ<EFBFBD><C3B5>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<74>ij<EFBFBD><C4B3><EFBFBD> */
ST_VOID *data; /**< <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> */
}AI_PRIM_VAL;
/**
* 61850<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
AI_OBJ_ID obj_id; /**< <20><><EFBFBD><EFBFBD>ID */
AI_OBJ_ID *prim_ids; /**< <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD>id<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
AI_PRIM_VAL *prim_vals; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>ӳ<EFBFBD>Ա<EFBFBD><D4B1>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_INT prim_num; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С */
}AI_OBJ_VAL;
/**
* acsi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef ST_INT8 AC_REQ_RESULT;
#define AC_RESULT_SUCCESS 0; /**< <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> */
#define AC_RESULT_FAILURE 1; /**< <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> */
#define AC_RESULT_TIMEOUT 2; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʧ<CAB1><CAA7> */
#ifdef __cplusplus
}
#endif
#endif /* ACSI_DEFINED_INCLUDE */