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
#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);
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):