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

📄 nsmib.h

📁 包括EPA协议栈
💻 H
📖 第 1 页 / 共 2 页
字号:
			break;
		case 4:
			gns_sec_measure.authen_mode = payload[0];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 5:
			gns_sec_measure.encypt_mode = payload[0];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		default:
			if(idx > 5) {
				Write_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
				return EPA_SUBINDEX_ILLEGAL;
			}
			Write_Neg_Output(src_app, 1, 3, 0, msg_id, src_port, src_ip);
			return EPA_OBJ_UNWRITABLE;
	}
	return EPA_NO_ERR;
}

void SecPtclMan_Init(void);

__inline uint8 SecPtclMan_Read(uint16 idx, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
	OctetString payload;
	
	switch (idx) {
		case 0:
			h2n16(gns_sec_ptcl_man.obj_id, payload);
			h2n16(gns_sec_ptcl_man.revision, payload + 2);
			h2n16(gns_sec_ptcl_man.time_limit, payload + 4);
			payload[6] = gns_sec_ptcl_man.run_mode;
			payload[7] = gns_sec_ptcl_man.link_mode;
			payload[8] = gns_sec_ptcl_man.authen_mode;
			payload[9] = gns_sec_ptcl_man.Ptcl_type;
			Read_Pos_Output(src_app, payload, 10, msg_id, src_port, src_ip);
			break;
		case 2:
			h2n16(gns_sec_ptcl_man.revision, payload);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		case 3:
			h2n16(gns_sec_ptcl_man.time_limit, payload);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		case 4:
			payload[0] = gns_sec_ptcl_man.run_mode;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 5:
			payload[0] = gns_sec_ptcl_man.link_mode;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 6:
			payload[0] = gns_sec_ptcl_man.authen_mode;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 7:
			payload[0] = gns_sec_ptcl_man.Ptcl_type;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		default:
			Read_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
			return EPA_SUBINDEX_ILLEGAL;
	}
	return EPA_NO_ERR;
}

__inline uint8 SecPtclMan_Write(uint16 idx, OctetString payload, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
	switch (idx) {
		case 0:
			n2h16(payload + 4, &gns_sec_ptcl_man.time_limit);
			gns_sec_ptcl_man.run_mode = payload[6];
			gns_sec_ptcl_man.link_mode = payload[7];
			gns_sec_ptcl_man.authen_mode = payload[8];
			gns_sec_ptcl_man.Ptcl_type = payload[9];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 3:
			n2h16(payload + 4, &gns_sec_ptcl_man.time_limit);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 4:
			gns_sec_ptcl_man.run_mode = payload[6];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 5:
			gns_sec_ptcl_man.link_mode = payload[7];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 6:
			gns_sec_ptcl_man.authen_mode = payload[8];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 7:
			gns_sec_ptcl_man.Ptcl_type = payload[9];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		default:
			if(idx > 7) {
				Write_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
				return EPA_SUBINDEX_ILLEGAL;
			}
			Write_Neg_Output(src_app, 1, 3, 0, msg_id, src_port, src_ip);
			return EPA_OBJ_UNWRITABLE;
	}
	return EPA_NO_ERR;
}

void AuthenObj_Init(void);

__inline uint8 AuthenObj_Read(uint16 idx, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
	OctetString payload;
	
	switch (idx) {
		case 0:
			h2n16(gns_authen_obj.obj_id, payload);
			h2n16(gns_authen_obj.revision, payload + 2);
			memcpy(payload + 4, gns_authen_obj.sec_id, 32);
			h2n32(gns_authen_obj.stamp.secs, payload + 36);
			h2n32(gns_authen_obj.stamp.nasecs, payload + 40);
			payload[44] = gns_authen_obj.state;
			Read_Pos_Output(src_app, payload, 45, msg_id, src_port, src_ip);
			break;
		case 2:
			h2n16(gns_authen_obj.revision, payload);
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 3:
			memcpy(payload, gns_authen_obj.sec_id, 32);
			Read_Pos_Output(src_app, payload, 32, msg_id, src_port, src_ip);
			break;
		case 4:
			h2n32(gns_authen_obj.stamp.secs, payload);
			h2n32(gns_authen_obj.stamp.nasecs, payload + 4);
			Read_Pos_Output(src_app, payload, 8, msg_id, src_port, src_ip);
			break;
		case 5:
			payload[0] = gns_authen_obj.state;
			Read_Pos_Output(src_app, payload, 32, msg_id, src_port, src_ip);
			break;
		default:
			Read_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
			return EPA_SUBINDEX_ILLEGAL;
	}
	return EPA_NO_ERR;
}

__inline uint8 AuthenObj_Write(uint16 idx, OctetString payload, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
	if(idx > 5) {
		Write_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
		return EPA_SUBINDEX_ILLEGAL;
	}
	switch (idx) {
		case 0:
			n2h32(payload + 36, &(gns_authen_obj.stamp.secs));
			n2h32(payload + 40, (uint32*)&(gns_authen_obj.stamp.nasecs));
			gns_authen_obj.state = payload[44];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 4:
			n2h32(payload, &(gns_authen_obj.stamp.secs));
			n2h32(payload + 4, (uint32*)&(gns_authen_obj.stamp.nasecs));
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 5:
			gns_authen_obj.state = payload[0];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		default:
			Write_Neg_Output(src_app, 1, 3, 0, msg_id, src_port, src_ip);
			return EPA_OBJ_UNWRITABLE;
	}
	return EPA_NO_ERR;
}

void AcctrlObj_Init(void);

