"""Exchange data by EM260 SPI. (Slightly nonstandard.)"""
self.data=data;
self.writecmd(0x01,0x82,len(data),data);
+
+ try:
+ reply=ord(self.data[0]);
+ if(reply==0x00):
+ print "Warning: EM260 rebooted.";
+ return self.EM260trans(data);
+ if(reply==0x02):
+ print "Error: Aborted Transaction.";
+ #return self.EM260trans(data);
+ if(reply==0x03):
+ print "Error: Missing Frame Terminator.";
+ #return self.data;
+ except:
+ print "Error in EM260trans.";
return self.data;
return ord(data[0]);
def info(self):
"""Read the info bytes."""
- #data=self.EM260trans([0x0A,0xA7]);
- #data=self.EM260trans([0xFE,0x04,
- # 0x00,0x00,0x00,0x02,
- # 0xA7]);
- data=self.EM260trans([0x0B,0xA7]);
-
- #data=self.EM260trans([]);
+ version=self.EM260spiversion();
+ status=self.EM260spistatus();
+ print "Version: %i" % (version);
+ print "Status: %s" % (["dead","alive"][status]);
+ def EM260spiversion(self):
+ """Read the SPI version number from EM260."""
+ data=self.EM260trans([0x0A,0xA7]);
+ version=ord(data[0]);
- #data=self.EM260trans([0x0B,0x0B,0x0B,0x0B,0xA7]);
-
- s="";
- for foo in data:
- s=s+"%02x " % ord(foo);
- print s;
+ if version==0x00:
+ return self.EM260spiversion();
+ if version==0x02:
+ return self.EM260spiversion();
+ if not version&0x80:
+ print "Version misread.";
+ return 0;
+ return version&0x7F;
+
+ def EM260spistatus(self):
+ """Read the status bit."""
+ data=self.EM260trans([0x0B,0xA7]);
+ status=ord(data[0]);
+ if status==0x00:
+ return self.EM260spistatus();
+ if status==0x02:
+ return self.EM260spistatus();
+ if not status&0xC0:
+ print "Status misread.";
+ return 0;
+ return status&1;