修改case4,增加帧头偏移设置,查询

This commit is contained in:
huanfeng.wang 2023-10-18 11:58:45 +08:00
parent 305e5255ba
commit 1247c3262a

View File

@ -38,13 +38,18 @@
#include "osp.h" #include "osp.h"
#define SPU_OAM_BASE_DELAY_SET_REQ 0x200 // 0x200 #define SPU_OAM_BASE_DELAY_SET_REQ 0x200 // 0x200
#define SPU_OAM_BASE_DELAY_SET_RSP 0x201 #define SPU_OAM_BASE_DELAY_SET_RSP 0x201
#define SPU_OAM_BASE_DELAY_QRY_REQ 0x202 #define SPU_OAM_BASE_DELAY_QRY_REQ 0x202
#define SPU_OAM_BASE_DELAY_QRY_RSP 0x203 #define SPU_OAM_BASE_DELAY_QRY_RSP 0x203
#define SPU_OAM_FIBER_DELAY_QRY_REQ 0x204 #define SPU_OAM_FIBER_DELAY_QRY_REQ 0x204
#define SPU_OAM_FIBER_DELAY_QRY_RSP 0x205 #define SPU_OAM_FIBER_DELAY_QRY_RSP 0x205
#define MSG_TRANSFER_OAM_MSG_TYPE 0x125 #define SPU_OAM_FRAME_HEAD_OFFSET_REQ 0x206
#define SPU_OAM_FRAME_HEAD_OFFSET_RSP 0x207
#define SPU_OAM_FRAME_HEAD_OFFSET_QRY_REQ 0x208
#define SPU_OAM_FRAME_HEAD_OFFSET_QRY_RSP 0x209
#define MSG_TRANSFER_OAM_MSG_TYPE 0x125
extern uint8_t guc_oam; extern uint8_t guc_oam;
@ -95,13 +100,31 @@ typedef struct tSpuOamFiberDelayQryRsp {
uint32_t u32t14_val; uint32_t u32t14_val;
} SpuOamFiberDelayQryRsp_t; } SpuOamFiberDelayQryRsp_t;
typedef struct tSpuOamFrameHeadOffsetReq {
uint16_t u16frame_head_offset;
uint8_t u8rsv[2];
} SpuOamFrameHeadOffsetReq_t;
typedef struct tSpuOamFrameHeadOffsetRsp {
uint8_t u8result;
uint8_t u8rsv[3];
} SpuOamFrameHeadOffsetRsp_t;
typedef struct tSpuOamFrameHeadOffsetQryRsp {
uint8_t u8result;
uint8_t u8rsv;
uint16_t u16frame_head_offset;
}SpuOamFrameHeadOffsetQryRsp_t;
uint32_t rx_callback_oam_spu(const char* buf,uint32_t payloadSize) uint32_t rx_callback_oam_spu(const char* buf,uint32_t payloadSize)
{ {
OamMsgTransferHeader_t *header_ptr = NULL; OamMsgTransferHeader_t *header_ptr = NULL;
SpuOamBaseDelaySetRsp_t *oam_base_delay_set_rsp_ptr = NULL; SpuOamBaseDelaySetRsp_t *oam_base_delay_set_rsp_ptr = NULL;
SpuOamBaseDelayQryRsp_t *oam_base_delay_qry_rsp_ptr = NULL; SpuOamBaseDelayQryRsp_t *oam_base_delay_qry_rsp_ptr = NULL;
SpuOamFiberDelayQryRsp_t *oam_fiber_delay_qry_rsp_ptr = NULL; SpuOamFiberDelayQryRsp_t *oam_fiber_delay_qry_rsp_ptr = NULL;
SpuOamFrameHeadOffsetRsp_t *oam_frame_head_offset_rsp_ptr = NULL;
SpuOamFrameHeadOffsetQryRsp_t *oam_frame_head_offset_qry_rsp_ptr = NULL;;
header_ptr = (OamMsgTransferHeader_t *)buf; header_ptr = (OamMsgTransferHeader_t *)buf;
header_ptr->msgLen = payloadSize; header_ptr->msgLen = payloadSize;
@ -131,6 +154,15 @@ uint32_t rx_callback_oam_spu(const char* buf,uint32_t payloadSize)
oam_fiber_delay_qry_rsp_ptr->u8fiber_port, oam_fiber_delay_qry_rsp_ptr->u8result, \ oam_fiber_delay_qry_rsp_ptr->u8fiber_port, oam_fiber_delay_qry_rsp_ptr->u8result, \
oam_fiber_delay_qry_rsp_ptr->u8rsv[0], oam_fiber_delay_qry_rsp_ptr->u8rsv[1], oam_fiber_delay_qry_rsp_ptr->u32t14_val); oam_fiber_delay_qry_rsp_ptr->u8rsv[0], oam_fiber_delay_qry_rsp_ptr->u8rsv[1], oam_fiber_delay_qry_rsp_ptr->u32t14_val);
break; break;
case SPU_OAM_FRAME_HEAD_OFFSET_RSP:
oam_frame_head_offset_rsp_ptr = (SpuOamFrameHeadOffsetRsp_t *)(buf+sizeof(OamMsgTransferHeader_t));
printf("SPU_OAM_FRAME_HEAD_OFFSET_RSP u8result:%u\n", oam_frame_head_offset_rsp_ptr->u8result);
break;
case SPU_OAM_FRAME_HEAD_OFFSET_QRY_RSP:
oam_frame_head_offset_qry_rsp_ptr = (SpuOamFrameHeadOffsetQryRsp_t *)(buf+sizeof(OamMsgTransferHeader_t));
printf("SPU_OAM_FRAME_HEAD_OFFSET_QRY_RSP u8result:%u u16frame_head_offset:0x%x\n", oam_frame_head_offset_qry_rsp_ptr->u8result, oam_frame_head_offset_qry_rsp_ptr->u16frame_head_offset);
break;
} }
return payloadSize; return payloadSize;
@ -419,6 +451,114 @@ void oam_msg_fiber_deley_qry_test()
return; return;
} }
void oam_msg_frame_head_offset_test()
{
uint32_t size = 24;
char* buf;
uint32_t availableSize,offset;
OamMsgTransferHeader_t stOamMsg;
SpuOamFrameHeadOffsetReq_t stOamFrameHeadOffset;
uint16_t cu_flag = C_PLANE;
HandleId_t handler;
handler.port_id = 0;
handler.inst_id = 0;
handler.type_id = OAM;
int32_t ret = msg_transfer_send_start(handler.value, cu_flag);
/************C_PLANE***************/
ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset);
if ( SUCCESS != ret) {
UCP_PRINT_ERROR("oam_msg_test call msg_transfer_alloc_msg err.");
return ;
}
stOamMsg.cellIndex = 0;
stOamMsg.numMsg = 1;
stOamMsg.msgType = SPU_OAM_FRAME_HEAD_OFFSET_REQ;
stOamMsg.msgLen = size;
stOamFrameHeadOffset.u16frame_head_offset = 0x12ab;
//memset(buf, 0, size);
//memcpy((uint8_t *)stOamMsg.msgData, (uint8_t *)&stOamDelayReq, sizeof(SpuOamBaseDelaySetReq_t));
memcpy(buf, (uint8_t *)&stOamMsg, sizeof(OamMsgTransferHeader_t));
memcpy((uint8_t *)(buf+sizeof(OamMsgTransferHeader_t)), (uint8_t *)&stOamFrameHeadOffset, sizeof(SpuOamFrameHeadOffsetReq_t));
ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size);
if ( SUCCESS != ret) {
UCP_PRINT_ERROR("msg_transfer_send_msg send error\r\n");
}
msg_transfer_send_end(handler.value,cu_flag);
printf("\n-----------------------------------------------------------\n");
for (int i = 0; i < size;i++)
{
printf("%02x ", buf[i]);
if ((i & 0x7) == 0x7)
{
printf("\n");
}
}
return;
}
void oam_msg_frame_head_offset_qry_test()
{
uint32_t size = 24;
char* buf;
uint32_t availableSize,offset;
OamMsgTransferHeader_t stOamMsg;
uint16_t cu_flag = C_PLANE;
HandleId_t handler;
handler.port_id = 0;
handler.inst_id = 0;
handler.type_id = OAM;
int32_t ret = msg_transfer_send_start(handler.value, cu_flag);
/************C_PLANE***************/
ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset);
if ( SUCCESS != ret) {
UCP_PRINT_ERROR("oam_msg_test call msg_transfer_alloc_msg err.");
return ;
}
stOamMsg.cellIndex = 0;
stOamMsg.numMsg = 1;
stOamMsg.msgType = SPU_OAM_FRAME_HEAD_OFFSET_QRY_REQ;
stOamMsg.msgLen = size;
//memset(buf, 0, size);
//memcpy((uint8_t *)stOamMsg.msgData, (uint8_t *)&stOamDelayReq, sizeof(SpuOamBaseDelaySetReq_t));
memcpy(buf, (uint8_t *)&stOamMsg, sizeof(OamMsgTransferHeader_t));
ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size);
if ( SUCCESS != ret) {
UCP_PRINT_ERROR("msg_transfer_send_msg send error\r\n");
}
msg_transfer_send_end(handler.value,cu_flag);
printf("\n-----------------------------------------------------------\n");
for (int i = 0; i < size;i++)
{
printf("%02x ", buf[i]);
if ((i & 0x7) == 0x7)
{
printf("\n");
}
}
return;
}
int32_t test_case(uint32_t argc, int32_t* argvp) int32_t test_case(uint32_t argc, int32_t* argvp)
{ {
@ -435,13 +575,19 @@ int32_t test_case(uint32_t argc, int32_t* argvp)
switch(guc_oam) switch(guc_oam)
{ {
case 1: case 1:
oam_msg_base_delay_set_test(); oam_msg_base_delay_set_test();
break; break;
case 2: case 2:
oam_msg_base_delay_qry_test(); oam_msg_base_delay_qry_test();
break; break;
case 3: case 3:
oam_msg_fiber_deley_qry_test(); oam_msg_fiber_deley_qry_test();
break;
case 4:
oam_msg_frame_head_offset_test();
break;
case 5:
oam_msg_frame_head_offset_qry_test();
break; break;
} }
guc_oam = 0; guc_oam = 0;