Prueba

Dependencies:   nRF24L01P

main.cpp

Committer:
DiegoColl
Date:
2017-10-10
Revision:
0:4baeaa8661bc

File content as of revision 0:4baeaa8661bc:

#include "mbed.h"
#include "nRF24L01P.h"

#define TRANSFER_SIZE   8

Serial pc(USBTX, USBRX); // tx, rx

nRF24L01P my_nrf24l01p(PF_9, PF_8, PF_7, PG_7, PA_8, PA_15);    // mosi, miso, sck, csn, ce, irq

DigitalOut myled1(LED1);

// main() runs in its own thread in the OS
int main() {
    
    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
    int txDataCnt = 0;
    int rxDataCnt = 0;
    char r ='R';
    char e ='E';
    char s ='S';

    my_nrf24l01p.powerUp();

    // Display the (default) setup of the nRF24L01+ chip
    pc.printf( "nRF24L01+ Frequency    : %d MHz\r\n",  my_nrf24l01p.getRfFrequency() );
    pc.printf( "nRF24L01+ Output power : %d dBm\r\n",  my_nrf24l01p.getRfOutputPower() );
    pc.printf( "nRF24L01+ Data Rate    : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
    pc.printf( "nRF24L01+ TX Address   : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
    pc.printf( "nRF24L01+ RX Address   : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );

    pc.printf( "Type keys to test transfers:\r\n(transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );

    my_nrf24l01p.setTransferSize( TRANSFER_SIZE );

    my_nrf24l01p.setReceiveMode();
    my_nrf24l01p.enable();

    while (1) {
        
        myled1 = !myled1;
        wait(0.5);
        
        // If we've received anything over the host serial link...
        if ( pc.readable() ) {

            // ...add it to the transmit buffer
            txData[txDataCnt++] = pc.getc();

            // If the transmit buffer is full
            if ( txDataCnt >= sizeof( txData ) ) {

                // Send the transmitbuffer via the nRF24L01+
                
                my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );

                txDataCnt = 0;
                
                pc.putc(s);
            }

            pc.putc(e);
        }

        // If we've received anything in the nRF24L01+...
        if ( my_nrf24l01p.readable() ) {

            // ...read the data into the receive buffer
            rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );

            // Display the receive buffer contents via the host serial link
            for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {

                pc.putc( rxData[i] );

            }
            
            pc.putc(r);
            
            // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
            //myled1 = !myled1;
        }
    }
}