📄 fsmib.c
字号:
#include "ucos_ii.h"
#define EPAFSMAIB_GLOBALS
#include "fsmib.h"
#undef EPAFSMAIB_GLOBALS
#include "epa_module.h"
#include "ip_module.h"
#include <string.h>
void Initfsmihead()
{
gFSMIBHeadObj.ObjectID = FSMIBHEADER_BASE_OBJECTID;
gFSMIBHeadObj.ObjectID_FSConfigurationObject = FSCONO_BASE_OBJECTID;
gFSMIBHeadObj.ObjectID_FSCommunicationObject = FSCOMO_BASE_OBJECTID;
gFSMIBHeadObj.ObjectID_FSCommunicationfailureObject = FSCOMFAILUREO_BASE_OBJECTID;
gFSMIBHeadObj.Number_FSLinkObject = FSLINKOBJECT_AMOUNT;
gFSMIBHeadObj.FirstNumber_FSLinkObject = FSLO_BASE_OBJECTID;//第一个FSLinkObject;随便弄一个
gFSMIBHeadObj.Number_ConfiguredFSLinkObject = 0;
gFSMIBHeadObj.Number_UnConfigredFSLinkObject = FSLINKOBJECT_AMOUNT;
//填完了之后,应该懂得如何插入到EPAMIB里面去;
}
void Initfscfgobject()
{
gFSCfgObj.ObjectID = FSCONO_BASE_OBJECTID;//不晓得是哪个
gFSCfgObj.HighestSILSupported = FSLINKOBJECT_AMOUNT;
gFSCfgObj.ConfiguredSIL = 0x00;
gFSCfgObj.CRCCheckMode = 1;
//gFSCfgObj.PseudoRandomcode_RelationKeyGeneration[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
memset(&gFSCfgObj.PseudoRandomcode_RelationKeyGeneration, 0, 16);
gFSCfgObj.Interval_RelationKeyUpdate = 100;//表示100天更新一次,这个不管.
//填完了之后,应该懂得如何插入到EPAMIB里面去;
}
void Initfscomobject()
{
gFSComObj.ObjectID = FSCOMO_BASE_OBJECTID;//
gFSComObj.State = SAFETYCOM_CLOSE;
gFSComObj.RemoteIPAddress = inetaddr(128, 128, 2, 181);
gFSComObj.RelationKey = 0x0000;
//gFSComObj.MaxResponseTime
gFSComObj.ESN = 0;
gFSComObj.MaxResponseTime = 1000;
}
void Initfscomfailure()
{
gFSComFailureObj.ObjectID = FSCOMFAILUREO_BASE_OBJECTID;
gFSComFailureObj.DeviceFailure = 0;
gFSComFailureObj.FailureReportState = 0;
gFSComFailureObj.FailureReportConfiguration = 1;
gFSComFailureObj.FailureAcknowledgeState = 0;
gFSComFailureObj.FailureAcknowledgeConfiguration = 1;
memset(&gFSComFailureObj.FailureReportPriority, 0, 16);
gFSComFailureObj.MaxResponseTime = 0;
}
void Initfslinkobject()
{
int index;
for(index = 0; index < FSLINKOBJECT_AMOUNT; ++index) {
gFSLinkObj[index].ObjectID = FSLO_BASE_OBJECTID + index;
gFSLinkObj[index].LocalAppID = 20;
gFSLinkObj[index].LocalObjectID = 1;
gFSLinkObj[index].RemoteAppID = 50;
gFSLinkObj[index].RemoteObjectID = 1;
gFSLinkObj[index].ServiceOperation = EVS_DISTRIBUTE;
gFSLinkObj[index].ServiceRole = 0;
gFSLinkObj[index].RemoteIPAddress = gNetIf.bcaddr;
gFSLinkObj[index].SendTimeOffset = 0;
gFSLinkObj[index].ErrorCountLimit = 0;
gFSLinkObj[index].ErrorCount = 0;
gFSLinkObj[index].ESN = 0;
gFSLinkObj[index].LRSN = 0;
gFSLinkObj[index].TolerableTimeDelay = 0;
gFSLinkObj[index].RelationKey = 0;
}
}
void Update_RelationKey(void)
{
uint32 temp;
uint16 i;
// temp = gFSCfgObj.PseudoRandomcode_RelationKeyGeneration[0] << 24
// | gFSCfgObj.PseudoRandomcode_RelationKeyGeneration[1] << 16
// | gFSCfgObj.PseudoRandomcode_RelationKeyGeneration[2] << 8
// | gFSCfgObj.PseudoRandomcode_RelationKeyGeneration[3];
gFSComObj.RelationKey = temp;
for(i = 0; i < FSLINKOBJECT_AMOUNT; i ++)
{
gFSLinkObj[i].RelationKey = temp;
}
}
uint8 FSMIB_Get(uint16 ObjectID, uint8 *pFSObj) {
switch(ObjectID) {
case FSMIBHEADER_BASE_OBJECTID:
memcpy(pFSObj, &gFSMIBHeadObj, sizeof(FSManagementInfoHeaderObject));
break;
case FSCOMO_BASE_OBJECTID:
memcpy(pFSObj, &gFSComObj, sizeof(FSCommunicationObject));
break;
case FSCONO_BASE_OBJECTID:
memcpy(pFSObj, &gFSCfgObj, sizeof(FSConfigurationObject));
break;
case FSCOMFAILUREO_BASE_OBJECTID:
memcpy(pFSObj,&gFSComFailureObj,sizeof(FSCommunicationFailureObject));
break;
default:
if((ObjectID >= FSLO_BASE_OBJECTID) &&(ObjectID <= FSLO_BASE_OBJECTID)) {
memcpy(pFSObj, &gFSLinkObj[ObjectID - FSLO_BASE_OBJECTID], sizeof(FSLinkObject));
}
else {
return (1);
}
}
return 0;
}
uint8 FSMIB_Set(uint16 ObjectID, uint8 *pFSObj) {
switch(ObjectID) {
case FSMIBHEADER_BASE_OBJECTID:
memcpy(&gFSMIBHeadObj, pFSObj, sizeof(FSManagementInfoHeaderObject));
break;
case FSCOMO_BASE_OBJECTID:
memcpy(&gFSComObj, pFSObj, sizeof(FSCommunicationObject));
break;
case FSCONO_BASE_OBJECTID:
memcpy(&gFSCfgObj, pFSObj, sizeof(FSConfigurationObject));
break;
case FSLO_BASE_OBJECTID:
memcpy(&gFSLinkObj, pFSObj, sizeof(FSLinkObject));
break;
case FSCOMFAILUREO_BASE_OBJECTID:
memcpy(&gFSComFailureObj, pFSObj, sizeof(FSCommunicationFailureObject));
break;
default:
if((ObjectID >= FSLO_BASE_OBJECTID) &&(ObjectID <= FSLO_BASE_OBJECTID)) {
memcpy(&gFSLinkObj[ObjectID - FSLO_BASE_OBJECTID], pFSObj, sizeof(FSLinkObject));
}
else {
return (1);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -