X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETMCPCANCommunication.py;h=5e8e768792b25ee469a86ef9e33e13642aa081e4;hp=d5be0817fa03e1475bd176cfa63a81a33e81451f;hb=af6df0be910ce561fcbb719d52764305b84261bb;hpb=c5d15c5a465754685b000e61e7de7961a1894491 diff --git a/client/GoodFETMCPCANCommunication.py b/client/GoodFETMCPCANCommunication.py index d5be081..5e8e768 100644 --- a/client/GoodFETMCPCANCommunication.py +++ b/client/GoodFETMCPCANCommunication.py @@ -435,7 +435,7 @@ class GoodFETMCPCANCommunication: if (verbose == True): print "Filtering for SID %d (0x%02xh) with filter #%d"%(ID, ID, filter); - + self.client.MCPreqstatNormal(); # this will sweep through the given ids to request a packet and then sniff on that @@ -447,16 +447,21 @@ class GoodFETMCPCANCommunication: self.client.serInit() self.spitSetup(freq) for i in range(lowID,highID+1, 1): - - standardid = [i, i, i] + self.spitSetup(freq) + standardid = [i, i, i, i] #set filters self.addFilter(standardid, verbose = True) + #### split SID into different areas SIDlow = (standardid[0] & 0x07) << 5; # get SID bits 2:0, rotate them to bits 7:5 SIDhigh = (standardid[0] >> 3) & 0xFF; # get SID bits 10:3, rotate them to bits 7:0 #create RTR packet packet = [SIDhigh, SIDlow, 0x00,0x00,0x40] - self.client.poke8(0x2C,0x00); #clear the CANINTF register; we care about bits 0 and 1 (RXnIF flags) which indicate a message is being held + #self.client.poke8(0x2C,0x00); #clear the CANINTF register; we care about bits 0 and 1 (RXnIF flags) which indicate a message is being held + #clear buffer + packet1 = self.client.rxpacket(); + packet2 = self.client.rxpacket(); + #send in rtr request self.client.txpacket(packet) ## listen for 2 packets. one should be the rtr we requested the other should be ## a new packet response @@ -467,6 +472,10 @@ class GoodFETMCPCANCommunication: print self.client.packet2parsedstr(packet1); print self.client.packet2parsedstr(packet2); continue + elif( packet1 != None): + print self.client.packet2parsedstr(packet1) + elif( packet2 != None): + print self.client.packet2parsedstr(packet2) trial= 2; # for each trial while( trial <= attempts): @@ -478,12 +487,18 @@ class GoodFETMCPCANCommunication: while( (time.time()-starttime) < duration): packet1=self.client.rxpacket(); packet2=self.client.rxpacket(); - + if( packet1 != None and packet2 != None): print "packets recieved :\n " print self.client.packet2parsedstr(packet1); print self.client.packet2parsedstr(packet2); #break + elif( packet1 != None): + print "just packet1" + print self.client.packet2parsedstr(packet1) + elif( packet2 != None): + print "just packet2" + print self.client.packet2parsedstr(packet2) trial += 1 print "sweep complete"