From 1247c3262a356dc9fd84c1c63aa6b95c1c3a27b6 Mon Sep 17 00:00:00 2001 From: "huanfeng.wang" Date: Wed, 18 Oct 2023 11:58:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9case4,=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=B8=A7=E5=A4=B4=E5=81=8F=E7=A7=BB=E8=AE=BE=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/case4/src/testcase.c | 176 ++++++++++++++++++++++++++++++++++---- 1 file changed, 161 insertions(+), 15 deletions(-) diff --git a/test/case4/src/testcase.c b/test/case4/src/testcase.c index 538f9ba..48a2406 100644 --- a/test/case4/src/testcase.c +++ b/test/case4/src/testcase.c @@ -38,13 +38,18 @@ #include "osp.h" -#define SPU_OAM_BASE_DELAY_SET_REQ 0x200 // 0x200 -#define SPU_OAM_BASE_DELAY_SET_RSP 0x201 -#define SPU_OAM_BASE_DELAY_QRY_REQ 0x202 -#define SPU_OAM_BASE_DELAY_QRY_RSP 0x203 -#define SPU_OAM_FIBER_DELAY_QRY_REQ 0x204 -#define SPU_OAM_FIBER_DELAY_QRY_RSP 0x205 -#define MSG_TRANSFER_OAM_MSG_TYPE 0x125 +#define SPU_OAM_BASE_DELAY_SET_REQ 0x200 // 0x200 +#define SPU_OAM_BASE_DELAY_SET_RSP 0x201 +#define SPU_OAM_BASE_DELAY_QRY_REQ 0x202 +#define SPU_OAM_BASE_DELAY_QRY_RSP 0x203 +#define SPU_OAM_FIBER_DELAY_QRY_REQ 0x204 +#define SPU_OAM_FIBER_DELAY_QRY_RSP 0x205 +#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; @@ -95,13 +100,31 @@ typedef struct tSpuOamFiberDelayQryRsp { uint32_t u32t14_val; } 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) { - OamMsgTransferHeader_t *header_ptr = NULL; - SpuOamBaseDelaySetRsp_t *oam_base_delay_set_rsp_ptr = NULL; - SpuOamBaseDelayQryRsp_t *oam_base_delay_qry_rsp_ptr = NULL; - SpuOamFiberDelayQryRsp_t *oam_fiber_delay_qry_rsp_ptr = NULL; - + OamMsgTransferHeader_t *header_ptr = NULL; + SpuOamBaseDelaySetRsp_t *oam_base_delay_set_rsp_ptr = NULL; + SpuOamBaseDelayQryRsp_t *oam_base_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->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->u8rsv[0], oam_fiber_delay_qry_rsp_ptr->u8rsv[1], oam_fiber_delay_qry_rsp_ptr->u32t14_val); 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; @@ -419,6 +451,114 @@ void oam_msg_fiber_deley_qry_test() 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) { @@ -435,13 +575,19 @@ int32_t test_case(uint32_t argc, int32_t* argvp) switch(guc_oam) { case 1: - oam_msg_base_delay_set_test(); + oam_msg_base_delay_set_test(); break; case 2: - oam_msg_base_delay_qry_test(); + oam_msg_base_delay_qry_test(); break; 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; } guc_oam = 0;