/** * Anatole SCHRAMM-HENRY * Tim THUREL * Projet température de la ruche GROUPE 3 * Wrapper C++ afin d'utiliser la LMIC (en C) façon objets. * Commenté en anglais pour le plaisir des yeux. * * Tout droits réservés */ #ifndef LORARADIO_H #define LORARADIO_H #include #include #include #include /** * 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 setSendCompleteHandler(void (*funcP)(void)); 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*); static void (*sendCompleteHandler)(void); protected: private: dr_t _dataRate; s1_t _txPower; PinMap _pinMap; }; #endif //LORARADIO_H