API Reference
Manage eCall
eCall sample app

eCall is a technology initiative intended to bring rapid assistance to auto accidents anywhere in the European Union. When a serious vehicle accident occurs, sensors automatically trigger an eCall. When activated, the in-vehicle system (IVS) establishes a 112-voice connection.

The Mobile Network Operator handles the eCall like any other 112 call and routes the call to the most appropriate emergency response centre - Public Safety Answering Point (PSAP).

At the same time, a digital "minimum set of data" (MSD) message is sent over the voice call using in-band modem signals. The MSD includes accident information like time, location, driving direction, and vehicle description.

The eCall can also be activated manually. The mobile network operator identifies that the 112 call is an eCall from the “eCall flag” inserted by the vehicle’s communication module.

This API applies for both PAN-EUROPEAN and ERA-GLONASS standards.

eCall service is only available on automotive products.

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_ecall -> modemService.le_ecall

Operation modes

The modem can be configured to operate in three different operation modes:

  • le_ecall_ForceOnlyMode(): this function configures the eCall operation mode to eCall only, only emergency number can be used to start an eCall session. The modem doesn't try to register on the Cellular network. This function forces the modem to behave as eCall only mode whatever U/SIM operation mode. The change doesn't persist over power cycles. This function can be called before making an eCall.
  • le_ecall_ForcePersistentOnlyMode(): Same as le_ecall_ForceOnlyMode(), but the change persists over power cycles.
  • le_ecall_ExitOnlyMode(): this function exits from eCall Only mode. It configures the eCall operation mode to Normal mode, the modem uses the default operation mode at power up (or after U/SIM hotswap). The modem behaves following the U/SIM eCall operation mode; for example the U/SIM can be configured only for eCall, or a combination of eCall and commercial service provision.
  • le_ecall_GetConfiguredOperationMode(): this function allows the user to retrieve the configured Operation mode. The configured operation mode can be:
    • LE_ECALL_NORMAL_MODE : normal mode. The modem behaves following the U/SIM eCall operation mode.
    • LE_ECALL_ONLY_MODE : eCall only mode according to U/SIM operation mode or forced by application through the le_ecall_ForceOnlyMode() function.
    • LE_ECALL_FORCED_PERSISTENT_ONLY_MODE : persistent eCall only mode.

eCall Session

Start an eCall session by creating an eCall object that calls le_ecall_Create(). Stop an eCall session with le_ecall_End().

The type of eCall and the kind of activation are specified using different functions to start the eCall session:

An application must wait for LE_ECALL_STATE_DISCONNECTED event before calling again the le_ecall_StartXxx() functions.

When the eCall object is no longer needed, call le_ecall_Delete() to free all allocated resources associated with the object.

The current state of an eCall session can be queried using le_ecall_GetState(). Alternatively, an application can register a handler be notified when the session state changes. The handler can be managed using le_ecall_AddStateChangeHandler() and le_ecall_RemoveStateChangeHandler().

An application can call le_ecall_GetTerminationReason() to know the reason of the call termination when call state is LE_ECALL_STATE_DISCONNECTED, and also le_ecall_GetPlatformSpecificTerminationCode() to get platform specific termination code (refer to your platform documentation for further details).

Minimum Set of Data (MSD)

The dynamic values of the MSD can be set with:

The MSD is automatically encoded with the dynamic values and the static values retrieved from the configuration tree each time those functions are called.

Those functions return a LE_DUPLICATE error when the MSD has been already imported with le_ecall_ImportMsd() function.

The MSD transmission mode can be set or get with:

The transmission mode can be:

  • LE_ECALL_TX_MODE_PUSH : the MSD is pushed by the IVS
  • LE_ECALL_TX_MODE_PULL : the MSD is sent when requested by the PSAP

It's possible to import a prepared MSD using the le_ecall_ImportMsd() function. The prepared MSD must answer the requirements described in the "EN 15722:2013" publication (this publication has been prepared by Technical Committee CEN/TC 278 “Intelligent Transport Systems").

The imported MSD doesn't take into account the values provided by the le_ecall_SetMsdXxx() functions and the configuration tree. It overwrites any previous imported MSD or encoded MSD.
The imported MSD overwrites the control flags (automaticActivation and testCall) set by le_ecall_StartXxx() functions (Manual, Automatic, Test). The User App is in charge of their correct settings.

The encoded MSD can be retrieved with le_ecall_ExportMsd() function.

