from pyutils import * def tc1(): genPkt = GenPkt() gen_file_def = "broadcast_tc01" sm_idx = 0 tc_des = "发送广播数据包,广播读取,广播读回的数据是四个从站对应寄存器位与的结果。" #------------------------------------------------------------------------- #>>>>>>广播读 genPkt.clean() genPkt.setPktType(0) #subPkt参数:索引、索引类型、地址、命令、长度、数据 genPkt.addSubPkt(0x0, 0, 0xc0, 0xd, 4, b"\0"*4) genPkt.addSubPkt(0x1, 0, 0xc0, 0x0, 4, b"\0"*4) genPkt.addSubPkt(0x2, 0, 0xc0, 0x0, 4, b"\0"*4) genPkt.addSubPkt(0x3, 0, 0xc0, 0x0, 4, b"\0"*4) genPkt.addSubPkt(0x4, 0, 0xc0, 0x0, 4, b"\0"*4) genPkt.addSubPkt(0x100, 0, 0xc0, 0xd, 4, b"\0"*4) genPkt.addSubPkt(0x100, 0, 0xc0, 0xd, 4, b"\0"*4) genPkt.addSubPkt(0x100, 0, 0xc0, 0xd, 4, b"\0"*4) genPkt.addSubPkt(0x100, 0, 0xc0, 0xd, 4, b"\0"*4) #gen_file_def = "bc_r_pkt" sm_idx = 0 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) +genTcEndFrameCode(gen_file_def)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) return gen_file_def def tc2(): genPkt = GenPkt() gen_file_def = "broadcast_tc02" sm_idx = 0 tc_des = "广播写入,写入SM0,32个字符长度的数据。" #------------------------------------------------------------------------- #>>>>>>广播写 genPkt.clean() genPkt.setPktType(0) sm_size = 32 #subPkt参数:索引、索引类型、地址、命令、长度、数据 data = [0, ] * 2 data[0] = sm_size & 0xff data[1] = (sm_size >> 8) & 0xff genPkt.addSubPkt(2000, 0, 0x0302, 0xe, 2, data) data = list(range(1, sm_size + 1)) genPkt.addSubPkt(2000, 0, 0x0800, 0xe, sm_size, data) sm_idx = 0 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("--读取SM的状态") +genIFRwDataCode(1, 0x300, False, 0x4) +genIFRwDataCode(2, 0x300, False, 0x4) +genIFRwDataCode(3, 0x300, False, 0x4) +genIFRwDataCode(4, 0x300, False, 0x4) +genSlvSMReadData(1, 0, sm_size) +genSlvSMReadData(2, 0, sm_size) +genSlvSMReadData(3, 0, sm_size) +genSlvSMReadData(4, 0, sm_size) +genTcEndFrameCode(gen_file_def)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) return gen_file_def def tc3(): genPkt = GenPkt() gen_file_def = "broadcast_tc03" sm_idx = 0 tc_des = "广播读写,读写0xc0开始的链路寄存器组。所有从站设备采用位与策略往报文中输入。" #------------------------------------------------------------------------- #>>>>>>广播读写 genPkt.clean() genPkt.setPktType(0) #subPkt参数:索引、索引类型、地址、命令、长度、数据 data = bytearray(b"\0"*100) genPkt.addSubPkt(1024, 0, 0x00c0, 0xf, 4, data) sm_idx = 0 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) +genTcEndFrameCode(gen_file_def)) genPkt.gen("./generated/shin/%s.vh"%(gen_file_def, ), 1) return gen_file_def