def write_register()

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


    def write_register(self, servo, register, value):
        """

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

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

        log.debug("[write_register] servo id:{0} reg:'{1}' reg_addr:{2}".format(
            sid, register, dxl_control[register]['address']))

        with self.lock:
            if dxl_control[register]['access'] == "r":
                raise IOError(
                    "register:'{0}' cannot be written".format(register))

            if dxl_control[register]['comm_bytes'] == 1:
                write1ByteTxRx(
                    self.port_num, self.protocol_version, sid,
                    dxl_control[register]['address'], value)
            elif dxl_control[register]['comm_bytes'] == 2:
                write2ByteTxRx(
                    self.port_num, self.protocol_version, sid,
                    dxl_control[register]['address'], value)

            last_result = getLastTxRxResult(
                self.port_num, self.protocol_version
            )
            if last_result != COMM_SUCCESS:
                printTxRxResult(self.protocol_version, last_result)
                log.error("[write_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("[write_register] Error:{0}".format(error_result))
            else:
                log.debug(
                    "[write_register] register:'{0}' written".format(register))

        return result