--- /dev/null
+#!/usr/bin/env python
+# GoodFET SPI Flash Client
+#
+# (C) 2012 Travis Goodspeed <travis at radiantmachines.com>
+#
+# This code is being rewritten and refactored. You've been warned!
+
+import sys;
+import binascii;
+import array;
+
+from GoodFETMCPCAN import GoodFETMCPCAN;
+from intelhex import IntelHex;
+
+if(len(sys.argv)==1):
+ print "Usage: %s verb [objects]\n" % sys.argv[0];
+ print "%s info" % sys.argv[0];
+ print "%s test" % sys.argv[0];
+ 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];
+ sys.exit();
+
+#Initialize FET and set baud rate
+client=GoodFETMCPCAN();
+client.serInit()
+
+
+client.MCPsetup();
+
+#Dummy read.
+#Might read as all ones if chip has a startup delay.
+
+if(sys.argv[1]=="info"):
+ print "MCP2515 Info:";
+ print "Read Status: %02x" % client.MCPreadstatus();
+ print "Rx Status: %02x" % client.MCPrxstatus();
+ print "Tx Errors: %3d" % client.peek8(0x1c);
+ print "Rx Errors: %3d" % client.peek8(0x1d);
+ print "RX Buffers:"
+ packet0=client.readrxbuffer(0);
+ packet1=client.readrxbuffer(1);
+ for foo in [packet0, packet1]:
+ print client.packet2str(foo);
+if(sys.argv[1]=="sniff"):
+ while 1:
+ packet=client.rxpacket();
+ if packet!=None:
+ print client.packet2str(packet);
+if(sys.argv[1]=="test"):
+ print "MCP2515 Self Test:";
+
+ client.poke8(0x00,0xde);
+ if client.peek8(0x00)!=0xde:
+ print "ERROR: Poke to TEC failed.";
+ else:
+ print "SUCCESS: Register read/write.";
+
+if(sys.argv[1]=="peek"):
+ start=0x0000;
+ if(len(sys.argv)>2):
+ start=int(sys.argv[2],16);
+ stop=start;
+ if(len(sys.argv)>3):
+ stop=int(sys.argv[3],16);
+ print "Peeking from %04x to %04x." % (start,stop);
+ while start<=stop:
+ print "%04x: %02x" % (start,client.peek8(start));
+ start=start+1;