eCall
API Reference
Manage eCall
eCall sample app
Code samples
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.
- Note
- 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:
bindings: { 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
An eCall session is started by creating an eCall object with the le_ecall_Create() function. The eCall session can then be stopped with le_ecall_End().
The eCall type and the kind of activation are specified using different functions to start the eCall session:
- le_ecall_StartManual(): initiate a manual eCall session (triggered by a passenger)
- le_ecall_StartAutomatic(): initiate an automatic eCall session (automatically triggered by the IVS in case of accident)
- le_ecall_StartTest(): initiate a test eCall session (to test the communication between the IVS and the PSAP)
- Warning
- An application must wait for the end of the ongoing eCall before triggering another one with the
le_ecall_StartXxx()
functions. An eCall is ended when:- the application successfully ended it with le_ecall_End() returning
LE_OK
- or the event LE_ECALL_STATE_STOPPED is received
- or the event LE_ECALL_STATE_ALACK_RECEIVED_CLEAR_DOWN is received
- or the event LE_ECALL_STATE_DISCONNECTED is received and no redial is launched (see Redial management section for more information about the redial process).
- the application successfully ended it with le_ecall_End() returning
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 also call le_ecall_GetTerminationReason() to retrieve 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).
Concurrency
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.
Minimum Set of Data (MSD)
The dynamic values of the MSD can be set with:
- le_ecall_SetMsdPosition() sets the position of the vehicle.
- le_ecall_SetMsdPositionN1() sets the first delta position of the vehicle.
- le_ecall_SetMsdPositionN2() sets the second delta position of the vehicle.
- le_ecall_SetMsdPassengersCount() sets the number of passengers.
The MSD is automatically encoded with the values previously set.
- Warning
- 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 IVSLE_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").
- Warning
- The imported MSD doesn't take into account the values provided by the le_ecall_SetMsdXxx() functions. 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.
- Note
- 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.
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:
- le_ecall_GetEraGlonassManualDialAttempts(): get the MANUAL_DIAL_ATTEMPTS value.
- le_ecall_GetEraGlonassAutoDialAttempts(): get the AUTO_DIAL_ATTEMPTS value.
- le_ecall_GetEraGlonassDialDuration(): get the ECALL_DIAL_DURATION time.
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:
- le_ecall_SetMsdEraGlonassCrashSeverity().
- le_ecall_ResetMsdEraGlonassCrashSeverity().
- le_ecall_SetMsdEraGlonassDiagnosticResult().
- le_ecall_ResetMsdEraGlonassDiagnosticResult().
- le_ecall_SetMsdEraGlonassCrashInfo().
- le_ecall_ResetMsdEraGlonassCrashInfo().
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:
ERAOADASN1ModuleDEFINITIONSAUTOMATIC TAGS ::=BEGINERADataFormatId::= INTEGER (1)ERAAdditionalData ::= SEQUENCE {crashSeverity INTEGER(0..2047) OPTIONAL,diagnosticResult DiagnosticResult OPTIONAL,crashInfo CrashInfo OPTIONAL,...}DiagnosticResult ::= SEQUENCE {micConnectionFailure BOOLEAN OPTIONAL,micFailure BOOLEAN OPTIONAL,rightSpeakerFailure BOOLEAN OPTIONAL,leftSpeakerFailure BOOLEAN OPTIONAL,speakersFailure BOOLEAN OPTIONAL,ignitionLineFailure BOOLEAN OPTIONAL,uimFailure BOOLEAN OPTIONAL,statusIndicatorFailure BOOLEAN OPTIONAL,batteryFailure BOOLEAN OPTIONAL,batteryVoltageLow BOOLEAN OPTIONAL,crashSensorFailure BOOLEAN OPTIONAL,firmwareImageCorruption BOOLEAN OPTIONAL,commModuleInterfaceFailure BOOLEAN OPTIONAL,gnssReceiverFailure BOOLEAN OPTIONAL,raimProblem BOOLEAN OPTIONAL,gnssAntennaFailure BOOLEAN OPTIONAL,commModuleFailure BOOLEAN OPTIONAL,eventsMemoryOverflow BOOLEAN OPTIONAL,crashProfileMemoryOverflow BOOLEAN OPTIONAL,otherCriticalFailires BOOLEAN OPTIONAL,otherNotCriticalFailures BOOLEAN OPTIONAL}CrashInfo ::= SEQUENCE {crashFront BOOLEAN OPTIONAL,crashLeft BOOLEAN OPTIONAL,crashRight BOOLEAN OPTIONAL,crashRear BOOLEAN OPTIONAL,crashRollover BOOLEAN OPTIONAL,crashSide BOOLEAN OPTIONAL,crashFrontOrSide BOOLEAN OPTIONAL,crashAnotherType BOOLEAN OPTIONAL}END
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 samples
A sample code that implements an eCall test session with a local voice prompt can be found in eCallWPrompt.c file (please refer to Sample code of an eCall test session with a local voice prompt page).
A sample code that implements an eCall test session with a voice call connection can be found in eCallWVoice.c file (please refer to Sample code an eCall test session with a voice call connection page).
If you want to have a look at a more in-depth usage of these APIs, please refer to the eCall.
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:
- Note
- That PSAP number is not applied to Manually or Automatically initiated eCall. For those modes, an emergency call is launched.
- Warning
- 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:
le_ecall_SetNadDeregistrationTime() API is used to set up timer T9 on PAN-EUROPEAN or for T10 on ERA-GLONASS.
- PAN-EUROPEAN (EN 16062) defines T9 and T10.
- ERA-GLONASS (ENG_GOST_R_54620) defines the NAD_DEREGISTRATION_TIME with minimal value to two hours and maximal value to twelve hours.
PAN-EUROPEAN:
- T9's value is defined as one hour. This value is used to decide which event to be report when "Deregistration Fallback Timer" expires.
- T10 stands for "Deregistration Fallback Timer" (DFT)'s value. Its minimum range is greater than one hour and maximum range is twelve hours, it can be set by users by using le_ecall_SetNadDeregistrationTime(value), but the default value is twelve hours.
- T9=1 hour, if the NAD_DEREGISTRATION_TIME value is set to one hour then the LE_ECALL_STATE_TIMEOUT_T9 will be reported.
- T9=1 hour, if the NAD_DEREGISTRATION_TIME value is higher than one hour and lower than o equal to twelve hours then the LE_ECALL_STATE_TIMEOUT_T10 will be reported instead of T9 timeout.
ERA-GLONASS:
- LE_ECALL_STATE_TIMEOUT_T9 is not reported as it is not defined into ERA-GLONASS.
- T10 default value two hours (GOST_R 54620 Table A.1), it can be changed with le_ecall_SetNadDeregistrationTime() from two to twelve hours.
Time is set in hours where:
- from 1 to 60 minutes -> 1 hour
- from 61 to 120 minutes -> 2 hours, 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'.
- Warning
- 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.
The prefered system standard defaults to PAN-EUROPEAN It can be set an gotten with the following functions:
The MSD version can be set and and gotten with the following functions:
The vehicle type can be set and gotten with the following functions:
The vehicle identifier can be set and gotten with the following functions:
The propulsion type can be set and gotten with the following functions:
Copyright (C) Sierra Wireless Inc.