X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2Fgoodfet.mcpcan;h=0c0779c9ff96b29e06822a5f2a09516ec8f7ec36;hp=35fc1d4c4675eb1c6a154cd2ce46cb63cf18c233;hb=b7de45ade031d2b780bad27428dff03ff4c317e1;hpb=43f50970e78843e02cfa981005165ef0b64381a0 diff --git a/client/goodfet.mcpcan b/client/goodfet.mcpcan index 35fc1d4..0c0779c 100755 --- a/client/goodfet.mcpcan +++ b/client/goodfet.mcpcan @@ -19,7 +19,9 @@ if(len(sys.argv)==1): print "%s peek 0x$start [0x$stop]" % sys.argv[0]; #print "%s poke 0x$adr 0x$val" % sys.argv[0]; - print "\n%s sniff" % sys.argv[0]; + print "\n%s sniff [kHz]" % sys.argv[0]; + print "\n%s isniff [kHz]" % sys.argv[0]; + print "\nSupported rates: 83.3, 100, 125, 250, 500, 1000 kHz."; sys.exit(); #Initialize FET and set baud rate @@ -33,7 +35,9 @@ client.MCPsetup(); #Might read as all ones if chip has a startup delay. if(sys.argv[1]=="info"): - print "MCP2515 Info:"; + print "MCP2515 Info:\n\n"; + + print "Mode: %s" % client.MCPcanstatstr(); print "Read Status: %02x" % client.MCPreadstatus(); print "Rx Status: %02x" % client.MCPrxstatus(); print "Tx Errors: %3d" % client.peek8(0x1c); @@ -43,20 +47,60 @@ if(sys.argv[1]=="info"): packet1=client.readrxbuffer(1); for foo in [packet0, packet1]: print client.packet2str(foo); + if(sys.argv[1]=="sniff"): + if len(sys.argv)>2: + rate=float(sys.argv[2]); + client.MCPsetrate(rate); + client.MCPreqstatListenOnly(); while 1: packet=client.rxpacket(); if packet!=None: print client.packet2str(packet); + +if(sys.argv[1]=="isniff"): + """ An intelligent sniffer, decodes message format """ + """ More features to be added soon """ + if len(sys.argv)>2: + rate=float(sys.argv[2]); + client.MCPsetrate(rate); + client.MCPreqstatListenOnly(); + while 1: + packet=client.rxpacket(); + if packet!=None: + plist=[]; + for byte in packet: + plist.append(byte); + arbid=plist[0:2]; + eid=plist[2:4]; + dlc=plist[4:5]; + data=plist[5:13]; + print "\nArbID: " + client.packet2str(arbid); + print "EID: " + client.packet2str(eid); + print "DLC: " + client.packet2str(dlc); + print "Data: " + client.packet2str(data); + if(sys.argv[1]=="test"): print "MCP2515 Self Test:"; + #Switch to config mode and try to rewrite TEC. + client.MCPreqstatConfiguration(); client.poke8(0x00,0xde); if client.peek8(0x00)!=0xde: print "ERROR: Poke to TEC failed."; else: print "SUCCESS: Register read/write."; - + + #Switch to Loopback mode and try to catch our own packet. + client.MCPreqstatLoopback(); + client.txpacket([0xb1, 0x6b, 0x00, 0x65, + 0xb1, 0x6b, 0x00, 0x65 + ]); + print "Waiting on loopback packet."; + packet=None; + while packet==None: + packet=client.rxpacket(); + print "Success! Got %s" % client.packet2str(packet); if(sys.argv[1]=="peek"): start=0x0000; if(len(sys.argv)>2):