コード例 #1
0
 def test_EnableParameterMsgSizeError(self):
     d = bytearray([0x04, 0x03, 0x04, 0x05, 0x06])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     with self.assertRaises(canfix.MsgSizeError):
         p = canfix.parseMessage(msg)
     d = bytearray([0x04, 0x03])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     with self.assertRaises(canfix.MsgSizeError):
         p = canfix.parseMessage(msg)
コード例 #2
0
 def test_NodeIdentificationMessageSizeError(self):
     d = bytearray([0x00, 0x02, 0x01, 0x40, 0x50, 0x60, 0x70])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     with self.assertRaises(canfix.MsgSizeError):
         p = canfix.parseMessage(msg)
     d = bytearray([0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     with self.assertRaises(canfix.MsgSizeError):
         p = canfix.parseMessage(msg)
コード例 #3
0
ファイル: common.py プロジェクト: birkelbach/CAN-FIX-Utility
 def __tryFirmwareReq(self):
     """Requests a firmware load, waits for 1/2 a second and determines
        if the response is correct and if so returns True returns
        False on timeout"""
     self.channel = self.__getFreeChannel()
     if self.channel < 0:
         raise FirmwareError("No Free Channel")
     msg = canfix.UpdateFirmware(node=self.destNode, verification=self.device.fwUpdateCode, channel=self.channel)
     msg.sendNode = self.srcNode
     msg.msgType = canfix.MSG_REQUEST
     self.can.send(msg.msg)
     endtime = time.time() + 0.5
     while True: # Channel wait loop
         if self.kill: raise FirmwareError("Canceled")
         try:
             rframe = self.can.recv(0.1)
         except connection.Timeout:
             pass
         else:
             msg = canfix.parseMessage(rframe)
             if isinstance(msg, canfix.UpdateFirmware):
                 if msg.destNode == self.srcNode:
                     if msg.status == canfix.MSG_SUCCESS:
                         return True
                     else:
                         log.warn("Firmware Update received with error code {}".format(msg.errorCode))
                         raise FirmwareError("Error {} Received".format(msg.errorCode))
         finally:
             now = time.time()
             if now > endtime: return False
     return True
コード例 #4
0
ファイル: parameter.py プロジェクト: birkelbach/python-canfix
    def test_ParameterEncoder(self):
        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
        msg = can.Message(arbitration_id=0x11B, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Encoder Input (High Priority) #2")
        self.assertEqual(p.value, [0, 0, [False]*8])

        d = bytearray([0x00, 0x00, 0x00, 0xFB, 0xFF, 0x00, 0x00, 0x00])
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, [-5, 0, [False]*8])

        d = bytearray([0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00])
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, [5, 0, [False]*8])
コード例 #5
0
ファイル: parameter.py プロジェクト: birkelbach/python-canfix
    def test_ParameterIndicatedAltitude(self):
        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
        msg = can.Message(arbitration_id=0x184, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Indicated Altitude")
        self.assertEqual(p.value, 0.0)

        d = bytearray([0x00, 0x00, 0x00, 0x18, 0xFC, 0xFF, 0xFF]) # -1,000
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, -1000)

        d = bytearray([0x00, 0x00, 0x00, 0x60, 0xEA, 0x00, 0x00]) # 60,000
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, 60000)
コード例 #6
0
ファイル: parameter.py プロジェクト: birkelbach/python-canfix
    def test_ParameterIndicatedAirspeed(self):
        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00])
        msg = can.Message(arbitration_id=0x183, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Indicated Airspeed")
        self.assertEqual(p.value, 0.0)

        d = bytearray([0x00, 0x00, 0x00, 0x0F, 0x27]) # 9999
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertLess(abs(p.value - 999.9), 0.005)

        d = bytearray([0x00, 0x00, 0x00, 0x87, 0x13]) # 4999
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertLess(abs(p.value - 499.9), 0.005)
コード例 #7
0
 def test_ResponseMessageCh0NoData(self):
     msg = can.Message(extended_id=False, arbitration_id=0x7E1)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p,canfix.TwoWayMsg)
     self.assertEqual(p.data,b'')
     self.assertEqual(p.channel, 0x00)
     self.assertEqual(p.type,"Response")
