lorawan.cpp: add lmic_send result codes
This commit is contained in:
parent
c97f7be1a5
commit
dccd6d695c
@ -373,7 +373,7 @@ void lora_send(void *pvParameters) {
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
// wait until we are joined if we are not
|
// postpone until we are joined if we are not
|
||||||
while (!LMIC.devaddr) {
|
while (!LMIC.devaddr) {
|
||||||
vTaskDelay(pdMS_TO_TICKS(500));
|
vTaskDelay(pdMS_TO_TICKS(500));
|
||||||
}
|
}
|
||||||
@ -387,23 +387,27 @@ void lora_send(void *pvParameters) {
|
|||||||
// attempt to transmit payload
|
// attempt to transmit payload
|
||||||
else {
|
else {
|
||||||
|
|
||||||
switch (LMIC_sendWithCallback(
|
switch (LMIC_sendWithCallback_strict(
|
||||||
SendBuffer.MessagePort, SendBuffer.Message, SendBuffer.MessageSize,
|
SendBuffer.MessagePort, SendBuffer.Message, SendBuffer.MessageSize,
|
||||||
(cfg.countermode & 0x02), myTxCallback, NULL)) {
|
(cfg.countermode & 0x02), myTxCallback, NULL)) {
|
||||||
|
|
||||||
case 0:
|
case LMIC_ERROR_SUCCESS:
|
||||||
ESP_LOGI(TAG, "%d byte(s) sent to LORA", SendBuffer.MessageSize);
|
ESP_LOGI(TAG, "%d byte(s) sent to LORA", SendBuffer.MessageSize);
|
||||||
break;
|
break;
|
||||||
case -1: // LMIC already has a tx message pending
|
case LMIC_ERROR_TX_BUSY: // LMIC already has a tx message pending
|
||||||
// ESP_LOGD(TAG, "LMIC busy, message re-enqueued");
|
case LMIC_ERROR_TX_FAILED: // message was not sent
|
||||||
|
// ESP_LOGD(TAG, "LMIC busy, message re-enqueued"); // very noisy
|
||||||
vTaskDelay(pdMS_TO_TICKS(1000 + random(500))); // wait a while
|
vTaskDelay(pdMS_TO_TICKS(1000 + random(500))); // wait a while
|
||||||
lora_enqueuedata(&SendBuffer); // re-enqueue the undeliverd message
|
lora_enqueuedata(&SendBuffer); // re-enqueue the undelivered message
|
||||||
break;
|
break;
|
||||||
case -2: // message size exceeds LMIC buffer size
|
case LMIC_ERROR_TX_TOO_LARGE: // message size exceeds LMIC buffer size
|
||||||
ESP_LOGW(TAG, "Message size exceeds LMIC buffer, message deleted");
|
case LMIC_ERROR_TX_NOT_FEASIBLE: // message too large for current datarate
|
||||||
|
ESP_LOGI(TAG,
|
||||||
|
"Message too large to send, message not sent and deleted");
|
||||||
|
// we need some kind of error handling here -> to be done
|
||||||
break;
|
break;
|
||||||
default: // unknown LMIC return code
|
default: // other LMIC return code
|
||||||
ESP_LOGE(TAG, "Unknown LMIC error, message deleted");
|
ESP_LOGE(TAG, "LMIC error, message not sent and deleted");
|
||||||
|
|
||||||
} // switch
|
} // switch
|
||||||
}
|
}
|
||||||
@ -569,6 +573,7 @@ void myRxCallback(void *pUserData, uint8_t port, const uint8_t *pMsg,
|
|||||||
ESP_LOGI(TAG, "Received empty message on port %u", port);
|
ESP_LOGI(TAG, "Received empty message on port %u", port);
|
||||||
|
|
||||||
// list MAC messages, if any
|
// list MAC messages, if any
|
||||||
|
/*
|
||||||
uint8_t nMac = pMsg - &LMIC.frame[0];
|
uint8_t nMac = pMsg - &LMIC.frame[0];
|
||||||
if (port != MACPORT)
|
if (port != MACPORT)
|
||||||
--nMac;
|
--nMac;
|
||||||
@ -578,6 +583,11 @@ void myRxCallback(void *pUserData, uint8_t port, const uint8_t *pMsg,
|
|||||||
// whe need to strip some protocol overhead from LMIC.frame to unwrap the
|
// whe need to strip some protocol overhead from LMIC.frame to unwrap the
|
||||||
// MAC command
|
// MAC command
|
||||||
mac_decode(LMIC.frame, nMac);
|
mac_decode(LMIC.frame, nMac);
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (LMIC.pendMacLen) {
|
||||||
|
ESP_LOGI(TAG, "Received %u byte MAC message", LMIC.pendMacLen);
|
||||||
|
mac_decode(LMIC.pendMacData, LMIC.pendMacLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
|
Loading…
Reference in New Issue
Block a user