Energy harvesting mobile robot. Developed at Institute of Systems and Robotics — University of Coimbra.

Dependencies:   RF24

Dependents:   Mapping VirtualForces_debug OneFileToRuleThemAll VirtualForces_with_class ... more

Revision:
1:8569ac717e68
Parent:
0:15a30802e719
Child:
2:0435d1171673
--- a/nRF24L01P.h	Thu Feb 02 12:21:11 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-/**
- * @file nRF24L01P.h
- *
- * @author Owen Edwards
- * 
- * @section LICENSE
- *
- * Copyright (c) 2010 Owen Edwards
- *
- *    This program is free software: you can redistribute it and/or modify
- *    it under the terms of the GNU General Public License as published by
- *    the Free Software Foundation, either version 3 of the License, or
- *    (at your option) any later version.
- *
- *    This program is distributed in the hope that it will be useful,
- *    but WITHOUT ANY WARRANTY; without even the implied warranty of
- *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *    GNU General Public License for more details.
- *
- *    You should have received a copy of the GNU General Public License
- *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * @section DESCRIPTION
- *
- * nRF24L01+ Single Chip 2.4GHz Transceiver from Nordic Semiconductor.
- *
- * Datasheet:
- *
- * http://www.nordicsemi.no/files/Product/data_sheet/nRF24L01P_Product_Specification_1_0.pdf
- */
-
-#ifndef __NRF24L01P_H__
-#define __NRF24L01P_H__
-
-/**
- * Includes
- */
-#include "mbed.h"
-
-/**
- * Defines
- */
-#define NRF24L01P_TX_PWR_ZERO_DB         0
-#define NRF24L01P_TX_PWR_MINUS_6_DB     -6
-#define NRF24L01P_TX_PWR_MINUS_12_DB   -12
-#define NRF24L01P_TX_PWR_MINUS_18_DB   -18
-
-#define NRF24L01P_DATARATE_250_KBPS    250
-#define NRF24L01P_DATARATE_1_MBPS     1000
-#define NRF24L01P_DATARATE_2_MBPS     2000
-
-#define NRF24L01P_CRC_NONE               0
-#define NRF24L01P_CRC_8_BIT              8
-#define NRF24L01P_CRC_16_BIT            16
-
-#define NRF24L01P_MIN_RF_FREQUENCY    2400
-#define NRF24L01P_MAX_RF_FREQUENCY    2525
-
-#define NRF24L01P_PIPE_P0                0
-#define NRF24L01P_PIPE_P1                1
-#define NRF24L01P_PIPE_P2                2
-#define NRF24L01P_PIPE_P3                3
-#define NRF24L01P_PIPE_P4                4
-#define NRF24L01P_PIPE_P5                5
-
-/**
-* Default setup for the nRF24L01+, based on the Sparkfun "Nordic Serial Interface Board"
-*  for evaluation (http://www.sparkfun.com/products/9019)
-*/
-#define DEFAULT_NRF24L01P_ADDRESS       ((unsigned long long) 0xE7E7E7E7E7 )
-#define DEFAULT_NRF24L01P_ADDRESS_WIDTH  5
-#define DEFAULT_NRF24L01P_CRC            NRF24L01P_CRC_8_BIT
-#define DEFAULT_NRF24L01P_RF_FREQUENCY  (NRF24L01P_MIN_RF_FREQUENCY + 2)
-#define DEFAULT_NRF24L01P_DATARATE       NRF24L01P_DATARATE_1_MBPS
-#define DEFAULT_NRF24L01P_TX_PWR         NRF24L01P_TX_PWR_ZERO_DB
-#define DEFAULT_NRF24L01P_TRANSFER_SIZE  4
-
-/**
- * nRF24L01+ Single Chip 2.4GHz Transceiver from Nordic Semiconductor.
- */
-class nRF24L01P {
-
-public:
-
-    /**
-     * Constructor.
-     *
-     * @param mosi mbed pin to use for MOSI line of SPI interface.
-     * @param miso mbed pin to use for MISO line of SPI interface.
-     * @param sck mbed pin to use for SCK line of SPI interface.
-     * @param csn mbed pin to use for not chip select line of SPI interface.
-     * @param ce mbed pin to use for the chip enable line.
-     * @param irq mbed pin to use for the interrupt request line.
-     */
-    nRF24L01P(PinName mosi, PinName miso, PinName sck, PinName csn, PinName ce, PinName irq = NC);
-
-    /**
-     * Set the RF frequency.
-     *
-     * @param frequency the frequency of RF transmission in MHz (2400..2525).
-     */
-    void setRfFrequency(int frequency = DEFAULT_NRF24L01P_RF_FREQUENCY);
-
-    /**
-     * Get the RF frequency.
-     *
-     * @return the frequency of RF transmission in MHz (2400..2525).
-     */
-    int getRfFrequency(void);
-
-    /**
-     * Set the RF output power.
-     *
-     * @param power the RF output power in dBm (0, -6, -12 or -18).
-     */
-    void setRfOutputPower(int power = DEFAULT_NRF24L01P_TX_PWR);
-
-    /**
-     * Get the RF output power.
-     *
-     * @return the RF output power in dBm (0, -6, -12 or -18).
-     */
-    int getRfOutputPower(void);
-
-    /**
-     * Set the Air data rate.
-     *
-     * @param rate the air data rate in kbps (250, 1M or 2M).
-     */
-    void setAirDataRate(int rate = DEFAULT_NRF24L01P_DATARATE);
-
-    /**
-     * Get the Air data rate.
-     *
-     * @return the air data rate in kbps (250, 1M or 2M).
-     */
-    int getAirDataRate(void);
-
-    /**
-     * Set the CRC width.
-     *
-     * @param width the number of bits for the CRC (0, 8 or 16).
-     */
-    void setCrcWidth(int width = DEFAULT_NRF24L01P_CRC);
-
-    /**
-     * Get the CRC width.
-     *
-     * @return the number of bits for the CRC (0, 8 or 16).
-     */
-    int getCrcWidth(void);
-
-    /**
-     * Set the Receive address.
-     *
-     * @param address address associated with the particular pipe
-     * @param width width of the address in bytes (3..5)
-     * @param pipe pipe to associate the address with (0..5, default 0)
-     *
-     * Note that Pipes 0 & 1 have 3, 4 or 5 byte addresses,
-     *  while Pipes 2..5 only use the lowest byte (bits 7..0) of the
-     *  address provided here, and use 2, 3 or 4 bytes from Pipe 1's address.
-     *  The width parameter is ignored for Pipes 2..5.
-     */
-    void setRxAddress(unsigned long long address = DEFAULT_NRF24L01P_ADDRESS, int width = DEFAULT_NRF24L01P_ADDRESS_WIDTH, int pipe = NRF24L01P_PIPE_P0);
-
-    void setRxAddress(unsigned long msb_address, unsigned long lsb_address, int width, int pipe = NRF24L01P_PIPE_P0);
-
-    /**
-     * Set the Transmit address.
-     *
-     * @param address address for transmission
-     * @param width width of the address in bytes (3..5)
-     *
-     * Note that the address width is shared with the Receive pipes,
-     *  so a change to that address width affect transmissions.
-     */
-    void setTxAddress(unsigned long long address = DEFAULT_NRF24L01P_ADDRESS, int width = DEFAULT_NRF24L01P_ADDRESS_WIDTH);
-
-    void setTxAddress(unsigned long msb_address, unsigned long lsb_address, int width);
-
-    /**
-     * Get the Receive address.
-     *
-     * @param pipe pipe to get the address from (0..5, default 0)
-     * @return the address associated with the particular pipe
-     */
-    unsigned long long getRxAddress(int pipe = NRF24L01P_PIPE_P0);
-
-    /**
-     * Get the Transmit address.
-     *
-     * @return address address for transmission
-     */
-    unsigned long long getTxAddress(void);
-
-    /**
-     * Set the transfer size.
-     *
-     * @param size the size of the transfer, in bytes (1..32)
-     * @param pipe pipe for the transfer (0..5, default 0)
-     */
-    void setTransferSize(int size = DEFAULT_NRF24L01P_TRANSFER_SIZE, int pipe = NRF24L01P_PIPE_P0);
-
-    /**
-     * Get the transfer size.
-     *
-     * @return the size of the transfer, in bytes (1..32).
-     */
-    int getTransferSize(int pipe = NRF24L01P_PIPE_P0);
-
-
-    /**
-     * Get the RPD (Received Power Detector) state.
-     *
-     * @return true if the received power exceeded -64dBm
-     */
-    bool getRPD(void);
-
-    /**
-     * Put the nRF24L01+ into Receive mode
-     */
-    void setReceiveMode(void);
-
-    /**
-     * Put the nRF24L01+ into Transmit mode
-     */
-    void setTransmitMode(void);
-
-    /**
-     * Power up the nRF24L01+ into Standby mode
-     */
-    void powerUp(void);
-
-    /**
-     * Power down the nRF24L01+ into Power Down mode
-     */
-    void powerDown(void);
-
-    /**
-     * Enable the nRF24L01+ to Receive or Transmit (using the CE pin)
-     */
-    void enable(void);
-
-    /**
-     * Disable the nRF24L01+ to Receive or Transmit (using the CE pin)
-     */
-    void disable(void);
-
-    /**
-     * Transmit data
-     *
-     * @param pipe is ignored (included for consistency with file write routine)
-     * @param data pointer to an array of bytes to write
-     * @param count the number of bytes to send (1..32)
-     * @return the number of bytes actually written, or -1 for an error
-     */
-    int write(int pipe, char *data, int count);
-    
-    /**
-     * Receive data
-     *
-     * @param pipe the receive pipe to get data from
-     * @param data pointer to an array of bytes to store the received data
-     * @param count the number of bytes to receive (1..32)
-     * @return the number of bytes actually received, 0 if none are received, or -1 for an error
-     */
-    int read(int pipe, char *data, int count);
-
-    /**
-     * Determine if there is data available to read
-     *
-     * @param pipe the receive pipe to check for data
-     * @return true if the is data waiting in the given pipe
-     */
-    bool readable(int pipe = NRF24L01P_PIPE_P0);
-
-    /**
-     * Disable all receive pipes
-     *
-     * Note: receive pipes are enabled when their address is set.
-     */
-    void disableAllRxPipes(void);
-    
-    /**
-     * Disable AutoAcknowledge function
-     */
-    void disableAutoAcknowledge(void);
-    
-    /**
-     * Enable AutoAcknowledge function
-     *
-     * @param pipe the receive pipe
-     */
-    void enableAutoAcknowledge(int pipe = NRF24L01P_PIPE_P0);
-    
-    /**
-     * Disable AutoRetransmit function
-     */
-    void disableAutoRetransmit(void);
-    
-    /**
-     * Enable AutoRetransmit function
-     *
-     * @param delay the delay between restransmits, in uS (250uS..4000uS)
-     * @param count number of retransmits before generating an error (1..15)
-     */
-    void enableAutoRetransmit(int delay, int count);
-
-private:
-
-    /**
-     * Get the contents of an addressable register.
-     *
-     * @param regAddress address of the register
-     * @return the contents of the register
-     */
-    int getRegister(int regAddress);
-
-    /**
-     * Set the contents of an addressable register.
-     *
-     * @param regAddress address of the register
-     * @param regData data to write to the register
-     */
-    void setRegister(int regAddress, int regData);
-
-    /**
-     * Get the contents of the status register.
-     *
-     * @return the contents of the status register
-     */
-    int getStatusRegister(void);
-
-    SPI         spi_;
-    DigitalOut  nCS_;
-    DigitalOut  ce_;
-    InterruptIn nIRQ_;
-
-    int mode;
-
-};
-
-#endif /* __NRF24L01P_H__ */
-