コード例 #8
0
ファイル: msgtypes.py プロジェクト: birkelbach/python-canfix
 def test_LastTwoWayMessage(self):
     d = bytearray([0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x7FF, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.TwoWayMsg)
     self.assertEqual(p.channel, 0x0F)
     self.assertEqual(p.type, "Response")
コード例 #9
0
    def update(self, msg):
        p = canfix.parseMessage(msg)
        node = None
        if isinstance(p, canfix.Parameter):
            node = self.__findNode(p.node)
            assert node
            result = node.updateParameter(p)
            if result != None:
                if self.parameterChanged is not None:
                    self.parameterChanged(p)
            else:
                if self.parameterAdded is not None:
                    self.parameterAdded(p)
        elif isinstance(p, canfix.NodeAlarm):
            pass
        elif isinstance(p, canfix.NodeStatus):
            node = p.sendNode
        elif isinstance(p, canfix.NodeIdentification):
            node = self.__findNode(p.sendNode)
            assert node
            node.deviceID = p.device
            node.version = p.fwrev
            node.model = p.model
            device = devices.findDevice(node.deviceID, node.model, node.version)
            if device:
                node.name = device.name
                node.device = device
            if self.nodeIdent:
                self.nodeIdent(p.sendNode, {"name":node.name, "deviceid":node.deviceID,
                                            "model":node.model, "version":node.version})
        elif isinstance(p, canfix.TwoWayMsg):
            pass

        if node is not None:
            node.update()
コード例 #10
0
    def test_NodeSpecificMessage(self):
        d = bytearray([0x61, 0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80])
        msg = can.Message(extended_id=False, arbitration_id=0x6E0, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.NodeSpecific)
        self.assertEqual(p.sendNode, 0x00)
        self.assertEqual(p.controlCode, 0x61)
        self.assertEqual(p.data, bytearray([0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80]))

        d = bytearray([0x61, 0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80])
        msg = can.Message(extended_id=False, arbitration_id=0x7DF, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.NodeSpecific)
        self.assertEqual(p.sendNode, 0xFF)
        self.assertEqual(p.controlCode, 0x61)
        self.assertEqual(p.data, bytearray([0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80]))
コード例 #11
0
 def test_NodeSpecificMessageNoData(self):
     d = bytearray([0x61])
     msg = can.Message(extended_id=False, arbitration_id=0x6E0, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeSpecific)
     self.assertEqual(p.sendNode, 0x00)
     self.assertEqual(p.controlCode, 0x61)
コード例 #12
0
ファイル: parameter.py プロジェクト: birkelbach/python-canfix
    def test_ParameterLatitude(self):

        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
        msg = can.Message(arbitration_id=0x1C3, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Aircraft Position Latitude")
        self.assertEqual(p.value, 0.0)
        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x42]) # 90.0
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertLess(abs(p.value - 90.0), 0.00005)

        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xc2]) # 4999
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertLess(abs(p.value - -90.0), 0.00005)
コード例 #13
0
 def test_ConfigurationQueryMessageResponseFail(self):
     d = bytearray([0x0A, 0x04, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeConfigurationQuery)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.error, 0x01)
