def test_serialport_parse_input(): chip = Chip(2, 0) packets = chip.get_configuration_packets(Packet.CONFIG_READ_PACKET) fpackets = [SerialPort._format_UART(p) for p in packets] bytestream = b''.join(SerialPort.format_bytestream(fpackets)) result = SerialPort._parse_input(bytestream) expected = packets assert result == expected
def test_serialport_parse_input_dropped_stopstart_bytes(): chip = Chip(2, 2) packets = chip.get_configuration_packets(Packet.CONFIG_READ_PACKET) fpackets = [SerialPort._format_UART(p) for p in packets] bytestream = b''.join(SerialPort.format_bytestream(fpackets)) # Drop the first stop byte bytestream_faulty = bytestream[:9] + bytestream[11:] #skipped = [(slice(0, 18), bytestream_faulty[:18])] result = SerialPort._parse_input(bytestream_faulty) expected = packets[2:] assert result == expected
def _parse_configs_v2_4(row, asic_version, *args, **kwargs): key = Key(row['io_group'],row['io_channel'],row['chip_id']) if asic_version in ('1','2'): c = Chip(key,version=int(asic_version)) else: c = Chip(key,version=asic_version) d = dict() for i in range(c.config.num_registers): d[i] = row['registers'][i] endian = 'big' if asic_version == '1' else 'little' c.config.from_dict_registers(d, endian=endian) return c
def test_serialport_parse_input_dropped_data_byte(): # Test whether the parser can recover from dropped bytes chip = Chip(2, 0) packets = chip.get_configuration_packets(Packet.CONFIG_READ_PACKET) fpackets = [SerialPort._format_UART(p) for p in packets] bytestream = b''.join(SerialPort.format_bytestream(fpackets)) # Drop a byte in the first packet bytestream_faulty = bytestream[:5] + bytestream[6:] result = SerialPort._parse_input(bytestream_faulty) #skipped = [(slice(0, 9), bytestream_faulty[0:9])] expected = packets[1:] assert result == expected
def test_controller_write_capture(tmpdir): controller = Controller() controller.logger = HDF5Logger(directory=str(tmpdir), buffer_length=1) controller.logger.open() controller.chips[0] = Chip(2, 0) chip = controller.chips[0] controller.write_configuration(0, 0) packet = chip.get_configuration_packets(Packet.CONFIG_WRITE_PACKET)[0] assert len(controller.logger._buffer) == 1
def test_controller_write_capture(capfd): controller = Controller() controller.logger = StdoutLogger(buffer_length=1) controller.logger.open() controller.chips[0] = Chip(2, 0) chip = controller.chips[0] controller.write_configuration(0, 0) packet = chip.get_configuration_packets(Packet.CONFIG_WRITE_PACKET)[0] assert len(controller.logger._buffer) == 1
def test_serialport_format_bytestream(): chip = Chip(2, 0) packets = chip.get_configuration_packets(Packet.CONFIG_READ_PACKET) fpackets = [SerialPort._format_UART(p) for p in packets] result = SerialPort.format_bytestream(fpackets[:1]) assert result == fpackets[:1] result = SerialPort.format_bytestream(fpackets[:2]) assert result == [b''.join(fpackets[:2])] test_total_packets = 2000 result = SerialPort.format_bytestream(fpackets[:1] * test_total_packets) expected = [] total_packets = test_total_packets while total_packets >= int( SerialPort.max_write / SerialPort.fpga_packet_size): expected.append( b''.join(fpackets[:1] * int(SerialPort.max_write / SerialPort.fpga_packet_size))) total_packets -= int(SerialPort.max_write / SerialPort.fpga_packet_size) if total_packets > 0: expected.append(b''.join(fpackets[:1] * int(total_packets))) assert result == expected
def test_serialport_format_UART(): chip = Chip(2, 0) packet = chip.get_configuration_packets(Packet.CONFIG_READ_PACKET)[10] result = SerialPort._format_UART(packet) expected = b'\x73' + packet.bytes() + b'\x00\x71' assert result == expected
def chip(): c = Chip('1-2-3') return c