Low Power Technologies

API Reference

The Low Power Technologies (LPT) APIs are used to control the low power features of the modem.

IPC interfaces binding

All the functions of this API are provided by the modemService service.

Here's a code sample binding to modem services:

   clientExe.clientComponent.le_lpt -> modemService.le_lpt


The extended idle-mode discontinuous reception (eDRX) is a mechanism that reduces power consumption by extending the sleeping cycle in idle mode. It allows the device to turn part of its circuitry off during the extended DRX period to save power. During the extended DRX period, the device is not listening for paging or downlink control channels, so the network should not try to contact the device.

Enabling eDRX introduces a longer latency in reaching the device and should therefore not be used by systems that cannot handle it, e.g. systems supporting mobile-terminated voice.

The use of eDRX for a given radio access technology (le_lpt_EDrxRat_t) can be enabled and disabled with le_lpt_SetEDrxState().


The eDRX feature is controlled by two parameters, which are defined in the standard 3GPP TS 24.008 Release 13 Section the eDRX value, defining the eDRX cycle length, and the Paging Time Window. These parameters are negotiated between the device and the network during an attach or routing area updating procedure.

The requested eDRX value can be set with le_lpt_SetRequestedEDrxValue() and retrieved with le_lpt_GetRequestedEDrxValue().

LE_ASSERT_OK(le_lpt_SetRequestedEDrxValue(LE_LPT_EDRX_RAT_LTE_M1, 1));
uint8_t eDrxValue = 0;
LE_ASSERT_OK(le_lpt_GetRequestedEDrxValue(LE_LPT_EDRX_RAT_LTE_M1, &eDrxValue));
LE_INFO("Requested eDRX cycle value for LTE M1: %d", eDrxValue);

The eDRX value provided by the network can be retrieved with le_lpt_GetNetworkProvidedEDrxValue().

uint8_t npEDrxValue = 0;
LE_ASSERT_OK(le_lpt_GetNetworkProvidedEDrxValue(LE_LPT_EDRX_RAT_LTE_M1, &npEDrxValue));
LE_INFO("Network-provided eDRX cycle value for LTE M1: %d", npEDrxValue);

The requested Paging Time Window cannot be set, but the network-provided value can be retrieved with le_lpt_GetNetworkProvidedPagingTimeWindow().

uint8_t pagingTimeWindow = 0;
LE_INFO("Network-provided Paging Time Window for LTE M1: %d", pagingTimeWindow);

A handler can also be registered with le_lpt_AddEDrxParamsChangeHandler() in order to be notified of the changes in the network-provided eDRX parameters.

* Handler for notifications of a change in the eDRX parameters.
void EDrxParamsChangeHandler
le_lpt_EDrxRat_t rat, ///< [IN] Radio Access Technology.
le_onoff_t activation, ///< [IN] eDRX activation state.
uint8_t eDrxValue, ///< [IN] eDRX cycle value, defined in 3GPP
///< TS 24.008 Rel-13 section
uint8_t pagingTimeWindow, ///< [IN] Paging Time Window, defined in 3GPP
///< TS 24.008 Rel-13 section
void* contextPtr ///< [IN] Context pointer.
LE_INFO("New eDRX parameters for RAT %d: activation = %c, eDRX value = %d, PTW = %d",
rat, ((LE_ON == activation) ? 'Y' : 'N'), eDrxValue, pagingTimeWindow);
le_lpt_EDrxParamsChangeHandlerRef_t handlerRef;
handlerRef = le_lpt_AddEDrxParamsChangeHandler(EDrxParamsChangeHandler, NULL);

The handler can be removed with le_lpt_RemoveEDrxParamsChangeHandler().