#Radio stuff begins here.
def RF_setenc(self,code="802.15.4"):
"""Set the encoding type."""
- return;
+ return code;
def RF_getenc(self):
"""Get the encoding type."""
return "802.15.4";
print "ERROR: Forgot to set the key.";
return;
+ def RF_setnonce(self,key):
+ """Sets the first key for encryption to the given argument."""
+ print "ERROR: Forgot to set the nonce.";
+
+ return;
+
def RF_setfreq(self,frequency):
"""Set the frequency in Hz."""
mhz=frequency/1000000;
"""Returns the received signal strength, with a weird offset."""
rssival=self.peek(0x13)&0xFF; #raw RSSI register
return rssival^0x80;
+
+ def peekram(self,adr,count):
+ """Peeks data from CC2420 RAM."""
+ data=[
+ adr&0xFF,adr>>8, # Address first.
+ count&0xFF,count>>8 # Then length.
+ ];
+ self.writecmd(self.CCSPIAPP,0x84,len(data),data);
+ return self.data;
+ def pokeram(self,adr,data):
+ """Pokes data into CC2420 RAM."""
+ data=[adr&0xFF, adr>>8]+data;
+ self.writecmd(self.CCSPIAPP,0x85,len(data),data);
+ return;
+
lastpacket=range(0,0xff);
def RF_rxpacket(self):
"""Get a packet from the radio. Returns None if none is
return None;
return buffer;
+ def RF_rxpacketrepeat(self):
+ """Gets packets from the radio, ignoring all future requests so as
+ not to waste time. Call RF_rxpacket() after this."""
+
+ self.writecmd(self.CCSPIAPP,0x91,0,None);
+ return None;
+
def RF_rxpacketdec(self):
"""Get and decrypt a packet from the radio. Returns None if
none is waiting."""
self.poke(0x03,choice);
self.maclen=len;
def printpacket(self,packet,prefix="#"):
+ print self.packet2str(packet,prefix);
+ def packet2str(self,packet,prefix="#"):
s="";
i=0;
for foo in packet:
s="%s %02x" % (s,ord(foo));
- print "%s%s" % (prefix,s);
+ return "%s%s" % (prefix,s);
def printdissect(self,packet):
try: