There are many discussions/threads about putting different versions of LMIC into sleep and about problems related to sleep function.
I decided to try a simple solution and added LowPower.deepSleep(300000)
in EV_TXCOMPLETE
. Based on quick testing this seems to be working.
Is this a correct way of doing “sleep” or is there a better way? Is this going to break in some situation?
case EV_TXCOMPLETE:
// Transmit completed, includes waiting for RX windows.
setTxIndicatorsOn(false);
printEvent(timestamp, ev);
printFrameCounters();
// Check if downlink was received
if (LMIC.dataLen != 0 || LMIC.dataBeg != 0)
{
uint8_t fPort = 0;
if (LMIC.txrxFlags & TXRX_PORT)
{
fPort = LMIC.frame[LMIC.dataBeg -1];
}
printDownlinkInfo();
processDownlink(timestamp, fPort, LMIC.frame + LMIC.dataBeg, LMIC.dataLen);
}
serial.println("Going to sleep for 300s..."); //added
digitalWrite(7, LOW); //added: Put power OFF VDD_TCX0 (put power off during "sleep")
serial.println("VDD_TCXO power OFF"); //added
delay(500); //added
LowPower.deepSleep(300000); //added
serial.println("Got out from sleep!"); //added
digitalWrite(7, HIGH); //added: Put power ON VDD_TCX0
serial.println("VDD_TCXO power ON"); //added
delay(500); //added
break;
Thanks,
Tipo