from pyutils import * def test_pkt_size(tc_id, size): genPkt = GenPkt() gen_file_def = "mac_tc%02d"%(tc_id, ) sm_idx = 0 tc_des = ("测试MAC的分包机制, %d = %d + 8(subheader+wkc) + 4(header) + 4(crc)\\n"%(size, size - 16) ) #------------------------------------------------------------------------- #>>>>>>普通数据包 sm1,2个读 genPkt.clean() genPkt.setPktType(0) #subPkt参数:索引、索引类型、地址、命令、长度、数据 #genPkt.addSubPkt(0x02, 0, 0x0830, 0x2, 56, None) genPkt.addSubPkt(0x01, 0, 0x00, 0xd, size - 16, None) #genPkt.addSubPkt(0x03, 0, 0xc0, 0x0, 64, None) #genPkt.addSubPkt(10, 2, 0x300, 0x2, 4, None) #genPkt.addSubPkt(11, 1, 0x300, 0x2, 4, None) sm_idx = 1 genPkt.addBeforeExc(genTcStartFrameCode(gen_file_def, tc_des)) genPkt.addAfterExc(genWriteTransLenCode(gen_file_def, sm_idx) +genWriteTransPktCode(gen_file_def, sm_idx) +genTrgTransPktCode(gen_file_def, sm_idx) +genReadAckPktCode(gen_file_def, sm_idx) +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(1, 0x74, False, 4) +genIFRwDataCode(2, 0x74, False, 4) +genIFRwDataCode(3, 0x74, False, 4) +genIFRwDataCode(4, 0x74, False, 4) +genMessageCode("--清除中断") +genIFRwDataCode(0, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(1, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(2, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(3, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genIFRwDataCode(4, 0x78, True, 4, [0xff, 0xff, 0xff, 0xff]) +genMessageCode("--读取中断") +genIFRwDataCode(0, 0x74, False, 4) +genIFRwDataCode(1, 0x74, False, 4) +genIFRwDataCode(2, 0x74, False, 4) +genIFRwDataCode(3, 0x74, False, 4) +genIFRwDataCode(4, 0x74, False, 4) +genMessageCode("--读写包状态") +genIFRwDataCode(0, 0x22, False, 2) +genIFRwDataCode(0, 0x22, True, 2, [0xff, 0xff]) +genIFRwDataCode(0, 0x22, False, 2) +genTcEndFrameCode(gen_file_def)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) return gen_file_def def tc1(): return test_pkt_size(1, 127) def tc2(): return test_pkt_size(2, 128) def tc3(): return test_pkt_size(3, 129) def tc4(): return test_pkt_size(4, 130) def tc5(): return test_pkt_size(5, 131) def tc6(): return test_pkt_size(6, 132) def tc7(): return test_pkt_size(7, 133)