コード例 #14
0
ファイル: msgtypes.py プロジェクト: mikessut/python-canfix
 def test_LastDefinedParameter(self):
     d = bytearray([0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x587, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.Parameter)
     self.assertEqual(p.node, 0x01)
     self.assertEqual(p.index, 2)
     self.assertEqual(p.function, 3)
コード例 #15
0
ファイル: two_way_msg.py プロジェクト: mikessut/python-canfix
 def test_ResponseMessageCh1(self):
     d = bytearray([0x01, 0x00, 0xAB, 0xCD, 0xEF, 0xFF, 0xEE, 0x11])
     msg = can.Message(extended_id=False, arbitration_id=0x7E3, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p,canfix.TwoWayMsg)
     self.assertEqual(p.data, b'\x01\x00\xAB\xCD\xEF\xFF\xEE\x11')
     self.assertEqual(p.channel, 0x01)
     self.assertEqual(p.type,"Response")
コード例 #16
0
 def test_ResponseMessageCh15(self):
     d = bytearray([0x01, 0x00, 0xAB, 0xCD, 0xEF, 0xFF, 0xEE, 0x11])
     msg = can.Message(extended_id=False, arbitration_id=0x7FF, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p,canfix.TwoWayMsg)
     self.assertEqual(p.data, b'\x01\x00\xAB\xCD\xEF\xFF\xEE\x11')
     self.assertEqual(p.channel, 0x0F)
     self.assertEqual(p.type,"Response")
コード例 #17
0
 def test_NodeReportMessageRequest(self):
     d = bytearray([0x05, 0x04])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeReport)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x05)
     self.assertEqual(p.destNode, 0x04)
コード例 #18
0
 def test_ConfigurationQueryMessageResponseFail(self):
     d = bytearray([0x0A, 0x04, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeConfigurationQuery)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.error, 0x01)
コード例 #19
0
 def test_NodeReportMessageRequest(self):
     d = bytearray([0x05, 0x04])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeReport)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x05)
     self.assertEqual(p.destNode, 0x04)