The User app must perform the MSD transmission by calling le_ecall_SendMsd() when the LE_ECALL_STATE_PSAP_START_IND_RECEIVED event is received. The MSD can be updated before calling le_ecall_SendMsd(), using the e_ecall_ImportMsd() function or the le_ecall_SetMsdXxx() functions.


If another application tries to use the eCall service while a session is already in progress, the le_ecall_StartManual(), le_ecall_StartAutomatic(), le_ecall_StartTest() functions will return a LE_BUSY error. The eCall session in progress won't be interrupted or disturbed. The application can follow the session progress with 'state' functions like le_ecall_GetState() and le_ecall_AddStateChangeHandler(). A manual eCall can't interrupt an automatic eCall, and an automatic eCall can't interrupt a manual eCall.

ERA-GLONASS compliancy

To perform an emergency call following the ERA-GLONASS requirements, the 'systemStandard' entry of the configuration database must be set to 'ERA-GLONASS'.

Moreover, the User can set some specific configuration settings in accordance with the PSAP configuration:

  • le_ecall_SetEraGlonassManualDialAttempts(): set the MANUAL_DIAL_ATTEMPTS value. If a dial attempt under manual emergency call initiation failed, it should be repeated maximally ECALL_MANUAL_DIAL_ATTEMPTS-1 times within the maximal time limit of ECALL_DIAL_DURATION. The default value is 10. Redial attempts stop once the call has been cleared down correctly, or if counter / timer reached their limits. Available for both manual and test modes.
  • le_ecall_SetEraGlonassAutoDialAttempts(): set the AUTO_DIAL_ATTEMPTS value. If a dial attempt under automatic emergency call initiation failed, it should be repeated maximally ECALL_AUTO_DIAL_ATTEMPTS-1 times within the maximal time limit of ECALL_DIAL_DURATION. The default value is 10. Redial attempts stop once the call has been cleared down correctly, or if counter / timer reached their limits.
  • le_ecall_SetEraGlonassDialDuration(): set the ECALL_DIAL_DURATION time. It is the maximum time the IVS have to connect the emergency call to the PSAP, including all redial attempts. If the call is not connected within this time (or ManualDialAttempts/AutoDialAttempts dial attempts), it will stop.

The corresponding getter functions let you retrieve the configuration settings values:

ERA-GLONASS MSD additional data

ERA-GLONASS additional data are optional and provided in the MSD message if any. They are located in MSD data block number 12 as optional additional data.

ERA-GLONASS MSD additional data describes:

  • The crash severity (Accident Severity Index - ASI15)
  • The diagnostic result
  • The crash information

ERA-GLONASS MSD additional data can be specified through the following functions:

ERA-GLONASS additional data is encoded using the OID version "1.4.1". This was assigned to ERA-GLONASS optional additional data by CEN. Content of data block in the AdditionalData should be:

