My fork during debugging.
Fork of NRF2401P by
Diff: NRF2401P.cpp
- Revision:
- 15:9998698cb041
- Parent:
- 4:e55807cf840b
--- a/NRF2401P.cpp Fri Jun 12 09:55:02 2015 +0000 +++ b/NRF2401P.cpp Thu Jun 18 20:54:25 2015 +0000 @@ -32,8 +32,7 @@ csn( DigitalOut( _csn ) ), ce( DigitalOut( _ce ) ) { addressWidth = 5; - pc = new Serial( USBTX, USBRX ); // tx, rx - sprintf(logMsg, "Initialise " ); + sprintf(logMsg, "Initialise nNR24l01P" ); log(logMsg); spi = new SPI( mosi, miso, sclk, NC ); //SPI (PinName mosi, PinName miso, PinName sclk, PinName _unused=NC) spi->frequency( 10000000 ); // 1MHZ max 10 MHz @@ -56,22 +55,6 @@ }; } -void NRF2401P::scratch() -{ - int status = 0; - int register1 = 0; - ce = 0; - for ( char i = 0; i < 24; i++ ) { - csn = 0; - //wait_us(100); - status = spi->write( i ); - register1 = spi->write( 0x00 ); - csn = 1; - sprintf(logMsg, " register %02x (%02x) = %02x", i, status, register1 ); - log(logMsg); - } - -} /** * start here to configure the basics of the NRF */ @@ -107,7 +90,7 @@ * Sets up for receive of a message to address 0XA0A0A0 */ -char NRF2401P::testReceive() +void NRF2401P::testReceive() { char message[64]; char width; @@ -156,7 +139,7 @@ * Sets up for transmit of a message to address 0XA0A0A0 */ -char NRF2401P::testTransmit() +void NRF2401P::testTransmit() { long long addr=0xA0B0C0; int channel = 0x12; @@ -182,11 +165,13 @@ '0x02' – -6dBm '0x03' – 0dBm */ -char NRF2401P::setRadio(char speed,char power) +void NRF2401P::setRadio(char speed,char power) { char val=0; + if (debug){ sprintf(logMsg, "Set radio"); log(logMsg); + } if (speed & 0x02) { val |= (1<<5); } @@ -196,12 +181,13 @@ writeReg (0x06,val); } + /** Set RF_CH = chan; F0= 2400 + chan [MHz] */ -char NRF2401P::setChannel(char chan) +void NRF2401P::setChannel(char chan) { sprintf(logMsg, "Set channel"); log(logMsg); @@ -232,7 +218,7 @@ flushTx(); } if (debug) { - sprintf(logMsg, " Transmit data %d bytes to %02x (%02x) = %10s", width, address, status, *data ); + sprintf(logMsg, " Transmit data %d bytes to %02x (%02x) = %10s", width, address, status, data ); log(logMsg); } return status; @@ -242,7 +228,7 @@ /** * sets acknowledge data width bytes of data. width <32 */ -char NRF2401P::acknowledgeData( char *data, char width, char pipe ) +void NRF2401P::acknowledgeData( char *data, char width, char pipe ) { ce = 1; csn = 0; @@ -260,13 +246,12 @@ sprintf(logMsg, " acknowledge data %d bytes to %02x (%02x) = %c", width, address, status, *data ); log(logMsg); } - return status; } /** * Writes 1 byte data to a register **/ -char NRF2401P::writeReg( char address, char data ) +void NRF2401P::writeReg( char address, char data ) { char status = 0; char reg; @@ -276,14 +261,15 @@ status = spi->write( reg ); spi->write( data ); csn = 1; + if (debug){ sprintf(logMsg, " register write %02x (%02x) = %02x", address, status, data ); log(logMsg); - return status; + } } /** * Writes width bytes data to a register, ls byte to ms byte /for adressess **/ -char NRF2401P::writeReg( char address, char *data, char width ) +void NRF2401P::writeReg( char address, char *data, char width ) { char reg; csn = 0; @@ -300,10 +286,10 @@ sprintf(logMsg, " register write %d bytes to %02x (%02x) = %02x %02x %02x", width, address, status, data[0], data[1], data[2] ); log(logMsg); } - return status; } + /** -* Reads 1 byte from a register +* Reads 1 byte from a register in data. returns the status register **/ char NRF2401P::readReg( char address, char *data ) { @@ -316,12 +302,13 @@ // log(logMsg); return status; } + /** * Clears the status flags RX_DR, TX_DS, MAX_RT */ -bool NRF2401P::clearStatus() +void NRF2401P::clearStatus() { - status = writeReg(STATUS,0x70); + writeReg(STATUS,0x70); if (debug) { sprintf(logMsg, "Clear status (%02x)", status ); log(logMsg); @@ -330,7 +317,7 @@ /** * flushes TX FIFO and resets status flags */ -bool NRF2401P::flushTx() +void NRF2401P::flushTx() { csn = 0; status = spi->write( FLUSH_TX ); @@ -346,7 +333,7 @@ /** * flushes RX FIFO and resets status flags */ -bool NRF2401P::flushRx() +void NRF2401P::flushRx() { csn = 0; status = spi->write( FLUSH_RX ); @@ -387,30 +374,30 @@ /** * Sets the number of bytes of the address width = 3,4,5 */ -bool NRF2401P::setAddressWidth( char width ) +void NRF2401P::setAddressWidth( char width ) { addressWidth = width; if ( ( width > 5 ) || ( width < 3 ) ) - return false; + return ; width -= 2; - return writeReg( 0x03, width ); + writeReg( 0x03, width ); } /** * Sets the address, uses addess width set (either 3,4 or 5) */ -char NRF2401P::setTxAddress( char *address ) +void NRF2401P::setTxAddress( char *address ) { memcpy (txAdd,address, addressWidth); writeReg( 0x0A, address, addressWidth ); //Write to RX_ADDR_P0 - return writeReg( 0x10, address, addressWidth ); //Write to TX_ADDR + writeReg( 0x10, address, addressWidth ); //Write to TX_ADDR } /** * Sets the address, uses addess width set (either 3,4 or 5) */ -char NRF2401P::setTxAddress( long long address ) +void NRF2401P::setTxAddress( long long address ) { char buff[ 5 ]; @@ -419,7 +406,7 @@ buff[ 2 ] = ( address >> 16 ) & 0xFF; buff[ 3 ] = ( address >> 24 ) & 0xFF; buff[ 4 ] = ( address >> 32 ) & 0xFF; - return setTxAddress( buff ); + setTxAddress( buff ); } @@ -427,12 +414,12 @@ * Sets the address, uses addess width set (either 3,4 or 5) * Enables pipe for receiving; */ -char NRF2401P::setRxAddress( char *address, char pipe ) +void NRF2401P::setRxAddress( char *address, char pipe ) { if(debug) { log ("Set Rx Address"); } - if (pipe>5) return 0xff; + if (pipe>5) return; if (pipe ==0) { memcpy (pipe0Add,address, addressWidth); } @@ -441,14 +428,14 @@ switch ( pipe ) { case ( 0 ) : case ( 1 ) : { - status = writeReg( reg, address, addressWidth ); //Write to RX_ADDR_P0 or _P1 + writeReg( reg, address, addressWidth ); //Write to RX_ADDR_P0 or _P1 break; } case ( 2 ) : case ( 3 ) : case ( 4 ) : case ( 5 ) : { - status = writeReg( reg, address, 1 ); //Write to RX_ADDR_P2 ... _P5 + writeReg( reg, address, 1 ); //Write to RX_ADDR_P2 ... _P5 break; } @@ -456,14 +443,13 @@ readReg(EN_RXADDR,®); reg |= (1<<pipe); writeReg( EN_RXADDR,reg ); //Enable the pipe - return status; } /** * Sets the address of pipe (<=5), uses addess width set (either 3,4 or 5) */ -char NRF2401P::setRxAddress( long long address, char pipe ) +void NRF2401P::setRxAddress( long long address, char pipe ) { char buff[ 5 ]; buff[ 0 ] = address & 0xff; @@ -481,6 +467,7 @@ readReg(0x07,&status); return status; } + /** * checks if Ack data available. */ @@ -524,6 +511,7 @@ // width=18; return width; } + /** * return message in buffer, mem for buffer must have been allocated. * Return value is number of bytes of buffer @@ -572,28 +560,26 @@ /** * Sets PWR_UP = 1; */ -bool NRF2401P::setPwrUp() +void NRF2401P::setPwrUp() { char data; - char bit; + // char bit; ce=1; readReg( CONFIG, &data ); if ((data>>1) &0x01) { - return true; // Already powered up + return; // Already powered up }; data |= ( 0x02 ); writeReg( 0x00, data ); // check - readReg( 0x00, &data ); - bit = ( data >> 1 ) & 1; + // readReg( 0x00, &data ); + //bit = ( data >> 1 ) & 1; wait(0.005); // wait 5ms if(debug) { - sprintf(logMsg, "Set PWR_UP to %x", bit); - log(logMsg); + // sprintf(logMsg, "Set PWR_UP to %x", bit); + // log(logMsg); } - - return ( bit == 1 ); } /** * Sets PRIM_RX = 0;