|
|
|
|
@ -130,6 +130,24 @@ int main(void) {
@@ -130,6 +130,24 @@ int main(void) {
|
|
|
|
|
*/ |
|
|
|
|
static void send_message() { |
|
|
|
|
int16_t retcode; |
|
|
|
|
int eid; |
|
|
|
|
|
|
|
|
|
// setup next transmission
|
|
|
|
|
eid = ev_queue.call_in(MBED_CONF_APP_TX_TIMER, send_message); |
|
|
|
|
|
|
|
|
|
// check backoff time before sending new frame
|
|
|
|
|
if (MBED_CONF_LORA_DUTY_CYCLE_ON) { |
|
|
|
|
lorawan_status_t status; |
|
|
|
|
int backoff; |
|
|
|
|
|
|
|
|
|
status = lorawan.get_backoff_metadata(backoff); |
|
|
|
|
if (status == LORAWAN_STATUS_OK && backoff > 0) { |
|
|
|
|
debug("\r\n %d ms backoff, delay next send \r\n", backoff); |
|
|
|
|
ev_queue.cancel(eid); |
|
|
|
|
ev_queue.call_in(backoff+MBED_CONF_APP_TX_TIMER, send_message); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if MBED_CONF_APP_DHT_ENABLED |
|
|
|
|
int err = dht.read(); |
|
|
|
|
@ -199,13 +217,7 @@ static void lora_event_handler(lorawan_event_t event) {
@@ -199,13 +217,7 @@ static void lora_event_handler(lorawan_event_t event) {
|
|
|
|
|
switch(event) { |
|
|
|
|
case CONNECTED: |
|
|
|
|
debug("\r\n Connection - Successful \r\n"); |
|
|
|
|
if(MBED_CONF_LORA_DUTY_CYCLE_ON) { |
|
|
|
|
send_message(); |
|
|
|
|
} else { |
|
|
|
|
send_message(); |
|
|
|
|
ev_queue.call_every(MBED_CONF_APP_TX_TIMER, send_message); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
case DISCONNECTED: |
|
|
|
|
ev_queue.break_dispatch(); |
|
|
|
|
@ -213,19 +225,12 @@ static void lora_event_handler(lorawan_event_t event) {
@@ -213,19 +225,12 @@ static void lora_event_handler(lorawan_event_t event) {
|
|
|
|
|
break; |
|
|
|
|
case TX_DONE: |
|
|
|
|
debug("\r\n Message Sent to Network Server \r\n"); |
|
|
|
|
if(MBED_CONF_LORA_DUTY_CYCLE_ON) { |
|
|
|
|
send_message(); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case TX_TIMEOUT: |
|
|
|
|
case TX_ERROR: |
|
|
|
|
case TX_CRYPTO_ERROR: |
|
|
|
|
case TX_SCHEDULING_ERROR: |
|
|
|
|
debug("\r\n Transmission Error - EventCode = %d \r\n", event); |
|
|
|
|
// try again
|
|
|
|
|
if(MBED_CONF_LORA_DUTY_CYCLE_ON) { |
|
|
|
|
send_message(); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case RX_DONE: |
|
|
|
|
debug("\r\n Received message from Network Server \r\n"); |
|
|
|
|
|