LMIC-node: how to put into "sleep"? (cmwx1zzabz: STM32L0)

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