Exemple #1
0
 def write_reg_raw(self, addr, enc_val):
     addr = protocol.get_addr_for_reg(addr)
     b = bytearray([protocol.REG_WRITE_REQUEST, addr, 0, 0])
     self.dev.spi_master_single_write(b)
     log.debug("reg w req: addr: {:3} val: {}".format(
         addr, utils.fmt_enc_val(enc_val)))
     self.dev.spi_master_single_write(enc_val)
Exemple #2
0
 def write_reg_raw(self, addr, enc_val, do_log=True):
     addr = protocol.get_addr_for_reg(addr)
     b = bytearray([protocol.REG_WRITE_REQUEST, addr, 0, 0])
     self.dev.spi_master_single_write(b)
     if do_log:
         log.debug("reg w req: addr: 0x{:02x} val: {}".format(addr, fmt_enc_val(enc_val)))
     self.dev.spi_master_single_write(enc_val)
Exemple #3
0
 def read_reg_raw(self, addr):
     addr = protocol.get_addr_for_reg(addr)
     b = bytearray([protocol.REG_READ_REQUEST, addr, 0, 0])
     self.dev.spi_master_single_write(b)
     enc_val = self.dev.spi_master_single_read(4)
     log.debug("reg r res: addr: {:3} val: {}".format(
         addr, utils.fmt_enc_val(enc_val)))
     return enc_val
Exemple #4
0
    def _handshake(self):
        self._write_reg("main_control", "stop", expect_response=False)

        exp_addr = protocol.get_addr_for_reg("main_control")
        exp_enc_val = protocol.encode_reg_val("main_control", "stop")
        exp_reg_val = protocol.UnpackedRegVal(exp_addr, exp_enc_val)
        exp_packet = protocol.UnpackedRegWriteResponse(exp_reg_val)
        exp_frame = protocol.insert_packet_into_frame(exp_packet)
        self._link.recv_until(exp_frame)

        idn_reg = self._read_reg("product_id")
        if idn_reg != protocol.EXPECTED_ID:
            raise ClientError("unexpected product id")
Exemple #5
0
    def _handshake(self):
        self._write_reg("main_control", "stop", expect_response=False)

        exp_addr = protocol.get_addr_for_reg("main_control")
        exp_enc_val = protocol.encode_reg_val("main_control", "stop")
        exp_reg_val = protocol.RegVal(exp_addr, exp_enc_val)
        exp_packet = protocol.RegWriteResponse(exp_reg_val)
        exp_frame = protocol.insert_packet_into_frame(exp_packet)
        self._link.recv_until(exp_frame)

        idn_reg = self._read_reg("product_id")
        possible_ids = [product.id for product in protocol.PRODUCTS]
        if idn_reg not in possible_ids:
            raise ClientError("unexpected product id")
    def _write_reg_raw(self, addr, enc_val, expect_response=True):
        addr = protocol.get_addr_for_reg(addr)
        rrv = protocol.UnpackedRegVal(addr, enc_val)
        req = protocol.UnpackedRegWriteRequest(rrv)
        self._send_packet(req)

        log.debug("sent reg w req: addr: {:3} val: {}".format(addr, self._fmt_enc_val(enc_val)))

        if expect_response:
            res = self._recv_packet()
            if not isinstance(res, protocol.UnpackedRegWriteResponse):
                raise ClientError("got unexpected packet (expected reg write response)")
            if res.reg_val != rrv:
                raise ClientError("reg write failed")

            log.debug("recv reg w res: ok")
    def _read_reg_raw(self, addr):
        addr = protocol.get_addr_for_reg(addr)
        req = protocol.UnpackedRegReadRequest(addr)
        self._send_packet(req)

        log.debug("sent reg r req: addr: {:3}".format(addr))

        res = self._recv_packet()
        if not isinstance(res, protocol.UnpackedRegReadResponse):
            raise ClientError("got unexpected type of frame")

        enc_val = res.reg_val.val

        log.debug("recv reg r res: addr: {:3} val: {}".format(addr, self._fmt_enc_val(enc_val)))

        return enc_val
def test_unpack_stream_data_segment():
    rv_addr = ptcl.get_addr_for_reg(test_mode_reg)
    rv_enc_val = ptcl.encode_reg_val(test_mode_reg, 123)
    rvs = [ptcl.RegVal(rv_addr, rv_enc_val)]
    buffer = bytearray(b'\x12\x34\x56')
    unp_stream_data = ptcl.StreamData(rvs, buffer)

    pkd_stream_data_segment = bytearray()
    pkd_stream_data_segment.append(ptcl.STREAM_BUFFER)
    pkd_stream_data_segment.extend(b"\x03\x00")
    pkd_stream_data_segment.extend(buffer)
    pkd_stream_data_segment.append(ptcl.STREAM_RESULT_INFO)
    pkd_stream_data_segment.extend(b"\x05\x00")
    pkd_stream_data_segment.append(rv_addr)
    pkd_stream_data_segment.extend(rv_enc_val)

    unpacked = ptcl.unpack_stream_data_segment(pkd_stream_data_segment)
    assert unpacked == unp_stream_data
Exemple #9
0
 def _write_reg_raw(self, addr, enc_val):
     addr = protocol.get_addr_for_reg(addr)
     self.__cmd_proc("write_reg_raw", addr, enc_val)
Exemple #10
0
 def _read_reg_raw(self, addr):
     addr = protocol.get_addr_for_reg(addr)
     enc_val = self.__cmd_proc("read_reg_raw", addr)
     return enc_val
Exemple #11
0
 def read_buf_raw(self, addr, size):
     addr = protocol.get_addr_for_reg(addr)
     buffer = self.__cmd_proc("read_buf_raw", addr, size)
     return buffer
def test_get_addr_for_reg():
    assert ptcl.get_addr_for_reg(test_reg) == test_reg.addr
    assert ptcl.get_addr_for_reg(123) == 123