tT = time
class FordExperiments(GoodFETMCPCANCommunication):
- def __init__(self, dataLocation):
+ def __init__(self, dataLocation = "../../contrib/ThayerData/"):
GoodFETMCPCANCommunication.__init__(self, dataLocation)
#super(FordExperiments,self).__init__(self) #initialize chip
self.freq = 500;
#
# (C) 2012 Travis Goodspeed <travis at radiantmachines.com>
#
+# Edited By: Chris Hoder 2013
+# Ted Summers 2013
+# Grayson Zulauf 2013
#
-# Ted's working copy
-# 1) getting hot reads on frequency
-# 2) allow sniffing in "normal" mode to get ack bits
-# --check if that's whats causing error flags in board-to-board transmission
-#
-#
+
import sys;
import binascii;
class GoodFETMCPCANCommunication:
- def __init__(self, dataLocation):
+ def __init__(self, dataLocation = "../../contrib/ThayerData/"):
self.client=GoodFETMCPCAN();
""" Communication with the bus"""
self.client.serInit()
# row[4] = Data Byte 1
# .... up to Data Byte 8 ( THIS ASSUMES A PACKET OF LENGTH 8!!!
def writeData(self,packets,freq):
+ """
+ This method will write a list of packets to the bus at the given frequency. This method assumes a packet
+ length of 8 for all packets as well as a standard id.
+
+ @type packets: List of Lists
+ @param packets: The list of packets to be injected into the bus. Each element of packets is a list that is
+ a packet to be injected onto the bus. These packets are assumed to be in the following format::
+ row[0] time delay relative to the last packet. if 0 or empty there will be no delay
+ row[1] = Standard ID (integer)
+ row[2] = Data Length (0-8) (if it is zero we assume an Remote Transmit Request)
+ row[3] = Data Byte 0
+ row[4] = Data Byte 1
+ ...
+ row[10] = Data Byte 7
+
+ @type freq: number
+ @param freq: Frequency of the CAN bus
+
+ """
self.client.serInit()
self.spitSetup(freq)
for row in packets:
"""
- def __init__(self, data_location):
+ def __init__(self, data_location = "../../contrib/ThayerData/"):
"""
Constructor
- @type datalocation: string
- @param datalocation: path to the folder where data will be stored
+ @type data_location: string
+ @param data_location: path to the folder where data will be stored
"""
GoodFETMCPCANCommunication.__init__(self, data_location)
#super(experiments,self).__init(self)
This method will sweep through the range of standard ids given from low to high.
This will actively filter for 6 ids at a time and sniff for the given amount of
time in seconds. If at least one message is read in then it will go individually
- through the 6 ids and sniff only for that id for the given amount of time. All the
- data gathered will be saved. This does not save any sniffed packets.
+ through the 6 ids and sniff only for that id for the given amount of time.
+ This does not save any sniffed packets.
@type freq: number
@param freq: The frequency at which the bus is communicating
value = random.randint(0, 255) #generate pseudo-random integer value
packet[i+5] = value
- print packet
+ #print packet
#put a rough time stamp on the data and get all the data bytes
row = [time.time(), id_new,8]
"""@todo: allow for varied packet lengths"""