__inline uint8 AcctrlObj_Read(uint16 id, uint16 idx, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {
	OctetString payload;
	
	id = id - NSMIB_BASE_OBJID_ACCTRL_OBJ;
	if(id >= MIB_NUM_ACCTRL_OBJ) {
		Read_Neg_Output(src_app, 1, 1, 0, msg_id, src_port, src_ip);
		return EPA_OBJID_ILLEGAL;
	}
	switch(idx){
		case 0:
			h2n16(gns_acctrl_obj[id].obj_id, payload);
			h2n16(gns_acctrl_obj[id].local_app, payload + 2);
			h2n16(gns_acctrl_obj[id].local_obj, payload + 4);
			h2n16(gns_acctrl_obj[id].rmt_app, payload + 6);
			h2n16(gns_acctrl_obj[id].rmt_obj, payload + 8);
			payload[10] = gns_acctrl_obj[id].srv_op;
			payload[11] = gns_acctrl_obj[id].srv_role;
			h2n32(gns_acctrl_obj[id].rmt_ip, payload + 12);
			h2n32(gns_acctrl_obj[id].send_time_offset, payload + 16);
			payload[20] = gns_acctrl_obj[id].right;
			payload[21] = gns_acctrl_obj[id].group;
			h2n16(gns_acctrl_obj[id].psw, payload + 22);
			Read_Pos_Output(src_app, payload, 24, msg_id, src_port, src_ip);
			break;
		case 2:
			h2n16(gns_acctrl_obj[id].local_app, payload);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		case 3:
			h2n16(gns_acctrl_obj[id].local_obj, payload);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		case 4:
			h2n16(gns_acctrl_obj[id].rmt_app, payload);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		case 5:
			h2n16(gns_acctrl_obj[id].rmt_obj, payload);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		case 6:
			payload[0] = gns_acctrl_obj[id].srv_op;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 7:
			payload[0] = gns_acctrl_obj[id].srv_role;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 8:
			h2n32(gns_acctrl_obj[id].rmt_ip, payload);
			Read_Pos_Output(src_app, payload, 4, msg_id, src_port, src_ip);
			break;
		case 9:
			h2n32(gns_acctrl_obj[id].send_time_offset, payload);
			Read_Pos_Output(src_app, payload, 4, msg_id, src_port, src_ip);
			break;
		case 10:
			payload[20] = gns_acctrl_obj[id].right;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 11:
			payload[21] = gns_acctrl_obj[id].group;
			Read_Pos_Output(src_app, payload, 1, msg_id, src_port, src_ip);
			break;
		case 12:
			h2n16(gns_acctrl_obj[id].psw, payload + 22);
			Read_Pos_Output(src_app, payload, 2, msg_id, src_port, src_ip);
			break;
		default:
			Read_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
			return EPA_SUBINDEX_ILLEGAL;
	}
	return EPA_NO_ERR;
}

__inline uint8 AcctrlObj_Write(uint16 id, uint16 idx, OctetString payload, uint16 msg_id, uint16 src_app, uint16 src_port, uint32 src_ip) {

	id = id - NSMIB_BASE_OBJID_ACCTRL_OBJ;
	if(id >= MIB_NUM_ACCTRL_OBJ) {
		Write_Neg_Output(src_app, 1, 1, 0, msg_id, src_port, src_ip);
		return EPA_OBJID_ILLEGAL;
	}
	switch (idx) {
		case 0:
			n2h16(payload + 2, &gns_acctrl_obj[id].local_app);
			n2h16(payload + 4, &gns_acctrl_obj[id].local_obj);
			n2h16(payload + 6, &gns_acctrl_obj[id].rmt_app);
			n2h16(payload + 8, &gns_acctrl_obj[id].rmt_obj);
			gns_acctrl_obj[id].srv_op = payload[10];
			gns_acctrl_obj[id].srv_role = payload[11];
			n2h32(payload + 12, &gns_acctrl_obj[id].rmt_ip);
			n2h32(payload + 16, &gns_acctrl_obj[id].send_time_offset);
			gns_acctrl_obj[id].right = payload[20];
			gns_acctrl_obj[id].group = payload[21];
			n2h16(payload + 22, &gns_acctrl_obj[id].psw);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 2:
			n2h16(payload, &gns_acctrl_obj[id].local_app);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 3:
			n2h16(payload, &gns_acctrl_obj[id].local_obj);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 4:
			n2h16(payload, &gns_acctrl_obj[id].rmt_app);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 5:
			n2h16(payload, &gns_acctrl_obj[id].rmt_obj);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 6:
			gns_acctrl_obj[id].srv_op = payload[0];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 7:
			gns_acctrl_obj[id].srv_role = payload[0];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 8:
			n2h32(payload, &gns_acctrl_obj[id].rmt_ip);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 9:
			n2h32(payload, &gns_acctrl_obj[id].send_time_offset);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 10:
			gns_acctrl_obj[id].right = payload[20];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 11:
			gns_acctrl_obj[id].group = payload[21];
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		case 12:
			n2h16(payload + 22, &gns_acctrl_obj[id].psw);
			Write_Pos_Output(src_app, msg_id, src_port, src_ip);
			break;
		default:
			if (idx > 12) {
				Write_Neg_Output(src_app, 1, 2, 0, msg_id, src_port, src_ip);
				return EPA_SUBINDEX_ILLEGAL;
			}
			Write_Neg_Output(src_app, 1, 3, 0, msg_id, src_port, src_ip);
			return EPA_OBJ_UNWRITABLE;
	}
	return EPA_NO_ERR;
}

__inline void NSGetkey(Octet key[]) {
	memcpy(key, gns_key_man.key_tbl + gns_key_man.key_off, (gns_key_man.key_len > 16 ? 16 : gns_key_man.key_len));
}

#endif	// _NSMIB_H

⌨️ 快捷键说明

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