mirror of
https://github.com/eclipse/upm.git
synced 2025-03-15 04:57:30 +03:00
doxygen: Added documentation to nrf24l01 module
Signed-off-by: Kiveisha Yevgeniy <yevgeniy.kiveisha@intel.com>
This commit is contained in:
parent
7d898e3274
commit
451d0390b6
@ -41,20 +41,23 @@ sig_handler(int signo)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! [Interesting]
|
||||||
void nrf_handler () {
|
void nrf_handler () {
|
||||||
std::cout << "devi1 :: " << *((uint32_t *)&(comm->m_rxBuffer[0])) << std::endl;
|
std::cout << "devi1 :: " << *((uint32_t *)&(comm->m_rxBuffer[0])) << std::endl;
|
||||||
}
|
}
|
||||||
|
//! [Interesting]
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
//! [Interesting]
|
||||||
comm = new upm::NRF24l01(7);
|
comm = new upm::NRF24l01(7);
|
||||||
comm->nrfSetRXaddr ((uint8_t *) "devi1");
|
comm->nrfSetRXaddr ((uint8_t *) "devi1");
|
||||||
comm->nrfSetTXaddr ((uint8_t *) "devi2");
|
comm->nrfSetTXaddr ((uint8_t *) "devi2");
|
||||||
comm->nrfSetPayload (MAX_BUFFER);
|
comm->nrfSetPayload (MAX_BUFFER);
|
||||||
comm->nrfConfigModule ();
|
comm->nrfConfigModule ();
|
||||||
comm->dataRecievedHandler = nrf_handler;
|
comm->dataRecievedHandler = nrf_handler;
|
||||||
|
|
||||||
signal(SIGINT, sig_handler);
|
signal(SIGINT, sig_handler);
|
||||||
|
|
||||||
while (!running) {
|
while (!running) {
|
||||||
@ -64,6 +67,6 @@ main(int argc, char **argv)
|
|||||||
std::cout << "exiting application" << std::endl;
|
std::cout << "exiting application" << std::endl;
|
||||||
|
|
||||||
delete comm;
|
delete comm;
|
||||||
|
//! [Interesting]
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ void nrf_handler () {
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
//! [Interesting]
|
||||||
uint32_t dummyData = 0;
|
uint32_t dummyData = 0;
|
||||||
comm = new upm::NRF24l01(7);
|
comm = new upm::NRF24l01(7);
|
||||||
comm->nrfSetRXaddr ((uint8_t *) "devi2");
|
comm->nrfSetRXaddr ((uint8_t *) "devi2");
|
||||||
@ -54,7 +55,7 @@ main(int argc, char **argv)
|
|||||||
comm->nrfSetPayload (MAX_BUFFER);
|
comm->nrfSetPayload (MAX_BUFFER);
|
||||||
comm->nrfConfigModule ();
|
comm->nrfConfigModule ();
|
||||||
comm->dataRecievedHandler = nrf_handler;
|
comm->dataRecievedHandler = nrf_handler;
|
||||||
|
|
||||||
signal(SIGINT, sig_handler);
|
signal(SIGINT, sig_handler);
|
||||||
|
|
||||||
while (!running) {
|
while (!running) {
|
||||||
@ -68,6 +69,6 @@ main(int argc, char **argv)
|
|||||||
std::cout << "exiting application" << std::endl;
|
std::cout << "exiting application" << std::endl;
|
||||||
|
|
||||||
delete comm;
|
delete comm;
|
||||||
|
//! [Interesting]
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -64,13 +64,13 @@ NRF24l01::nrfInitModule (uint8_t chip_select, uint8_t chip_enable) {
|
|||||||
fprintf (stderr, "Are you sure that pin%d you requested is valid on your platform?", m_csn);
|
fprintf (stderr, "Are you sure that pin%d you requested is valid on your platform?", m_csn);
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cePinCtx = maa_gpio_init (m_ce);
|
m_cePinCtx = maa_gpio_init (m_ce);
|
||||||
if (m_cePinCtx == NULL) {
|
if (m_cePinCtx == NULL) {
|
||||||
fprintf (stderr, "Are you sure that pin%d you requested is valid on your platform?", m_ce);
|
fprintf (stderr, "Are you sure that pin%d you requested is valid on your platform?", m_ce);
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
error = maa_gpio_dir (m_csnPinCtx, MAA_GPIO_OUT);
|
error = maa_gpio_dir (m_csnPinCtx, MAA_GPIO_OUT);
|
||||||
if (error != MAA_SUCCESS) {
|
if (error != MAA_SUCCESS) {
|
||||||
maa_result_print (error);
|
maa_result_print (error);
|
||||||
@ -80,7 +80,7 @@ NRF24l01::nrfInitModule (uint8_t chip_select, uint8_t chip_enable) {
|
|||||||
if (error != MAA_SUCCESS) {
|
if (error != MAA_SUCCESS) {
|
||||||
maa_result_print (error);
|
maa_result_print (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
nrfCELow ();
|
nrfCELow ();
|
||||||
m_spi = maa_spi_init (0);
|
m_spi = maa_spi_init (0);
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ NRF24l01::nrfConfigModule() {
|
|||||||
nrfConfigRegister (RX_PW_P1, m_payload);
|
nrfConfigRegister (RX_PW_P1, m_payload);
|
||||||
/* Set length of incoming payload for broadcast */
|
/* Set length of incoming payload for broadcast */
|
||||||
nrfConfigRegister (RX_PW_P2, m_payload);
|
nrfConfigRegister (RX_PW_P2, m_payload);
|
||||||
|
|
||||||
/* Start receiver */
|
/* Start receiver */
|
||||||
nrfPowerUpRX ();
|
nrfPowerUpRX ();
|
||||||
nrfFlushRX ();
|
nrfFlushRX ();
|
||||||
@ -114,7 +114,7 @@ void
|
|||||||
NRF24l01::nrfPowerUpRX() {
|
NRF24l01::nrfPowerUpRX() {
|
||||||
m_ptx = 0;
|
m_ptx = 0;
|
||||||
nrfCELow();
|
nrfCELow();
|
||||||
nrfConfigRegister(CONFIG, mirf_CONFIG | ( (1<<PWR_UP) | (1<<PRIM_RX) ) );
|
nrfConfigRegister(CONFIG, NRF_CONFIG | ( (1<<PWR_UP) | (1<<PRIM_RX) ) );
|
||||||
nrfCEHigh();
|
nrfCEHigh();
|
||||||
nrfConfigRegister(STATUS,(1 << TX_DS) | (1 << MAX_RT));
|
nrfConfigRegister(STATUS,(1 << TX_DS) | (1 << MAX_RT));
|
||||||
}
|
}
|
||||||
@ -130,7 +130,7 @@ NRF24l01::nrfFlushRX() {
|
|||||||
void
|
void
|
||||||
NRF24l01::nrfSetRXaddr(uint8_t * addr) {
|
NRF24l01::nrfSetRXaddr(uint8_t * addr) {
|
||||||
nrfCELow();
|
nrfCELow();
|
||||||
nrfWriteRegister(RX_ADDR_P1, addr, mirf_ADDR_LEN);
|
nrfWriteRegister(RX_ADDR_P1, addr, ADDR_LEN);
|
||||||
nrfCEHigh();
|
nrfCEHigh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,15 +139,15 @@ void
|
|||||||
NRF24l01::nrfSetTXaddr(uint8_t * addr)
|
NRF24l01::nrfSetTXaddr(uint8_t * addr)
|
||||||
{
|
{
|
||||||
/* RX_ADDR_P0 must be set to the sending addr for auto ack to work. */
|
/* RX_ADDR_P0 must be set to the sending addr for auto ack to work. */
|
||||||
nrfWriteRegister (RX_ADDR_P0, addr, mirf_ADDR_LEN);
|
nrfWriteRegister (RX_ADDR_P0, addr, ADDR_LEN);
|
||||||
nrfWriteRegister (TX_ADDR, addr, mirf_ADDR_LEN);
|
nrfWriteRegister (TX_ADDR, addr, ADDR_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The broadcast address should be 0xFFFFF */
|
/* The broadcast address should be 0xFFFFF */
|
||||||
void
|
void
|
||||||
NRF24l01::nrfSetBroadcastAddr (uint8_t * addr) {
|
NRF24l01::nrfSetBroadcastAddr (uint8_t * addr) {
|
||||||
nrfCELow ();
|
nrfCELow ();
|
||||||
nrfWriteRegister (RX_ADDR_P2, addr, mirf_ADDR_LEN);
|
nrfWriteRegister (RX_ADDR_P2, addr, ADDR_LEN);
|
||||||
nrfCEHigh ();
|
nrfCEHigh ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ NRF24l01::nrfDataReady() {
|
|||||||
if ( status & (1 << RX_DR) ) {
|
if ( status & (1 << RX_DR) ) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return !nrfRXFifoEmpty();
|
return !nrfRXFifoEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ NRF24l01::nrfSend(uint8_t * value) {
|
|||||||
nrfCSOn ();
|
nrfCSOn ();
|
||||||
maa_spi_write (m_spi, FLUSH_TX); // Write cmd to flush tx fifo
|
maa_spi_write (m_spi, FLUSH_TX); // Write cmd to flush tx fifo
|
||||||
nrfCSOff ();
|
nrfCSOff ();
|
||||||
|
|
||||||
nrfCSOn ();
|
nrfCSOn ();
|
||||||
maa_spi_write (m_spi, W_TX_PAYLOAD); // Write cmd to write payload
|
maa_spi_write (m_spi, W_TX_PAYLOAD); // Write cmd to write payload
|
||||||
nrfTransmitSync(value, m_payload); // Write payload
|
nrfTransmitSync(value, m_payload); // Write payload
|
||||||
@ -281,13 +281,13 @@ NRF24l01::nrfIsSending () {
|
|||||||
void
|
void
|
||||||
NRF24l01::nrfPowerUpTX () {
|
NRF24l01::nrfPowerUpTX () {
|
||||||
m_ptx = 1;
|
m_ptx = 1;
|
||||||
nrfConfigRegister (CONFIG, mirf_CONFIG | ( (1<<PWR_UP) | (0<<PRIM_RX) ) );
|
nrfConfigRegister (CONFIG, NRF_CONFIG | ( (1<<PWR_UP) | (0<<PRIM_RX) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NRF24l01::nrfPowerDown () {
|
NRF24l01::nrfPowerDown () {
|
||||||
nrfCELow ();
|
nrfCELow ();
|
||||||
nrfConfigRegister (CONFIG, mirf_CONFIG);
|
nrfConfigRegister (CONFIG, NRF_CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
maa_result_t
|
maa_result_t
|
||||||
|
@ -106,8 +106,8 @@
|
|||||||
#define NOP 0xFF
|
#define NOP 0xFF
|
||||||
|
|
||||||
/* Nrf24l settings */
|
/* Nrf24l settings */
|
||||||
#define mirf_ADDR_LEN 5
|
#define ADDR_LEN 5
|
||||||
#define mirf_CONFIG ((1<<EN_CRC) | (0<<CRCO) )
|
#define NRF_CONFIG ((1<<EN_CRC) | (0<<CRCO) )
|
||||||
|
|
||||||
#define MAX_BUFFER 32
|
#define MAX_BUFFER 32
|
||||||
|
|
||||||
@ -118,50 +118,217 @@ namespace upm {
|
|||||||
|
|
||||||
typedef void (* funcPtrVoidVoid) ();
|
typedef void (* funcPtrVoidVoid) ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief C++ API for NRF24l01 transceiver module
|
||||||
|
*
|
||||||
|
* This file defines the NRF24l01 C++ interface for libnrf24l01
|
||||||
|
*
|
||||||
|
* @snippet nrf_receiver.cxx Interesting
|
||||||
|
* @snippet nrf_transmitter.cxx Interesting
|
||||||
|
*/
|
||||||
class NRF24l01 {
|
class NRF24l01 {
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Instanciates a NRF24l01 object
|
||||||
|
*
|
||||||
|
* @param cs chip select pin
|
||||||
|
*/
|
||||||
NRF24l01 (uint8_t cs);
|
NRF24l01 (uint8_t cs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NRF24l01 object destructor
|
||||||
|
*/
|
||||||
~NRF24l01 ();
|
~NRF24l01 ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return name of the component
|
||||||
|
*/
|
||||||
std::string name()
|
std::string name()
|
||||||
{
|
{
|
||||||
return m_name;
|
return m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize needed Gpio pins and SPI interface
|
||||||
|
*
|
||||||
|
* @param chipSelect setting up the chip select pin
|
||||||
|
* @param chipEnable setting up the chip enable pin
|
||||||
|
*/
|
||||||
void nrfInitModule (uint8_t chipSelect, uint8_t chipEnable);
|
void nrfInitModule (uint8_t chipSelect, uint8_t chipEnable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure NRF24l01 chip
|
||||||
|
*/
|
||||||
void nrfConfigModule ();
|
void nrfConfigModule ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the buffer data
|
||||||
|
*
|
||||||
|
* @param *value pointer to the buffer
|
||||||
|
*/
|
||||||
void nrfSend (uint8_t *value);
|
void nrfSend (uint8_t *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the data located in inner bufer, user must fill the
|
||||||
|
* m_txBuffer buffer
|
||||||
|
*/
|
||||||
void nrfSend ();
|
void nrfSend ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set recieving address of the device
|
||||||
|
*
|
||||||
|
* @param addr 5 bytes addres
|
||||||
|
*/
|
||||||
void nrfSetRXaddr (uint8_t * addr);
|
void nrfSetRXaddr (uint8_t * addr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set recipient address. nrfSend method will send the data buffer
|
||||||
|
* to this address
|
||||||
|
*
|
||||||
|
* @param addr 5 bytes addres
|
||||||
|
*/
|
||||||
void nrfSetTXaddr (uint8_t * addr);
|
void nrfSetTXaddr (uint8_t * addr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set broadcasting address.
|
||||||
|
*
|
||||||
|
* @param addr 5 bytes addres
|
||||||
|
*/
|
||||||
void nrfSetBroadcastAddr (uint8_t * addr);
|
void nrfSetBroadcastAddr (uint8_t * addr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set payload size.
|
||||||
|
*
|
||||||
|
* @param load size of the payload (MAX 32)
|
||||||
|
*/
|
||||||
void nrfSetPayload (uint8_t load);
|
void nrfSetPayload (uint8_t load);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if data arrived
|
||||||
|
*/
|
||||||
bool nrfDataReady ();
|
bool nrfDataReady ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if chip in sending mode
|
||||||
|
*/
|
||||||
bool nrfIsSending ();
|
bool nrfIsSending ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if recieving stack is empty
|
||||||
|
*/
|
||||||
bool nrfRXFifoEmpty ();
|
bool nrfRXFifoEmpty ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if transmitting stack is empty
|
||||||
|
*/
|
||||||
bool nrfTXFifoEmpty ();
|
bool nrfTXFifoEmpty ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sink all arrived data into the provided buffer
|
||||||
|
*
|
||||||
|
* @param load size of the payload (MAX 32)
|
||||||
|
*/
|
||||||
void nrfGetData (uint8_t * data);
|
void nrfGetData (uint8_t * data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check the chip state
|
||||||
|
*/
|
||||||
uint8_t nrfGetStatus ();
|
uint8_t nrfGetStatus ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transmit provided data to the chip
|
||||||
|
*
|
||||||
|
* @param *dataout pointer to the buffer with data
|
||||||
|
* @param len length of the buffer
|
||||||
|
*/
|
||||||
void nrfTransmitSync (uint8_t *dataout, uint8_t len);
|
void nrfTransmitSync (uint8_t *dataout, uint8_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recieve data from the chip
|
||||||
|
*
|
||||||
|
* @param *dataout pointer to the buffer with data
|
||||||
|
* @param *datain pointer to the buffer where the arrived data
|
||||||
|
* will be sinked
|
||||||
|
* @param len length of the buffer
|
||||||
|
*/
|
||||||
void nrfTransferSync (uint8_t *dataout ,uint8_t *datain, uint8_t len);
|
void nrfTransferSync (uint8_t *dataout ,uint8_t *datain, uint8_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write byte value into a register
|
||||||
|
*
|
||||||
|
* @param reg register address
|
||||||
|
* @param value the value to write
|
||||||
|
*/
|
||||||
void nrfConfigRegister (uint8_t reg, uint8_t value);
|
void nrfConfigRegister (uint8_t reg, uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read continues data from register
|
||||||
|
*
|
||||||
|
* @param reg register address
|
||||||
|
* @param *value pointer to the buffer
|
||||||
|
* @param len length of the buffer
|
||||||
|
*/
|
||||||
void nrfReadRegister (uint8_t reg, uint8_t * value, uint8_t len);
|
void nrfReadRegister (uint8_t reg, uint8_t * value, uint8_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write continues data to register
|
||||||
|
*
|
||||||
|
* @param reg register address
|
||||||
|
* @param *value pointer to the buffer
|
||||||
|
* @param len length of the buffer
|
||||||
|
*/
|
||||||
void nrfWriteRegister (uint8_t reg, uint8_t * value, uint8_t len);
|
void nrfWriteRegister (uint8_t reg, uint8_t * value, uint8_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Power up reciever
|
||||||
|
*/
|
||||||
void nrfPowerUpRX ();
|
void nrfPowerUpRX ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Power up transmitter
|
||||||
|
*/
|
||||||
void nrfPowerUpTX ();
|
void nrfPowerUpTX ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Power down all
|
||||||
|
*/
|
||||||
void nrfPowerDown ();
|
void nrfPowerDown ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set chip enable pin HIGH
|
||||||
|
*/
|
||||||
maa_result_t nrfCEHigh ();
|
maa_result_t nrfCEHigh ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set chip enable LOW
|
||||||
|
*/
|
||||||
maa_result_t nrfCELow ();
|
maa_result_t nrfCELow ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set chip select pin LOW
|
||||||
|
*/
|
||||||
maa_result_t nrfCSOn ();
|
maa_result_t nrfCSOn ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set chip select pin HIGH
|
||||||
|
*/
|
||||||
maa_result_t nrfCSOff ();
|
maa_result_t nrfCSOff ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flush reciver stack
|
||||||
|
*/
|
||||||
void nrfFlushRX ();
|
void nrfFlushRX ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pulling method which listenning for arrived data, if data
|
||||||
|
* arrived dataRecievedHandler will be triggered
|
||||||
|
*/
|
||||||
void nrfListenForChannel();
|
void nrfListenForChannel();
|
||||||
|
|
||||||
uint8_t m_rxBuffer[MAX_BUFFER];
|
uint8_t m_rxBuffer[MAX_BUFFER]; /**< Reciver buffer */
|
||||||
uint8_t m_txBuffer[MAX_BUFFER];
|
uint8_t m_txBuffer[MAX_BUFFER]; /**< Transmit buffer */
|
||||||
|
|
||||||
funcPtrVoidVoid dataRecievedHandler;
|
funcPtrVoidVoid dataRecievedHandler; /**< Data arrived handler */
|
||||||
private:
|
private:
|
||||||
maa_spi_context m_spi;
|
maa_spi_context m_spi;
|
||||||
uint8_t m_ce;
|
uint8_t m_ce;
|
||||||
@ -170,7 +337,7 @@ class NRF24l01 {
|
|||||||
uint8_t m_ptx;
|
uint8_t m_ptx;
|
||||||
uint8_t m_payload;
|
uint8_t m_payload;
|
||||||
uint8_t m_localAddress[5];
|
uint8_t m_localAddress[5];
|
||||||
|
|
||||||
maa_gpio_context m_csnPinCtx;
|
maa_gpio_context m_csnPinCtx;
|
||||||
maa_gpio_context m_cePinCtx;
|
maa_gpio_context m_cePinCtx;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user