Library for the (decidedly not as good as the 24L01+) Nordic 2401A radio.
Diff: Nrf2401A.h
- Revision:
- 0:db163b6f1592
- Child:
- 1:049f6cb8b160
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Nrf2401A.h Fri Sep 20 20:55:24 2013 +0000 @@ -0,0 +1,68 @@ +/* + * Nrf2401A.h + * A simplistic interface for using Sparkfun's Nrf2401A breakout boards with Arduino + * + * Ported to mbed by Jas Strong <jasmine@heroicrobotics.com> + * + * Original code for http://labs.ideo.com by Jesse Tane March 2009 + * + * License: + * -------- + * This is free software. You can redistribute it and/or modify it under + * the terms of Creative Commons Attribution 3.0 United States License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/us/ + * or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + * + * Original version Notes: + * ----------------------- + * For documentation on how to use this library, please visit http://www.arduino.cc/playground/Main/InterfacingWithHardware + * Pin connections should be as follows for Arduino: + * + * DR1 = 2 (digital pin 2) + * CE = 3 + * CS = 4 + * CLK = 5 + * DAT = 6 + * + */ + +#include "mbed.h" + +#define NRF2401_BUFFER_SIZE 25 + +class Nrf2401 +{ + public: + + // properties + + volatile unsigned char data[NRF2401_BUFFER_SIZE]; + volatile unsigned int remoteAddress; + volatile unsigned int localAddress; + volatile unsigned char dataRate; + volatile unsigned char channel; + volatile unsigned char power; + volatile unsigned char mode; + + // methods + + Nrf2401(PinName n_DR1, PinName n_CE, PinName n_SC, PinName n_CLK, PinName n_DAT); + void rxMode(unsigned char messageSize=0); + void txMode(unsigned char messageSize=0); + void write(unsigned char dataByte); + void write(unsigned char* dataBuffer=0); + void read(unsigned char* dataBuffer=0); + bool available(void); + + // you shouldn't need to use anything below this point.. +private: + volatile unsigned char payloadSize; + volatile unsigned char configuration[15]; + void configure(void); + void loadConfiguration(bool modeSwitchOnly=false); + void loadByte(unsigned char byte); + + DigitalOut _ce, _cs, _clk; + DigitalIn _dr1; + DigitalInOut _dat; +};