projet3_temperature/lib/LoRaRadio/LoRaRadio.h

54 lines
1.3 KiB
C++

#ifndef LORARADIO_H
#define LORARADIO_H
#include <lmic.h>
#include <hal/hal.h>
#include <SPI.h>
#include <Arduino.h>
/*
* Here, we define the onEvent function required by the LMIC
*/
void onEvent(ev_t ev);
class PinMap
{
friend class LoRaRadio;
public:
PinMap(u1_t nss, u1_t rxtx, u1_t rst, const u1_t dio[3]) : _nss(nss), _rxtx(rxtx), _rst(rst)
{
_dio[0] = dio[0];
_dio[1] = dio[1];
_dio[2] = dio[2];
}
protected:
private:
u1_t _nss, _rxtx, _rst, _dio[3];
};
class LoRaRadio
{
public:
LoRaRadio(PinMap pinMap, dr_t dataRate = DR_SF7, s1_t txPower = 23);
void init();
void setTTNSession(u4_t channelId, devaddr_t deviceAddress, xref2u1_t networkSystemKey, xref2u1_t applicationSystemKey, bit_t linkCheckMode = 0);
void setRadioEUChannels();
void setMCUClockError(u2_t percent = 30);
void send(u1_t port, uint8_t *data, uint8_t length, u1_t confirmed = false);
void run();
void setDownlinkHandler(void (*funcP)(u1_t, u1_t, u1_t*));
void disableEUChannel(u1_t channel);
void disableAllEUChannelsBut(u1_t channel);
//Function pointers used to interact with events
//Parameters : dataLen, dataBeg, dataBuffer
static void (*downlinkHandler)(u1_t, u1_t, u1_t*);
protected:
private:
dr_t _dataRate;
s1_t _txPower;
PinMap _pinMap;
};
#endif //LORARADIO_H