add_executable (buzzer-sound buzzer-sound.cxx)
add_executable (led-bar led-bar.cxx)
add_executable (seg-lcd 4digitdisplay.cxx)
+add_executable (nrf_transmitter nrf_transmitter.cxx)
+add_executable (nrf_receiver nrf_receiver.cxx)
include_directories (${PROJECT_SOURCE_DIR}/src/hmc5883l)
include_directories (${PROJECT_SOURCE_DIR}/src/grove)
include_directories (${PROJECT_SOURCE_DIR}/src/buzzer)
include_directories (${PROJECT_SOURCE_DIR}/src/ledbar)
include_directories (${PROJECT_SOURCE_DIR}/src/4digitdisplay)
+include_directories (${PROJECT_SOURCE_DIR}/src/nrf24l01)
target_link_libraries (compass hmc5883l ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries (groveled grove ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries (buzzer-sound buzzer ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries (led-bar ledbar ${CMAKE_THREAD_LIBS_INIT})
target_link_libraries (seg-lcd 4digitdisplay ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries (nrf_transmitter nrf24l01 ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries (nrf_receiver nrf24l01 ${CMAKE_THREAD_LIBS_INIT})
--- /dev/null
+/*
+ * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com>
+ * Copyright (c) 2014 Intel Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <string.h>
+#include <unistd.h>
+#include <iostream>
+#include "nrf24l01.h"
+#include <signal.h>
+
+int running = 0;
+upm::NRF24l01 *comm = NULL;
+
+void
+sig_handler(int signo)
+{
+ printf("got signal\n");
+ if (signo == SIGINT) {
+ printf("exiting application\n");
+ running = 1;
+ }
+}
+
+void nrf_handler () {
+ std::cout << "devi1 :: " << *((uint32_t *)&(comm->m_rxBuffer[0])) << std::endl;
+}
+
+int
+main(int argc, char **argv)
+{
+ comm = new upm::NRF24l01(7);
+ comm->nrfSetRXaddr ((uint8_t *) "devi1");
+ comm->nrfSetTXaddr ((uint8_t *) "devi2");
+ comm->nrfSetPayload (MAX_BUFFER);
+ comm->nrfConfigModule ();
+ comm->dataRecievedHandler = nrf_handler;
+
+ signal(SIGINT, sig_handler);
+
+ while (!running) {
+ comm->nrfListenForChannel ();
+ }
+
+ std::cout << "exiting application" << std::endl;
+
+ delete comm;
+
+ return 0;
+}
--- /dev/null
+/*
+ * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com>
+ * Copyright (c) 2014 Intel Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <string.h>
+#include <unistd.h>
+#include <iostream>
+#include "nrf24l01.h"
+#include <signal.h>
+
+int running = 0;
+upm::NRF24l01 *comm = NULL;
+
+void
+sig_handler(int signo)
+{
+ printf("got signal\n");
+ if (signo == SIGINT) {
+ printf("exiting application\n");
+ running = 1;
+ }
+}
+
+void nrf_handler () {
+}
+
+int
+main(int argc, char **argv)
+{
+ uint32_t dummyData = 0;
+ comm = new upm::NRF24l01(7);
+ comm->nrfSetRXaddr ((uint8_t *) "devi2");
+ comm->nrfSetTXaddr ((uint8_t *) "devi1");
+ comm->nrfSetPayload (MAX_BUFFER);
+ comm->nrfConfigModule ();
+ comm->dataRecievedHandler = nrf_handler;
+
+ signal(SIGINT, sig_handler);
+
+ while (!running) {
+ memcpy (comm->m_txBuffer, &dummyData, sizeof (dummyData));
+ comm->nrfSend ();
+ std::cout << "devi2 :: sending data ...." << dummyData << std::endl;
+ usleep (3000000);
+ dummyData += 3000;
+ }
+
+ std::cout << "exiting application" << std::endl;
+
+ delete comm;
+
+ return 0;
+}
add_subdirectory (buzzer)
add_subdirectory (ledbar)
add_subdirectory (4digitdisplay)
+add_subdirectory (nrf24l01)
--- /dev/null
+set (libname "nrf24l01")
+add_library (nrf24l01 SHARED nrf24l01.cxx)
+include_directories (${MAA_INCLUDE_DIR})
+target_link_libraries (nrf24l01 ${MAA_LIBRARIES})
--- /dev/null
+%module jsupm_nrf24l01
+
+%{
+ #include "nrf24l01.h"
+%}
+
+%include "nrf24l01.h"
--- /dev/null
+/*
+ * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com>
+ * Copyright (c) 2014 Intel Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <iostream>
+#include <unistd.h>
+
+#include "nrf24l01.h"
+
+using namespace upm;
+
+NRF24l01::NRF24l01 (uint8_t cs) {
+ maa_init();
+ nrfInitModule (cs, 8);
+}
+
+NRF24l01::~NRF24l01 () {
+ maa_result_t error = MAA_SUCCESS;
+ error = maa_spi_stop(m_spi);
+ if (error != MAA_SUCCESS) {
+ maa_result_print(error);
+ }
+ error = maa_gpio_close (m_cePinCtx);
+ if (error != MAA_SUCCESS) {
+ maa_result_print(error);
+ }
+ error = maa_gpio_close (m_csnPinCtx);
+ if (error != MAA_SUCCESS) {
+ maa_result_print(error);
+ }
+}
+
+void
+NRF24l01::nrfInitModule (uint8_t chip_select, uint8_t chip_enable) {
+ maa_result_t error = MAA_SUCCESS;
+
+ m_csn = chip_select;
+ m_ce = chip_enable;
+ m_channel = 1;
+
+ m_csnPinCtx = maa_gpio_init (m_csn);
+ if (m_csnPinCtx == NULL) {
+ fprintf (stderr, "Are you sure that pin%d you requested is valid on your platform?", m_csn);
+ exit (1);
+ }
+
+ m_cePinCtx = maa_gpio_init (m_ce);
+ if (m_cePinCtx == NULL) {
+ fprintf (stderr, "Are you sure that pin%d you requested is valid on your platform?", m_ce);
+ exit (1);
+ }
+
+ error = maa_gpio_dir (m_csnPinCtx, MAA_GPIO_OUT);
+ if (error != MAA_SUCCESS) {
+ maa_result_print (error);
+ }
+
+ error = maa_gpio_dir (m_cePinCtx, MAA_GPIO_OUT);
+ if (error != MAA_SUCCESS) {
+ maa_result_print (error);
+ }
+
+ nrfCELow ();
+ m_spi = maa_spi_init (0);
+}
+
+void
+NRF24l01::nrfConfigModule() {
+ /* Set RF channel */
+ nrfConfigRegister (RF_CH, m_channel);
+
+ /* Set length of incoming payload */
+ nrfConfigRegister (RX_PW_P0, m_payload);
+ nrfConfigRegister (RX_PW_P1, m_payload);
+ /* Set length of incoming payload for broadcast */
+ nrfConfigRegister (RX_PW_P2, m_payload);
+
+ /* Start receiver */
+ nrfPowerUpRX ();
+ nrfFlushRX ();
+}
+
+/* Clocks only one byte into the given MiRF register */
+void
+NRF24l01::nrfConfigRegister(uint8_t reg, uint8_t value) {
+ nrfCSOn ();
+ maa_spi_write (m_spi, W_REGISTER | (REGISTER_MASK & reg));
+ maa_spi_write (m_spi, value);
+ nrfCSOff ();
+}
+
+void
+NRF24l01::nrfPowerUpRX() {
+ m_ptx = 0;
+ nrfCELow();
+ nrfConfigRegister(CONFIG, mirf_CONFIG | ( (1<<PWR_UP) | (1<<PRIM_RX) ) );
+ nrfCEHigh();
+ nrfConfigRegister(STATUS,(1 << TX_DS) | (1 << MAX_RT));
+}
+
+void
+NRF24l01::nrfFlushRX() {
+ nrfCSOn ();
+ maa_spi_write (m_spi, FLUSH_RX);
+ nrfCSOff ();
+}
+
+/* Sets the receiving address */
+void
+NRF24l01::nrfSetRXaddr(uint8_t * addr) {
+ nrfCELow();
+ nrfWriteRegister(RX_ADDR_P1, addr, mirf_ADDR_LEN);
+ nrfCEHigh();
+}
+
+/* Sets the transmitting address */
+void
+NRF24l01::nrfSetTXaddr(uint8_t * addr)
+{
+ /* RX_ADDR_P0 must be set to the sending addr for auto ack to work. */
+ nrfWriteRegister (RX_ADDR_P0, addr, mirf_ADDR_LEN);
+ nrfWriteRegister (TX_ADDR, addr, mirf_ADDR_LEN);
+}
+
+/* The broadcast address should be 0xFFFFF */
+void
+NRF24l01::nrfSetBroadcastAddr (uint8_t * addr) {
+ nrfCELow ();
+ nrfWriteRegister (RX_ADDR_P2, addr, mirf_ADDR_LEN);
+ nrfCEHigh ();
+}
+
+void
+NRF24l01::nrfSetPayload (uint8_t load) {
+ m_payload = load;
+}
+
+void
+NRF24l01::nrfWriteRegister(uint8_t reg, uint8_t * value, uint8_t len)
+{
+ nrfCSOn ();
+ maa_spi_write (m_spi, W_REGISTER | (REGISTER_MASK & reg));
+ nrfTransmitSync(value, len);
+ nrfCSOff ();
+}
+
+void
+NRF24l01::nrfTransmitSync(uint8_t *dataout, uint8_t len){
+ uint8_t i;
+ for(i = 0; i < len; i++) {
+ maa_spi_write (m_spi, dataout[i]);
+ }
+}
+
+/* Checks if data is available for reading */
+bool
+NRF24l01::nrfDataReady() {
+ uint8_t status = nrfGetStatus();
+ if ( status & (1 << RX_DR) ) {
+ return 1;
+ }
+
+ return !nrfRXFifoEmpty();
+}
+
+uint8_t
+NRF24l01::nrfGetStatus () {
+ uint8_t rv;
+ nrfReadRegister (STATUS, &rv, 1);
+ return rv;
+}
+
+/* Reads an array of bytes from the given start position in the MiRF registers. */
+void
+NRF24l01::nrfReadRegister (uint8_t reg, uint8_t * value, uint8_t len)
+{
+ nrfCSOn ();
+ maa_spi_write (m_spi, R_REGISTER | (REGISTER_MASK & reg));
+ nrfTransferSync (value, value, len);
+ nrfCSOff ();
+}
+
+void
+NRF24l01::nrfTransferSync (uint8_t *dataout,uint8_t *datain,uint8_t len) {
+ uint8_t i;
+ for(i = 0;i < len;i++) {
+ datain[i] = maa_spi_write (m_spi, dataout[i]);
+ }
+}
+
+bool
+NRF24l01::nrfRXFifoEmpty () {
+ uint8_t fifo_status;
+ nrfReadRegister (FIFO_STATUS, &fifo_status, sizeof(fifo_status));
+ return (fifo_status & (1 << RX_EMPTY));
+}
+
+/* Reads payload bytes into data array */
+void
+NRF24l01::nrfGetData (uint8_t * data)
+{
+ nrfCSOn ();
+ /* Send cmd to read rx payload */
+ maa_spi_write (m_spi, R_RX_PAYLOAD);
+ /* Read payload */
+ nrfTransferSync(data, data, m_payload);
+ nrfCSOff ();
+ nrfConfigRegister(STATUS, (1<<RX_DR));
+}
+
+/* Sends a data package to the default address. Be sure to send the correct
+ * amount of bytes as configured as payload on the receiver. */
+void
+NRF24l01::nrfSend(uint8_t * value) {
+ uint8_t status;
+ status = nrfGetStatus();
+
+ while (m_ptx) {
+ status = nrfGetStatus();
+
+ if((status & ((1 << TX_DS) | (1 << MAX_RT)))){
+ m_ptx = 0;
+ break;
+ }
+ } // Wait until last paket is send
+
+ nrfCELow();
+ nrfPowerUpTX(); // Set to transmitter mode , Power up
+ nrfCSOn ();
+ maa_spi_write (m_spi, FLUSH_TX); // Write cmd to flush tx fifo
+ nrfCSOff ();
+
+ nrfCSOn ();
+ maa_spi_write (m_spi, W_TX_PAYLOAD); // Write cmd to write payload
+ nrfTransmitSync(value, m_payload); // Write payload
+ nrfCSOff ();
+ nrfCEHigh(); // Start transmission
+}
+
+void
+NRF24l01::nrfSend () {
+ nrfSend (m_txBuffer);
+}
+
+bool
+NRF24l01::nrfIsSending () {
+ uint8_t status;
+ if (m_ptx) { // Sending mode.
+ status = nrfGetStatus();
+ /* if sending successful (TX_DS) or max retries exceded (MAX_RT). */
+ if((status & ((1 << TX_DS) | (1 << MAX_RT)))){
+ nrfPowerUpRX();
+ return false;
+ }
+ return true;
+ }
+ return false;
+}
+
+void
+NRF24l01::nrfPowerUpTX () {
+ m_ptx = 1;
+ nrfConfigRegister (CONFIG, mirf_CONFIG | ( (1<<PWR_UP) | (0<<PRIM_RX) ) );
+}
+
+void
+NRF24l01::nrfPowerDown () {
+ nrfCELow ();
+ nrfConfigRegister (CONFIG, mirf_CONFIG);
+}
+
+maa_result_t
+NRF24l01::nrfCEHigh () {
+ return maa_gpio_write (m_cePinCtx, HIGH);
+}
+
+maa_result_t
+NRF24l01::nrfCELow () {
+ return maa_gpio_write (m_cePinCtx, LOW);
+}
+
+maa_result_t
+NRF24l01::nrfCSOn () {
+ return maa_gpio_write (m_csnPinCtx, LOW);
+}
+
+maa_result_t
+NRF24l01::nrfCSOff () {
+ return maa_gpio_write (m_csnPinCtx, HIGH);
+}
+
+void
+NRF24l01::nrfListenForChannel() {
+ if(!nrfIsSending() && nrfDataReady()) {
+ nrfGetData(m_rxBuffer);
+ dataRecievedHandler(); /* let know that data arrived */
+ }
+}
+
--- /dev/null
+/*
+ * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com>
+ * Copyright (c) 2014 Intel Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#pragma once
+
+#include <string>
+#include <maa/aio.h>
+#include <maa/gpio.h>
+#include <maa/spi.h>
+
+/* Memory Map */
+#define CONFIG 0x00
+#define EN_AA 0x01
+#define EN_RXADDR 0x02
+#define SETUP_AW 0x03
+#define SETUP_RETR 0x04
+#define RF_CH 0x05
+#define RF_SETUP 0x06
+#define STATUS 0x07
+#define OBSERVE_TX 0x08
+#define CD 0x09
+#define RX_ADDR_P0 0x0A
+#define RX_ADDR_P1 0x0B
+#define RX_ADDR_P2 0x0C
+#define RX_ADDR_P3 0x0D
+#define RX_ADDR_P4 0x0E
+#define RX_ADDR_P5 0x0F
+#define TX_ADDR 0x10
+#define RX_PW_P0 0x11
+#define RX_PW_P1 0x12
+#define RX_PW_P2 0x13
+#define RX_PW_P3 0x14
+#define RX_PW_P4 0x15
+#define RX_PW_P5 0x16
+#define FIFO_STATUS 0x17
+
+/* Bit Mnemonics */
+#define MASK_RX_DR 6
+#define MASK_TX_DS 5
+#define MASK_MAX_RT 4
+#define EN_CRC 3
+#define CRCO 2
+#define PWR_UP 1
+#define PRIM_RX 0
+#define ENAA_P5 5
+#define ENAA_P4 4
+#define ENAA_P3 3
+#define ENAA_P2 2
+#define ENAA_P1 1
+#define ENAA_P0 0
+#define ERX_P5 5
+#define ERX_P4 4
+#define ERX_P3 3
+#define ERX_P2 2
+#define ERX_P1 1
+#define ERX_P0 0
+#define AW 0
+#define ARD 4
+#define ARC 0
+#define PLL_LOCK 4
+#define RF_DR 3
+#define RF_PWR 1
+#define LNA_HCURR 0
+#define RX_DR 6
+#define TX_DS 5
+#define MAX_RT 4
+#define RX_P_NO 1
+#define TX_FULL 0
+#define PLOS_CNT 4
+#define ARC_CNT 0
+#define TX_REUSE 6
+#define FIFO_FULL 5
+#define TX_EMPTY 4
+#define RX_FULL 1
+#define RX_EMPTY 0
+
+/* Instruction Mnemonics */
+#define R_REGISTER 0x00
+#define W_REGISTER 0x20
+#define REGISTER_MASK 0x1F
+#define R_RX_PAYLOAD 0x61
+#define W_TX_PAYLOAD 0xA0
+#define FLUSH_TX 0xE1
+#define FLUSH_RX 0xE2
+#define REUSE_TX_PL 0xE3
+#define NOP 0xFF
+
+/* Nrf24l settings */
+#define mirf_ADDR_LEN 5
+#define mirf_CONFIG ((1<<EN_CRC) | (0<<CRCO) )
+
+#define MAX_BUFFER 32
+
+#define HIGH 1
+#define LOW 0
+
+namespace upm {
+
+typedef void (* funcPtrVoidVoid) ();
+
+class NRF24l01 {
+ public:
+ NRF24l01 (uint8_t cs);
+ ~NRF24l01 ();
+ std::string name()
+ {
+ return m_name;
+ }
+
+ void nrfInitModule (uint8_t chipSelect, uint8_t chipEnable);
+ void nrfConfigModule ();
+ void nrfSend (uint8_t *value);
+ void nrfSend ();
+ void nrfSetRXaddr (uint8_t * addr);
+ void nrfSetTXaddr (uint8_t * addr);
+ void nrfSetBroadcastAddr (uint8_t * addr);
+ void nrfSetPayload (uint8_t load);
+ bool nrfDataReady ();
+ bool nrfIsSending ();
+ bool nrfRXFifoEmpty ();
+ bool nrfTXFifoEmpty ();
+ void nrfGetData (uint8_t * data);
+ uint8_t nrfGetStatus ();
+
+ void nrfTransmitSync (uint8_t *dataout, uint8_t len);
+ void nrfTransferSync (uint8_t *dataout ,uint8_t *datain, uint8_t len);
+ void nrfConfigRegister (uint8_t reg, uint8_t value);
+ void nrfReadRegister (uint8_t reg, uint8_t * value, uint8_t len);
+ void nrfWriteRegister (uint8_t reg, uint8_t * value, uint8_t len);
+ void nrfPowerUpRX ();
+ void nrfPowerUpTX ();
+ void nrfPowerDown ();
+
+ maa_result_t nrfCEHigh ();
+ maa_result_t nrfCELow ();
+ maa_result_t nrfCSOn ();
+ maa_result_t nrfCSOff ();
+ void nrfFlushRX ();
+ void nrfListenForChannel();
+
+ uint8_t m_rxBuffer[MAX_BUFFER];
+ uint8_t m_txBuffer[MAX_BUFFER];
+
+ funcPtrVoidVoid dataRecievedHandler;
+ private:
+ maa_spi_context m_spi;
+ uint8_t m_ce;
+ uint8_t m_csn;
+ uint8_t m_channel;
+ uint8_t m_ptx;
+ uint8_t m_payload;
+ uint8_t m_localAddress[5];
+
+ maa_gpio_context m_csnPinCtx;
+ maa_gpio_context m_cePinCtx;
+
+ std::string m_name;
+};
+
+}
--- /dev/null
+%module pyupm_nrf24l01
+
+%feature("autodoc", "3");
+
+%include "nrf24l01.h"
+%{
+ #include "nrf24l01.h"
+%}