Telematics SDK - Interface Specification  v1.38.19
Call Flow Diagrams

Application initialization call flow

TelSDK initializes various sub-systems during start-up. It marks each sub-system as ready once the initialization procedures are completed for that sub-system. The application has to wait until the corresponding sub-system is ready on which it needs to make API requests. TelSDK provides APIs to check whether sub-system is ready or not.

Example:

Phone manager initialization

Phone manager initialization

Phone manager initialization

  1. Application can use IPhoneManager::isSubsystemReady to determine if the system is ready.
  2. The application receives the status i.e. either true or false whether sub-system is ready or not.
  3. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  4. PhoneManager notifies the application when the subsystem is ready through the std::future object.
  5. The application waits until the asynchronous operation i.e onSubsystemReady completes.
  6. PhoneManager updates the application once sub-system initialization completes.

Telephony

Dial call flow

Dial call flow

Dial call flow

  1. The application gets the PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to get Phone.
  3. The application gets the Phone object for given phone identifier using PhoneManager.
  4. PhoneManager returns Phone object to application. In case phone identifier is not specified, it returns default phone.
  5. The application registers a listener with CallManager to listen to the call info change notifications like DIALING, ALERTING, ACTIVE and ENDED.
  6. The application receives the status like SUCCESS or INVALIDPARAM based on registration of listener to CallManager.
  7. The application dials a number by using makeCall API, optionally specifying callback to get asynchronous response.
  8. The application receives the status like SUCCESS, INVALIDPARAM and FAILED etc based on the execution of makeCall API.
  9. Optionally, the application gets asynchronous response for makeCall using makeCallResponseCallback.
  10. The application receives callback on call info change like DIALING/ALERTING/ACTIVE when other party accepts the call.
  11. The application sends hangup command to hangup the call, optionally specifying callback to get asynchronous response.
  12. The application receives the status like SUCCESS, FAILED etc based on the execution of hangup API.
  13. Optionally, the application gets asynchronous response for hangup using CommandResponseCallback.
  14. The application receives callback on call info change i.e Call Ended from CallManager.

ECall call flow

ECall call flow

ECall call flow

  1. The application gets the PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to get Phone.
  3. The application gets the Phone object optionally specifying phone identifier using PhoneManager.
  4. PhoneManager returns Phone object to application, returns default phone in case phone identifier is not specified.
  5. The application registers a listener with CallManager to listen to the call info change notifications like DIALING, ALERTING, ACTIVE etc.
  6. The application receives the status like SUCCESS, FAILED etc based on registration of listener from CallManager.
  7. The application dials an emergency call by using makeECall API, optionally specifying callback to get asynchronous response.
  8. The application receives the status like SUCCESS, FAILED etc based on the execution of makeECall API.
  9. Optionally, the application gets asynchronous response for makeECall using makeCallResponseCallback.
  10. CallManager sends ecall msd transmission status to the application by using onECallMsdTransmissionStatus API.
  11. The application sends hangup command to hangup the call, optionally gets asynchronous response using callback.
  12. The application receives the status like SUCCESS, FAILED etc based on the execution of hangup API.
  13. Optionally, the application gets asynchronous response for hangup using CommandResponseCallback.
  14. CallManager sends call info change i.e Call Ended to the application by using onCallInfoChange callback function.

Signal strength call flow

Signal strength call flow

Signal strength call flow

  1. The application gets PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to get Phone instance.
  3. The application gets phone instance for a given phone identifier using PhoneManager object.
  4. PhoneManager returns IPhone object to the application.
  5. Application registers the listener to get notification for signal strength change.
  6. The application receives the status i.e. either SUCCESS or FAILED based on the registration of the listener.
  7. The application requests for signal strength and optionally, gets asynchronous response using ISignalStrengthCallback.
  8. The application receives the status i.e. either SUCCESS or FAILED based on execution of requestSignalStrength API in SapCardManager.
  9. Optionally, the response for signal strength request is received by the application.
  10. Application receives a notification when there is a change in signal strength.

Answer, Reject, RejectWithSMS call flow

Answer Reject RejectWithSMS call flow

Answer Reject RejectWithSMS call flow

  1. The application gets the PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to register listener.
  3. The application registers a listener with CallManager to listen incoming call notifications.
  4. The application receives the status like SUCCESS, FAILED etc based on registration of listener from CallManager.
  5. The application receives onIncomingCall notification when there is an incoming call.
  6. The application performs answer/reject/rejectWithSMS operation using ICall.
  7. The application receives the status like SUCCESS, FAILED etc based on execution of answer/reject/rejectWithSMS.
  8. Optionally, the application gets asynchronous response for answer/reject/rejectWithSMS using CommandResponseCallback.
  9. The CallManager sends call info change i.e CALL_ACTIVE or CALL_ENDED to the application by using onCallInfoChange callback function.

Hold call flow

Hold call flow

Hold call flow

  1. The application gets the PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to get Phone.
  3. The application gets the Phone object for given phone identifier using PhoneManager.
  4. PhoneManager returns Phone object to application, returns default phone in case phone identifier is not specified.
  5. The application registers a listener with CallManager to listen to the call info change notifications like DIALING, ALERTING, ACTIVE etc.
  6. The application receives the status like SUCCESS or INVALIDPARAM based on registration of listener to CallManager.
  7. The application dials a number by using makeCall API, optionally specifying callback to get asynchronous response.
  8. The application receives the status like SUCCESS, INVALIDPARAM and FAILED etc based on the execution of makeCall API.
  9. Optionally, the application gets asynchronous response for makeCall using makeCallResponseCallback.
  10. The CallManager sends call info change i.e CALL_ACTIVE to application by using onCallInfoChange API.
  11. The application sends hold command to hold the call, optionally specifying callback to get asynchronous response.
  12. The application receives the status like SUCCESS, FAILED etc based on the execution of hold API.
  13. Optionally, the application gets asynchronous response for hold using CommandResponseCallback.
  14. The application receives call info change i.e CALL_ON_HOLD from CallManager.

Hold, Conference, Swap call flow

Hold Conference Swap call flow

Hold Conference Swap call flow

  1. The application makes first call using ICall.
  2. The application receives the status like SUCCESS, FAILED etc based on execution of makeCall operation.
  3. Optionally, the application gets asynchronous response for makeCall using makeCallResponseCallback.
  4. The CallManager sends call info change i.e CALL_ACTIVE to application by using onCallInfoChange API.
  5. The application sends hold command to hold the call, optionally specifying callback to get asynchronous response.
  6. The application receives the status like SUCCESS, FAILED etc based on the execution of hold API.
  7. Optionally, the application gets asynchronous response for hold using CommandResponseCallback.
  8. The application receives call info change i.e CALL_ON_HOLD from CallManager.
  9. The application makes second call using ICall.
  10. The application receives the status like SUCCESS, FAILED etc based on execution of makeCall operation.
  11. Optionally, the application gets asynchronous response for makeCall using makeCallResponseCallback.
  12. The CallManager sends call info change i.e CALL_ACTIVE to application by using onCallInfoChange API.
  13. The application requests the PhoneFactory to get ICallManager object.
  14. The application receives the ICallManager object using PhoneFactory.
  15. The application performs conference/swap operation using ICallManager by passing first call and second call. optionally application can pass callback to receive hold response asynchronously.
  16. The application receives the status like SUCCESS, FAILED etc based on the execution of conference/swap API.
  17. Optionally, the application gets asynchronous response for conference/swap using CommandResponseCallback.

SMS call flow

SMS call flow

SMS call flow

  1. Application gets PhoneManager object using PhoneFactory.
  2. PhoneFactory returns the PhoneManager object to application in order to get list of phone identifiers.
  3. The application retrieves the list of phone identifier on the device using PhoneManager object.
  4. Application receives the status i.e. either SUCCESS or FAILED based on the execution of getPhoneIds API in PhoneManager.
  5. Application registers the listener for incoming SMS with IPhoneManager.
  6. The application receives the status i.e. either SUCCESS or INVALIDPARAM based on successful registration of the listener.
  7. The application gets SmsManager object corresponding to specific phone identifier.
  8. PhoneFactory returns the SmsManager object to application in order to perform operations like send SMS and get SMSC address.
  9. The application sends SMS to the receiver address and optionally gets asynchronous response using CommandResponseCallback.
  10. Application receives the status i.e. either SUCCESS or FAILED based on execution of sendSms API in SmsManager.
  11. Optionally, the response for send SMS is received by the application.
  12. Application gets notified for incoming SMS.
  13. The application requests for SmscAddress and optionally gets asynchronous response using ISmscAddressCallback.
  14. Application receives the status i.e. either SUCCESS or FAILED based on successful execution of requestSmscAddress API in SmsManager.
  15. Optionally, the application receives the SMSC address on success or gets error on failure in the command response callback.

Radio and Service state call flow

Radio and Service state call flow

Radio and Service state call flow

  1. The application gets PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to get Phone instance.
  3. The application gets phone instance for a given phone identifier using PhoneManager object.
  4. PhoneManager returns IPhone object to the application.
  5. Application registers the listener to get notifications for radio and service state change.
  6. The application receives the status i.e. either SUCCESS or FAILED based on the registration of the listener.
  7. The application request the Phone to get radio state.
  8. The application receives the radio state like RADIO_STATE_ON, OFF or UNAVAILABLE.
  9. Application receives a notification when there is a change in radio state.
  10. The application request the Phone to get service state.
  11. The application receives the service state like IN_SERVICE, OUT_OF_SERVICE, EMERGENCY_ONLY or RADIO_OFF.
  12. Application receives a notification when there is a change in service state.

Network Selection Manager call flow

Network selection manager provides APIs to get and set network selection mode, get and set preferred networks and perform network scan for availbale networks. Registered listener will get notified for the change in network selection mode.

Network selection manager call flow

