nRF24L01 driver
Dependents: Nucleo_IOT1 wireless
nRF24L01P_PRX.h
- Committer:
- ianmcc
- Date:
- 2016-09-14
- Revision:
- 6:952996e3abdb
- Parent:
- 0:7313e63394c3
File content as of revision 6:952996e3abdb:
// A simple PRX driver for the nRF24L01+ // for polling mode with fixed payload length #ifndef NRF24L01P_PRX_H #define NRF24L01P_PRX_H #include "nRF24L01P.h" class nRF24L01P_PRX { public: nRF24L01P_PRX(nRF24L01P& Device_, PinName CE_, PinName Int_); // Initialize the device for transmitting. There must be a delay of // at least 100ms from initial power on before this function is called. void Initialize(); // Set the channel number, 0 .. 125 void SetChannel(int Channel); // sets the data rate in Kbps, valid values are 250 (nRF24L01+ only), 1000, 2000 void SetDataRate(int Rate); // Set the 40-bit address void SetAddress(uint64_t Address); // Set the expected payload size void SetPayloadSize(int Size); // Power up ready to enter receive mode. There is a delay of Tpd2stby_us // after PowerUp() before receiving can start. void PowerUp(); // Powers down the device. PowerUp must be called before a packet can be transmitted. void PowerDown(); // Start listening for packets. void StartReceive(); // Stop listening for packets. void StopReceive(); // returns true if there is a packet ready to read bool IsPacketReady(); // PRECONDITION: IsPacketReady(). // Reads the packet into the given buffer. // Returns the size of the packet. int ReadPacket(char* Buf); private: void IntHandler(); void ReadyInitialize(); void ReadyStandby(); nRF24L01P& Device; DigitalOut CE; InterruptIn Int; Timeout PowerOnTimer; Timeout InitializeTimer; int volatile Status; int PayloadSize; }; #endif