コード例 #20
0
ファイル: node_alarm.py プロジェクト: mikessut/python-canfix
 def test_LastNodeNoDataFromMessage(self):
     d = bytearray([0x01, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0xFF, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeAlarm)
     self.assertEqual(p.alarm, 1)
     self.assertEqual(p.data, b'\x00\x00\x00\x00\x00')
     self.assertEqual(p.node, 255)
コード例 #21
0
ファイル: msgtypes.py プロジェクト: birkelbach/python-canfix
 def test_LastDefinedParameter(self):
     d = bytearray([0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x587, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.Parameter)
     self.assertEqual(p.node, 0x01)
     self.assertEqual(p.index, 2)
     self.assertEqual(p.function, 3)
コード例 #22
0
    def test_ParameterQuality(self):
        d = bytearray([0x00, 0x00, 0x00, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, False)
        self.assertEqual(p.quality, False)
        self.assertEqual(p.failure, False)

        d = bytearray([0x00, 0x00, 0x01, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, True)
        self.assertEqual(p.quality, False)
        self.assertEqual(p.failure, False)

        d = bytearray([0x00, 0x00, 0x02, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, False)
        self.assertEqual(p.quality, True)
        self.assertEqual(p.failure, False)

        d = bytearray([0x00, 0x00, 0x04, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, False)
        self.assertEqual(p.quality, False)
        self.assertEqual(p.failure, True)

        d = bytearray([0x00, 0x00, 0x07, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, True)
        self.assertEqual(p.quality, True)
        self.assertEqual(p.failure, True)
コード例 #23
0
ファイル: parameter.py プロジェクト: birkelbach/python-canfix
    def test_ParameterQuality(self):
        d = bytearray([0x00, 0x00, 0x00, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, False)
        self.assertEqual(p.quality, False)
        self.assertEqual(p.failure, False)

        d = bytearray([0x00, 0x00, 0x01, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, True)
        self.assertEqual(p.quality, False)
        self.assertEqual(p.failure, False)

        d = bytearray([0x00, 0x00, 0x02, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, False)
        self.assertEqual(p.quality, True)
        self.assertEqual(p.failure, False)

        d = bytearray([0x00, 0x00, 0x04, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, False)
        self.assertEqual(p.quality, False)
        self.assertEqual(p.failure, True)

        d = bytearray([0x00, 0x00, 0x07, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.annunciate, True)
        self.assertEqual(p.quality, True)
        self.assertEqual(p.failure, True)
コード例 #24
0
    def test_NodeSpecificMessage(self):
        d = bytearray([0x61, 0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80])
        msg = can.Message(extended_id=False, arbitration_id=0x6E0, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.NodeSpecific)
        self.assertEqual(p.sendNode, 0x00)
        self.assertEqual(p.controlCode, 0x61)
        self.assertEqual(p.data,
                         bytearray([0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80]))

        d = bytearray([0x61, 0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80])
        msg = can.Message(extended_id=False, arbitration_id=0x7DF, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.NodeSpecific)
        self.assertEqual(p.sendNode, 0xFF)
        self.assertEqual(p.controlCode, 0x61)
        self.assertEqual(p.data,
                         bytearray([0x02, 0x03, 0x40, 0x50, 0x60, 0x70, 0x80]))
コード例 #25
0
 def test_ConfigurationQueryMessageRequest(self):
     d = bytearray([0x0A, 0x04, 0x0F, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeConfigurationQuery)
     #self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.key, 15)
コード例 #26
0
 def test_NodeIdentificationMessageRequest(self):
     d = bytearray([0x00, 0x02])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeIdentification)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x00)
     self.assertEqual(p.destNode, 0x02)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
コード例 #27
0
 def test_ConfigurationQueryMessageRequest(self):
     d = bytearray([0x0A, 0x04, 0x0F, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeConfigurationQuery)
     #self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.key, 15)
コード例 #28
0
 def test_NodeDescriptionMessage(self):
     d = bytearray([0x0B, 0x04, 0x01, 0x00, ord('A'), ord('B'), ord('C'), ord('D')])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeDescription)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.packetnumber, 1)
     self.assertEqual(p.chars, bytearray([ord('A'), ord('B'), ord('C'), ord('D')]))
コード例 #29
0
 def test_NodeIdentificationMessageRequest(self):
     d = bytearray([0x00, 0x02])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeIdentification)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x00)
     self.assertEqual(p.destNode, 0x02)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
コード例 #30
0
 def test_EnableParameterMessageRequest(self):
     d = bytearray([0x04, 0x04, 0x05, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.EnableParameter)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x04)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.identifier, 261)
コード例 #31
0
 def test_EnableParameterMessageRequest(self):
     d = bytearray([0x04, 0x04, 0x05, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.EnableParameter)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x04)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.identifier, 261)
コード例 #32
0
 def test_NodeStatusMessage(self):
     d = bytearray([0x06, 0x00, 0x00, 0x00, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     p.type = "WORD"
     self.assertIsInstance(p, canfix.NodeStatus)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.controlCode, 0x06)
     self.assertEqual(p.parameter, 0x00)
     self.assertEqual(p.value, [False]*16)
コード例 #33
0
 def test_ConfigurationSetMessageResponseSuccess(self):
     d = bytearray([0x09, 0x05, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeConfigurationSet)
     self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x05)
     self.assertEqual(p.status, canfix.MSG_SUCCESS)
     self.assertEqual(p.errorCode, 0)
コード例 #34
0
 def test_ParameterSetMessage(self):
     d = bytearray([0x0C, 0x83, 0x19, 0x0F, 0x27])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.ParameterSet)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.index, 3)
     self.assertEqual(p.type, "UINT")
     self.assertEqual(p.multiplier, 0.1)
     self.assertTrue(abs(p.value - 999.9) < 0.1)
コード例 #35
0
 def test_BitRateSetMessageRequest(self):
     d = bytearray([0x01, 0x02, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.BitRateSet)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x01)
     self.assertEqual(p.destNode, 0x02)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.bitrate, 1)
コード例 #36
0
 def test_NodeStatusMessage(self):
     d = bytearray([0x06, 0x00, 0x00, 0x00, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     p.type = "WORD"
     self.assertIsInstance(p, canfix.NodeStatus)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.controlCode, 0x06)
     self.assertEqual(p.parameter, 0x00)
     self.assertEqual(p.value, [False] * 16)
コード例 #37
0
 def test_ParameterSetIndexCalc(self):
     for i in range(256):
         cc = (i // 32) + 0x0C
         x = (i % 32) << 11 | 0x183
         d = bytearray([cc, x % 256, x >> 8, 0x0F, 0x27])
         msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
         p = canfix.parseMessage(msg)
         self.assertIsInstance(p, canfix.ParameterSet)
         self.assertEqual(p.sendNode, 0x02)
         self.assertEqual(p.index, i)
コード例 #38
0
 def test_BitRateSetMessageRequest(self):
     d = bytearray([0x01, 0x02, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.BitRateSet)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x01)
     self.assertEqual(p.destNode, 0x02)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.bitrate, 1)
コード例 #39
0
 def test_ConfigurationQueryMessageResponseSuccess(self):
     d = bytearray([0x0A, 0x04, 0x00, 0x55])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     p.datatype = "BYTE"
     self.assertIsInstance(p, canfix.NodeConfigurationQuery)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.error, 0x00)
     self.assertEqual(p.value, [True,False,True,False,True,False,True,False])
コード例 #40
0
 def test_ParameterSetIndexCalc(self):
     for i in range(256):
         cc = (i // 32) + 0x0C
         x = (i % 32) << 11 | 0x183
         d = bytearray([cc, x % 256, x >> 8, 0x0F, 0x27])
         msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
         p = canfix.parseMessage(msg)
         self.assertIsInstance(p, canfix.ParameterSet)
         self.assertEqual(p.sendNode, 0x02)
         self.assertEqual(p.index, i)
コード例 #41
0
 def test_ConfigurationSetMessageResponseSuccess(self):
     d = bytearray([0x09, 0x05, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeConfigurationSet)
     self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x05)
     self.assertEqual(p.status, canfix.MSG_SUCCESS)
     self.assertEqual(p.errorCode, 0)
コード例 #42
0
 def test_ParameterSetMessage(self):
     d = bytearray([0x0C, 0x83, 0x19, 0x0F, 0x27])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.ParameterSet)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.index, 3)
     self.assertEqual(p.type, "UINT")
     self.assertEqual(p.multiplier, 0.1)
     self.assertTrue(abs(p.value - 999.9) < 0.1)
コード例 #43
0
 def test_ConfigurationSetMessageRequest(self):
     d = bytearray([0x09, 0x04, 0x0F, 0x00, 0x55])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     p.datatype = "BYTE"
     self.assertIsInstance(p, canfix.NodeConfigurationSet)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.key, 15)
     self.assertEqual(p.value, [True,False,True,False,True,False,True,False])
コード例 #44
0
 def test_TwoWayConnectionMessageResponseSucceed(self):
     d = bytearray([0x08, 0x04, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.TwoWayConnection)
     self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.controlCode, 0x08)
     self.assertEqual(p.status, canfix.MSG_SUCCESS)
     self.assertEqual(p.errorCode, 0x00)
コード例 #45
0
    def test_BitRateSetMessageResponse(self):
        d = bytearray([0x01, 0x02])
        msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.BitRateSet)
        self.assertEqual(p.sendNode, 0x01)
        self.assertEqual(p.controlCode, 0x01)
        self.assertEqual(p.destNode, 0x02)
        self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
        self.assertEqual(p.status, canfix.MSG_SUCCESS)

        d = bytearray([0x01, 0x02, 0xFF])
        msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.BitRateSet)
        self.assertEqual(p.sendNode, 0x01)
        self.assertEqual(p.controlCode, 0x01)
        self.assertEqual(p.destNode, 0x02)
        self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
        self.assertEqual(p.status, canfix.MSG_FAIL)
