Пример #1
0
    def test_scan_ids(self):
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        # test for no response
        self.reset()
        # verify ping failed
        istream.append(make_packet(1, 0, []))
        self.assertTrue(iface.scan_ids(1, 10) == [1])
Пример #2
0
    def test_action(self):
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        self.reset()
        # verify outgoing action command
        iface.action()
        self.assertEqual(
            istream.obuffer, ''.join(
                (map(chr, [0xff, 0xff, 0xfe, 0x2, 0x5, 0xfa]))))
Пример #3
0
    def test_write_register(self):
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        self.reset()

        # verify write as per variant of spec
        iface.write_register(0x1, 0x3, 0x1, True)
        self.assertEqual(
            istream.obuffer, ''.join(
                (map(chr, [0xff, 0xff, 0x1, 0x4, 0x4, 0x3, 0x1, 0xf2]))))
Пример #4
0
 def test_read_registers(self):
     """ Full range test for read registers"""
     istream = MockStream()
     iface = dynamixel_network.DynamixelInterface(istream)
     iface.dynamixel_error += self.error_handler
     self.reset()
     istream.append(make_packet(1, 0, [0x20]))
     # dummy packet full range of eeprom
     istream.append(make_packet(1, 0, range(0, 50)))
     result = iface.read_registers(1, AX12.ModelNumber, AX12.Punch)
     # assert only the number of registers are returned
     self.assertEqual(len(result), len(AX12.values()))
Пример #5
0
    def test_write_data(self):
        """ Test writing data to eeprom """
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        self.reset()
        # verify write as per Spec
        iface.write_data(dynamixel_network.DynamixelInterface.BROADCAST_ID,
                         0x3, [0x1], False)
        self.assertEqual(
            istream.obuffer, ''.join(
                (map(chr, [0xff, 0xff, 0xfe, 0x4, 0x3, 0x3, 0x1, 0xf6]))))
Пример #6
0
    def test_read_register(self):
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        # test for no response
        self.reset()
        # verify read data
        istream.append(make_packet(1, 0, [0x20]))
        result = iface.read_register(1, 0x2b)
        self.assertEqual(
            istream.obuffer, ''.join(
                (map(chr, [0xff, 0xff, 0x1, 0x4, 0x2, 0x2b, 0x1, 0xcc]))))
        self.assertEqual(result, 0x20)
Пример #7
0
    def test_sync_write(self):
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        self.reset()
        # verify outgoing action command
        iface.sync_write(0x1e, 4, [
            0X00, 0X10, 0X00, 0X50, 0X01, 0X01, 0X20, 0X02, 0X60, 0X03, 0X02,
            0X30, 0X00, 0X70, 0X01, 0X03, 0X20, 0X02, 0X80, 0X03
        ])
        expected = ''.join((map(chr, [
            0XFF, 0XFF, 0XFE, 0X18, 0X83, 0X1E, 0X04, 0X00, 0X10, 0X00, 0X50,
            0X01, 0X01, 0X20, 0X02, 0X60, 0X03, 0X02, 0X30, 0X00, 0X70, 0X01,
            0X03, 0X20, 0X02, 0X80, 0X03, 0X12
        ])))
        self.assertEqual(istream.obuffer, expected)
Пример #8
0
    def test_read_ping(self):
        "Test ping also tests await packet and write instruction"

        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        # test for no response
        self.reset()
        # verify ping failed
        self.assertFalse(iface.ping(1))
        chksum = (~(1 + 2 + 1)) & 0xFF
        # verify outgoing packet is well formed
        self.assertEqual(istream.obuffer, "\xFF\xFF\x01\x02\x01\xfb")
        # create mock ping response
        # create an ignored packet
        istream.append(make_packet(0, 0, []))
        # create the ping response
        istream.append(make_packet(1, 0, []))
        # ping again and verify ping came back
        self.assertTrue(iface.ping(1))
Пример #9
0
    def test_read_packet(self):
        "Ensure read packet reads the appropriate data"
        istream = MockStream()
        iface = dynamixel_network.DynamixelInterface(istream)
        iface.dynamixel_error += self.error_handler

        self.reset()
        # verify packet w/o errors
        packet = make_packet(1, 0, [0, 1, 2, 3])
        istream.append(packet)

        (ident, data) = iface.read_packet()
        self.assertTrue(ident == 1)
        self.assertTrue(data == [0, 1, 2, 3])
        self.assertTrue(self.has_errors == False)
        # verify packet w/ errors
        self.reset()
        packet = make_packet(1, defs.ERROR_STATUS.InputVoltage, [0, 1, 2, 3])
        istream.append(packet)
        (ident, data) = iface.read_packet()
        self.assertTrue(ident == 1)
        self.assertTrue(data == [0, 1, 2, 3])
        self.assertTrue(self.has_errors == True)