Network selection manager call flow

  1. Application requests phone factory for network selection manager.
  2. Phone factory returns INetworkSelectionManager object using which application will register or deregister a listener.
  3. Application can register a listener to get notifications for network selection mode change.
  4. Status of register listener i.e. either SUCCESS or other status will be returned to the application.
  5. Application requests for network selection mode using INetworkSelectionManager object and gets asynchronous response using SelectionModeResponseCallback.
  6. The application receives the status i.e. either SUCCESS or other status based on the execution of requestNetworkSelectionMode API.
  7. The response for get network selection mode request is received by the application.
  8. The application can also set network selection mode and optionally gets asynchronous response using ResponseCallback. MCC and MNC are optional for AUTOMATIC network selection mode.
  9. Application receives the status i.e. either SUCCESS or other status based on the execution of setNetworkSelectionMode API.
  10. Optionally the response for set network selection mode request is received by the application.
  11. Registered listener will get notified for the network selection mode change.
  12. Similarly, the application requests for preferred networks using INetworkSelectionManager object and gets asynchronous response using PreferredNetworksCallback.
  13. The application receives the status i.e. either SUCCESS or other status based on the execution of requestPreferredNetworks API.
  14. The response for get preferred networks request i.e. 3GPP preferred network list and static 3GPP preferred network list is received by the application asynchronously. Higher priority networks appear first in the list. The networks that appear in the 3GPP Preferred Networks list get higher priority than the networks in the static 3GPP preferred networks list.
  15. The application can set 3GPP preferred network list and optionally gets asynchronous response using ResponseCallback. If clear previous networks flag is false then new 3GPP preferred network list is appended to existing preferred network list. If flag is true then old list is flushed and new 3GPP preferred network list is added.
  16. Application receives the status i.e. either SUCCESS or other status based on the execution of setPreferredNetworks API.
  17. Optionally the response for set preferred networks request is received by the application.
  18. The application can perform network scan for available networks using INetworkSelectionManager object and gets asynchronous response using NetworkScanCallback.
  19. Application receives the status i.e. either SUCCESS or other status based on the execution of performNetworkScan API.
  20. Network name, MCC, MNC and status of the operator will be received by the application.
  21. Application can deregister a listener there by it would not get notifications.
  22. Status of deregister listener i.e. either SUCCESS or other status will be returned to the application.

Serving System Manager Call Flow

Serving system manager provides APIs to get and set RAT mode preference and get and set service domain preference. Registered listener will get notified for the change in RAT mode and service domain preference change.

Serving System Manager Call Flow

Serving System Manager Call Flow

  1. Application requests phone factory for serving system manager.
  2. Phone factory returns IServingSystemManager object using which application will register or deregister a listener.
  3. Application can register a listener to get notifications for RAT mode and service domain preference changes.
  4. Status of register listener i.e. either SUCCESS or other status will be returned to the application.
  5. Application requests for RAT mode preference using IServingSystemManager object and gets asynchronous response using RatPreferenceCallback.
  6. The application receives the status i.e. either SUCCESS or other status based on the execution of requestRatPreference API.
  7. The response for get RAT preference request is received by the application.
  8. The application can also set RAT mode preference and optionally gets asynchronous response using ResponseCallback.
  9. Application receives the status i.e. either SUCCESS or other status based on the execution of setRatPreference API.
  10. Optionally the response for set RAT preference request is received by the application.
  11. Registered listener will get notified for the RAT mode preference change.
  12. Application requests for service domain preference using IServingSystemManager object and gets asynchronous response using ServiceDomainPreferenceCallback.
  13. The application receives the status i.e. either SUCCESS or other status based on the execution of requestServiceDomainPreference API.
  14. The response for get service domain preference request is received by the application.
  15. The application can also set service domain preference and optionally gets asynchronous response using ResponseCallback.
  16. Application receives the status i.e. either SUCCESS or other status based on the execution of setServiceDomainPreference API.
  17. Optionally the response for set service domain preference request is received by the application.
  18. Registered listener will get notified for the service domain preference change.
  19. Application can deregister a listener there by it would not get notifications.
  20. Status of deregister listener i.e. either SUCCESS or other status will be returned to the application.

Card Services

Get applications call flow

Get applications call flow

Get applications call flow

  1. Application gets the CardManager object from PhoneFactory.
  2. Application receives CardManager object in order to perform operations like getSlotIds and getCard.
  3. The application registers a listener for Card info change event with CardManager.
  4. Application receives the status i.e. either SUCCESS or INVALIDPARAM based on the registration of listener.
  5. The response from onCardInfoChanged is received by the application whenever there is card info change.
  6. The application gets the slotIds from the sub-system using CardManager.
  7. Application receives the status i.e. either SUCCESS or NOTREADY along with the updated slotIds.
  8. Then, the application sends request to CardManager to get Card object for a specific slotId.
  9. Application receives Card object from CardManager in order to perform card operation like getApplications.
  10. The application gets the CardApps from Card object.
  11. The application receives CardApps which contain information such as AppId, AppType and AppState.
  12. Now the application removes the listener associated with CardManager.
  13. Application receives the status i.e. either SUCCESS or NOSUCH for the removal of listener.

Transmit APDU call flow

On logical channel

On logical channel

On logical channel

  1. The Application requests CardApp for the SIM application identifier.
  2. The application receives the application identifier to perform open logical channel.
  3. Application sends request to open the logical channel with the application identifier and optionally, gets asynchronous response in OpenLogicalChannelCallback.
  4. The application receives the status i.e. either SUCCESS or FAILED based on execution of openLogicalChannel API.
  5. Optionally, the application receives the response which contains either channel number on success or error in case of failure.
  6. Then, the application transmits the APDU data on logical channel using the channel obtained earlier. Optionally, gets asynchronous response in TransmitApduResponseCallback.
  7. The application receives the status i.e. either SUCCESS or FAILED based on execution of transmitApduLogicalChannel API.
  8. Optionally, the application receives the response which contains either result on success or error in case of failure.
  9. Finally, the application closes the logical channel that is opened to transmit APDU and optionally, gets asynchronous response in CommandResponseCallback.
  10. The application receives the status i.e. either SUCCESS or FAILED based on execution of closeLogicalChannel API.
  11. Optionally, the application receives the response which contains error in case of failure.

On basic channel

On basic channel

On basic channel

  1. Application gets the ICardManager object from PhoneFactory.
  2. Application receives ICardManager object in order to perform operation like getCard.
  3. The application gets ICard object for a specific slotId from ICardManager.
  4. Application receives ICard object in order to perform card operation like transmitApduBasicChannel.
  5. The application transmits APDU data on basic channel and optionally, gets asynchronous response in TransmitApduResponseCallback.
  6. The application receives the status i.e. either SUCCESS or FAILED based on execution of transmitApduBasicChannel API.
  7. Optionally, the application receives the response which contains either result on success or error in case of failure.

SAP card manager call flow

Request card reader status, Request ATR, Transmit APDU call flow

{sap_card_operations.png,Request card reader status, Request ATR, Transmit APDU call flow,80,80,Request card reader status, Request ATR, Transmit APDU call flow}

  1. The application gets SapCardManager object corresponding to slotId using PhoneFactory.
  2. The application receives the SapCardManager object in order to perform SAP operations like request ATR, Card Reader Status and transmit APDU.
  3. The application opens SIM Access Profile(SAP) connection with SIM card using default SAP condition (i.e. SAP_CONDITION_BLOCK_VOICE_OR_DATA) and optionally, gets asynchronous response using CommandResponseCallback.
  4. The application receives the status i.e. either SUCCESS or FAILED based on execution of openConnection API in SapCardManager.
  5. Optionally, the response for openConnection is received by the application.
  6. The application sends request card reader status command and optionally, gets asynchronous response using ICardReaderCallback.
  7. The application receives the status i.e. either SUCCESS or FAILED based on execution of requestCardReaderStatus API in SapCardManager.
  8. Optionally, the response for card reader status is received by the application.
  9. Similarly, the application can send SAP Answer To Reset command and optionally, gets asynchronous response using IAtrResponseCallback.
  10. The application receives the status i.e. either SUCCESS or FAILED based on execution of requestAtr API in SapCardManager.
  11. Optionally, the response for SAP Answer To Reset is received by the application.
  12. Similarly, the application sends the APDU on SAP mode and optionally, gets asynchronous response using ISapTransmitApduResponseCallback.
  13. The application receives the status i.e. either SUCCESS or FAILED based on execution of transmitApdu API in SapCardManager.
  14. Optionally, the response for transmit APDU is received by the application.
  15. Now the application closes the SAP connection with SIM and optionally, gets asynchronous response using CommandResponseCallback.
  16. The application receives the status i.e. either SUCCESS or FAILED based on execution of closeConnection API in SapCardManager.
  17. Optionally, the response for SAP close connection is received by the application.

SIM Turn off, Turn on and Reset call flow

{sap_mgr_sim_call_flow.png,SIM Turn off, Turn on and Reset call flow,80,80,SIM Turn off, Turn on and Reset call flow}

  1. Application gets SapCardManager object corresponding to slotID using PhoneFactory.
  2. PhoneFactory returns the SapCardManager object to application in order to perform SAP operations like SIM power off, on or reset.
  3. The application opens SIM Access Profile(SAP) connection with SIM card using default SAP condition (i.e. SAP_CONDITION_BLOCK_VOICE_OR_DATA) and optionally, gets asynchronous response using CommandResponseCallback.
  4. Application receives the status i.e. either SUCCESS or FAILED based on execution of openConnection API in SapCardManager.
  5. Optionally, the response for openConnection is received by the application.
  6. The application sends SIM Power Off command to turn off the SIM and optionally, gets asynchronous response using CommandResponseCallback.
  7. The application receives the status i.e. either SUCCESS or FAILED based on execution of requestSimPowerOff API in SapCardManager.
  8. Optionally, the response for SIM Power Off is received by the application.
  9. Similarly, the application can send SIM Power On command to turn on the SIM and optionally, gets asynchronous response using CommandResponseCallback.
  10. The application receives the status i.e. either SUCCESS or FAILED based on execution of requestSimPowerOn API in SapCardManager.
  11. Optionally, the response for SIM Power On is received by the application.
  12. Similarly, the application sends SIM Reset command to perform SIM Reset and optionally, gets asynchronous response.
  13. The application receives the status i.e. either SUCCESS or FAILED based on execution of requestSimReset API in SapCardManager.
  14. Optionally, the response for SIM Reset is received by the application.
  15. Now the application closes the SAP connection with SIM and optionally, gets asynchronous response using CommandResponseCallback.
  16. The application receives the status i.e. either SUCCESS or FAILED based on execution of closeConnection API in SapCardManager.
  17. Optionally, the response for SAP close connection is received by the application.

Subscription Call flow

Subscription initialization

Subscription initialization call flow

