Chris Dick
/
nRF2401A_Hello_World
Hello world example for the nRF2401A Library
Diff: main.cpp
- Revision:
- 4:aa6866d2014a
- Parent:
- 3:34ae527e9d41
- Child:
- 6:f43bf63489bb
--- a/main.cpp Sun Oct 06 16:19:52 2013 +0000 +++ b/main.cpp Sat Oct 19 11:11:59 2013 +0000 @@ -1,19 +1,30 @@ #include "mbed.h" #include "nRF2401A.h" -// comment these out depending on the job of the mbed. If your only using one mbed leave both uncommented. -#define TX +/* comment these out depending on the job of the mbed. If your only using one mbed leave both uncommented. */ +//#define TX #define RX +/* If using the FRDM-KL25Z uncomment this line */ +//#define FRDMKL25Z + Serial pc(USBTX, USBRX); DigitalOut myled(LED1); #ifdef TX +#ifdef FRDMKL25Z +nRF2401A rf1(PTD0, PTD5, PTA13, PTC12, PTC13); +#else nRF2401A rf1(p10, p11, p12, p13, p14); #endif +#endif #ifdef RX -nRF2401A rf2(p21, p22, p23, p24, p25); +#ifdef FRDMKL25Z +nRF2401A rf2(PTD0, PTD5, PTA13, PTC12, PTC13); +#else +nRF2401A rf2(p10, p11, p12, p13, p14); +#endif bool rx_recieved = false; @@ -27,7 +38,8 @@ wait(0.005); pc.printf("Hello nRF2401A\n\r"); -#ifdef TX +#ifdef TX + /* initialise the nRF2401A with payload size, address, CRC, bit rate and channel */ rf1.setDataPayloadLength(4 << 3) .setAddress(0x0, 0x0, 0xa6, 0xa6, 0xa6, 3 << 3) .setCRCMode(nRF2401A::NO_CRC) @@ -37,12 +49,14 @@ rf1.printControlPacket(pc); rf1.flushControlPacket(); + /* initialise variables to use for tranmission */ nRF2401A::address_t rf2_addr = {0x0, 0x0, 0x53, 0x53, 0x53}; uint8_t msg[] = {0x01, 0x01, 0x01, 0x01}; uint32_t *msg32 = (uint32_t *) msg; #endif #ifdef RX + /* initialise the nRF2401A with payload size, address, CRC, bit rate and channel */ rf2.setDataPayloadLength(4 << 3) .setAddress(0x0, 0x0, 0x53, 0x53, 0x53, 3 << 3) .setCRCMode(nRF2401A::NO_CRC) @@ -51,29 +65,52 @@ rf2.printControlPacket(pc); rf2.flushControlPacket(); + + /* attach receive callback */ rf2.attachRXHandler(&nRF2401A_rx, 0); #endif while(1) { -#ifdef TX +#ifdef TX + myled = 0; + wait(0.25); + + /* send the message to the nRF2401A */ rf1.sendMsg(rf2_addr, 3 << 3, msg, 4 << 3); *msg32 += 1; + + myled = 1; + wait(0.25); #endif - myled = 1; - wait(0.25); #ifdef RX if (rx_recieved) { + /* send the read buffer directly to the serial port */ rf2.printDataPacket(pc); + + /* send a single byte from the read buffer to the serial port */ + uint8_t rx_msg = 0; + rf2.readMsg_byte(&rx_msg, 0 ); + pc.printf("\n\r%d\n\r", rx_msg); + + /* read the read buffer , then send to the serial port */ + uint8_t rx_buffer[32] = {0}; + rf2.readMsg( &rx_buffer[0], 32); + for(int i = 0; i < sizeof(rx_buffer); i++) + { + pc.printf("%02x ", rx_buffer[i]); + } + pc.printf("\r\n"); + + /* clear flags and flash the led */ rx_recieved = false; + myled = !myled; } #endif - myled = 0; - wait(0.25); } }