Chris Dick
/
nRF2401A_Hello_World
Hello world example for the nRF2401A Library
main.cpp
- Committer:
- TheChrisyd
- Date:
- 2013-10-26
- Revision:
- 6:f43bf63489bb
- Parent:
- 4:aa6866d2014a
- Child:
- 7:202814542566
File content as of revision 6:f43bf63489bb:
#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 #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); //ce, cs, dr1, clk1, data #else nRF2401A rf1(p10, p11, p12, p13, p14); #endif #endif #ifdef RX #ifdef FRDMKL25Z nRF2401A rf2(PTD0, PTD5, PTA13, PTC12, PTC13); #else nRF2401A rf2(p10, p11, p12, p13, p14); #endif bool rx_recieved = false; void nRF2401A_rx (void *arg) { rx_recieved = true; } #endif int main() { wait(0.005); pc.printf("Hello nRF2401A\n\r"); #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) .setDataRate(nRF2401A::BIT_RATE_250KBITS) .setChannel(0x02); 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) .setDataRate(nRF2401A::BIT_RATE_250KBITS) .setChannel(0x02); rf2.printControlPacket(pc); rf2.flushControlPacket(); /* attach receive callback */ rf2.attachRXHandler(&nRF2401A_rx, 0); #endif while(1) { #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 #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 } }