Telematics SDK - Interface Specification  v1.9.0
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
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-sytem 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.

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.

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.

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.

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 cardmanager 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 cardstate 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.

Location Services call flow

Application will get the location manager object from location factory. The application can register a listener for location and SV info updates. Location service will get started when the first listener registers itself. Application can configure horizontal accuracy level, time interval and timeout for position reports and can query for fix criteria. When there are no more listeners, location service will get stopped automatically.

Register/Remove listener for location manager call flow

Register/Remove listener for location manager call flow

Register/Remove listener for location manager call flow

  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 and satellite vehicle updates. Location manager will get started in background when first listener get added. Subsequently all other listeners will latch on the already started service.
  4. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application.
  5. Application will get location updates like latitude, longitude and altitude etc.
  6. Application will also receive satellite vehicle information like SV status and constellation etc.
  7. Application can remove listener and when the number of listeners are zero then location manager will get stopped automatically.
  8. Status of remove listener i.e. either SUCCESS or FAILED will be returned to the application.

Call flow for configuring position reports and query fix criteria

Call flow for configuring position reports and query fix criteria

Call flow for configuring position reports and query fix criteria

  1. Application requests location factory for location manager object.
  2. Location factory returns ILocationManager object using which application will configure time interval for position reports, horizontal accuracy level etc.
  3. Application can configure horizontal accuracy level criteria as LOW, MEDIUM or HIGH.
  4. Status of setHorizontalAccuracyLevel i.e. either SUCCESS or FAILED will be returned to the application.
  5. Optionally, the response for set horizontal accuracy level is received by the application.
  6. Application can configure minimum interval between position reports using ILocationManager object.
  7. Status of setMinIntervalForReports i.e. either SUCCESS or FAILED will be returned to the application.
  8. Optionally, the response for set minimum interval for position reports is received by the application.
  9. Application can configure timeout for getting a position fix.
  10. Status of setPositionReportTimeout i.e. either SUCCESS or FAILED will be returned to the application.
  11. Optionally, the response for set position report timeout is received by the application.
  12. Application can register a listener for getting notifications for fix criteria request.
  13. Status of register listener i.e. either SUCCESS or FAILED will be returned to the application
  14. Application can request the fix criteria.
  15. Status of requestLocationFixCriteria i.e. either SUCCESS or FAILED will be returned to the application.
  16. The response for request location fix criteria is received by the application.
  17. Application will get fix criteria indications like minimum interval between reports, timeout and horizontal accuracy level.

Data Connection Manager Call Flow

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.

Data Profile Manager Call Flow

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.