📄 epa.h
字号:
//-----------------------------------------------------------------------------
// EPA.H
//
//-----------------------------------------------------------------------------
#ifndef _EPA_H
#define _EPA_H
#include "global.h"
#ifdef EPA_GLOBALS
#define EPA_EXTERN
#else
#define EPA_EXTERN extern
#endif // EPA_GLOBALS
#define EPA_MSG_ID (++gMsg_Id)
#define EPA_MIB_APP_ID (0)
#define EPA_RESERVED_VALUE (0x20)
#define EPA_COM_TYPE (0x00)
#define NS_COM_TYPE (0x01)
#define EPA_SRV_MASK (0x3F)
#define OCTET_STRING_LEN (256)
#define VISUAL_STRING_LEN (32)
#define EPA_NS_HEAD_LEN (16)
#define EPA_FS_HEAD_LEN (16)
#define PROTOCOL_EPA (42)
#define PROTOCOL_EPA_FB (50)
#define PROTOCOL_EPA_NSFB (PROTOCOL_EPA_FB + EPA_NS_HEAD_LEN)
#define PROTOCOL_EPA_FSFB (PROTOCOL_EPA_FB + EPA_FS_HEAD_LEN)
#define PROTOCOL_EPA_SSFB (PROTOCOL_EPA_FB + EPA_NS_HEAD_LEN + EPA_FS_HEAD_LEN)
#define EPA_SERVICEID_MASK (0x3F)
#define EPA_DEFAULT_ANN_INTERVAL (5000)
#define EPA_DEFAULT_DEVID "cqupt_epa_ver1.0_ai_0170 "
#define EPA_DEFAULT_PDTAG "AI_CONTROL "
#define EPA_DEFAULT_FB_NAME "DEFALUT FB "
#define EPA_DEFAULT_DOMAIN_NAME "DEFALUT DOMAIN "
#define EPA_DEV_TYPE (0x00)
#define NS_DEV_TYPE (0x01)
#define FS_DEV_TYPE (0x02)
// 函数调用返回值
#define EPA_NO_ERR (0)
#define EPA_APPID_ILLEGAL (0xA0)
#define EPA_OBJID_ILLEGAL (0xA1)
#define EPA_SUBINDEX_ILLEGAL (0xA2)
#define EPA_LENGTH_ERROR (0xA3)
#define EPA_OBJ_UNWRITABLE (0xA4)
#define EPA_NO_LINK (0xA5)
#define EPA_REQUIRE_ACCESS (0xA6)
#define EPA_RIGHT_ILLEGAL (0xA7)
#define EPA_PKTVERIFY_ERR (0xA8)
// 通信类型定
#define EPA_ST_COM_TYPE (0x00)
#define EPA_FS_COM_TYPE (0x01)
#define EPA_NS_COM_TYPE (0x02)
// 服务号定义
#define NPMA_TAG (0x20)
#define ENPMA_TAG (0x21)
#define EMS_FINDTAGQUERY (1)
#define EMS_FINDTAGREPLY (2)
#define EMS_GETATTRIB (3)
#define EMS_GETATTRIB_POS (3 + 64)
#define EMS_GETATTRIB_NEG (3 + 128)
#define EMS_ANNUNCIATION (196)
#define EMS_SETATTRIB (5)
#define EMS_SETATTRIB_POS (5 + 64)
#define EMS_SETATTRIB_NEG (5 + 128)
#define EMS_CLEARATTRIB (6)
#define EMS_CLEARATTRIB_POS (6 + 64)
#define EMS_CLEARATTRIB_NEG (6 + 128)
#define EDS_DOMAINDOWNLOAD (10)
#define EDS_DOMAINDOWNLOAD_POS (10 + 64)
#define EDS_DOMAINDOWNLOAD_NEG (10 + 128)
#define EDS_DOMAINUPLOAD (11)
#define EDS_DOMAINUPLOAD_POS (11 + 64)
#define EDS_DOMAINUPLOAD_NEG (11 + 128)
#define EVS_READ (12)
#define EVS_READ_POS (12 + 64)
#define EVS_READ_NEG (12 + 128)
#define EVS_WRITE (13)
#define EVS_WRITE_POS (13 + 64)
#define EVS_WRITE_NEG (13 + 128)
#define EVS_DISTRIBUTE (206)
#define EES_EVENT_NOTI (15)
#define EES_ACK_NOTI (16)
#define EES_ACK_NOTI_POS (16 + 64)
#define EES_ACK_NOTI_NEG (16 + 128)
#define EES_ALTER_MONITOR (17)
#define EES_ALTER_MONITOR_POS (17 + 64)
#define EES_ALTER_MONITOR_NEG (17 + 128)
// 报文长度定义,不含头部
#define LEN_EPAHEADER (8)
#define LEN_ERR_DES (36)
#define LEN_FINDTAGQUERY (70)
#define LEN_FINDTAGREPLY (72)
#define LEN_GETATTRIB (4)
#define LEN_GETATTRIB_POS (82)
#define LEN_GETATTRIB_NEG (4 + LEN_ERR_DES)
#define LEN_ANNUNCIATION (80)
#define LEN_SETATTRIB (80)
#define LEN_SETATTRIB_POS (5)
#define LEN_SETATTRIB_NEG (4 + LEN_ERR_DES)
#define LEN_CLEARATTRIB (68)
#define LEN_CLEARATTRIB_POS (4)
#define LEN_CLEARATTRIB_NEG (4 + LEN_ERR_DES)
#define LEN_DOMAINDOWNLOAD(N) (12 + N)
#define LEN_DOMAINDOWNLOAD_POS (2)
#define LEN_DOMAINDOWNLOAD_NEG (4 + LEN_ERR_DES)
#define LEN_DOMAINUPLOAD (8)
#define LEN_DOMAINUPLOAD_POS(N) (8 + N)
#define LEN_DOMAINUPLOAD_NEG (4 + LEN_ERR_DES)
#define LEN_READ (8)
#define LEN_READ_POS(N) (4 + N)
#define LEN_READ_NEG (4 + LEN_ERR_DES)
#define LEN_WRITE(N) (8 + N)
#define LEN_WRITE_POS (2)
#define LEN_WRITE_NEG (4 + LEN_ERR_DES)
#define LEN_DISTRIBUTE(N) (4 + N)
#define LEN_EVENT_NOTI(N) (8 + N)
#define LEN_ACK_NOTI (6)
#define LEN_ACK_NOTI_POS (2)
#define LEN_ACK_NOTI_NEG (4 + LEN_ERR_DES)
#define LEN_ALTER_MONITOR (8)
#define LEN_ALTER_MONITOR_POS (2)
#define LEN_ALTER_MONITOR_NEG (4 + LEN_ERR_DES)
// 状态定义
// Device State Defined
#define STATE_DEV_NOADDRESS (0x00)
#define STATE_DEV_UNCONFIGURED (0x01)
#define STATE_DEV_CONFIGURED (0x02)
#define STATE_DEV_UNINITIALIZED (0xFF)
// Device Redundancy State
#define STATE_DEVRDN_ACTIVE (0)
#define STATE_DEVRDN_UNACTIVE (1)
// Domain State
#define STATE_DOMAIN_EXISTENT (0)
#define STATE_DOMAIN_DOWNLOADING (1)
#define STATE_DOMAIN_UPLOADING (2)
#define STATE_DOMAIN_READY (3)
#define STATE_DOMAIN_INUSE (4)
typedef unsigned char OctetString[OCTET_STRING_LEN];
typedef unsigned char VisualString[VISUAL_STRING_LEN];
typedef unsigned long TimeDiff;
typedef struct {
uint16 year;
uint8 month;
uint8 date;
uint8 hour;
uint8 minute;
uint16 millisec;
} BinaryDate, *PBinaryDate;
typedef struct {
uint16 date;
uint32 millisec;
} TIMEDIFF, *PTIMEDIFF;
typedef struct {
uint32 src_ip;
uint16 src_port;
uint8 srv_id;
uint8 com_type;
uint16 length;
uint16 src_app;
uint16 dst_app;
uint16 dst_obj;
uint16 sub_idx;
uint16 msg_id;
uint16 ex_para[2];
OctetString data;
} EPAMsg, *PEPAMsg;
EPA_EXTERN OS_MEM* gpEPAMsgMCB;
EPA_EXTERN OS_EVENT* gpEPAMsgQ;
EPA_EXTERN OS_EVENT* gpEPAMsgSem;
EPA_EXTERN uint16 gMsg_Id;
EPA_EXTERN PNetIF gDefNI;
extern char* gErr_Des[2][4];
__inline PEPAMsg GetEPAMsg(void) {
CpuSr sr;
uint8 err;
PEPAMsg pmsg;
SpinLock(sr);
OSSemPend(gpEPAMsgSem, 0, &err);
pmsg = (PEPAMsg)OSMemGet(gpEPAMsgMCB, &err);
SpinUnLock(sr);
pmsg->srv_id = 0;
return (pmsg);
}
__inline void FreeEPAMsg(PEPAMsg pmsg) {
CpuSr sr;
SpinLock(sr);
OSSemPost(gpEPAMsgSem);
OSMemPut(gpEPAMsgMCB, (void*)pmsg);
SpinUnLock(sr);
}
void EPAInit(void);
void EPAOutput(PSock psock, uint8 srv_id, uint8 com_type, uint16 msg_id);
#endif // _EPA_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -