120 lines
3.3 KiB
C
Raw Normal View History

2025-04-30 16:24:29 +08:00
/****************************************************************************
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>: smvapi.h
----------------------------------------------------------------------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : smvapi.<EFBFBD>ļ<EFBFBD>
----------------------------------------------------------------------------
<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>־ :
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
----------------------------------------------------------------------------
2011-04-15 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
#ifndef _SMVAPI_H_
#define _SMVAPI_H_
#include "gse_clnp.h"
#include "gse_asn1.h"
#ifdef __cplusplus
extern "C" {
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>ȣ<EFBFBD><C8A3><EFBFBD>9-2<><32>14
#define SV2_MAX_VSTRING_LEN 35
#define SV2_MAX_OBJREF_LEN 64
#define SV2_MAX_SVID_LEN 34
#define SV2_MAX_ASDU_NUM 10 //<2F><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>һ<EFBFBD><D2BB>apdu<64>а<EFBFBD><D0B0><EFBFBD>10<31><30>asdu
/**
* smv9-2<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
*/
typedef struct
{
ST_INT eth_index;
ST_INT timeout;
ST_UINT16 appid;
ST_CHAR svID[SV2_MAX_SVID_LEN+1]; /**< svID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
}GSV_SV2RECV_INI;
typedef struct
{
ST_UINT16 smpCnt; /**< <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_UINT32 confRev; /**< <20><><EFBFBD>øı<C3B8><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_UCHAR smpSynch; /**< <20><>0<EFBFBD><30>1<EFBFBD><31>2<EFBFBD><32><EFBFBD><EFBFBD>ֵ,<2C><>9-2le7.2.2 */
ST_UCHAR *ds_buf; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʽ<EFBFBD><CABD>9-2le figure5 */
ST_INT buf_len; /**< ds_buf<75>ij<EFBFBD><C4B3><EFBFBD> */
}SV2_ASDU_VAL;
typedef struct
{
ST_UCHAR *apdu;
ASN_1_UNIT smpCnt;
ASN_1_UNIT confRev;
ASN_1_UNIT smpSynch;
ASN_1_UNIT ds_buf;
ASN_1_UNIT svId;
}SV2_ASDU_AU;
typedef struct
{
char daRef[SV2_MAX_OBJREF_LEN+1];
char outVarName[SV2_MAX_OBJREF_LEN+1];
int entryIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>1<EFBFBD><31>ʼ
int userIndex; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
float rating; //<2F>ֵ<EEB6A8><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2012-03-30
} SV2_ASDU_USER;
/**
* smv9-2<EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
ST_INT eth_index; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ST_UINT16 appid;
ST_UINT16 reserved1;
ST_UINT16 reserved2;
ST_CHAR svId[SV2_MAX_SVID_LEN+1];
SV2_ASDU_VAL *asdu_vals;
SV2_ASDU_AU *val_asdu_au;
ST_UINT8 asdu_num; /**< apdu<64><75>asdu<64>ĸ<EFBFBD><C4B8><EFBFBD> */
ST_UINT16 apdu_len; /**< <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>Ļ<EFBFBD>asdu<64><75><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>仯 */
SV2_ASDU_USER *asdu_user; //hsj add 2012-03-27
int entryNumAct; //<2F><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9B3A4>
int entryNumDataset; //<2F><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>ܸ<EFBFBD><DCB8><EFBFBD>
int delayPoint; //<2F>ϲ<EFBFBD><CFB2><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ͣ<EFBFBD><CDA3>ӳٵ<D3B3><D9B5><EFBFBD>
int ctrlIndex; //<2F><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>0<EFBFBD><30>ʼ add 2012-05-10
}GSV_SV2RECV_CTRL;
/**
* <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>9-2<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>ݻش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
* sv2_ctrl<EFBFBD>е<EFBFBD>ds_buffs<EFBFBD><EFBFBD>ȡֵ
*/
typedef ST_VOID (*U_SMV2RECV_CALLBACK)(GSV_SV2RECV_CTRL *sv2_ctrl, ST_INT svIndex, ST_INT svNum, unsigned int recvTime );
ST_VOID smvapi_parse(const ST_UCHAR *msg, ST_INT msg_len, ST_INT svIndex, ST_INT svNum, unsigned int recvTime );
ST_VOID smvapi_recved_smv92(ST_UCHAR *buf, ST_INT svIndex, ST_INT svNum, unsigned int recvTime );
/** <20><>ʼ<EFBFBD><CABC>SMV<4D><56><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ƿ飬<C6BF><E9A3AC>61850ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>򣬻<EFBFBD><F2A3ACBB><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>*/
GSV_SV2RECV_INI * protect_get_smv_ini( unsigned int *smv92_recv_ini_num );
#if 1
int smvapi_release( void );
int smvapi_init( U_SMV2RECV_CALLBACK u_callback );
#endif
#ifdef __cplusplus
}
#endif
#endif