def test_402_state2(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) node = canopen.get_node(1) class MyOp(Operations): def __init__(self, node): super(MyOp, self).__init__() self.node = node def step1(self): assert self.node.can402.state == Can402State.switch_on_disabled self.node.can402.change_state(Can402StateCommand.shutdown, self.next_operation) def step2(self): assert self.node.can402.state == Can402State.ready_to_switch_on self.node.can402.change_state(Can402StateCommand.switch_on, self.next_operation) def done(self): assert self.node.can402.state == Can402State.switched_on op = MyOp(node) op.next_operation()
def test_status_word_402state(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) node_id = 1 node = canopen.get_node(node_id) assert node.can402.state == Can402State.switch_on_disabled node.can402.statusword.signal_value_updated.register(callback) for state,bits in Can402StatuswordStateBits.iteritems(): req = CanOpenMessageSdoReadRequest(canopen, node_id, Can402Objects.statusword[0],Can402Objects.statusword[1]) res = CanOpenMessageSdoReadResponse(canopen, node_id, Can402Objects.statusword[0],Can402Objects.statusword[1], data=[bits & 0xff,0x00]) canopen.on_message_received(req) canopen.on_message_received(res) callback.assert_called() node.can402.state == state
def init_can(self): self.initialized = False try: self.can.bus = can.interface.Bus(self.can.can_device, bustype='socketcan_ctypes') self.can.canopen = CanOpen(self.can.bus) self.stop_can_node() self.can.node = CanOpenNode(self.can.canopen, node_id=self.can.node_id) self.can.node.eds.read(self.can.eds) self.update_can_objects() for index, subindex in self.can_objects.itervalues(): self.can.node.init_object(index, subindex) self.can.node.start_thread() self.initialized = True print "CanOpen successful initialized:" print "\tcan device: %s" % self.can.can_device print "\tnode id: %d" % self.can.node_id print "\teds: %s" % self.can.eds except Exception, e: traceback.print_exc() raise e
def test_402_state(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) node = canopen.get_node(1) assert node.can402.state == Can402State.switch_on_disabled def on_complete1(): assert node.can402.state == Can402State.ready_to_switch_on def on_complete2(): assert node.can402.state == Can402State.switched_on node.can402.change_state(Can402StateCommand.switch_on,on_complete2) node.can402.change_state(Can402StateCommand.shutdown,on_complete1)
def test_sdo_read_error(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen = CanOpen(bus, eds_config) node = canopen.get_node(1) node.sdo.signal_error[Can402Objects.controlword].register(callback) msg = CanOpenMessageSdoReadRequest(canopen, 1, Can402Objects.controlword[0], Can402Objects.controlword[1]) canopen.send_msg(msg) error_code = CanErrors.keys()[0] msg = CanOpenMessageSdoError(canopen, 1, Can402Objects.controlword[0], Can402Objects.controlword[1], error_code) canopen.send_msg(msg) callback.assert_called()
def test_sdo_read_error(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) node = canopen.get_node(1) node.sdo.signal_error[Can402Objects.controlword].register(callback) msg = CanOpenMessageSdoReadRequest(canopen,1,Can402Objects.controlword[0],Can402Objects.controlword[1]) canopen.send_msg(msg) error_code = CanErrors.keys()[0] msg = CanOpenMessageSdoError(canopen,1,Can402Objects.controlword[0],Can402Objects.controlword[1], error_code) canopen.send_msg(msg) callback.assert_called()
def test_sdo_read_success(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) node = canopen.get_node(1) node.sdo.signal_write_complete[Can402Objects.controlword].register(callback) msg = CanOpenMessageSdoReadRequest(canopen,1,Can402Objects.controlword[0],Can402Objects.controlword[1]) canopen.send_msg(msg) read_data = [0x06, 0x07] msg = CanOpenMessageSdoReadResponse(canopen,1,Can402Objects.controlword[0],Can402Objects.controlword[1], read_data) canopen.send_msg(msg) callback.assert_called()
def test_obj_signal_value_updated(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen = CanOpen(bus, eds_config) node = canopen.get_node(1) node.obj_dict.objects[ Can402Objects.controlword].signal_value_updated.register(callback) msg = CanOpenMessageSdoReadRequest(canopen, 1, Can402Objects.controlword[0], Can402Objects.controlword[1]) canopen.send_msg(msg) read_data = [0x06, 0x07] msg = CanOpenMessageSdoReadResponse(canopen, 1, Can402Objects.controlword[0], Can402Objects.controlword[1], read_data) canopen.send_msg(msg) callback.assert_called()
def test_sdo_write_success(): callback = mock.MagicMock() bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen = CanOpen(bus, eds_config) node = canopen.get_node(1) node.sdo.signal_write_complete[Can402Objects.controlword].register( callback) write_data = [0x06, 0x07] msg = CanOpenMessageSdoWriteRequest(canopen, 1, Can402Objects.controlword[0], Can402Objects.controlword[1], write_data) canopen.send_msg(msg) msg = CanOpenMessageSdoWriteResponse(canopen, 1, Can402Objects.controlword[0], Can402Objects.controlword[1]) canopen.send_msg(msg) callback.assert_called()
def test_sdo_write(): bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) node = canopen.get_node(1)
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import can from canopen_301_402.canopen import CanOpen,eds_config from canopen_301_402.constants import * from canopen_301_402.canopen_msgs.msgs import * bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes') canopen=CanOpen(bus,eds_config) # msg = canopen.msgs.nmt(1,Can301StateCommand.start_remote_node) msg = CanOpenMessageNmtCommand(canopen,1,Can301StateCommand.start_remote_node) # msg = CanOpenMessageNmtCommand(canopen,1,Can301StateCommand.start_remote_node) # msg = canopen.msgs.nmt_request() # msg = canopen.msgs.sdo_write_request(node_id=1, index=0x6040, subindex=0x00, data=[0x00,0x00]) # msg = canopen.msgs.sdo_write_request(node_id=1, index=0x6040, subindex=0x00, data=[0x06,0x00]) # msg = canopen.msgs.sdo_read_request(node_id=1, index=0x6041, subindex=0x00) canopen.send_msg(msg) node = canopen.get_node(1) def callback(*args): print "signal_write_complete" print args def test_sdo_write(): bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes')