⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 epa.h

📁 包括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 + -