From ae8dee45bd0d8c497415a810c54547a2f7e83039 Mon Sep 17 00:00:00 2001 From: anschrammh Date: Wed, 29 Jan 2020 20:03:18 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20coloration=20syntaxique=20et?= =?UTF-8?q?=20du=20syst=C3=A8me=20de=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/LoRaRadio/LoRaRadio.cpp | 29 +++++++++++++++++++++++++++++ lib/LoRaRadio/LoRaRadio.h | 9 +++++++++ lib/LoRaRadio/LoRaRadio.ino | 4 ---- lib/LoRaRadio/keywords.txt | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 lib/LoRaRadio/keywords.txt diff --git a/lib/LoRaRadio/LoRaRadio.cpp b/lib/LoRaRadio/LoRaRadio.cpp index ce80366..e850040 100644 --- a/lib/LoRaRadio/LoRaRadio.cpp +++ b/lib/LoRaRadio/LoRaRadio.cpp @@ -1,6 +1,7 @@ #include "LoRaRadio.h" lmic_pinmap lmic_pins = {0}; +void (*LoRaRadio::downlinkHandler)(u1_t, u1_t, u1_t*) = NULL; LoRaRadio::LoRaRadio(PinMap pinMap, dr_t dataRate, s1_t txPower) :_pinMap(pinMap), _dataRate(dataRate), _txPower(txPower) { @@ -62,3 +63,31 @@ void LoRaRadio::run() { os_runloop_once(); } + +void LoRaRadio::setDownlinkHandler(void (*funcP)(u1_t, u1_t, u1_t*)) +{ + downlinkHandler = funcP; +} + +/* + * Here, we declare the onEvent function required by the LMIC + */ +void onEvent(ev_t ev) +{ + switch(ev) + { + case EV_TXCOMPLETE: + //Event telling us that the data was transmitted + //It is also here that we check for downlinks + if(LMIC.dataLen) + { + //Data is available + if(LoRaRadio::downlinkHandler != NULL) + (*LoRaRadio::downlinkHandler)(LMIC.dataLen, LMIC.dataBeg, LMIC.frame); + } + break; + case EV_RXCOMPLETE: + // data received in ping slot + break; + } +} diff --git a/lib/LoRaRadio/LoRaRadio.h b/lib/LoRaRadio/LoRaRadio.h index 1fa949c..bbac35d 100644 --- a/lib/LoRaRadio/LoRaRadio.h +++ b/lib/LoRaRadio/LoRaRadio.h @@ -5,6 +5,10 @@ #include #include #include +/* + * Here, we define the onEvent function required by the LMIC + */ +void onEvent(ev_t ev); class PinMap { @@ -32,6 +36,11 @@ class LoRaRadio 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*)); + + //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; diff --git a/lib/LoRaRadio/LoRaRadio.ino b/lib/LoRaRadio/LoRaRadio.ino index d921eb7..fb595dc 100644 --- a/lib/LoRaRadio/LoRaRadio.ino +++ b/lib/LoRaRadio/LoRaRadio.ino @@ -7,10 +7,6 @@ u1_t dio[3] = {26,33,32}; void os_getArtEui (u1_t* buf) { } void os_getDevEui (u1_t* buf) { } void os_getDevKey (u1_t* buf) { } -void onEvent(ev_t ev) -{ - -} static u1_t NWKSKEY[16] = { 0x1F, 0x9E, 0xE2, 0x7A, 0xC8, 0xBA, 0xE8, 0xEA, 0xF5, 0xC2, 0x5E, 0x47, 0x5D, 0xE0, 0x77, 0x55 }; static u1_t APPSKEY[16] = { 0x3B, 0x89, 0x86, 0x96, 0xBB, 0xAA, 0x38, 0x1E, 0x1F, 0xC4, 0xAD, 0x03, 0xEF, 0x3F, 0x56, 0x12 }; diff --git a/lib/LoRaRadio/keywords.txt b/lib/LoRaRadio/keywords.txt new file mode 100644 index 0000000..749913b --- /dev/null +++ b/lib/LoRaRadio/keywords.txt @@ -0,0 +1,35 @@ +####################################### +# Syntax Coloring Map LoRaRadio +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +LoRaRadio KEYWORD1 +PinMap KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +init KEYWORD2 +setTTNSession KEYWORD2 +setRadioEUChannels KEYWORD2 +setMCUClockError KEYWORD2 +send KEYWORD2 +run KEYWORD2 +setDownlinkHandler KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### +bit_t LITERAL1 +u1_t LITERAL1 +u2_t LITERAL1 +u4_t LITERAL1 +s1_t LITERAL1 +dr_t LITERAL1 +devaddr_t LITERAL1 +xref2u1_t LITERAL1 +DR_SF7 LITERAL1 +ev_t LITERAL1