コード例 #46
0
    def test_EnableParameterMessageResponse(self):
        d = bytearray([0x04, 0x04, 0x00])
        msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.EnableParameter)
        self.assertEqual(p.sendNode, 0x01)
        self.assertEqual(p.controlCode, 0x04)
        self.assertEqual(p.destNode, 0x04)
        self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
        self.assertEqual(p.status, canfix.MSG_SUCCESS)

        d = bytearray([0x04, 0x04, 0x01])
        msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
        p = canfix.parseMessage(msg)
        self.assertIsInstance(p, canfix.EnableParameter)
        self.assertEqual(p.sendNode, 0x01)
        self.assertEqual(p.controlCode, 0x04)
        self.assertEqual(p.destNode, 0x04)
        self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
        self.assertEqual(p.status, canfix.MSG_FAIL)
コード例 #47
0
 def test_TwoWayConnectionMessageRequest(self):
     d = bytearray([0x08, 0x04, 0x02, 0x39, 0x30])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.TwoWayConnection)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.controlCode, 0x08)
     self.assertEqual(p.connectionType, 12345)
     self.assertEqual(p.channel, 0x02)
コード例 #48
0
 def test_TwoWayConnectionMessageRequest(self):
     d = bytearray([0x08, 0x04, 0x02, 0x39, 0x30])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.TwoWayConnection)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.controlCode, 0x08)
     self.assertEqual(p.connectionType, 12345)
     self.assertEqual(p.channel, 0x02)
コード例 #49
0
 def test_UpdateFirmwareMessageRequest(self):
     d = bytearray([0x07, 0x04, 0x39, 0x30, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.UpdateFirmware)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.controlCode, 0x07)
     self.assertEqual(p.verification, 12345)
     self.assertEqual(p.channel, 0)
コード例 #50
0
 def test_UpdateFirmwareMessageResponseFail(self):
     d = bytearray([0x07, 0x04, 0x01])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.UpdateFirmware)
     self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.controlCode, 0x07)
     self.assertEqual(p.status, canfix.MSG_FAIL)
     self.assertEqual(p.errorCode, 0x01)
コード例 #51
0
 def test_TwoWayConnectionMessageResponseSucceed(self):
     d = bytearray([0x08, 0x04, 0x00])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.TwoWayConnection)
     self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.controlCode, 0x08)
     self.assertEqual(p.status, canfix.MSG_SUCCESS)
     self.assertEqual(p.errorCode, 0x00)
コード例 #52
0
 def test_ConfigurationQueryMessageResponseSuccess(self):
     d = bytearray([0x0A, 0x04, 0x00, 0x55])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     p.datatype = "BYTE"
     self.assertIsInstance(p, canfix.NodeConfigurationQuery)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.error, 0x00)
     self.assertEqual(p.value,
                      [True, False, True, False, True, False, True, False])
コード例 #53
0
    def test_ParameterPitchControlPosition(self):
        d = bytearray([0x00, 0x00, 0x00, 0x00, 0x00])
        msg = can.Message(arbitration_id=0x124, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Pitch Control Position")
        self.assertEqual(p.value, 0)

        d = bytearray([0x00, 0x00, 0x00, 0xF0, 0xD8])  # -10,000
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, -100)

        d = bytearray([0x00, 0x00, 0x00, 0x10, 0x27])  # 10,000
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, 100)

        d = bytearray([0x00, 0x00, 0x00, 0x04, 0xd9])  # -9,980
        msg.data = d
        p = canfix.parseMessage(msg)
        self.assertEqual(p.value, -99.8)
コード例 #54
0
    def test_ParameterMeta(self):
        d = bytearray([0x00, 0x00, 0x00, 0x1c, 0x04])  # 1052
        msg = can.Message(arbitration_id=0x183, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Indicated Airspeed")
        self.assertEqual(p.value, 105.2)
        self.assertEqual(p.meta, None)

        d = bytearray([0x00, 0x00, 0x10, 0x1c, 0x04])  # 1052
        msg = can.Message(arbitration_id=0x183, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Indicated Airspeed")
        self.assertEqual(p.value, 105.2)
        self.assertEqual(p.meta, 'Min')

        d = bytearray([0x00, 0x00, 0xF0, 0x1c, 0x04])  # 1052
        msg = can.Message(arbitration_id=0x183, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Indicated Airspeed")
        self.assertEqual(p.value, 105.2)
        self.assertEqual(p.meta, 'Vy')
コード例 #55
0
    def test_ParameterIndex(self):
        d = bytearray([0x00, 0x00, 0x00, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.index, 0)

        d = bytearray([0x00, 0x01, 0x00, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.index, 1)

        d = bytearray([0x00, 0xFF, 0x00, 0xd2, 0x04])
        msg = can.Message(arbitration_id=0x501, extended_id=False, data=d)
        p = canfix.parseMessage(msg)
        self.assertEqual(p.name, "Cylinder Head Temperature #2")
        self.assertEqual(p.value, 123.4)
        self.assertEqual(p.index, 255)
コード例 #56
0
 def test_ConfigurationSetMessageRequest(self):
     d = bytearray([0x09, 0x04, 0x0F, 0x00, 0x55])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     p.datatype = "BYTE"
     self.assertIsInstance(p, canfix.NodeConfigurationSet)
     self.assertEqual(p.msgType, canfix.MSG_REQUEST)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.key, 15)
     self.assertEqual(p.value,
                      [True, False, True, False, True, False, True, False])
コード例 #57
0
 def test_NodeIdentificationMessageResponse(self):
     d = bytearray([0x00, 0x02, 0x01, 0x40, 0x50, 0x60, 0x70, 0x80])
     msg = can.Message(extended_id=False, arbitration_id=0x6E1, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeIdentification)
     self.assertEqual(p.sendNode, 0x01)
     self.assertEqual(p.controlCode, 0x00)
     self.assertEqual(p.destNode, 0x02)
     self.assertEqual(p.device, 0x40)
     self.assertEqual(p.fwrev, 0x50)
     self.assertEqual(p.model, 8417376)
     self.assertEqual(p.msgType, canfix.MSG_RESPONSE)
コード例 #58
0
 def test_NodeDescriptionMessage(self):
     d = bytearray(
         [0x0B, 0x04, 0x01, 0x00,
          ord('A'),
          ord('B'),
          ord('C'),
          ord('D')])
     msg = can.Message(extended_id=False, arbitration_id=0x6E2, data=d)
     p = canfix.parseMessage(msg)
     self.assertIsInstance(p, canfix.NodeDescription)
     self.assertEqual(p.sendNode, 0x02)
     self.assertEqual(p.destNode, 0x04)
     self.assertEqual(p.packetnumber, 1)
     self.assertEqual(p.chars,
                      bytearray([ord('A'),
                                 ord('B'),
                                 ord('C'),
                                 ord('D')]))
コード例 #59
0
def listen(conn, msg_count, raw):
    count = 0
    while True:
        try:
            msg = conn.recv(1.0)
            if msg:
                #print(str(msg) + canfix.parameters[msg.arbitration_id].name)
                x = canfix.parseMessage(msg)
                if raw:
                    print(str(msg))
                else:
                    print(canfix.Parameter(msg))
                count+=1
                if msg_count != 0:
                    if count > msg_count: break
        except KeyboardInterrupt:
            break
        except:
            print(str(msg))
コード例 #60
0
 def __getFreeChannel(self):
     """Waits for a half a second to see if there is any traffic on any
        of the channels and returns the channel number of the first
        free channel"""
     endtime = time.time() + 0.5
     channels = [0] * 16
     while True:  # Wait loop
         try:
             rframe = self.can.recv(0.1)
             msg = canfix.parseMessage(rframe)
             if isinstance(msg, canfix.TwoWayConnection):
                 self.channels[msg.channel] = 1
         except connection.Timeout:
             pass
         finally:
             now = time.time()
             if now > endtime: break
     for ch, v in enumerate(channels):
         if v == 0: return ch
     return -1