subscription initialization call flow

  1. Application can use ISubscriptionManager::isSubsystemReady to determine if the SubscriptionManager is ready.
  2. The application receives the status i.e either true or false whether sub-system is ready or not.
  3. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  4. SubscriptionManager notifies the application when the subsystem is ready through the std::future object.
  5. The application waits until the asynchronous operation i.e onSubsystemReady completes.
  6. SubscriptionManager uses ICardManager::isSubsystemReady to determine if the CardManager is ready.
  7. The SubscriptionManager receives the status i.e either true or false whether sub-system is ready or not.
  8. If it is not ready, then the SubscriptionManager could use onSubsystemReady which returns std::future.
  9. CardManager notifies the SubscriptionManager when the subsystem is ready through the std::future object.
  10. The SubscriptionManager waits until the asynchronous operation i.e onSubsystemReady completes.
  11. CardManager updates the SubscriptionManager once the card manager sub-system is ready
  12. SubscriptionManager uses ISubscription::isReady to determine if the Subscription is ready.
  13. The SubscriptionManager receives the status i.e either true or false whether sub-system is ready or not.
  14. If it is not ready, then the SubscriptionManager could use onSubsystemReady which returns std::future.
  15. Subscription notifies the SubscriptionManager when the subsystem is ready through the std::future object.
  16. The SubscriptionManager waits until the asynchronous operation i.e onSubsystemReady completes.
  17. Subscription updates the SubscriptionManager when the subscription is ready.
  18. SubscriptionManager updates the application once subscription manager initialization completes.

Subscription call flow

Subscription call flow

subscription call flow

  1. The application gets the PhoneManager object using PhoneFactory.
  2. The application receives the PhoneManager object in order to get Subscription.
  3. The application gets the Subscription object for given slot identifier using SubscriptionManager.
  4. SubscriptionManager returns Subscription object to application. Subscription can be used to get subscription details like countryISO, operator details etc.
  5. The Subscription manager registers a listener with CardManager to listen to the card info change notifications like card state PRESENT, ABSENT, UNKNOWN, ERROR and RESTRICTED.
  6. The SubscriptionManager receives the status like SUCCESS or INVALIDPARAM based on registration of listener to CardManager.
  7. The SubscriptionManager receives callback card info change i.e subscription info changed or removed.
  8. The SubscriptionManager updates the application once the subscription info is updated.

Call flow for location services

Application will get the location manager object from location factory. The caller needs to register a listener. Application would then need to start the reports using one of 2 APIs depending on if the detailed or basic reports are needed. When reports are no longer required, the app needs to stop the report and de-register the listener.

Call flow to register/remove listener for generating basic reports

Call flow to register/remove listener for generating basic reports

Call flow to register/remove listener for generating basic reports

  1. Application requests location factory for location manager object.
  2. Location factory returns ILocationManager object using which application will register or remove a listener.
  3. Application can register a listener for getting notifications for location updates.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application starts the basic reports using startBasicReports API for getting location updates.
  6. Status of startBasicReports i.e. either SUCCESS or FAILED will be returned to the application.
  7. The response for startBasicReports is received by the application.
  8. Application will get location updates like latitude, longitude and altitude etc.
  9. Application stops receiving the report through stopReports API.
  10. Status of stopReports i.e. either SUCCESS or FAILED will be returned to the application.
  11. The response for stopReports is received by the application.
  12. Application can remove listener and when the number of listeners are zero then location service will get stopped automatically.
  13. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Call flow to register/remove listener for generating detailed reports

Call flow to register/remove listener for generating detailed reports

Call flow to register/remove listener for generating detailed reports

  1. Application requests location factory for location manager object.
  2. Location factory returns ILocationManager object using which application will register or remove a listener.
  3. Application can register a listener for getting notifications for location, satellite vehicle, jammer signal, nmea and measurements updates.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application starts the detailed reports using startDetailedReports API for getting location, satellite vehicle, jammer signal, nmea and measurements updates.
  6. Status of startDetailedReports i.e. either SUCCESS or FAILED will be returned to the application.
  7. The response for startDetailedReports is received by the application.
  8. Application will get location updates like latitude, longitude and altitude etc.
  9. Application will receive satellite vehicle information like SV status and constellation etc.
  10. Application will receive nmea information.
  11. Application will receive jammer information etc.
  12. Application will receive measurement information.
  13. Application stops receiving all the reports through stopReports API.
  14. Status of stopReports i.e. either SUCCESS or FAILED will be returned to the application.
  15. The response for stopReports is received by the application.
  16. Application can remove listener and when the number of listeners are zero then location service will get stopped automatically.
  17. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Call flow to register/remove listener for generating detailed engine reports

Call flow to register/remove listener for generating detailed engine reports

Call flow to register/remove listener for generating detailed engine reports

  1. Application requests location factory for location manager object.
  2. Location factory returns ILocationManager object using which application will register or remove a listener.
  3. Application can register a listener for getting notifications for location, satellite vehicle and jammer signal, nmea and measurements updates.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application starts the detailed engine reports using startDetailedEngineReports API for getting location, satellite vehicle, jammer signal, nmea and measurements updates.
  6. Status of startDetailedReports i.e. either SUCCESS or FAILED will be returned to the application.
  7. The response for startDetailedReports is received by the application.
  8. Application will get location updates like latitude, longitude and altitude etc from the requested engine type(SPE/PPE/Fused).
  9. Application will receive satellite vehicle information like SV status and constellation etc depending on the requested SPE/PPE/Fused engine type.
  10. Application will receive nmea information depending on the requested SPE/PPE/Fused engine type
  11. Application will receive jammer information etc depending on the requested SPE/PPE/Fused engine type.
  12. Application will receive measurement information etc depending on the requested SPE/PPE/Fused engine type.
  13. Application stops receiving all the reports through stopReports API.
  14. Status of stopReports i.e. either SUCCESS or FAILED will be returned to the application.
  15. The response for stopReports is received by the application.
  16. Application can remove listener and when the number of listeners are zero then location service will be stopped automatically.
  17. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Call flow to register/remove listener for system info updates

Call flow to register/remove listener for system info updates

Call flow to register/remove listener for system info updates

  1. Application requests location factory for location manager object.
  2. Location factory returns ILocationManager object using which application will register or remove a listener.
  3. Application can register a listener for system information updates with registerForSystemInfoUpdates.
  4. Status of registerForSystemInfoUpdates i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for registerForSystemInfoUpdates is received by the application.
  6. Application will get system information update.
  7. Application can remove listener with deRegisterForSystemInfoUpdates.
  8. Status of deRegisterForSystemInfoUpdates i.e. either SUCCESS or FAILED will be returned to the application.
  9. The response for deRegisterForSystemInfoUpdates is received by the application.

Call flow to request energy consumed information

Call flow to request energy consumed information

Call flow to request energy consumed information

  1. Application requests location factory for location manager object.
  2. Location factory returns ILocationManager object.
  3. Application can request for energy consumed information with requestEnergyConsumedInfo.
  4. Status of requestEnergyConsumedInfo i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for requestEnergyConsumedInfo is received by the application.

Call flow to enable/disable constraint time uncertainty

Call flow to enable/disable constraint time uncertainty

Call flow to enable/disable constraint time uncertainty

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application enables/disables constraint tunc using configureCTunc API.
  4. Status of configureCTunc i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureCTunc is received by the application.

Call flow to enable/disable PACE

Call flow to enable/disable PACE

Call flow to enable/disable PACE

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application enables/disables PACE using configurePACE API.
  4. Status of configurePACE i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configurePACE is received by the application.

Call flow to delete all aiding data

Call flow to delete all aiding data

Call flow to delete all aiding data

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application deletes all aiding data using deleteAllAidingData API.
  4. Status of deleteAllAidingData i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for deleteAllAidingData is received by the application.

Call flow to configure lever arm parameters

Call flow to configure lever arm parameters

Call flow to configure lever arm parameters

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures lever arm parameters using configureLeverArm API.
  4. Status of configureLeverArm i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureLeverArm is received by the application.

Call flow to configure blacklisted constellations

Call flow to configure blacklisted constellations

Call flow to configure blacklisted constellations

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures blacklisted constellations using configureConstellations API.
  4. Status of configureConstellations i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureConstellations is received by the application.

Call flow to configure robust location

Call flow to configure robust location

Call flow to configure robust location

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures robust location using configureRobustLocation API.
  4. Status of configureRobustLocation i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureRobustLocation is received by the application.

Call flow to configure min gps week

Call flow to configure min gps week

Call flow to configure min gps week

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures min gps week using configureMinGpsWeek API.
  4. Status of configureMinGpsWeek i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureMinGpsWeek is received by the application.

Call flow to request min gps week

Call flow to request min gps week

Call flow to request min gps week

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application requests min gps week using requestMinGpsWeek API.
  4. Status of requestMinGpsWeek i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for requestMinGpsWeek is received by the application.

Call flow to delete specified data

Call flow to delete specified data

Call flow to delete specified data

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application requests delete specified data using deleteAidingData API.
  4. Status of deleteAidingData i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for deleteAidingData is received by the application.

Call flow to configure min sv elevation

Call flow to configure min sv elevation

Call flow to configure min sv elevation

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures min SV elevation using configureMinSVElevation API.
  4. Status of configureMinSVElevation i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureMinSVElevation is received by the application.

Call flow to request min sv elevation

Call flow to request min sv elevation

Call flow to request min sv elevation

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application requests min SV elevation using requestMinSVElevation API.
  4. Status of requestMinSVElevation i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for requestMinSVElevation is received by the application.

Call flow to request robust location

Call flow to request robust location

Call flow to request robust location

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application requests robust location using requestRobustLocation API.
  4. Status of requestRobustLocation i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for requestRobustLocation is received by the application.

Call flow to configure dead reckoning engine

Call flow to configure dead reckoning engine

Call flow to configure dead reckoning engine

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures dead reckoning engine using configureDR API.
  4. Status of configureDR i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureDR is received by the application.

Call flow to configure secondary band

Call flow to configure secondary band

Call flow to configure secondary band

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application configures secondary band using configureSecondaryBand API.
  4. Status of configureSecondaryBand i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for configureSecondaryBand is received by the application.

Call flow to request secondary band

Call flow to request secondary band

Call flow to request secondary band

  1. Application requests location factory for location configurator object.
  2. Location factory returns ILocationConfigurator object.
  3. Application requests secondary band using requestSecondaryBandConfig API.
  4. Status of requestSecondaryBandConfig i.e. either SUCCESS or FAILED will be returned to the application.
  5. The response for requestSecondaryBandConfig is received by the application.

Data Services

Start/Stop for data connection manager call flow

Start/Stop for data connection manager call flow

Start/Stop for data connection manager call flow

  1. Application requests data factory for data connection manager object.
  2. Data factory returns IDataConnectionManager object to application.
  3. Application registers the listener to get notifications for data call change.
  4. The application receives the status i.e. either SUCCESS or FAILED based on the registration of the listener.
  5. Application requests for start data call and optionally gets asynchronous response using startDataCallback.
  6. Application receives the status i.e. either SUCCESS or FAILED based on the execution of startDataCall.
  7. Optionally, the application gets asynchronous response for startDataCall using startDataCallback.
  8. Application requests for stop data call and optionally gets asynchronous response using stopDataCallback.
  9. Application receives the status i.e. either SUCCESS or FAILED based on the execution of stopDataCall.
  10. Optionally, the application gets asynchronous response for stopDataCall using stopDataCallback.
  11. Application receives a notification when there is a change in data call.
  12. Application removes the listener.
  13. Application receives the status i.e. SUCCESS or FAILED for the removal of listener.