ERADataFormatId::= INTEGER (1)
ERAAdditionalData ::= SEQUENCE {
crashSeverity INTEGER(0..2047) OPTIONAL,
diagnosticResult DiagnosticResult OPTIONAL,
crashInfo CrashInfo OPTIONAL,
DiagnosticResult ::= SEQUENCE {
micConnectionFailure BOOLEAN OPTIONAL,
rightSpeakerFailure BOOLEAN OPTIONAL,
leftSpeakerFailure BOOLEAN OPTIONAL,
speakersFailure BOOLEAN OPTIONAL,
ignitionLineFailure BOOLEAN OPTIONAL,
statusIndicatorFailure BOOLEAN OPTIONAL,
batteryFailure BOOLEAN OPTIONAL,
batteryVoltageLow BOOLEAN OPTIONAL,
crashSensorFailure BOOLEAN OPTIONAL,
firmwareImageCorruption BOOLEAN OPTIONAL,
commModuleInterfaceFailure BOOLEAN OPTIONAL,
gnssReceiverFailure BOOLEAN OPTIONAL,
gnssAntennaFailure BOOLEAN OPTIONAL,
commModuleFailure BOOLEAN OPTIONAL,
eventsMemoryOverflow BOOLEAN OPTIONAL,
crashProfileMemoryOverflow BOOLEAN OPTIONAL,
otherCriticalFailires BOOLEAN OPTIONAL,
otherNotCriticalFailures BOOLEAN OPTIONAL
CrashInfo ::= SEQUENCE {

Redial management

In the case of PAN-EUROPEAN, the redial can be performed as many times as desired but should be performed within 2 minutes. (EN 16062:2014 -7.14.3).

In the case of ERA-GLONASS, the redial can be performed ECALL_MANUAL_DIAL_ATTEMPTS times within the maximal time limit of ECALL_DIAL_DURATION (GOST 54620 2013 – Appendix A).

The LE_ECALL_STATE_END_OF_REDIAL_PERIOD state event notifies the User of the redial period end.

Code sample

The following code sample shows how an eCall session is used:

le_result_t TriggerAutomaticEcall
uint32_t paxCount,
int32_t latitude,
int32_t longitude,
int32_t direction
// Create the eCall Session
// Set the dynamic MSD values, the static values are retrieved from the config tree
le_ecall_SetMsdPassengersCount(eCallRef, paxCount);
// Start the eCall session

If you want to have a look at a more in-depth usage of these APIs, please refer to the c_ecallAppMain .

eCall configuration

By default, the number to dial is read from the FDN/SDN (Fixed Dialling Numbers/Service Dialling Numbers) of the U/SIM, depending upon the eCall operating mode.

However, the PSAP telephone number can be specified and retrieved with:

Important! These two functions don't modified the U/SIM content nor read the U/SIM content.

le_ecall_UseUSimNumbers() function can be recalled to indicate the modem to read the number to dial from the FDN/SDN of the U/SIM, depending upon the eCall operating mode.

The NAD (Network Access Device, i.e. the Modem) deregistration time value can be set or get with:

Time is set in hours where:

  • from 1 to 60 minutes -> 1 hour
  • from 61 to 120 minutes -> 2hours, etc.

Example: if deregTime parameter unit is minutes, the effective time is:

ECallConfiguration.nad_deregistration_time = (deregTime+59)/60;

After termination of an emergency call the in-vehicle system remains registered on the network for the period of time, defined by the installation parameter 'NAD_DEREGISTRATION_TIME'.

Be sure to check the possible values of 'NAD_DEREGISTRATION_TIME' for your specific platform.

The minimum interval value between dial attempts can be set or get with:

The default value is set to 30 seconds.

The time is counted from the start of the first dial attempt.

If more time has expired during the dial attempt, it will wait for 1 second to allow hangup before redialing.

If less time has expired during the dial attempt, it will wait for (interval - 'dial attempt duration') seconds to allow hangup before redialing.

In the case the call was connected, the redial will be immediate.

le_ecall_SetIntervalBetweenDialAttempts() is available for both manual and test modes.

Configuration tree

The configuration database path for the eCall is:

            systemStandard<string> = <eCall system>
            msdVersion<int> = <MSD value>
            vehicleType<string> = <vehicle type>
            vin<string> = <VIN>
                0<string> = <propulsion type>
                1<string> = <propulsion type>

The 'systemStandard' is the kind of eCall system:


If no value or a bad entry is filled, the default value is 'PAN-EUROPEAN'.

The 'msdVersion' field is the MSD format version. If the field is not present, the default MSD version is version 1.

The 'vehicleType' field can be set with the following choices (string type):

  • "Passenger-M1" (Passenger vehicle, Class M1)
  • "Bus-M2" (Buses and coaches, Class M2)
  • "Bus-M3" (Buses and coaches, Class M3)
  • "Commercial-N1" (Light commercial vehicles, Class N1)
  • "Heavy-N2" (Heavy duty vehicles, Class N2)
  • "Heavy-N3" (Heavy duty vehicles, Class N3)
  • "Motorcycle-L1e" (Motorcycles, Class L1e)
  • "Motorcycle-L2e" (Motorcycles, Class L2e)
  • "Motorcycle-L3e" (Motorcycles, Class L3e)
  • "Motorcycle-L4e" (Motorcycles, Class L4e)
  • "Motorcycle-L5e" (Motorcycles, Class L5e)
  • "Motorcycle-L6e" (Motorcycles, Class L6e)
  • "Motorcycle-L7e" (Motorcycles, Class L7e)

The 'vin' is the vehicle identification number (string type).

The 'propulsionType' field can be set with the following choices (string type):

  • "Gasoline" (Gasoline propulsion)
  • "Diesel" (Diesel propulsion)
  • "NaturalGas" (Compressed natural gas propulsion)
  • "Propane" (Liquid propane gas propulsion)
  • "Electric" (Electric propulsion)
  • "Hydrogen" (Hydrogen propulsion)
  • "Other" (Other type of propulsion)

Several 'propulsionType' can be applied.

Copyright (C) Sierra Wireless Inc. Use of this work is subject to license.

Copyright (C) Sierra Wireless Inc. Use of this work is subject to license.