mirror of
https://github.com/eclipse/upm.git
synced 2025-03-24 01:10:22 +03:00
nrf24l01: Added callback functionality for Java
Signed-off-by: Andrei Vasiliu <andrei.vasiliu@intel.com> Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
parent
ce6a095079
commit
bdacb6c640
22
src/nrf24l01/Callback.h
Normal file
22
src/nrf24l01/Callback.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
class Callback
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual ~Callback()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
virtual void run()
|
||||||
|
{ /* empty, overloaded in Java*/
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void generic_callback (Callback* callback)
|
||||||
|
{
|
||||||
|
if (callback == NULL)
|
||||||
|
return;
|
||||||
|
callback->run();
|
||||||
|
}
|
||||||
|
#endif
|
@ -1,9 +1,12 @@
|
|||||||
%module javaupm_nrf24l01
|
%module javaupm_nrf24l01
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
|
|
||||||
|
%feature("director") Callback;
|
||||||
|
|
||||||
%include "arrays_java.i";
|
%include "arrays_java.i";
|
||||||
%apply signed char[] {uint8_t *};
|
%apply signed char[] {uint8_t *};
|
||||||
|
|
||||||
|
%include "Callback.h"
|
||||||
%{
|
%{
|
||||||
#include "nrf24l01.h"
|
#include "nrf24l01.h"
|
||||||
%}
|
%}
|
||||||
|
@ -148,6 +148,20 @@ NRF24L01::setPayload (uint8_t payload) {
|
|||||||
m_payload = payload;
|
m_payload = payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef JAVACALLBACK
|
||||||
|
void
|
||||||
|
NRF24L01::setDataReceivedHandler (Callback *call_obj)
|
||||||
|
{
|
||||||
|
callback_obj = call_obj;
|
||||||
|
dataReceivedHandler = &generic_callback;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
void setDataReceivedHandler (funcPtrVoidVoid handler)
|
||||||
|
{
|
||||||
|
dataReceivedHandler = handler;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool
|
bool
|
||||||
NRF24L01::dataReady () {
|
NRF24L01::dataReady () {
|
||||||
/* See note in getData() function - just checking RX_DR isn't good enough */
|
/* See note in getData() function - just checking RX_DR isn't good enough */
|
||||||
@ -315,7 +329,11 @@ void
|
|||||||
NRF24L01::pollListener() {
|
NRF24L01::pollListener() {
|
||||||
if (dataReady()) {
|
if (dataReady()) {
|
||||||
getData (m_rxBuffer);
|
getData (m_rxBuffer);
|
||||||
dataRecievedHandler (); /* let know that data arrived */
|
#ifdef JAVACALLBACK
|
||||||
|
dataReceivedHandler (callback_obj); /* let know that data arrived */
|
||||||
|
#else
|
||||||
|
dataReceivedHandler (); /* let know that data arrived */
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,10 @@
|
|||||||
#include <mraa/spi.hpp>
|
#include <mraa/spi.hpp>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
#include "Callback.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Memory Map */
|
/* Memory Map */
|
||||||
#define CONFIG 0x00
|
#define CONFIG 0x00
|
||||||
#define EN_AA 0x01
|
#define EN_AA 0x01
|
||||||
@ -138,7 +142,11 @@
|
|||||||
|
|
||||||
namespace upm {
|
namespace upm {
|
||||||
|
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
typedef void (* funcPtrVoidVoid) (Callback *);
|
||||||
|
#else
|
||||||
typedef void (* funcPtrVoidVoid) ();
|
typedef void (* funcPtrVoidVoid) ();
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NRF_250KBPS = 0,
|
NRF_250KBPS = 0,
|
||||||
@ -249,6 +257,21 @@ class NRF24L01 {
|
|||||||
*/
|
*/
|
||||||
void setPayload (uint8_t load);
|
void setPayload (uint8_t load);
|
||||||
|
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
/**
|
||||||
|
* Sets the handler to be called when data has been
|
||||||
|
* received
|
||||||
|
* @param call_obj Object used for callback - Java
|
||||||
|
*/
|
||||||
|
void setDataReceivedHandler (Callback *call_obj);
|
||||||
|
#else
|
||||||
|
/**
|
||||||
|
* Sets the handler to be called when data has been
|
||||||
|
* received
|
||||||
|
* @param handler Handler used for callback
|
||||||
|
*/
|
||||||
|
void setDataReceivedHandler (funcPtrVoidVoid handler);
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* Checks if the data has arrived
|
* Checks if the data has arrived
|
||||||
*/
|
*/
|
||||||
@ -350,8 +373,13 @@ class NRF24L01 {
|
|||||||
uint8_t m_txBuffer[MAX_BUFFER]; /**< Transmit buffer */
|
uint8_t m_txBuffer[MAX_BUFFER]; /**< Transmit buffer */
|
||||||
uint8_t m_bleBuffer [32]; /**< BLE buffer */
|
uint8_t m_bleBuffer [32]; /**< BLE buffer */
|
||||||
|
|
||||||
funcPtrVoidVoid dataRecievedHandler; /**< Data arrived handler */
|
|
||||||
private:
|
private:
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
/**< Callback object to use for setting the handler from Java */
|
||||||
|
Callback *callback_obj;
|
||||||
|
#endif
|
||||||
|
funcPtrVoidVoid dataReceivedHandler; /**< Data arrived handler */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes bytes to an SPI device
|
* Writes bytes to an SPI device
|
||||||
*/
|
*/
|
||||||
@ -385,7 +413,7 @@ class NRF24L01 {
|
|||||||
|
|
||||||
uint8_t swapbits (uint8_t a);
|
uint8_t swapbits (uint8_t a);
|
||||||
|
|
||||||
mraa::Spi m_spi;
|
mraa::Spi m_spi;
|
||||||
uint8_t m_ce;
|
uint8_t m_ce;
|
||||||
uint8_t m_csn;
|
uint8_t m_csn;
|
||||||
uint8_t m_channel;
|
uint8_t m_channel;
|
||||||
@ -394,8 +422,8 @@ class NRF24L01 {
|
|||||||
uint8_t m_payload;
|
uint8_t m_payload;
|
||||||
uint8_t m_localAddress[5];
|
uint8_t m_localAddress[5];
|
||||||
|
|
||||||
mraa::Gpio m_csnPinCtx;
|
mraa::Gpio m_csnPinCtx;
|
||||||
mraa::Gpio m_cePinCtx;
|
mraa::Gpio m_cePinCtx;
|
||||||
|
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user