My fork during debugging.

Fork of NRF2401P by Malcolm McCulloch

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);
     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;