From 253ee904459a84c657ef0e3057cbb75efe9481a1 Mon Sep 17 00:00:00 2001 From: travisutk Date: Thu, 20 Sep 2012 13:59:28 +0000 Subject: [PATCH] I think this will add support for decryption of incoming packets, but I might be wrong. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@1264 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- firmware/apps/radios/ccspi.c | 54 ++++++++++++++++++++++++++++++++++++ firmware/include/ccspi.h | 4 +++ 2 files changed, 58 insertions(+) diff --git a/firmware/apps/radios/ccspi.c b/firmware/apps/radios/ccspi.c index 9c6b09c..5d40f11 100644 --- a/firmware/apps/radios/ccspi.c +++ b/firmware/apps/radios/ccspi.c @@ -259,6 +259,60 @@ void ccspi_handle_fn( uint8_t const app, #else debugstr("Can't RX a packet with SFD and FIFOP definitions."); txdata(app,NOK,0); +#endif + break; + case CCSPI_RXDEC: +#ifdef FIFOP + //Has there been an overflow? + if((!FIFO)&&FIFOP){ + debugstr("Clearing overflow"); + CLRSS; + ccspitrans8(0x08); //SFLUSHRX + SETSS; + txdata(app,verb,0); //no packet + return; + } + + //Is there a packet? + if(FIFOP&&FIFO){ + //Wait for completion. + while(SFD); + + //Decrypt the packet. + CLRSS; ccspitrans8(CCSPI_SRXDEC); SETSS; + + //Wait for decryption to complete. + while(!FIFO); + + //Get the packet. + CLRSS; + ccspitrans8(CCSPI_RXFIFO | 0x40); + //ccspitrans8(0x3F|0x40); + cmddata[0]=0x20; //to be replaced with length + + + /* This reads too far on some CC2420 revisions, but on others it + works fine. It probably has to do with whether FIFO drops + before or after the SPI clocking. + + A software fix is to reset the CC2420 between packets. This + works, but a better solution is desired. + */ + for(i=0;i