def doFrame(self, frame): """Function that handles incoming frames for the node""" if frame.id > 0x700 and frame.data[0] == self.nodeID: # We start a response frame in case we need it f = canbus.Frame(self.nodeID + 0x700, [frame.id - 0x700, frame.data[1]]) cmd = frame.data[1] if cmd == 0: # Node identification # TODO: Fix the model number part f.data.extend([0x01, self.deviceType % 255, 1, 0, 0, 0]) elif cmd == 1: # Bitrate Set Command return None elif cmd == 2: # Node Set Command self.nodeID = frame.data[2] f.data.append(0x00) # TODO: Fix these so they work?? elif cmd == 3: # Disable Parameter return None elif cmd == 4: # Enable Parameter return None elif cmd == 5: # Node Report return None elif cmd == 7: # Firmware Update FCode = frame.data[3] << 8 | frame.data[2] if FCode == self.FWVCode: FWChannel = frame.data[4] f.data.append(0x00) return f return None
def getFrame(self): f = canbus.Frame(self.sendNode + 1792) f.data.append(self.destNode) f.data.append(self.controlCode) for each in self.data: f.data.append(each) return f
def __func_airdata(node): global airdata t = time.time() frame = canbus.Frame() if t > airdata['lasttime'] + 1: if airdata['n'] == 0: o = (int(time.time() * 1000.0) % 40) - 20 x = struct.pack('<H', (airdata['airspeed'] * 10 + o)) frame.id = 0x183 # Indicated Airspeed frame.data = [node, 0, 0, ord(x[0]), ord(x[1])] airdata['n'] += 1 elif airdata['n'] == 1: o = (int(time.time() * 1000.0) % 20) - 10 x = struct.pack('<l', (airdata['altitude'] + o)) frame.id = 0x184 # Indicated Altitude frame.data = [ node, 0, 0, ord(x[0]), ord(x[1]), ord(x[2]), ord(x[3]) ] airdata['n'] += 1 elif airdata['n'] == 2: o = (int(time.time() * 1000.0) % 100) - 50 x = struct.pack('<H', airdata['oat'] * 100 + o) frame.id = 0x407 # OAT frame.data = [node, 0, 0, ord(x[0]), ord(x[1])] airdata['n'] += 1 else: airdata['n'] = 0 airdata['lasttime'] = t return None return frame
def getFrame(self): frame = canbus.Frame() frame.id = self.channel*2 + 1760 if self.type == "Response": frame.id += 1 frame.data = self.data return frame
def getFrame(self): frame = canbus.Frame() frame.id = self.node frame.data.append(self.alarm % 256) frame.data.append(self.alarm / 256) for each in self.data: frame.data.append(each) return frame
def setName(self, name): s = name.upper() for i in parameters: if parameters[i].name.upper() == s: self.__frame = canbus.Frame(i) self.__identifier = i self.__parameterData(self.__frame.id) return raise ValueError("Unknown Parameter Name")
def recvFrame(self): result = self.__readResponse("R") if result[0] != 'r': raise BusReadError("Unknown response from Adapter") data = [] for n in range((len(result) - 5) / 2): data.append(int(result[5 + n * 2:7 + n * 2], 16)) frame = canbus.Frame(int(result[1:4], 16), data) return frame
def setIdentifier(self, identifier): """Set the identifier of the Parameter, identifier can be either the actual integer identifier or the name of the parameter""" if identifier in parameters: self.frame = canbus.Frame(identifier) else: raise ValueError("Bad Parameter Identifier Given") self.__identifier = self.frame.id self.__parameterData(self.frame.id)
def __func_engine(node): global engine t = time.time() frame = canbus.Frame() if t > engine['lasttime'] + 1: if engine['n'] == 0: o = (int(time.time() * 100) % 10) - 5 x = struct.pack('<H', (engine['cht'] + o) * 10) frame.id = 0x500 # Cylinder Head Temperature frame.data = [node, engine['i'], 0, ord(x[0]), ord(x[1])] engine['i'] += 1 if engine['i'] == 4: engine['i'] = 0 engine['n'] += 1 else: engine['n'] = 0 engine['lasttime'] = t return None return frame
if args.print_info == True: print("CANFIX Protocol Version " + version) print("Groups:") for each in groups: print(" %s %d-%d" % (each["name"], each["startid"], each["endid"])) print("Parameters:") for each in parameters: print(parameters[each]) if args.test: import canbus frames = [] frames.append(canbus.Frame(0x023, [0x01, 0x02, 1, 2, 3, 4, 5])) frames.append(canbus.Frame(0x183, [2, 0, 0, 44, 5])) frames.append(canbus.Frame(0x183, [2, 0, 0x10, 0, 0])) frames.append(canbus.Frame(0x183, [2, 0, 0x20, 0xD0, 0x7])) frames.append(canbus.Frame(0x183, [2, 0, 0x30, 44, 2])) frames.append(canbus.Frame(0x184, [2, 0, 0, 0xd0, 0x7, 0, 0])) frames.append(canbus.Frame(0x184, [2, 0, 0, 0xff, 0xff, 255, 255])) frames.append(canbus.Frame(0x102, [3, 0, 0, 0x55, 0xAA])) frames.append(canbus.Frame(0x10E, [3, 1, 0, 0x02])) frames.append( canbus.Frame( 0x587, [1, 0, 0, ord('7'), ord('2'), ord('7'),