예제 #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)
예제 #2
0
    def _get_next(self):
        packet = self._recv_packet(allow_recovery_skip=True)

        if not isinstance(packet, protocol.UnpackedStreamData):
            raise ClientError("got unexpected type of frame")

        info = {}
        for addr, enc_val in packet.result_info:
            try:
                reg = protocol.get_reg(addr, self._mode)
                val = protocol.decode_reg_val(reg, enc_val)
            except protocol.ProtocolError:
                log.info("got unknown reg val in result info")
                log.info("addr: {}, value: {}".format(
                    addr, utils.fmt_enc_val(enc_val)))
            else:
                info[reg.name] = val

        data = protocol.decode_output_buffer(packet.buffer, self._mode,
                                             self._num_subsweeps)

        if self.squeeze:
            return info, data
        else:
            return [info], np.expand_dims(data, 0)
예제 #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
예제 #4
0
    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, utils.fmt_enc_val(enc_val)))

        return enc_val
예제 #5
0
    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, utils.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")