Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: nRF2401A_Hello_World nRF2401A_Wireless_Accelerometer_joypad nRF2401A_Gameduino_Invaders
Diff: nRF2401A.h
- Revision:
- 5:18ce8a56b248
- Parent:
- 4:e8523ef6e472
- Child:
- 6:ad8242a1379a
--- a/nRF2401A.h Sun Oct 06 16:17:32 2013 +0000
+++ b/nRF2401A.h Sat Oct 19 11:10:47 2013 +0000
@@ -53,19 +53,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;
*
@@ -79,7 +90,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)
@@ -89,12 +101,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)
@@ -103,34 +117,56 @@
*
* 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);
* }
* }
*
- *
* @endcode
*/
@@ -145,7 +181,7 @@
/** Class constructor.
* The constructor assigns the specified pinout, attatch the
* DR1 to a pin interrupt and sets up inmutable control packet
- * fields.
+ * fields. for the KL25Z, the Data Ready pin must be on ports A or C
* @param ce Chip Enable (CE) pin of the nRF2401A.
* @param c2 Chip Select (CS) pin of the nRF2401A.
* @param dr1 Data Ready 1 (DR1) pin of the nRF2401A.
@@ -205,7 +241,7 @@
CRC_8 = 0x1, /**< Use a 8-bit CRC. */
CRC_16 = 0x3 /**< Use a 16-bit CRC. */
} CRC_T;
-
+ typedef uint8_t read_msg;
/** Set CRC use.
* Set the CRC mode field of the control packet.
* @param mode The CRC mode of choise.
@@ -264,7 +300,25 @@
*
*/
typedef uint8_t address_t[5];
-
+
+/** Read a message.
+ * This routine will transfer the data from the receive buffer to the buffer
+ * supplied. It will transfer a number of Bytes equal to the specified length.
+ * @param msg_buf Message buffer.
+ * @param msg_len Length of message, in bits.
+ * @return Reference to the invoked object (for chaining operations).
+ */
+ nRF2401A& readMsg( uint8_t *msg_buf, uint8_t msg_len );
+
+/** Read a byte from message.
+ * This routine will transfer the data from the receive buffer to the buffer
+ * supplied. It will transfer one Bytes at index buf_index.
+ * @param msg_buf Message body.
+ * @param buf_index index of byte to be read.
+ * @return Reference to the invoked object (for chaining operations).
+ */
+ nRF2401A& readMsg_byte( uint8_t *msg_buf, uint8_t buf_index );
+
/** Send a message.
* This routine will transfer the data from the supplied buffer and send
* it to the specified address using the current control packet settings.
@@ -336,7 +390,7 @@
uint8_t *_ctrl_packet; /**< */
- uint8_t _data_buf[32]; /**< */
+ uint8_t _data_buf[32]; /**< */
nRF2401A_rx_handler_t _rx_handler; /**< */
void *_rx_handler_arg; /**< */
nRF2401A