Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
def test_sdo_write():
	bus = can.interface.Bus('vcan0', bustype='socketcan_ctypes')
	canopen=CanOpen(bus,eds_config)
	node = canopen.get_node(1)
Ejemplo n.º 11
0
#!/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')