📄 mib.c
字号:
#include "tcpip.h"
#include "epa.h"
#include <string.h>
#include "variable.h"
#define MIB_GLOBALS
#include "mib.h"
#undef MIB_GLOBALS
#include "macro.h"
#if FS_MODULE_EN > 0
#include "fsmib.h"
#endif // FS_MODULE_EN
#if NS_MODULE_EN > 0
#include "nsmib.h"
#endif // FS_MODULE_EN
uint8 MIBInit(void) {
MIBHdr_Init();
DevDes_Init();
ClkSync_Init();
MaxRsp_Init();
ComSch_Init();
DevApp_Init();
FBAppHdr_Init();
FBApp_Init();
DomainAppHdr_Init();
DomainApp_Init();
LinkObjHdr_Init();
LinkObj_Init();
#if FS_MODULE_EN > 0
#endif // FS_MODULE_EN
#if NS_MODULE_EN > 0
NSMIBHdr_Init();
KeyMan_Init();
SecMeasure_Init();
SecPtclMan_Init();
AuthenObj_Init();
AcctrlObj_Init();
#endif // FS_MODULE_EN
return EPA_NO_ERR;
}
void MIBHdr_Init(void) {
gmib_hdr.obj_id = MIB_BASE_OBJID_MIBHDR;
gmib_hdr.ver = 0;
}
void DevDes_Init(void) {
gdev_des.obj_id = MIB_BASE_OBJID_DEVDES;
gdev_des.res[0] = EPA_RESERVED_VALUE;
gdev_des.res[1] = EPA_RESERVED_VALUE;
memcpy(gdev_des.dev_id, EPA_DEFAULT_DEVID, VISUAL_STRING_LEN); // 设备标识
memcpy(gdev_des.pd_tag, EPA_DEFAULT_PDTAG, VISUAL_STRING_LEN); // 设备标识
gdev_des.act_ip = gDefNI->ip;
gdev_des.dev_type = EPA_DEV_TYPE | NS_DEV_TYPE;
gdev_des.status = 1;
gdev_des.dev_ver = 0;
gdev_des.ann_interval = EPA_DEFAULT_ANN_INTERVAL;
gdev_des.ann_ver = 0;
gdev_des.dev_r_state = 0;
gdev_des.dev_r_num = 1;
gdev_des.lan_r_port = 0;
gdev_des.max_r_num = 2;
gdev_des.dup_tag_detected = 0;
gAnnMacroCnt = (gMacroCyc ? EPA_DEFAULT_ANN_INTERVAL / gMacroCyc : 50);
}
void ClkSync_Init(void) {
gclk_sync.obj_id = MIB_BASE_OBJID_CLKSYNC;
gclk_sync.clk_syn_protocol = 1;
gclk_sync.res[0] = EPA_RESERVED_VALUE;
gclk_sync.res[1] = EPA_RESERVED_VALUE;
gclk_sync.pri_time_srver = 0;
gclk_sync.sec_time_srver = 0;
gclk_sync.req_time_out = 0;
gclk_sync.req_time_interval = 5000;
gclk_sync.cap_time_sync = 0;
gclk_sync.tar_time_sync = 0;
gclk_sync.cur_time.year = 0;
gclk_sync.cur_time.month = 0;
gclk_sync.cur_time.date = 0;
gclk_sync.cur_time.hour = 0;
gclk_sync.cur_time.minute = 0;
gclk_sync.cur_time.millisec = 0;
gclk_sync.std_time_diff.date = 0;
gclk_sync.std_time_diff.millisec = 0;
}
void MaxRsp_Init(void) {
gmax_rsp.obj_id = MIB_BASE_OBJID_MAXRSPTIME;
gmax_rsp.res[0] = EPA_RESERVED_VALUE;
gmax_rsp.res[1] = EPA_RESERVED_VALUE;
gmax_rsp.max_rsp_time = 0;
}
void ComSch_Init(void) {
gcom_sch.obj_id = MIB_BASE_OBJID_COMSCHEDULE;
gmax_rsp.res[0] = EPA_RESERVED_VALUE;
gmax_rsp.res[1] = EPA_RESERVED_VALUE;
gcom_sch.com_macro_cyc = 100;
gcom_sch.non_prd_offset = 100;
gcom_sch.macro_cyc_ver = 1;
}
void DevApp_Init(void) {
gdev_app.obj_id = MIB_BASE_OBJID_DEVAPP;
gdev_app.xddl_ver = 1;
}
void FBAppHdr_Init(void) {
gfb_app_hdr.obj_id = MIB_BASE_OBJID_FBAPPHDR;
gfb_app_hdr.num_fb_obj = MIB_NUM_FBAPP;
gfb_app_hdr.first_fb_obj = MIB_BASE_OBJID_FBAPP;
}
void FBApp_Init(void) {
#if MIB_NUM_FBAPP > 0
uint8 idx;
for(idx = 0; idx < MIB_NUM_FBAPP; ++idx) {
gfb_app[idx].obj_id = MIB_BASE_OBJID_FBAPP + idx;
gfb_app[idx].res[0] = EPA_RESERVED_VALUE;
gfb_app[idx].res[1] = EPA_RESERVED_VALUE;
memcpy(gfb_app[idx].name, EPA_DEFAULT_FB_NAME, VISUAL_STRING_LEN);
gfb_app[idx].type = 0;
gfb_app[idx].max_instantion = 0;
gfb_app[idx].exec_time = 0;
gfb_app[idx].first_instantion = 0;
}
#endif // MIB_NUM_FBAPP
}
void DomainAppHdr_Init(void) {
gdomain_app_hdr.obj_id = MIB_BASE_OBJID_DOMAINHDR;
gdomain_app_hdr.num_domain_obj = MIB_NUM_DOMAINAPP;
gdomain_app_hdr.first_domain_obj = MIB_BASE_OBJID_DOMAINAPP;
gdomain_app_hdr.cfged_domain_obj = 0;
gdomain_app_hdr.uncfged_domain_obj = MIB_NUM_DOMAINAPP;
}
void DomainApp_Init(void) {
#if MIB_NUM_DOMAINAPP > 0
uint8 idx;
for(idx = 0; idx < MIB_NUM_DOMAINAPP; ++idx) {
gdomain_app[idx].obj_id = MIB_BASE_OBJID_DOMAINAPP + idx;
gdomain_app[idx].domain_obj_id = 0;
gdomain_app[idx].cfg_status = 0;
gdomain_app[idx].res[0] = EPA_RESERVED_VALUE;
gdomain_app[idx].res[1] = EPA_RESERVED_VALUE;
gdomain_app[idx].res[2] = EPA_RESERVED_VALUE;
memcpy(gdomain_app[idx].name, EPA_DEFAULT_DOMAIN_NAME, VISUAL_STRING_LEN);
}
#endif // MIB_NUM_DOMAINAPP
}
void LinkObjHdr_Init(void) {
glink_obj_hdr.obj_id = MIB_BASE_OBJID_LINKOBJHDR;
glink_obj_hdr.num_link_obj = MIB_NUM_LINKOBJ;
glink_obj_hdr.first_link_obj = MIB_BASE_OBJID_LINKOBJ;
glink_obj_hdr.cfged_link_obj = 0;
glink_obj_hdr.uncfged_link_obj = MIB_NUM_LINKOBJ;
}
void LinkObj_Init(void) {
#if MIB_NUM_LINKOBJ > 0
uint8 idx;
for(idx = 0; idx < MIB_NUM_LINKOBJ; ++idx) {
glink_obj[idx].obj_id = MIB_BASE_OBJID_LINKOBJ;
glink_obj[idx].local_app = 0;
glink_obj[idx].local_obj = 0;
glink_obj[idx].rmt_app = 0;
glink_obj[idx].rmt_obj = 0;
glink_obj[idx].srv_op = 0;
glink_obj[idx].srv_role = 0xFF;
glink_obj[idx].rmt_ip = 0;
glink_obj[idx].send_time_offset = 0;
}
#endif // MIB_NUM_LINKOBJ
}
uint8 MIBRead(uint16 obj_id, uint16 sub_idx, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
#if NS_MODULE_EN > 0 && MIB_NUM_ACCTRL_OBJ > 0
if(obj_id >= NSMIB_BASE_OBJID_ACCTRL_OBJ && obj_id < (NSMIB_BASE_OBJID_ACCTRL_OBJ + MIB_NUM_ACCTRL_OBJ)) {
return (AcctrlObj_Read(obj_id, sub_idx, msg_id, src_app, src_port, src_ip));
}
#endif // NS_MODULE_EN
#if FS_MODULE_EN > 0 && FSMIB_NUM_LINKOBJ > 0
if(obj_id >= FSMIB_BASE_OBJID_LINKOBJ && obj_id < (FSMIB_BASE_OBJID_LINKOBJ + FSMIB_NUM_LINKOBJ) {
return (FSLinkObj_Read(obj_id, sub_idx, msg_id, src_app, src_port, src_ip));
}
#endif // FS_MODULE_EN
if(obj_id >= MIB_BASE_OBJID_LINKOBJ && obj_id < (MIB_BASE_OBJID_LINKOBJ + MIB_NUM_LINKOBJ)) {
return (LinkObj_Read(obj_id, sub_idx, msg_id, src_app, src_port, src_ip));
}
switch(obj_id) {
case MIB_BASE_OBJID_MIBHDR:
return (MIBHdr_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_DEVDES:
return (DevDes_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_CLKSYNC:
return (ClkSync_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_MAXRSPTIME:
return (MaxRsp_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_COMSCHEDULE:
return (ComSch_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_DEVAPP:
return (DevApp_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_FBAPPHDR:
return (FBAppHdr_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_DOMAINHDR:
return (DomainAppHdr_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_LINKOBJHDR:
return (LinkObjHdr_Read(sub_idx, msg_id, src_app, src_port, src_ip));
#if NS_MODULE_EN > 0
case NSMIB_BASE_OBJID_MIBHDR:
return (NSMIBHdr_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_KEY_MAN:
return (KeyMan_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_SEC_MEASURE:
return (SecMeasure_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_PTCL_MAN:
return (SecPtclMan_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_AUTHEN:
return (AuthenObj_Read(sub_idx, msg_id, src_app, src_port, src_ip));
#endif // NS_MODULE_EN
#if FS_MODULE_EN > 0
case FSMIB_BASE_OBJID_MIBHDR:
return (FSMIBHdr_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_CFGOBJ:
return (FSCfg_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_COMOBJ:
return (FSCom_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_FAILURE:
return (FSComFail_Read(sub_idx, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_ALERT:
return (FSAlert_Read(sub_idx, msg_id, src_app, src_port, src_ip));
#endif // FS_MODULE_EN
default:
if(obj_id >= MIB_BASE_OBJID_FBAPP && obj_id < (MIB_BASE_OBJID_FBAPP + MIB_NUM_FBAPP)) {
return (FBApp_Read(obj_id, sub_idx, msg_id, src_app, src_port, src_ip));
}
if(obj_id >= MIB_BASE_OBJID_DOMAINAPP && obj_id < (MIB_BASE_OBJID_DOMAINAPP + MIB_NUM_DOMAINAPP)) {
return (DomainApp_Read(obj_id, sub_idx, msg_id, src_app, src_port, src_ip));
}
Read_Neg_Output(src_app, 1, 1, 0, msg_id, src_port, src_ip);
return EPA_OBJID_ILLEGAL;
}
return EPA_NO_ERR;
}
uint8 MIBWrite(uint16 obj_id, uint16 sub_idx, OctetString payload, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
#if NS_MODULE_EN > 0 && MIB_NUM_ACCTRL_OBJ > 0
if(obj_id >= NSMIB_BASE_OBJID_ACCTRL_OBJ && obj_id < (NSMIB_BASE_OBJID_ACCTRL_OBJ + MIB_NUM_ACCTRL_OBJ)) {
return (AcctrlObj_Write(obj_id, sub_idx, payload, msg_id, src_app, src_port, src_ip));
}
#endif // NS_MODULE_EN
#if FS_MODULE_EN > 0 && FSMIB_NUM_LINKOBJ > 0
if(obj_id >= FSMIB_BASE_OBJID_LINKOBJ && obj_id < (FSMIB_BASE_OBJID_LINKOBJ + FSMIB_NUM_LINKOBJ) {
return (FSLinkObj_Write(obj_id, sub_idx, payload, msg_id, src_app, src_port, src_ip);
}
#endif // FS_MODULE_EN
if(obj_id >= MIB_BASE_OBJID_LINKOBJ && obj_id < (MIB_BASE_OBJID_LINKOBJ + MIB_NUM_LINKOBJ)) {
return (LinkObj_Write(obj_id, sub_idx, payload, msg_id, src_app, src_port, src_ip));
}
switch(obj_id) {
case MIB_BASE_OBJID_MIBHDR:
return (MIBHdr_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_DEVDES:
return (DevDes_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_CLKSYNC:
return (ClkSync_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_MAXRSPTIME:
return (MaxRsp_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_COMSCHEDULE:
return (ComSch_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_DEVAPP:
return (DevApp_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_FBAPPHDR:
return (FBAppHdr_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_DOMAINHDR:
return (DomainAppHdr_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case MIB_BASE_OBJID_LINKOBJHDR:
return (LinkObjHdr_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
#if NS_MODULE_EN > 0
case NSMIB_BASE_OBJID_MIBHDR:
return (NSMIBHdr_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_KEY_MAN:
return (KeyMan_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_SEC_MEASURE:
return (SecMeasure_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_PTCL_MAN:
return (SecPtclMan_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case NSMIB_BASE_OBJID_AUTHEN:
return (AuthenObj_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
#endif // FS_MODULE_EN
#if FS_MODULE_EN > 0
case FSMIB_BASE_OBJID_MIBHDR:
return (FSMIBHdr_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_CFGOBJ:
return (FSCfg_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_COMOBJ:
return (FSCom_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_FAILURE:
return (FSComFail_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
case FSMIB_BASE_OBJID_ALERT:
return (FSAlert_Write(sub_idx, payload, msg_id, src_app, src_port, src_ip));
#endif // FS_MODULE_EN
default:
if(obj_id >= MIB_BASE_OBJID_FBAPP && obj_id < (MIB_BASE_OBJID_FBAPP + MIB_NUM_FBAPP)) {
return (FBApp_Write(obj_id, sub_idx, payload, msg_id, src_app, src_port, src_ip));
}
if(obj_id >= MIB_BASE_OBJID_DOMAINAPP && obj_id < (MIB_BASE_OBJID_DOMAINAPP + MIB_NUM_DOMAINAPP)) {
return (DomainApp_Write(obj_id, sub_idx, payload, msg_id, src_app, src_port, src_ip));
}
Write_Neg_Output(src_app, 1, 1, 0, msg_id, src_port, src_ip);
return EPA_OBJID_ILLEGAL;
}
return EPA_NO_ERR;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -