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

📄 fsmib.h

📁 包括EPA协议栈
💻 H
字号:
#ifndef  _EPAFSMIB_H
#define  _EPAFSMIB_H

#include "global.h"

#ifdef EPAFSMAIB_GLOBALS
	#define EPAFSMAIB_EXTERN
#else
	#define EPAFSMAIB_EXTERN extern
#endif	// EPAFSMIB_GLOBALS

//Failure type
#define DATABIT_ERROR 0x01
#define REPETITION_ERROR 0x02
#define LOSS_ERROR 0x04
#define INSERTION_ERROR 0x08
#define INCORRECTSEQUENCE_ERROR 0x10
#define MASQUERADE_ERROR 0x20
#define UNACCEPTABLE_ERROR 0x40
#define ADDRESSING_ERROR 0x80

// Service role
#define SERVICEROLE_PUB 0
#define SERVICEROLE_SUB 1

// Confirmed service status
#define SAFETYCOM_CLOSE 0
#define SAFETYCOM_OPEN 1
#define SAFETYCOM_REQUESTED 2
#define SAFETYCOM_REQUESTING 3

// ObjectID
#define FSLINKOBJECT_AMOUNT            (6)
#define FSMIBHEADER_BASE_OBJECTID      (11)
#define FSCONO_BASE_OBJECTID           (1000)
#define FSCOMO_BASE_OBJECTID           (1001)
#define FSCOMFAILUREO_BASE_OBJECTID    (1002)
#define FSLO_BASE_OBJECTID             (1100)

typedef	unsigned short BitString;

typedef struct {
	uint16 ObjectID;
	uint16 LocalAppID;
	uint16 LocalObjectID;
	uint16 RemoteAppID;
	uint16 RemoteObjectID;
	uint8  ServiceOperation;
	uint8  ServiceRole;
	uint32 RemoteIPAddress;
	uint32 SendTimeOffset;
	uint8  ErrorCountLimit;
	uint8  ErrorCount;
	uint16 ESN;
	uint16 LRSN;
	uint16 TolerableTimeDelay;
	uint32 RelationKey;
} FSLinkObject;

typedef struct {
	uint16 ObjectID;
	uint16 ObjectID_FSConfigurationObject;
	uint16 ObjectID_FSCommunicationObject;
	uint16 ObjectID_FSCommunicationfailureObject;
	uint16 Number_FSLinkObject;
	uint16 FirstNumber_FSLinkObject;
	uint16 Number_ConfiguredFSLinkObject;
	uint16 Number_UnConfigredFSLinkObject;
} FSManagementInfoHeaderObject;

typedef struct {
	uint16 ObjectID;
	uint16 HighestSILSupported;
	uint16 ConfiguredSIL;
	uint16 CRCCheckMode;
	OctetString PseudoRandomcode_RelationKeyGeneration[16];
	uint32 Interval_RelationKeyUpdate;
} FSConfigurationObject;

typedef struct {
	uint16  ObjectID;
	uint16  State;
	uint32  RemoteIPAddress;
	uint32  RelationKey;
	uint32  MaxResponseTime;
	uint16  ESN;
} FSCommunicationObject;

typedef struct {
	uint16    ObjectID;
	BitString DeviceFailure;
	BitString FailureReportState;
	BitString FailureReportConfiguration;
	BitString FailureAcknowledgeState;
	BitString FailureAcknowledgeConfiguration;
	uint16    FailureReportPriority[16];
	uint32    MaxResponseTime;
} FSCommunicationFailureObject;

typedef struct {
	uint16 ObjectID;
	uint8  Alerttype;
	uint8  Messagetype;
	uint32  FailureDeviceIPAddress; 
	uint8  Priority;
//	BinaryDate Timestamp;
} FSAlertObject;

EPAFSMAIB_EXTERN FSManagementInfoHeaderObject   gFSMIBHeadObj;
EPAFSMAIB_EXTERN FSConfigurationObject          gFSCfgObj;
EPAFSMAIB_EXTERN FSCommunicationObject		    gFSComObj;
EPAFSMAIB_EXTERN FSCommunicationFailureObject   gFSComFailureObj;
EPAFSMAIB_EXTERN FSLinkObject                   gFSLinkObj[FSLINKOBJECT_AMOUNT];
EPAFSMAIB_EXTERN FSAlertObject                  gFSAlertObj;

void Initfsmihead(void);      // 初始化功能安全管理信息库头部对象
void Initfscfgobject(void);   // 初始化功能安全组态对象
void Initfscomobject(void);   // 初始化功能安全通信对象
void Initfscomfailure(void);  // 初始化功能安全通信失败对象
void Initfslinkobject(void);  // 初始化所有功能安全链接对象

__inline uint16 GetFSLinkObjNum(void)   
{
    return (gFSMIBHeadObj.Number_FSLinkObject);
}       

__inline uint16 GetFSFirstLinkObj(void)
{
    return (gFSMIBHeadObj.FirstNumber_FSLinkObject);
}    

__inline uint16 GetFSCfgLinkObjNum(void)
{
    return (gFSMIBHeadObj.Number_ConfiguredFSLinkObject);
}

__inline uint16 GetFSComState(void) {
	return (gFSComObj.State);
}

__inline uint32 GetFSComRmtIP(void) {
	return (gFSComObj.RemoteIPAddress);
}

__inline uint16 GetFSComESN(void) {
	return (gFSComObj.ESN);
}

__inline uint32 GetFSComKey(void) {
	return (gFSComObj.RelationKey);
}

__inline void SetFSComState(uint16 state) {
	gFSComObj.State = state;
}

__inline void SetFSComESN(uint16 esn) {
	gFSComObj.ESN = esn;
}

__inline void SetFSComRmtIP(uint32 rmtip) {
	gFSComObj.RemoteIPAddress = rmtip;
}

__inline uint16 GetFSCfgCrcMode(void) {
	return (gFSCfgObj.CRCCheckMode);
}

void Update_RelationKey(void);
uint8 FSMIB_Get(uint16 ObjectID, uint8 *pFSObj);
uint8 FSMIB_Set(uint16 ObjectID, uint8 *pFSObj);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -