diff options
Diffstat (limited to 'host/tests/common/chdr_resource/hardcoded_packets.py')
-rw-r--r-- | host/tests/common/chdr_resource/hardcoded_packets.py | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/host/tests/common/chdr_resource/hardcoded_packets.py b/host/tests/common/chdr_resource/hardcoded_packets.py new file mode 100644 index 000000000..c79d6f9cb --- /dev/null +++ b/host/tests/common/chdr_resource/hardcoded_packets.py @@ -0,0 +1,192 @@ +# +# Copyright 2020 Ettus Research, a National Instruments Brand +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +from uhd import chdr +from chdr_resource import rfnoc_packets_data +from chdr_resource import rfnoc_packets_ctrl_mgmt + +CHDR_W = chdr.ChdrWidth.W64 + +def make_control_packet0(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.CTRL + header.length = 24 + header.dst_epid = 2 + payload = chdr.CtrlPayload() + payload.src_epid = 1 + payload.set_data([0]) + payload.op_code = chdr.CtrlOpCode.READ + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_control_packet1(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.CTRL + header.length = 24 + header.dst_epid = 1 + payload = chdr.CtrlPayload() + payload.src_epid = 2 + payload.is_ack = True + payload.set_data([0x12C60100]) + payload.op_code = chdr.CtrlOpCode.READ + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_mgmt_packet0(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.MGMT + header.length = 48 + header.seq_num = 2 + payload = chdr.MgmtPayload() + payload.set_header(1, (1 << 8) | (0 << 0), chdr.ChdrWidth.W64) + hop1 = chdr.MgmtHop() + hop1.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP)) + payload.add_hop(hop1) + hop2 = chdr.MgmtHop() + hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.INFO_REQ, chdr.MgmtOpNodeInfo(0, 0, 0, 0))) + hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.RETURN)) + payload.add_hop(hop2) + hop3 = chdr.MgmtHop() + hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP)) + payload.add_hop(hop3) + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_mgmt_packet1(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.MGMT + header.length = 48 + header.seq_num = 3 + payload = chdr.MgmtPayload() + payload.set_header(1, (1 << 8) | (0 << 0), chdr.ChdrWidth.W64) + hop1 = chdr.MgmtHop() + hop1.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP)) + payload.add_hop(hop1) + hop2 = chdr.MgmtHop() + hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.CFG_WR_REQ, chdr.MgmtOpCfg(0x1, 0x2))) + hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.RETURN)) + payload.add_hop(hop2) + hop3 = chdr.MgmtHop() + hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP)) + payload.add_hop(hop3) + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_mgmt_packet2(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.MGMT + header.length = 56 + header.seq_num = 6 + payload = chdr.MgmtPayload() + payload.set_header(1, (1 << 8) | (0 << 0), chdr.ChdrWidth.W64) + hop1 = chdr.MgmtHop() + hop1.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP)) + payload.add_hop(hop1) + hop2 = chdr.MgmtHop() + hop2.add_op(chdr.MgmtOp(chdr.MgmtOpCode.SEL_DEST, chdr.MgmtOpSelDest(3))) + payload.add_hop(hop2) + hop3 = chdr.MgmtHop() + hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.INFO_REQ, 0)) + hop3.add_op(chdr.MgmtOp(chdr.MgmtOpCode.RETURN, 0)) + payload.add_hop(hop3) + hop4 = chdr.MgmtHop() + hop4.add_op(chdr.MgmtOp(chdr.MgmtOpCode.NOP, 0)) + payload.add_hop(hop4) + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_strs_packet0(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.STRS + header.length = 40 + header.dst_epid = 2 + payload = chdr.StrsPayload() + payload.capacity_bytes = 163840 + payload.src_epid = 3 + payload.capacity_pkts = 16777215 + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_strs_packet1(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.STRS + header.length = 40 + header.dst_epid = 2 + payload = chdr.StrsPayload() + payload.capacity_bytes = 163840 + payload.src_epid = 3 + payload.xfer_count_pkts = 1 + payload.capacity_pkts = 16777215 + payload.xfer_count_bytes = 8000 + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_strc_packet0(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.STRC + header.length = 24 + header.dst_epid = 3 + payload = chdr.StrcPayload() + payload.num_pkts = 16777215 + payload.op_code = chdr.StrcOpCode.INIT + payload.src_epid = 2 + payload.num_bytes = 5120 + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_strc_packet1(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.STRC + header.length = 24 + header.dst_epid = 3 + payload = chdr.StrcPayload() + payload.num_pkts = 21 + payload.op_code = chdr.StrcOpCode.RESYNC + payload.src_epid = 2 + payload.num_bytes = 168000 + return chdr.ChdrPacket(CHDR_W, header, payload) + +def make_data_packet0(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.DATA_WITH_TS + header.length = 8000 + header.dst_epid = 3 + header.seq_num = 1 + timestamp = 0x7C40C83 + data_src = rfnoc_packets_data.peer1_9 + data = bytes(data_src[(2 * 8):]) + return chdr.ChdrPacket(CHDR_W, header, data, timestamp) + +def make_data_packet1(): + header = chdr.ChdrHeader() + header.pkt_type = chdr.PacketType.DATA_WITH_TS + header.length = 4252 + header.dst_epid = 3 + header.eob = True + header.seq_num = 1716 + timestamp = 0x21452B97 + data_src = rfnoc_packets_data.eob_packet + data = bytes(data_src[(2 * 8):]) + return chdr.ChdrPacket(CHDR_W, header, data, timestamp) + +packets = [ + (make_control_packet0(), rfnoc_packets_ctrl_mgmt.peer0_19), + (make_control_packet1(), rfnoc_packets_ctrl_mgmt.peer1_17), + (make_mgmt_packet0(), rfnoc_packets_ctrl_mgmt.peer0_2), + (make_mgmt_packet1(), rfnoc_packets_ctrl_mgmt.peer0_3), + (make_mgmt_packet2(), rfnoc_packets_ctrl_mgmt.peer0_6), + (make_strs_packet0(), rfnoc_packets_data.peer0_5), + (make_strs_packet1(), rfnoc_packets_data.peer0_8), + (make_strc_packet0(), rfnoc_packets_data.peer1_5), + (make_strc_packet1(), rfnoc_packets_data.peer1_29), + (make_data_packet0(), rfnoc_packets_data.peer1_9), + (make_data_packet1(), rfnoc_packets_data.eob_packet) +] + +names = [ + "Control_Packet_0", + "Control_Packet_1", + "Management_Packet_0", + "Management_Packet_1", + "Management_Packet_2", + "Stream_Status_Packet_0", + "Stream_Status_Packet_1", + "Stream_Command_Packet_0", + "Stream_Command_Packet_1", + "Data_Packet_0", + "Data_Packet_1" +] |