📄 fsmib.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 + -