X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETMCPCANCommunication.py;h=21bdfc073e8cc9849da6668be4ff61d2cd87641e;hp=8fbec7e0e6a37882292dfce8bc69cdf4a073508b;hb=7455b09fe011c4abe0a725a7078f7f103b6cf093;hpb=395f21739bcc43cf11e168268ddbc41026d77bff diff --git a/client/GoodFETMCPCANCommunication.py b/client/GoodFETMCPCANCommunication.py index 8fbec7e..21bdfc0 100644 --- a/client/GoodFETMCPCANCommunication.py +++ b/client/GoodFETMCPCANCommunication.py @@ -15,6 +15,8 @@ import sys; import binascii; import array; import csv, time, argparse; +import datetime +import os from GoodFETMCPCAN import GoodFETMCPCAN; from intelhex import IntelHex; @@ -25,7 +27,9 @@ class GoodFETMCPCANCommunication: self.client=GoodFETMCPCAN(); self.client.serInit() self.client.MCPsetup(); + self.DATALOCATION = "../../contrib/ThayerData/" + def printInfo(self): @@ -63,11 +67,12 @@ class GoodFETMCPCANCommunication: def reset(self): self.client.MCPsetup(); + ########################## # SNIFF ########################## - def sniff(self,freq,duration,filename,description, verbose=True, comment=None, standardid=None): + def sniff(self,freq,duration,description, verbose=True, comment=None, filename=None, standardid=None, debug = False): #### ON-CHIP FILTERING if(standardid != None): @@ -112,12 +117,21 @@ class GoodFETMCPCANCommunication: self.client.poke8(RXFSIDL, SIDlow); if (verbose == True): - print "Filtering for SID %d (0x%02xh) with filter #%d"%(ID, ID, filter); - comment = comment + "%d " %(ID); + print "Filtering for SID %d (0x%02xh) with filter #%d"%(ID, ID, filter); + comment = comment + ("%d " %(ID)) self.client.MCPsetrate(freq); + # This will handle the files so that we do not loose them. each day we will create a new csv file + if( filename==None): + #get folder information (based on today's date) + now = datetime.datetime.now() + datestr = now.strftime("%Y%m%d") + path = self.DATALOCATION+datestr+".csv" + filename = path + + outfile = open(filename,'a'); dataWriter = csv.writer(outfile,delimiter=','); dataWriter.writerow(['# Time Error Bytes 1-13']); @@ -179,13 +193,33 @@ class GoodFETMCPCANCommunication: row.append(0); #since we don't check for errors if we're not in debug mode... row.append(comment) + #write packet to file for byte in packet: row.append("%02x"%ord(byte)); dataWriter.writerow(row); outfile.close() print "Listened for %d seconds, captured %d packets." %(duration,packetcount); - + return packetcount + + + def filterStdSweep(self, freq = freq, time = 5): + msgIDs = [] + niff(self,freq,duration,description, verbose=True, comment=None, filename=None, standardid=None, debug = False): + for i in range(0, 2047, 6): + print "sniffing id: %d, %d, %d, %d, %d, %d" % (i,i+1,i+2,i+3,i+4,i+5) + comment = "sweepFilter_%d_%d_%d_%d_%d_%d" % (i,i+1,i+2,i+3,i+4,i+5) + description = "Running a sweep filer for all the possible standard IDs. This run filters for: %d, %d, %d, %d, %d, %d" % (i,i+1,i+2,i+3,i+4,i+5) + count = self.sniff(freq=freq, duration = time, description = description,comment = comment, standardid = [i, i+1, i+2, i+3, i+4, i+5]) + if( count != 0): + for j in range(i,i+5): + comment = "sweepFilter: %d" % (j) + description = "Running a sweep filer for all the possible standard IDs. This run filters for: %d " % j + count = self.sniff(freq=freq, duration = time, description = description,comment = comment, standardid = [j]) + if( count != 0): + msgIDs.append(j) + return msgIDs + def sniffTest(self, freq): rate = freq; @@ -346,7 +380,7 @@ if __name__ == "__main__": parser.add_argument('verb', choices=['info', 'test','peek', 'reset', 'sniff', 'freqtest','snifftest', 'spit']); parser.add_argument('-f', '--freq', type=int, default=500, help='The desired frequency (kHz)', choices=[100, 125, 250, 500, 1000]); parser.add_argument('-t','--time', type=int, default=15, help='The duration to run the command (s)'); - parser.add_argument('-o', '--output', default="../../contrib/ted/sniff_out.csv",help='Output file'); + parser.add_argument('-o', '--output', default=None,help='Output file'); parser.add_argument("-d", "--description", help='Description of experiment (included in the output file)', default=""); parser.add_argument('-v',"--verbose",action='store_false',help='-v will stop packet output to terminal', default=True); parser.add_argument('-c','--comment', help='Comment attached to ech packet uploaded',default=None); @@ -394,7 +428,7 @@ if __name__ == "__main__": # if(args.verb=="sniff"): - comm.sniff(freq=freq,duration=duration,filename=filename,description=description,verbose=verbose,comment=comments, standardid=standardid) + comm.sniff(freq=freq,duration=duration,description=description,verbose=verbose,comment=comments,filename=filename, standardid=standardid) ########################## # SNIFF TEST @@ -407,6 +441,7 @@ if __name__ == "__main__": if(args.verb=="snifftest"): comm.sniffTest(freq=freq) + ########################## # FREQ TEST ########################## @@ -420,6 +455,8 @@ if __name__ == "__main__": if(args.verb=="freqtest"): comm.freqtest(freq=freq) + + ########################## # iSniff ##########################