X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fradios%2Fccspi.c;h=377a5f0cbe4c2a66a6e1cbf8926ee271da9d00c5;hp=dd86e8c154655d2b7b49852905c63ea94848f407;hb=a031b4a563978102c664466d1e91a9c3ab0553dd;hpb=e027df82b3f7b6c0ed428a504220e13ae02886e9 diff --git a/firmware/apps/radios/ccspi.c b/firmware/apps/radios/ccspi.c index dd86e8c..377a5f0 100644 --- a/firmware/apps/radios/ccspi.c +++ b/firmware/apps/radios/ccspi.c @@ -139,14 +139,42 @@ void ccspi_handle_fn( uint8_t const app, txdata(app,verb,0); break; case CCSPI_RX: - //Get the packet. - CLRSS; - ccspitrans8(CCSPI_RXFIFO); - for(i=0;i<32;i++) - cmddata[i]=ccspitrans8(0xde); - SETSS; - //no break - txdata(app,verb,32); +#ifdef FIFOP + //Has there been an overflow? + if((!FIFO)&&FIFOP){ + debugstr("Clearing overflow"); + CLRSS; + ccspitrans8(0x08); //SFLUSHRX + SETSS; + } + + //Is there a packet? + if(FIFOP&&FIFO){ + //Wait for completion. + while(SFD); + + //Get the packet. + CLRSS; + ccspitrans8(CCSPI_RXFIFO | 0x40); + //ccspitrans8(0x3F|0x40); + cmddata[0]=0xff; //to be replaced with length + for(i=0;i