Request/Create/Delete/Modify for data profile manager call flow

Request/Create/Delete/Modify for data profile call flow

Request/Create/Delete/Modify for data profile call flow

  1. Application requests data factory for data profile manager object.
  2. Data factory returns IDataProfileManager object to application.
  3. Application requests for profile list and optionally gets asynchronous response using dataProfilesCallback.
  4. Application receives the status i.e. either SUCCESS or FAILED based on the execution of requestProfileList.
  5. Optionally, the application gets asynchronous response for requestProfileList using dataProfilesCallback.
  6. Application requests for create profile and optionally gets asynchronous response using createProfilesCallback.
  7. Application receives the status i.e. either SUCCESS or FAILED based on the execution of createProfile.
  8. Optionally, the application gets asynchronous response for createProfile using createProfilesCallback.
  9. Application requests for delete profile and optionally gets asynchronous response using deleteProfilesCallback.
  10. Application receives the status i.e. either SUCCESS or FAILED based on the execution of deleteProfile.
  11. Optionally, the application gets asynchronous response for deleteProfile using deleteProfilesCallback.
  12. Application requests for modify profile and optionally gets asynchronous response using modifyProfilesCallback.
  13. Application receives the status i.e. either SUCCESS or FAILED based on the execution of modifyProfile.
  14. Optionally, the application gets asynchronous response for modifyProfile using modifyProfilesCallback.
  15. Application requests for query profile and optionally gets asynchronous response using queryProfilesCallback.
  16. Application receives the status i.e. either SUCCESS or FAILED based on the execution of queryProfile.
  17. Optionally, the application gets asynchronous response for queryProfile using queryProfilesCallback.
  18. Application requests for request profile and optionally gets asynchronous response using requestProfileByIdCallback.
  19. Application receives the status i.e. either SUCCESS or FAILED based on the execution of requestProfile.
  20. Optionally, the application gets asynchronous response for requestProfile using requestProfileByIdCallback.

Data Filter Manager Call Flow

Data Filter manager provides APIs to get/set data filter mode, add/remove data restrict filters. Its API can used per data call or globally to apply the same changes to all the underlying currently up data call. It also has listener interface for notifications for data filter status update. Application will get the Data Filter manager object from data factory. The application can register a listener for data filter mode change updates.

Call flow to Set/Get data filter mode

Get/Set data filter mode call flow

Get/Set data filter mode call flow

  1. Application requests data factory for data connection manager object.
  2. Data factory returns IDataConnectionManager object to application.
  3. Application requests data factory for data filter manager object.
  4. Data factory returns IDataFilterManager object to application.
  5. Application requests for start data call and optionally gets asynchronous response using startDataCallback.
  6. Application receives the status i.e. either SUCCESS or FAILED based on the execution of startDataCall.
  7. Optionally, the application gets asynchronous response for startDataCall using startDataCallback.
  8. Application requests for set data filter mode to enable and optionally gets asynchronous response using ResponseCallback.
  9. Application receives the status i.e. either SUCCESS or FAILED based on the execution of setDataRestrictMode.
  10. Optionally, the application gets asynchronous response for setDataRestrictMode using ResponseCallback.
  11. Application requests for get data filter mode and optionally gets asynchronous response using DataRestrictModeCb.
  12. Application receives the status i.e. either SUCCESS or FAILED based on the execution of requestDataRestrictMode.
  13. Optionally, the application gets asynchronous response for requestDataRestrictMode using DataRestrictModeCb.

Call flow to Add data restrict filter

Add data restrict filter call flow

Add data restrict filter call flow

  1. Application requests data factory for data connection manager object.
  2. Data factory returns IDataConnectionManager object to application.
  3. Application requests data factory for data filter manager object.
  4. Data factory returns IDataFilterManager object to application.
  5. Application requests for start data call and optionally gets asynchronous response using startDataCallback.
  6. Application receives the status i.e. either SUCCESS or FAILED based on the execution of startDataCall.
  7. Optionally, the application gets asynchronous response for startDataCall using startDataCallback.
  8. Application requests for add data filter and optionally gets asynchronous response using ResponseCallback.
  9. Application receives the status i.e. either SUCCESS or FAILED based on the execution of addDataRestrictFilter.
  10. Optionally, the application gets asynchronous response for addDataRestrictFilter using ResponseCallback.

Call flow to Remove data restrict filter

Remove data restrict filter call flow

Remove data restrict filter call flow

  1. Application requests data factory for data connection manager object.
  2. Data factory returns IDataConnectionManager object to application.
  3. Application requests data factory for data filter manager object.
  4. Data factory returns IDataFilterManager object to application.
  5. Application requests for start data call and optionally gets asynchronous response using startDataCallback.
  6. Application receives the status i.e. either SUCCESS or FAILED based on the execution of startDataCall.
  7. Optionally, the application gets asynchronous response for startDataCall using startDataCallback.
  8. Application requests for add data filter and optionally gets asynchronous response using ResponseCallback.
  9. Application receives the status i.e. either SUCCESS or FAILED based on the execution of removeAllDataRestrictFilters.
  10. Optionally, the application gets asynchronous response for removeAllDataRestrictFilters using ResponseCallback.

Data Networking Call Flow

Application will get the following manager objects from data factory to configure networking. IVlanManager is used to access all VLAN APIs. INatManager is used to access all Static NAT APIs. IFirewallManager is used to access all Firewall APIs.

Create VLAN and Bind it to PDN in data vlan manager call flow

Create VLAN and Bind it to PDN in data vlan manager call flow

Create VLAN and bind it to PDN in data vlan manager call flow

  1. Application requests data factory for data IVlanManager object. 1.1. If IVlanManager object does not exist, data factory will create new object.
  2. Data factory returns IVlanManager object to application.
  3. Application can use IVlanManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for IVlanManager readiness. 4.3. Application wait for indefinitely for IVlanManager readiness.
  5. On Readiness, application calls IVlanManager::createVlan with assigned id, interface, and acceleration type.
  6. Application receives synchronous Status which indicates if the IVlanManager::createVlan request was sent successfully.
  7. Application is notified of the Status of the IVlanManager::createVlan request (either SUCCESS or FAILED) via the application-supplied callback.
  8. Application calls IVlanManager::bindWithProfile with Vlan id and profile id.
  9. Application receives synchronous Status which indicates if the IVlanManager::bindWithProfile request was sent successfully.
  1. Application is notified of the Status of the IVlanManager::bindWithProfile request (either SUCCESS or FAILED) via the application-supplied callback.

LAN-LAN VLAN Configuration from EAP usecase call flow

LAN to LAN VLAN Configuration Usecase from EAP call flow

LAN to LAN VLAN Configuration Usecase from EAP call flow

  1. Application requests data factory for data IVlanManager for local operation object.
  2. Application use IVlanManager::isSubsystemReady to determine if the system is ready. 2.1. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  3. On readiness, application calls IVlanManager::createVlan with USB interface, Vlan id 1 and no acceleration and wait for callback to indicate createVlan result
  4. Application requests data factory for data IVlanManager for remote operation object.
  5. Application use IVlanManager::isSubsystemReady to determine if the system is ready. 5.1. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  6. On readiness, application calls IVlanManager::createVlan with USB interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result
  7. Application calls IVlanManager::createVlan with ETH interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result

LAN-LAN VLAN Configuration from A7 usecase call flow

LAN to LAN VLAN Configuration Usecase from A7 call flow

LAN to LAN VLAN Configuration Usecase from A7 call flow

  1. Application requests data factory for data IVlanManager for local operation object.
  2. Application use IVlanManager::isSubsystemReady to determine if the system is ready. 2.1. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  3. On readiness, application calls IVlanManager::createVlan with USB interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result
  1. Application calls IVlanManager::createVlan with ETH interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result

LAN-WAN VLAN Configuration from EAP usecase call flow

LAN to WAN VLAN Configuration Usecase from EAP call flow

LAN to WAN VLAN Configuration Usecase from EAP call flow

  1. Application requests data factory for data IVlanManager for local operation object.
  2. Application use IVlanManager::isSubsystemReady to determine if the system is ready. 2.1. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  3. On readiness, application calls IVlanManager::createVlan with USB interface, Vlan id 1 and no acceleration and wait for callback to indicate createVlan result
  4. Application requests data factory for data IVlanManager for remote operation object.
  5. Application use IVlanManager::isSubsystemReady to determine if the system is ready. 5.1. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  6. On readiness, application calls IVlanManager::createVlan with USB interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result
  7. Application calls IVlanManager::createVlan with ETH interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result
  8. Application calls IVlanManager::bindWithProfile with profile id to bind with and wait for callback to indicate bindWithProfile result If DMZ is needed:
    1. Application requests data factory for data IFirewallManager object
    2. Application can use IFirewallManager::isSubsystemReady to determine if the system is ready. 10.1. If FirewallManager is not ready, then the application could use onSubsystemReady which returns std::future and wait for future.
    3. Application can use IFirewallManager::enableDmz with profile id and local address to be enable Dmz on
  9. Application calls getDataConnectionManager to get object of IDataConnectionManager
  10. Application can use IDataConnectionManager::isSubsystemReady to determine if the system is ready. 13.1. If DataConnectionManager is not ready, then the application could use onSubsystemReady which returns std::future and wait for future.
  11. Application can use IDataConnectionManager::startDataCall with profile id to start data call on, Ip Family type, operation Type and APN Name

LAN-WAN VLAN Configuration from A7 usecase call flow

LAN to WAN VLAN Configuration Usecase from A7 call flow

LAN to WAN VLAN Configuration Usecase from A7 call flow

  1. Application requests data factory for data IVlanManager for remote operation object.
  2. Application use IVlanManager::isSubsystemReady to determine if the system is ready. 2.1. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  3. On readiness, application calls IVlanManager::createVlan with USB interface, Vlan id 1 and acceleration and wait for callback to indicate createVlan result
  4. Application calls IVlanManager::createVlan with ETH interface, Vlan id 1 and acceleration and wait or callback to indicate createVlan result
  5. Application calls IVlanManager::bindWithProfile with profile id to bind with and wait for callback to indicate bindWithProfile result If DMZ is needed:
    1. Application requests data factory for data IFirewallManager object
    2. Application can use IFirewallManager::isSubsystemReady to determine if the system is ready. 7.1. If FirewallManager is not ready, then the application could use onSubsystemReady which returns std::future and wait for future.
    3. Application can use IFirewallManager::enableDmz with profile id and local address to be enable Dmz on
  6. Application calls getDataConnectionManager to get object of IDataConnectionManager
  7. Application can use IDataConnectionManager::isSubsystemReady to determine if the system is ready. 10.1. If DataConnectionManager is not ready, then the application could use onSubsystemReady which returns std::future and wait for future.
  8. Application can use IDataConnectionManager::startDataCall with profile id to start data call on, Ip Family type, operation Type and APN Name

