BayEOS-Arduino  1.8.0_0.0.4
iBoardRF24.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 J. Coliz <maniacbug@ymail.com>
3  Copyright (C) 2012 Andy Karpov <andy@gmail.com>
4 
5  This program is free software; you can redistribute it and/or
6  modify it under the terms of the GNU General Public License
7  version 2 as published by the Free Software Foundation.
8  */
9 
16 #ifndef __IBOARD_RF24_H__
17 #define __IBOARD_RF24_H__
18 
19 #include <RF24_config.h>
20 
26 typedef enum { RF24_PA_MIN = 0,RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX, RF24_PA_ERROR } rf24_pa_dbm_e ;
27 
33 typedef enum { RF24_1MBPS = 0, RF24_2MBPS, RF24_250KBPS } rf24_datarate_e;
34 
40 typedef enum { RF24_CRC_DISABLED = 0, RF24_CRC_8, RF24_CRC_16 } rf24_crclength_e;
41 
47 {
48 private:
49  uint8_t miso_pin;
50  uint8_t mosi_pin;
51  uint8_t sck_pin;
52  uint8_t irq_pin;
53  uint8_t ce_pin;
54  uint8_t csn_pin;
55  bool wide_band; /* 2Mbs data rate in use? */
56  bool p_variant; /* False for RF24L01 and true for RF24L01P */
57  uint8_t payload_size;
58  bool ack_payload_available;
59  bool dynamic_payloads_enabled;
60  uint8_t ack_payload_length;
61  uint64_t pipe0_reading_address;
63 protected:
83  void csn(int mode);
84 
91  void ce(int level);
92 
98  unsigned char SPI_RW(unsigned char byte);
99 
108  uint8_t read_register(uint8_t reg, uint8_t* buf, uint8_t len);
109 
116  uint8_t read_register(uint8_t reg);
117 
126  uint8_t write_register(uint8_t reg, const uint8_t* buf, uint8_t len);
127 
135  uint8_t write_register(uint8_t reg, uint8_t value);
136 
146  uint8_t write_payload(const void* buf, uint8_t len);
147 
157  uint8_t read_payload(void* buf, uint8_t len);
158 
164  uint8_t flush_rx(void);
165 
171  uint8_t flush_tx(void);
172 
178  uint8_t get_status(void);
179 
187  void print_status(uint8_t status);
188 
196  void print_observe_tx(uint8_t value);
197 
209  void print_byte_register(const char* name, uint8_t reg, uint8_t qty = 1);
210 
222  void print_address_register(const char* name, uint8_t reg, uint8_t qty = 1);
223 
230  void toggle_features(void);
233 public:
250  iBoardRF24(uint8_t _cepin, uint8_t _cspin, uint8_t _mosi_pin, uint8_t _miso_pin, uint8_t _sck_pin, uint8_t _irq_pin);
251 
257  void begin(void);
258 
266  void startListening(void);
267 
273  void stopListening(void);
274 
293  bool write( const void* buf, uint8_t len );
294 
300  bool available(void);
301 
312  uint8_t readPipe( void* buf, uint8_t* pipe );
313 
328  bool read( void* buf, uint8_t len );
329 
348  void openWritingPipe(uint64_t address);
349 
374  void openReadingPipe(uint8_t number, uint64_t address);
375 
392  void setRetries(uint8_t delay, uint8_t count);
393 
399  void setChannel(uint8_t channel);
400 
413  void setPayloadSize(uint8_t size);
414 
422  uint8_t getPayloadSize(void);
423 
432  uint8_t getDynamicPayloadSize(void);
433 
442  void enableAckPayload(void);
443 
452  void enableDynamicPayloads(void);
453 
460  bool isPVariant(void) ;
461 
470  void setAutoAck(bool enable);
471 
481  void setAutoAck( uint8_t pipe, bool enable ) ;
482 
492  void setPALevel( rf24_pa_dbm_e level ) ;
493 
502  rf24_pa_dbm_e getPALevel( void ) ;
503 
512  bool setDataRate(rf24_datarate_e speed);
513 
521  rf24_datarate_e getDataRate( void ) ;
522 
528  void setCRCLength(rf24_crclength_e length);
529 
536 
541  void disableCRC( void ) ;
542 
556  void printDetails(void);
557 
564  void powerDown(void);
565 
571  void powerUp(void) ;
572 
582  bool available(uint8_t* pipe_num);
583 
597  void startWrite( const void* buf, uint8_t len );
598 
613  void writeAckPayload(uint8_t pipe, const void* buf, uint8_t len);
614 
628  bool isAckPayloadAvailable(void);
629 
640  void whatHappened(bool& tx_ok,bool& tx_fail,bool& rx_ready);
641 
650  bool testCarrier(void);
651 
662  bool testRPD(void) ;
663 
665 };
666 
832 #endif // __IBOARD_RF24_H__
833 // vim:ai:cin:sts=2 sw=2 ft=cpp
834 
void toggle_features(void)
Definition: iBoardRF24.cpp:701
uint8_t write_register(uint8_t reg, const uint8_t *buf, uint8_t len)
Definition: iBoardRF24.cpp:78
uint8_t readPipe(void *buf, uint8_t *pipe)
Definition: iBoardRF24.cpp:577
void csn(int mode)
Definition: iBoardRF24.cpp:18
void setChannel(uint8_t channel)
Definition: iBoardRF24.cpp:260
uint8_t getPayloadSize(void)
Definition: iBoardRF24.cpp:279
bool testCarrier(void)
Definition: iBoardRF24.cpp:825
void openWritingPipe(uint64_t address)
Definition: iBoardRF24.cpp:647
bool read(void *buf, uint8_t len)
Definition: iBoardRF24.cpp:620
unsigned char SPI_RW(unsigned char byte)
Definition: iBoardRF24.cpp:30
void writeAckPayload(uint8_t pipe, const void *buf, uint8_t len)
Definition: iBoardRF24.cpp:764
void setCRCLength(rf24_crclength_e length)
Definition: iBoardRF24.cpp:974
void setAutoAck(bool enable)
Definition: iBoardRF24.cpp:796
void setPALevel(rf24_pa_dbm_e level)
Definition: iBoardRF24.cpp:839
rf24_crclength_e getCRCLength(void)
Definition: iBoardRF24.cpp:997
void startListening(void)
Definition: iBoardRF24.cpp:410
rf24_pa_dbm_e getPALevel(void)
Definition: iBoardRF24.cpp:872
void stopListening(void)
Definition: iBoardRF24.cpp:432
bool isAckPayloadAvailable(void)
Definition: iBoardRF24.cpp:780
void enableAckPayload(void)
Definition: iBoardRF24.cpp:737
rf24_datarate_e
Definition: iBoardRF24.h:33
void setRetries(uint8_t delay, uint8_t count)
bool available(void)
Definition: iBoardRF24.cpp:552
void powerDown(void)
Definition: iBoardRF24.cpp:441
uint8_t read_register(uint8_t reg, uint8_t *buf, uint8_t len)
Definition: iBoardRF24.cpp:50
void powerUp(void)
Definition: iBoardRF24.cpp:448
iBoardRF24(uint8_t _cepin, uint8_t _cspin, uint8_t _mosi_pin, uint8_t _miso_pin, uint8_t _sck_pin, uint8_t _irq_pin)
Definition: iBoardRF24.cpp:251
bool testRPD(void)
Definition: iBoardRF24.cpp:832
void setPayloadSize(uint8_t size)
Definition: iBoardRF24.cpp:271
uint8_t flush_rx(void)
Definition: iBoardRF24.cpp:155
void print_address_register(const char *name, uint8_t reg, uint8_t qty=1)
Definition: iBoardRF24.cpp:230
void print_observe_tx(uint8_t value)
Definition: iBoardRF24.cpp:208
void ce(int level)
Definition: iBoardRF24.cpp:25
void disableCRC(void)
bool isPVariant(void)
Definition: iBoardRF24.cpp:789
void openReadingPipe(uint8_t number, uint64_t address)
Definition: iBoardRF24.cpp:674
void printDetails(void)
Definition: iBoardRF24.cpp:319
bool setDataRate(rf24_datarate_e speed)
Definition: iBoardRF24.cpp:900
uint8_t read_payload(void *buf, uint8_t len)
Definition: iBoardRF24.cpp:132
void startWrite(const void *buf, uint8_t len)
Definition: iBoardRF24.cpp:521
uint8_t flush_tx(void)
Definition: iBoardRF24.cpp:168
bool write(const void *buf, uint8_t len)
Definition: iBoardRF24.cpp:455
void begin(void)
Definition: iBoardRF24.cpp:343
uint8_t write_payload(const void *buf, uint8_t len)
Definition: iBoardRF24.cpp:108
uint8_t getDynamicPayloadSize(void)
Definition: iBoardRF24.cpp:538
rf24_pa_dbm_e
Definition: iBoardRF24.h:26
void print_byte_register(const char *name, uint8_t reg, uint8_t qty=1)
Definition: iBoardRF24.cpp:219
void whatHappened(bool &tx_ok, bool &tx_fail, bool &rx_ready)
Definition: iBoardRF24.cpp:633
void enableDynamicPayloads(void)
Definition: iBoardRF24.cpp:711
rf24_datarate_e getDataRate(void)
Definition: iBoardRF24.cpp:947
void print_status(uint8_t status)
Definition: iBoardRF24.cpp:194
uint8_t get_status(void)
Definition: iBoardRF24.cpp:181
rf24_crclength_e
Definition: iBoardRF24.h:40