X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fradios%2Fnrf.c;h=f65d2e537e2a97a76995a677b8e923083133ff5a;hp=6b2ad59b095472b0865a4f4b1fe330100a987e2b;hb=8bba67a8aeb9e40bb81ba2749710b9fef660d689;hpb=17693c959ca627716d8d44c12d16a13d38a293f3 diff --git a/firmware/apps/radios/nrf.c b/firmware/apps/radios/nrf.c index 6b2ad59..f65d2e5 100644 --- a/firmware/apps/radios/nrf.c +++ b/firmware/apps/radios/nrf.c @@ -29,7 +29,7 @@ //! Set up the pins for NRF mode. void nrfsetup(){ - P5OUT=SS; + P5OUT|=SS; P5DIR&=~MISO; P5DIR|=MOSI+SCK+SS; @@ -39,9 +39,8 @@ void nrfsetup(){ P5OUT|=SS; } - //! Read and write an NRF byte. -unsigned char nrftrans8(unsigned char byte){ +u8 nrftrans8(u8 byte){ register unsigned int bit; //This function came from the NRF Wikipedia article. //Minor alterations. @@ -65,6 +64,27 @@ unsigned char nrftrans8(unsigned char byte){ } +//! Writes a register +u8 nrf_regwrite(u8 reg, const u8 *buf, int len){ + P5OUT&=~SS; + + reg=nrftrans8(reg); + while(len--) + nrftrans8(*buf++); + + P5OUT|=SS; +} +//! Reads a register +u8 nrf_regread(u8 reg, u8 *buf, int len){ + P5OUT&=~SS; + + reg=nrftrans8(reg); + while(len--) + *buf++=nrftrans8(0); + + P5OUT|=SS; +} + //! Handles a Nordic RF command. void nrfhandle(unsigned char app, unsigned char verb, @@ -77,7 +97,7 @@ void nrfhandle(unsigned char app, switch(verb){ //PEEK and POKE might come later. - case READ: + case READ: case WRITE: P5OUT&=~SS; //Drop !SS to begin transaction. for(i=0;i