Create Static NAT entry in data Static NAT manager call flow

Create Static NAT entry in data Static NAT manager call flow

Create Static NAT entry in data Static NAT manager call flow

  1. Application requests data factory for data INatManager object. 1.1. If INatManager object does not exist, data factory will create new object.
  2. Data factory returns NatManager object to application.
  3. Application can use INatManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for INatManager readiness. 4.3. Application wait for indefinitely for INatManager readiness.
  5. On Readiness, application calls INatManager::addStaticNatEntry with profileId, private IP address port, private port, global port and IP Protocol.
  6. Application receives synchronous Status which indicates if the INatManager::addStaticNatEntry request was sent successfully.
  7. Application is notified of the Status of the INatManager::addStaticNatEntry request (either SUCCESS or FAILED) via the application-supplied callback.

Firewall Enablement in data Firewall manager call flow

Firewall Enablement in data Firewall manager call flow

Firewall Enablement in data Firewall manager call flow

  1. Application requests data factory for data IFirewallManager object. 1.1. If IFirewallManager object does not exist, data factory will create new object.
  2. Data factory returns FirewallManager object to application.
  3. Application can use IFirewallManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for IFirewallManager readiness. 4.3. Application wait for indefinitely for IFirewallManager readiness.
  5. On Readiness, application calls IFirewallManager::setFirewall with enable/disable and allow/drop packets.
  6. Application receives synchronous Status which indicates if the IFirewallManager::setFirewall request was sent successfully.
  7. Application is notified of the Status of the IFirewallManager::setFirewall request (either SUCCESS or FAILED) via the application-supplied callback.

Add Firewall Entry in data Firewall manager call flow

Adding Firewall Entry in data Firewall manager call flow

Adding Firewall Entry in data Firewall manager call flow

  1. Application requests data factory for data IFirewallManager object. 1.1. If IFirewallManager object does not exist, data factory will create new object.
  2. Data factory returns FirewallManager object to application.
  3. Application can use IFirewallManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for IFirewallManager readiness. 4.3. Application wait for indefinitely for IFirewallManager readiness.
  5. On Readiness, application calls IFirewallManager::getNewFirewallEntry to get FirewallEntry object.
  6. Application receives Firewall Entry object.
  7. Using Firewall Entry object, application calls IFirewallEntry::getIProtocolFilter to get protocol filter object
  8. Application receives IpFilter object.
  9. Application populates FirewallEntry and IpFilter objects.
  10. Application calls IFirewallManager::addFirewallEntry with profileId and FirewallEntry to add firewall entry
  11. Application receives synchronous Status which indicates if addFirewallEntry was sent successfully
  12. Application is notified of the Status of the IFirewallManager::addFirewallEntry request (either SUCCESS or FAILED) via the application-supplied callback.

Set Firewall DMZ in data Firewall manager call flow

Set Firewall DMZ in data Firewall manager call flow

Set Firewall DMZ in data Firewall manager call flow

  1. Application requests data factory for data IFirewallManager object. 1.1. If IFirewallManager object does not exist, data factory will create new object.
  2. Data factory returns FirewallManager object to application.
  3. Application can use IFirewallManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for IFirewallManager readiness. 4.3. Application wait for indefinitely for IFirewallManager readiness.
  5. On Readiness, application calls IFirewallManager::enableDmz with profileId and IP Address.
  6. Application receives synchronous Status which indicates if the IFirewallManager::enableDmz request was sent successfully.
  7. Application is notified of the Status of the IFirewallManager::enableDmz request (either SUCCESS or FAILED) via the application-supplied callback.

Socks Enablement in data Socks manager call flow

Socks Enablement in data Socks manager call flow

Socks Enablement in data Socks manager call flow

  1. Application requests data factory for data ISocksManager object. 1.1. If ISocksManager object does not exist, data factory will create new object.
  2. Data factory returns SocksManager object to application.
  3. Application can use ISocksManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for ISocksManager readiness. 4.3. Application wait for indefinitely for ISocksManager readiness.
  5. On Readiness, application calls ISocksManager::enableSocks with enable/disable.
  6. Application receives synchronous Status which indicates if the ISocksManager::enableSocks request was sent successfully.
  7. Application is notified of the Status of the ISocksManager::enableSocks request (either SUCCESS or FAILED) via the application-supplied callback.

L2TP Enablement and Configuration in data L2TP manager call flow

L2TP Enablement and Configuration in data L2TP manager call flow

L2TP Enablement and Configuration in data L2TP manager call flow

  1. Application requests data factory for data IL2tpManager object. 1.1. If IL2tpManager object does not exist, data factory will create new object.
  2. Data factory returns IL2tpManager object to application.
  3. Application can use IL2tpManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not. 4.1. If it is not ready, then the application could use onSubsystemReady which returns std::future. 4.2. Application gets future for IL2tpManager readiness. 4.3. Application wait for indefinitely for IL2tpManager readiness.
  5. On Readiness, application calls IL2tpManager::setConfig with enable/disable, enable/disable Mss, enable/disable MTU size and MTU size
  6. Application receives synchronous Status which indicates if the IL2tpManager::setConfig request was sent successfully.
  7. Application is notified of the Status of the IL2tpManager::setConfig request (either SUCCESS or FAILED) via the application-supplied callback.
  8. Application calls IL2tpManager::addTunnel with all required configurations to setup tunnel and session
  9. Application receives synchronous Status which indicates if the IL2tpManager::addTunnel request was sent successfully.
  10. Application is notified of the Status of the IL2tpManager::addTunnel request (either SUCCESS or FAILED) via the application-supplied callback.

Call flow to add and enable software bridge

Call flow to add and enable a software bridge

Call flow to add and enable a software bridge

  1. Application requests data factory for Bridge manager object.
  2. Data factory returns IBridgeManager object to application.
  3. On readiness, application requests to add software bridge configuration for an interface, providing an optional asynchronous response callback using addBridge API.
  4. Application receives the synchronous status i.e. either SUCCESS or FAILED which indicates if the request was sent successfully.
  5. Optionally, the application gets asynchronous response for addBridge via the application-supplied callback.
  6. If the software bridge management is not enabled already, application requests to enable it, providing an optional asynchronous response callback using enableBridge API. Please note that this step affects all the software bridges configured in the system.
  7. Application receives the status i.e. either SUCCESS or FAILED which indicates if the request was sent successfully.
  8. Optionally, the application gets asynchronous response for enableBridge via the application-supplied callback.

Call flow to remove and disable software bridge

Call flow to remove and disable a software bridge

Call flow to remove and disable a software bridge

  1. Application requests data factory for Bridge manager object.
  2. Data factory returns IBridgeManager object to application.
  3. On readiness, application requests to get the list of software bridge configurations, providing an asynchronous response callback using requestBridgeInfo API.
  4. Application receives the synchronous status i.e. either SUCCESS or FAILED which indicates if the request was sent successfully.
  5. The application gets asynchronous response for requestBridgeInfo via the application-supplied callback.
  6. Application requests to remove software bridge configuration for an interface, providing an optional asynchronous response callback using removeBridge API.
  7. Application receives the synchronous status i.e. either SUCCESS or FAILED which indicates if the request was sent successfully.
  8. Optionally, the application gets asynchronous response for removeBridge via the application-supplied callback.
  9. If the software bridge management needs to be disabled, application requests to disable it, providing an optional asynchronous response callback using enableBridge API. Please note that this step affects all the software bridges configured in the system.
  10. Application receives the status i.e. either SUCCESS or FAILED which indicates if the request was sent successfully.
  11. Optionally, the application gets asynchronous response for enableBridge via the application-supplied callback.

C-V2X

Start/Stop C-V2X Mode

Start/Stop C-V2X mode

Start/Stop C-V2X mode

Note: In normal operation, applications do not need to start or stop C-V2X mode. The system is configured by default to start C-V2X mode at boot. We include the call flow below for the sake of completeness.

  1. Application requests C-V2X factory for a C-V2X Radio Manager.
  2. C-V2X factory return ICv2xRadioManager object to application.
  3. Application requests to put modem into C-V2X mode using startCv2x method.
  4. Application receives synchronous status which indicates if the start request was sent successfully.
  5. Application is notified of the status of the start request (either SUCCESS or FAILED) via the application-supplied callback.
  6. Application requests to disable C-V2X mode using stopCv2x method.
  7. Application receives synchronous status which indicates if the stop request was sent successfully.
  8. Application is asynchronously notified of the status of the stop request (either SUCCESS or FAILED) via the application-supplied callback.

C-V2X Radio Manager API

C-V2X Radio Manager call flow

C-V2X Radio Manager call flow

API for C-V2X Radio Manager

  1. Application requests C-V2X factory for a C-V2X Radio Manager.
  2. C-V2X factory return ICv2xRadioManager object to application.
  3. Application requests current C-V2X status using requestCv2xStatus method.
  4. Application receives synchronous status (either SUCCESS or FAILED) which indicates if the request was sent successfully.
  5. Application is asynchronously notified of the status of the request (either SUCCESS or FAILED) via the application-supplied callback. If SUCCESS, the requested C-V2X status is returned in the callback.
  6. Application requests to update the C-V2X configuration by calling updateConfiguration and supplying it with a path to the new config XML file.
  7. Application receives synchronous status (either SUCCESS or FAILED) which indicates if the request was sent successfully.
  8. Application is asynchronously notiifed of the status of the request (either SUCCESS or FAILED) via the application-supplied callback.

C-V2X Radio Initialization

C-V2X Radio Initialization call flow

C-V2X Radio Initialization call flow

This call flow diagram describes the sequence of steps for initialing the ICv2xRadio object. Applications must perform this sequence before calling any other methods on the object. Note: for simplicity's sake, we omit this sequence in the remaining C-V2X Radio call flow diagrams but it's inclusion is implied.

  1. Application requests C-V2X factory for a C-V2X Radio Manager.
  2. C-V2X factory return ICv2xRadioManager object to application.
  3. Application requests C-V2X Radio from ICv2xRadioManager.
  4. C-V2X Radio Manager returns ICv2xRadio object.
  5. Application queries C-V2X Radio's readiness state isReady() method.
  6. C-V2X Radio returns a bool indicating whether it is ready to be used.
  7. If the C-V2X Radio is not ready, the application calls onReady() method.
  8. The C-V2X Radio returns a future object.
  9. Appliction calls future's get() method and blocks until the C-V2X Radio has completed its initialization steps. The return value of get() indicates the status of the initialization (eitehr SUCCESS or FAILED).

C-V2X Radio RX subscription

C-V2X Radio RX subscription call flow

C-V2X Radio RX subscription call flow

  1. Application requests C-V2X factory for a C-V2X Radio Manager.
  2. C-V2X factory return ICv2xRadioManager object to application.
  3. Application requests C-V2X Radio from ICv2xRadioManager.
  4. C-V2X Radio Manager returns ICv2xRadio object.
  5. Application requests a new RX subscription from the C-V2X Radio using createRxSubscription method.
  6. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  7. C-V2X Radoi sends asynchronous notification via the callback function on the status of the request. If SUCCESS, the RX subscription is returned in the callback.
  8. Application requests to close the RX subscription.
  9. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  10. C-V2X Radio sends asynchronous notification via the callback (if a callback was specified) indicating the status of the request.

C-V2X Radio TX event-driven flow

C-V2X Radio TX event-driven flow call flow

C-V2X Radio TX event-driven flow call flow

  1. Application requests C-V2X factory for a C-V2X Radio Manager.
  2. C-V2X factory return ICv2xRadioManager object to application.
  3. Application requests C-V2X Radio from ICv2xRadioManager.
  4. C-V2X Radio Manager returns ICv2xRadio object.
  5. Application requests a new TX event-driven flow from the C-V2X Radio using createTxEventFlow method.
  6. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  7. C-V2X Radio sends asynchronous notification via the callback function on the status of the request. If SUCCESS, the TX event-driven flow is returned in the callback.
  8. Application requests to close the TX event-driven flow.
  9. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  10. C-V2X Radio sends asynchronous notification via the callback (if a callback was specified) indicating the status of the request.

C-V2X Radio TX SPS flow

C-V2X Radio TX SPS flow call flow

C-V2X Radio TX SPS flow call flow

  1. Application requests C-V2X factory for a C-V2X Radio Manager.
  2. C-V2X factory return ICv2xRadioManager object to application.
  3. Application requests C-V2X Radio from ICv2xRadioManager.
  4. C-V2X Radio Manager returns ICv2xRadio object.
  5. Application requests a new TX SPS flow from the C-V2X Radio using createTxSPSFlow method. The application can also specify an optional event flow.
  6. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  7. C-V2X Radio sends asynchronous notification via the callback function. The callback will return the SPS flow and its status as well as the optional event-driven flow and its status.
  8. Application requests to change the SPS parameters using the changeSpsFlowInfo method.
  9. Application received synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  10. C-V2X Radio sends asynchronous notification via the callback (if callback was specified) indicating the status of the request.
  11. Application requests to close the SPS flow.
  12. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  13. C-V2X Radio sends asynchronous notification via the callback (if a callback was specified) indicating the status of the request.
  14. Application requests to close optional event-driven flow (if one was created).
  15. Application receives synchronous status (either SUCCESS or FAILED) indicating whether the request was sent successfully.
  16. C-V2X Radio sends asynchronous notification via the callback (if a callback was specified) indicating the status of the request.

Audio

Audio Manager API call flow

Audio Manager API call flow

