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])
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]))))
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]))))
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()))
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]))))
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)
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)
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))
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)