def read_register()

in groups/master/ggd/servo/servode.py [0:0]


    def read_register(self, servo, register):
        """

        :param servo: a Servo object or an integer servo_id
        :param register: the register from which to read a value
        :return: a dict containing:
            { "value": <the value read from the register>,
              "status": <a dict containing the status bit states>
            }
        """
        value = ''
        result = {
            "value": value,
            "status": {}
        }

        if isinstance(servo, Servo):
            sid = servo.servo_id
        else:
            sid = servo

        with self.lock:
            if dxl_control[register]['comm_bytes'] == 1:
                value = read1ByteTxRx(
                    self.port_num, self.protocol_version, sid,
                    dxl_control[register]['address']
                )
            elif dxl_control[register]['comm_bytes'] == 2:
                value = read2ByteTxRx(
                    self.port_num, self.protocol_version, sid,
                    dxl_control[register]['address']
                )

            last_result = getLastTxRxResult(
                self.port_num, self.protocol_version
            )
            if last_result != COMM_SUCCESS:
                printTxRxResult(self.protocol_version, last_result)
                log.error("[read_register] Comm unsuccessful:{0}".format(
                    last_result))

            # Comms might be successful but we could still be in an error
            # state. So, check for error packet after every read
            error_result = getLastRxPacketError(
                self.port_num, self.protocol_version)
            if error_result:
                result['status'] = self._result_to_status(error_result)
                printRxPacketError(self.protocol_version, error_result)
                log.error("[read_register] Error:{0}".format(error_result))
            else:
                log.debug(
                    "[read_register] error_result:{0}".format(error_result))

        result['value'] = value
        return result