Audio Manager API call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. Application can use IAudioManager::isSubsystemReady to determine if the system is ready.
  4. The application receives the Status i.e. either true or false to indicate whether sub-system is ready or not.
  5. If it is not ready, then the application could use onSubsystemReady which returns std::future.
  6. AudioManager notifies the application when the subsystem is ready through the std::future object.
  7. The application waits until the asynchronous operation i.e onSubsystemReady completes.
  8. On Readiness, Application requests supported device types using getDevices method.
  9. Application receives synchronous Status which indicates if the getDevices request was sent successfully.
  10. Application is notified of the Status of the getDevices request (either SUCCESS or FAILED) via the application-supplied callback, with array of supported device types.
  11. Application requests supported stream types using getStreamTypes method.
  12. Application receives synchronous Status which indicates if the getStreamTypes request was sent successfully.
  13. Application is notified of the Status of the getStreamTypes request (either SUCCESS or FAILED) via the application-supplied callback, with array of supported stream types.
  14. Application requests create audio stream using createStream method.
  15. Application receives synchronous Status which indicates if the createStream request was sent successfully.
  16. Application is notified of the Status of the createStream request (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface.
  17. Application requests delete audio stream using deleteStream method.
  18. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  19. Application is notified of the Status of the deleteStream request (either SUCCESS or FAILED) via the application-supplied callback.

Audio Voice Call Start/Stop call flow

Audio Voice Call Start/Stop call flow

Audio Voice Call Start/Stop call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests create audio voice stream using createStream method with streamType as VOICE_CALL.
  4. Application receives synchronous Status which indicates if the createStream request was sent successfully.
  5. Application is notified of the Status of the createStream request (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioVoiceStream.
  6. Application requests start audio stream using startAudio method on IAudioVoiceStream.
  7. Application receives synchronous Status which indicates if the startAudio request was sent successfully.
  8. Application is notified of the Status of the startAudio request (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application requests stop audio stream using stopAudio method on IAudioVoiceStream.
  10. Application receives synchronous Status which indicates if the stopAudio request was sent successfully.
  11. Application is notified of the Status of the stopAudio request (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application requests delete audio stream using deleteStream method.
  13. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  14. Application is notified of the Status of the deleteStream request (either SUCCESS or FAILED) via the application-supplied callback.

Audio Voice Call Device Switch call flow

Audio Voice Call Device Switch call flow

Audio Voice Call Device Switch call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests create audio voice stream using createStream method with streamType as VOICE_CALL.
  4. Application receives synchronous Status which indicates if the createStream request was sent successfully.
  5. Application is notified of the Status of the createStream request (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioVoiceStream.
  6. Application requests start audio stream using startAudio method on IAudioVoiceStream.
  7. Application receives synchronous Status which indicates if the startAudio request was sent successfully.
  8. Application is notified of the Status of the startAudio request (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application requests new device routing of stream using setDevice method on IAudioVoiceStream.
  10. Application receives synchronous Status which indicates if the setDevice request was sent successfully.
  11. Application is notified of the Status of the setDevice request (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application query device stream routed to using getDevice method on IAudioVoiceStream.
  13. Application receives synchronous Status which indicates if the getDevice request was sent successfully.
  14. Application is notified of the Status of the getDevice request (either SUCCESS or FAILED) via the application-supplied callback, along with device types.
  15. Application requests stop audio stream using stopAudio method on IAudioVoiceStream.
  16. Application receives synchronous Status which indicates if the stopAudio request was sent successfully.
  17. Application is notified of the Status of the stopAudio request (either SUCCESS or FAILED) via the application-supplied callback.
  18. Application requests delete audio stream using deleteStream method.
  19. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  20. Application is notified of the Status of the deleteStream request (either SUCCESS or FAILED) via the application-supplied callback.

Audio Voice Call Volume/Mute control call flow

Audio Voice Call Volume/Mute control call flow

Audio Voice Call Volume/Mute control call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests create audio voice stream using createStream method with streamType as VOICE_CALL.
  4. Application receives synchronous Status which indicates if the createStream request was sent successfully.
  5. Application is notified of the Status of the createStream request (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioVoiceStream.
  6. Application requests start audio stream using startAudio method on IAudioVoiceStream.
  7. Application receives synchronous Status which indicates if the startAudio request was sent successfully.
  8. Application is notified of the Status of the startAudio request (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application requests new volume on stream using setVolume method on IAudioVoiceStream for specified direction.
  10. Application receives synchronous Status which indicates if the setVolume request was sent successfully.
  11. Application is notified of the Status of the setVolume request (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application query volume on stream using getVolume method on IAudioVoiceStream for specified direction.
  13. Application receives synchronous Status which indicates if the getVolume request was sent successfully.
  14. Application is notified of the Status of the getVolume request (either SUCCESS or FAILED) via the application-supplied callback for specified direction with volume details.
  15. Application requests new mute on stream using setMute method on IAudioVoiceStream for specified direction.
  16. Application receives synchronous Status which indicates if the setMute request was sent successfully.
  17. Application is notified of the Status of the setMute request (either SUCCESS or FAILED) via the application-supplied callback.
  18. Application query mute details on stream using getMute method on IAudioVoiceStream for specified direction.
  19. Application receives synchronous Status which indicates if the getMute request was sent successfully.
  20. Application is notified of the Status of the getMute request (either SUCCESS or FAILED) via the application-supplied callback for specified direction with mute details.
  21. Application requests stop audio stream using stopAudio method on IAudioVoiceStream.
  22. Application receives synchronous Status which indicates if the stopAudio request was sent successfully.
  23. Application is notified of the Status of the stopAudio request (either SUCCESS or FAILED) via the application-supplied callback.
  24. Application requests delete audio stream using deleteStream method.
  25. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  26. Application is notified of the Status of the deleteStream request (either SUCCESS or FAILED) via the application-supplied callback.

Call flow to play DTMF tone

Call flow to play DTMF tone

Call flow to play DTMF tone

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a voice stream with streamType as VOICE_CALL.
  4. Application receives synchronous status which indicates if the createStream request was sent successfully.
  5. Application is notified of the createStream request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioVoiceStream.
  6. Application requests to start voice session using startAudio method on IAudioVoiceStream.
  7. Application receives synchronous status which indicates if the startAudio request was sent successfully.
  8. Application is notified of the startAudio request status (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application requests to play a DTMF tone associated with the voice session
  10. Application receives synchronous status which indicates if the playDtmfTone request was sent successfully.
  11. Application is notified of the playDtmfTone request status (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application can optionally stop the DTMF tone being played, before its duration expires.
  13. Application receives synchronous status which indicates if the stopDtmfTone request was sent successfully.
  14. Application is notified of the stopDtmfTone request status (either SUCCESS or FAILED) via the application-supplied callback.
  15. Application requests to stop the voice session using stopAudio method on IAudioVoiceStream.
  16. Application receives synchronous Status which indicates if the stopAudio request was sent successfully.
  17. Application is notified of the stopAudio request status(either SUCCESS or FAILED) via the application-supplied callback.
  18. Application requests delete audio stream using deleteStream method.
  19. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  20. Application is notified of the deleteStream request status(either SUCCESS or FAILED) via the application-supplied callback.

Call flow to detect DTMF tones

Call flow to detect DTMF tone

Call flow to detect DTMF tone

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a voice stream with streamType as VOICE_CALL.
  4. Application receives synchronous status which indicates if the createStream request was sent successfully.
  5. Application is notified of the createStream request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioVoiceStream.
  6. Application requests to start voice session using startAudio method on IAudioVoiceStream.
  7. Application receives synchronous status which indicates if the startAudio request was sent successfully.
  8. Application is notified of the startAudio request status (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application registers a listener for getting notifications when DTMF tones are detected
  10. Application receives synchronous status which indicates if the registerListener request was sent successfully.
  11. Application is notified of the registerListener request status (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application receives onDtmfToneDetection notification when a DTMF tone is detected in the active voice call session
  13. Application deregisters a listener to stop getting notifications
  14. Application receives synchronous status which indicates if the deRegisterListener request was sent successfully.
  15. Application requests to stop the voice session using stopAudio method on IAudioVoiceStream.
  16. Application receives synchronous Status which indicates if the stopAudio request was sent successfully.
  17. Application is notified of the stopAudio request status(either SUCCESS or FAILED) via the application-supplied callback.
  18. Application requests delete audio stream using deleteStream method.
  19. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  20. Application is notified of the deleteStream request status(either SUCCESS or FAILED) via the application-supplied callback.

Audio Playback call flow

Audio Playback call flow

Audio Playback call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests create audio playback stream using createStream method with streamType as PLAY.
  4. Application receives synchronous Status which indicates if the createStream request was sent successfully.
  5. Application is notified of the Status of the createStream request (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioPlayStream.
  6. Application requests stream buffer#1 using getStreamBuffer method on IAudioPlayStream.
  7. Application receives IStreamBuffer if Success.
  8. Application requests stream buffer#2 using getStreamBuffer method on IAudioPlayStream.
  9. Application receives IStreamBuffer if Success.
  10. Application writes audio samples on buffer#1 using getRawBuffer method on IStreamBuffer.
  11. Application writes buffer#1 on Playback session using write method on IAudioPlayStream.
  12. Application receives synchronous Status which indicates if the write request was sent successfully.
  13. Application writes audio samples on buffer#2 using getRawBuffer method on IStreamBuffer.
  14. Application writes buffer#2 on Playback session using write method on IAudioPlayStream.
  15. Application receives synchronous Status which indicates if the write request was sent successfully.
  16. Application is notified of the buffer#1 write Status (either SUCCESS or FAILED) via the application-supplied write callback with successful bytes written.
  17. Application is notified of the buffer#2 write Status (either SUCCESS or FAILED) via the application-supplied write callback with successful bytes written.
  18. Application requests delete audio stream using deleteStream method.
  19. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  20. Application is notified of the Status of the deleteStream request (either SUCCESS or FAILED) via the application-supplied callback.

Audio Capture call flow

Audio Capture call flow

Audio Capture call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests create audio capture stream using createStream method with streamType as CAPTURE.
  4. Application receives synchronous Status which indicates if the createStream request was sent successfully.
  5. Application is notified of the Status of the createStream request (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioCaptureStream.
  6. Application requests stream buffer#1 using getStreamBuffer method on IAudioCaptureStream.
  7. Application receives IStreamBuffer if Success.
  8. Application requests stream buffer#2 using getStreamBuffer method on IAudioCaptureStream.
  9. Application receives IStreamBuffer if Success.
  10. Application decides read sample size.
  11. Application issue read audio samples on buffer#1 using read method on IAudioCaptureStream.
  12. Application receives synchronous Status which indicates if the read request was sent successfully.
  13. Application issue read audio samples on buffer#2 using read method on IAudioCaptureStream.
  14. Application receives synchronous Status which indicates if the read request was sent successfully.
  15. Application is notified of the buffer#1 write Status (either SUCCESS or FAILED) via the application-supplied read callback with successful bytes read.
  16. Application is notified of the buffer#2 write Status (either SUCCESS or FAILED) via the application-supplied read callback with successful bytes read.
  17. Application requests delete audio stream using deleteStream method.
  18. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  19. Application is notified of the Status of the deleteStream request (either SUCCESS or FAILED) via the application-supplied callback.

Audio Tone Generator call flow

Audio Tone Generator call flow

Audio Tone Generator call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a tone generator stream with streamType as TONE_GENERATOR.
  4. Application receives synchronous status which indicates if the createStream request was sent successfully.
  5. Application is notified of the createStream request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioToneGeneratorStream.
  6. Application requests to play tone using playTone method on IAudioToneGeneratorStream.
  7. Application receives synchronous status which indicates if the playTone request was sent successfully.
  8. Application is notified of the playTone request status (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application can optionally stop the tone being played, before its duration expires.
  10. Application receives synchronous status which indicates if the stopTone request was sent successfully.
  11. Application is notified of the stopTone request status (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application requests delete audio stream using deleteStream method.
  13. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  14. Application is notified of the deleteStream request status(either SUCCESS or FAILED) via the application-supplied callback.

Audio Loopback call flow

Audio Loopback call flow

Audio Loopback call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a loopback stream with streamType as LOOPBACK.
  4. Application receives synchronous status which indicates if the createStream request was sent successfully.
  5. Application is notified of the createStream request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioLoopbackStream.
  6. Application requests to start loopback using startLoopback method on IAudioLoopbackStream.
  7. Application receives synchronous status which indicates if the startLoopback request was sent successfully.
  8. Application is notified of the startLoopback request status (either SUCCESS or FAILED) via the application-supplied callback.
  9. Application requests to stop loopback using stopLoopback method on IAudioLoopbackStream.
  10. Application receives synchronous status which indicates if the stopLoopback request was sent successfully.
  11. Application is notified of the stopLoopback request status (either SUCCESS or FAILED) via the application-supplied callback.
  12. Application requests delete audio stream using deleteStream method.
  13. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  14. Application is notified of the deleteStream request status(either SUCCESS or FAILED) via the application-supplied callback.

Compressed audio format playback call flow

Audio Compressed Audio Format Playback call flow

Compressed Audio Format Playback call flow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a play stream with streamType as PLAY.
  4. Application receives synchronous status which indicates if the createStream request was sent successfully.
  5. Application is notified of the createStream request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioPlayStream.
  6. Application requests to write buffer using write method on IAudioPlayStream.
  7. Application receives synchronous status which indicates if the write request was sent successfully.
  8. Application is notified of the write request status (either SUCCESS or FAILED) via the application-supplied callback along with number of bytes written.
  9. Application is notified of when pipeline is ready to accept new buffer if callback returns with error that number of bytes written are not equal to bytes requested.
  10. Application send request to stop playback using stopAudio method of IAudioPlayStream.
  11. Application receives synchronous status which indicates if the stopAudio request was sent successfully.
  12. Application is notified of the stopAudio request status (either SUCCESS or FAILED) via the application-supplied callback.
  13. Appication is notified via indication that playback is stopped if StopType is STOP_AFTER_PLAY.
  14. Application requests delete audio stream using deleteStream method.
  15. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  16. Application is notified of the deleteStream request status(either SUCCESS or FAILED) via the application-supplied callback.

Audio Transcoding Operation Callflow

Audio Transcoding Operation Callflow

Audio Transcoding Operation Callflow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a transcoder.
  4. Application receives synchronous status which indicates if the createTranscoder request was sent successfully.
  5. Application is notified of the createTranscoder request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to transcoder interface refering to ITranscoder.
  6. Application requests to read buffer using read method on ITranscoder.
  7. Application receives synchronous status which indicates if the read request was sent successfully.
  8. Application is notified of the read request status (either SUCCESS or FAILED) via the application-supplied callback along with isLastBuffer flag which indicates whether the buffer is last buffer to read or not.
  9. Application requests to write buffer using write method on ITranscoder.
  10. Application receives synchronous status which indicates if the write request was sent successfully.Application need to mark the isLastBuffer flag, whenever it is providing the last buffer to be write.
  11. Application is notified of the write request status (either SUCCESS or FAILED) via the application-supplied callback along with number of bytes written.
  12. Application is notified of when pipeline is ready to accept new buffer if callback returns with error that number of bytes written are not equal to bytes requested.
  13. Once transcoding done, Application requests to tearDown transcoder as transcoder can not be used for multiple transcoding operations.
  14. Application receives synchronous status which indicates if the tearDown request was sent successfully.
  15. Application is notified of the tearDown request status (either SUCCESS or FAILED) via the application-supplied callback.

Compressed audio format playback on Voice Paths Callflow

Compressed audio format playback on Voice Paths Callflow

Compressed audio format playback on Voice Paths Callflow

  1. Application requests Audio factory for an Audio Manager.
  2. Audio factory return IAudioManager object to application.
  3. On Readiness, Application requests to create a play stream with streamType as PLAY, voicePaths direction as TX or RX and no device is selected.
  4. Application receives synchronous status which indicates if the createStream request was sent successfully.
  5. Application is notified of the createStream request status (either SUCCESS or FAILED) via the application-supplied callback, with pointer to stream interface refering to IAudioPlayStream.
  6. Application requests to write buffer using write method on IAudioPlayStream. It needs an active voice session to play over voice paths, refer IAudioVoiceStream for more details on how to create voice stream.
  7. Application receives synchronous status which indicates if the write request was sent successfully.
  8. Application is notified of the write request status (either SUCCESS or FAILED) via the application-supplied callback along with number of bytes written.
  9. Application is notified of when pipeline is ready to accept new buffer if callback returns with error that number of bytes written are not equal to bytes requested.
  10. Application send request to stop playback using stopAudio method of IAudioPlayStream.
  11. Application receives synchronous status which indicates if the stopAudio request was sent successfully.
  12. Application is notified of the stopAudio request status (either SUCCESS or FAILED) via the application-supplied callback.
  13. Appication is notified via indication that playback is stopped if StopType is STOP_AFTER_PLAY.
  14. Application requests delete audio play stream using deleteStream method.
  15. Application receives synchronous Status which indicates if the deleteStream request was sent successfully.
  16. Application is notified of the deleteStream request status(either SUCCESS or FAILED) via the application-supplied callback.

Thermal manager call flow

Thermal manager provides APIs to get list of thermal zones and cooling devices. It also contains APIs to get a particular thermal zone and a particular cooling device details with the given Id.

Thermal manager call flow

Thermal manager call flow

  1. Application requests Thermal factory for Thermal Manager.
  2. Thermal factory returns IThermalManager object to application.
  3. Application sends request to get all thermal zones using IThermalManager object.
  4. Thermal manager returns the list of thermal zones to the application.
  5. Application requests for a particular thermal zone details by mentioning the thermal zone Id.
  6. Application receives thermal zone details with the given Id from thermal manager.
  7. Application sends request to get all cooling devices using IThermalManager object.
  8. Thermal manager returns the list of cooling devices to the application.
  9. Application requests for a particular cooling device details by passing the cooling device Id.
  10. Thermal Manager sends cooling device details with the given Id to the application.

Thermal shutdown management

Thermal shutdown manager provides APIs to set/get auto thermal shutdown modes. It also has listener interface for notifications. Application will get the Thermal-shutdown manager object from thermal factory. The application can register a listener for updates in thermal auto shutdown modes and its management service status. Also there is provision to set the desired thermal auto-shutdown mode.

When application is notifed of service being unavailable, the thermal auto-shutdown mode updates are inactive. After service becomes available, the existing listener registrations will be maintained.

As a reference, auto-shutdown management in an eCall application is described in the below sections.

Call flow to register/remove listener for Thermal auto-shutdown mode updates.

Call flow to register/remove listener for Thermal shutdown manager

Register/Remove listener for Thermal shutdown manager call flow

  1. Application requests thermal factory for Thermal Shutdown Manager.
  2. Thermal factory returns IThermalShutdownManager object using which application will register or remove a listener.
  3. Application can register a listener for getting notifications on Thermal auto-shutdown mode updates.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application recieves a notification that thermal auto-shutdown mode is disabled.
  6. Application recieves a notification that thermal auto-shutdown mode is going to enabled soon. The exact duration is also recieved as part of notification.
  7. Application recieves a notification that thermal auto-shutdown mode is enabled.
  8. Application can remove listener.
  9. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Call flow to set/get the Thermal auto-shutdown mode

 Call flow to set/get the Thermal auto-shutdown mode

Call flow to set/get the Thermal auto-shutdown mode

  1. Application requests thermal factory for Thermal Shutdown Manager object using which application will set/get the thermal auto-shutdown mode.
  2. Thermal factory returns IThermalShutdownManager object.
  3. Application can query the thermal auto-shutdown mode.
  4. Application receives synchronous status which indicates if the request was sent successfully.
  5. Application receives the auto-shutdown mode asynchronously.
  6. Application can set the thermal auto-shutdown mode to ENABLE or DISABLE.
  7. Application receives synchronous status which indicates if the request was sent successfully.
  8. Optionally, the response to setAutoShutdownMode request can be received by the application.

Call flow to manage thermal auto-shutdown from an eCall application.

Call flow to manage thermal auto-shutdown from an eCall application

Manage thermal auto-shutdown from an eCall application

  1. When eCall is triggered, application requests thermal factory for Thermal Shutdown Manager.
  2. Thermal factory returns IThermalShutdownManager object.
  3. Application can register a listener for getting notifications on Thermal auto-shutdown mode updates.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application disables auto-shutdown using setAutoShutdownMode API, to prevent a possible thermal auto-shutdown during eCall.
  6. Application receives synchronous status which indicates if the request was sent successfully.
  7. Optionally, the response to setAutoShutdownMode request can be received by the application.
  8. Application recieves a notification that thermal auto-shutdown mode is disabled.
  9. Application receives an imminent auto-shutdown enable notification and system will attempt to enable auto-shutdown after a certain period. This notification is received if application does not enable auto-shutdown due to an active eCall.
  10. If the eCall is still active, the application disables auto-shutdown before it gets enabled automatically.
  11. Application receives synchronous status which indicates if the request was sent successfully.
  12. Optionally, the response to setAutoShutdownMode request can be received by the application.
  13. Application recieves a notification that thermal auto-shutdown mode is disabled. Steps 9 to 13 are repeated as long as the eCall is active.
  14. When the eCall is completed, the application immediately enables auto-shutdown using setAutoShutdownMode API.
  15. Application receives synchronous status which indicates if the request was sent successfully.
  16. Optionally, the response to setAutoShutdownMode request can be received by the application.
  17. Application recieves a notification that thermal auto-shutdown mode is enabled.
  18. Application can remove listener.
  19. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

TCU Activity Management

Application will get the TCU-activity manager object from power factory. The application can register a listener for updates on TCU-activity state and its management service status. The application can also set the system to a desired activity state. When the application is notified about the service being unavailable, the TCU-activity state notifications will be inactive. After the service becomes available, the existing listener registrations will be maintained.

Call flow to register/remove listener for TCU-activity manager

Call flow to register/remove listener for TCU-activity manager

Register/Remove listener for TCU-activity manager call flow

  1. Application requests power factory for TCU-activity manager object.
  2. Power factory returns ITcuActivityManager object using which application will register or remove a listener.
  3. Application can register a listener for getting notifications on TCU-activity state updates.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application will get TCU-activity state notifications like SUSPEND, RESUME and SHUTDOWN.
  6. Application will send one(despite multiple listeners) acknowledgement, after processing(save any required information) SUSPEND/SHUTDOWN notifications. This indicates the readiness of application for state-transition. However the TCU-activity management service doesn't wait for acknowledgement indefinitely, before performing the state transition.
  7. Application receives synchronous status which indicates if the acknowledgement was sent successfully.
  8. Application can remove listener.
  9. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Call flow to set the TCU-activity state

Call flow to set the TCU-activity state

Call flow to set the TCU-activity state

  1. Application requests power factory for TCU-activity manager object.
  2. Power factory returns ITcuActivityManager object using which application will set the TCU-activity state.
  3. Application can register a listener for getting notifications on TCU-activity state.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application
  5. Application can set the TCU-activity state to SUSPEND, RESUME or SHUTDOWN.
  6. Application receives synchronous status which indicates if the request was sent successfully.
  7. Optionally, the response to setActivityState request can be received by the application.
  8. Application waits for TCU-activity state update to confirm the state change.
  9. Application will send one(despite multiple listeners) acknowledgement, after processing(save any required information) SUSPEND/SHUTDOWN notifications. This indicates the readiness of application for state-transition. However the TCU-activity management service doesn't wait for acknowledgement indefinitely, before performing the state transition.
  10. Application receives synchronous status which indicates if the acknowledgement was sent successfully.
  11. Application can remove listener.
  12. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Remote SIM call flow

Application will get the remote SIM manager object from phone factory. The application must register a listener to receive commands/messages from the modem to send to the SIM. After sending the connection available message, a onCardConnect() notification tells the application to connect to the SIM and perform an Answer to Reset. After sending the card reset message (with the AtR bytes), APDU messages will begin to be sent/received.

Remote SIM call flow

Remote SIM call flow

  1. Application requests remote SIM manager object from phone factory, specifying a slot id.
  2. Phone factory returns IRemoteSimManager object.
  3. Application registers a listener to receive commands/messages from the modem to send to the SIM.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application sends a connection available message indicating that a SIM is available for use.
  6. Status of send connection available i.e. either SUCCESS or FAILED will be returned to the application.
  7. Optionally, the response to send connection available request can be received by the application.
  8. Application will receive a card connect notification by the listener.
  9. After the application successfully connects to the SIM and requests an AtR, it sends a card reset message with the AtR bytes.
  10. Status of send card reset i.e. either SUCCESS or FAILED will be returned to the application.
  11. Optionally, the response to send card reset request can be received by the application.
  12. Application will receive an APDU transfer notification by the listener (with APDU message id).
  13. After forwarding the APDU transfer to the SIM and receiving the response, application will send APDU response.
  14. Status of send APDU i.e. either SUCCESS or FAILED will be returned to the application.
  15. Optionally, the response to send APDU request can be received by the application.
  16. To close the connection, application will send connection unavailable message.
  17. Status of send connection unavailable i.e. either SUCCESS or FAILED will be returned to the application.
  18. Optionally, the response to send connection unavailable can be received by the application.

Modem Config Call Flow

Modem Config manager provides APIs to request all configs from modem, load/delete modem config files from modem's storage, activate/deactivate a modem config file, get the active config details, set and get auto config selection mode. It also has listener interface for notifications for config activation update status. Application will get the Modem Config manager object from config factory. The application can register a listener for updates reagrding modem config activation.

Call flow to load and activate a modem config file.

Modem Config load and activate call flow

Modem Config load and activate call flow

  1. Application requests modem config manager object from config factory.
  2. Config factory returns IModemConfigManager object.
  3. Application sends a request to load config file in modem's storage.
  4. Application receives synchronous Status which indicates if the request to load config file was sent successfully.
  5. Application is notified of the Status of the loadConfigFile request (either SUCCESS or FAILED) via the application-supplied callback.
  6. Application sends a request to get list of all modem configs from modem's storage.
  7. Application receives synchronous Status which indicates if the request to get config list was sent successfully.
  8. Application is notified of the Status of the requestConfigList request (either SUCCESS or FAILED) via the application-supplied callback along with list of modem configs.
  9. Application sends a request to activate config file.
  10. Application receives synchronous Status which indicates if the request to activate config file was sent successfully.
  11. Application is notified of the Status of the activateConfig request (either SUCCESS or FAILED) via the application-supplied callback.

Call flow to deactivate and delete a modem config file.

Modem Config deactivate and delete Call Flow

Modem Config deactivate and delete Call Flow

  1. Application requests modem config manager object from config factory.
  2. Config factory returns IModemConfigManager object.
  3. Application sends a request to deactivate config file.
  4. Application receives synchronous Status which indicates if the request to deactivate config file was sent successfully.
  5. Application is notified of the Status of the deactivateConfig request (either SUCCESS or FAILED) via the application-supplied callback.
  6. Application sends a request to get list of all modem configs from modem's storage.
  7. Application receives synchronous Status which indicates if the request to get config list was sent successfully.
  8. Application is notified of the Status of the requestConfigList request (either SUCCESS or FAILED) via the application-supplied callback along with list of modem configs.
  9. Application sends a request to delete config file.
  10. Application receives synchronous Status which indicates if the request to delete config file was sent successfully.
  11. Application is notified of the Status of the deleteConfig request (either SUCCESS or FAILED) via the application-supplied callback.

Call flow to set and get config auto selection mode

Modem Config get and set Auto Selection Mode Call Flow

Modem Config get and set Auto Selection Mode Call Flow

  1. Application requests modem config manager object from config factory.
  2. Config factory returns IModemConfigManager object.
  3. Application sends a request to set config auto selection mode.
  4. Application receives synchronous Status which indicates if the request to set config auto selection mode was sent successfully.
  5. Application is notified of the Status of the request setAutoSelectionMode (either SUCCESS or FAILED) via the application-supplied callback.
  6. Application sends a request to get config auto selection mode.
  7. Application receives synchronous Status which indicates if the request to get config auto selection mode was sent successfully.
  8. Application is notified of the Status of the request setAutoSelectionMode (either SUCCESS or FAILED) via the application-supplied callback, along with mode and slot id.