# Data Call Service

- [API reference](https://docs.qualcomm.com/doc/80-41102-2/topic/_doxygen_rst_file__doxygen_sources_taf_dcs_interface_h.html#file-taf-dcs-interface-h)

The Data Call service provides APIs to manage data profiles and wireless data calls. Data call session management APIs support both synchronous and asynchronous operations. Clients can register for and monitor data call related events.

## IPC interfaces binding

All functions of this API are provided by the **tafDataCallSvc** application service.

The following example illustrates how to bind to the data call service.

bindings:
      {
          clientExe.clientComponent.taf_dcs -> tafDataCallSvc.taf_dcs
      }
    Copy to clipboard

## Starting a data call

A synchronous data call can be started using [taf\_dcs\_StartSession()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a45e8b7030766da374d65e3fe65a64a91.html#Documentationa00320_1a45e8b7030766da374d65e3fe65a64a91) with the profile reference passed as parameters.

result = taf_dcs_StartSession(profileReference);
      if (result != LE_OK)
      {
         LE_ERROR("Fail to start data call.");
         return result;
      }
    Copy to clipboard

An asynchronous data call can be started using [taf\_dcs\_StartSessionAsync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ad490b67e2fb740a575e0db0d7fe3bb11.html#Documentationa00320_1ad490b67e2fb740a575e0db0d7fe3bb11) with the profile reference passed as parameters. The result of the [taf\_dcs\_StartSessionAsync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ad490b67e2fb740a575e0db0d7fe3bb11.html#Documentationa00320_1ad490b67e2fb740a575e0db0d7fe3bb11) operation will be provided via the completion handler, [taf\_dcs\_AsyncSessionHandlerFunc\_t](https://docs.qualcomm.com/doc/80-41102-2/topic/typedef_a00317_1a0fbb23cfd55852e57455b1b0230c38dc.html#Documentationa00317_1a0fbb23cfd55852e57455b1b0230c38dc).

void AsyncSessionHandler (taf_dcs_ProfileRef_t profileRef,le_result_t result,void* contextPtr)
      {
        if (LE_OK == result)
        {
           //Start session successful
        }
        else
        {
           // Handle errors
        }
      }
      myFunc()
      {
        taf_dcs_StartSessionAsync(profileReference, AsyncSessionHandler, contextPtr);
      }
    Copy to clipboard

Before starting a data call, an application registers a state handler using [taf\_dcs\_AddSessionStateHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ae5e3469cb4f844984ece9aab550bfd3c.html#Documentationa00320_1ae5e3469cb4f844984ece9aab550bfd3c). Once the data call state changes the handler will be called indicating the new state.

sessionStateRef = taf_dcs_AddSessionStateHandler(profileReference,
                       (taf_dcs_SessionStateHandlerFunc_t)data_event_handler, NULL);
    Copy to clipboard

An application can stop a synchronous data call by using [taf\_dcs\_StopSession()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a06b5561587e363f7ec929bf32495b334.html#Documentationa00320_1a06b5561587e363f7ec929bf32495b334) and stop an asynchronous data call by using [taf\_dcs\_StopSessionAsync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a963efc16589159544bf925480eb44833.html#Documentationa00320_1a963efc16589159544bf925480eb44833).

**NOTE:** When an application starts a data call using [taf\_dcs\_StartSession()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a45e8b7030766da374d65e3fe65a64a91.html#Documentationa00320_1a45e8b7030766da374d65e3fe65a64a91) or [taf\_dcs\_StartSessionAsync()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ad490b67e2fb740a575e0db0d7fe3bb11.html#Documentationa00320_1ad490b67e2fb740a575e0db0d7fe3bb11) and the application loses the connection with the data call service, the data call will be automatically stopped by the data call service.

## Roaming status

Data call service provides the APIs to get the roaming status and register the handler to track the roaming status change. Once the roaming status changes, the application registered handler is called with the new roaming status.

roamingStatusHandlerRef = taf_dcs_AddRoamingStatusHandler(
                              (taf_dcs_RoamingStatusHandlerFunc_t)RoamingStatusHandlerFunc, NULL);
    Copy to clipboard

To remove the handler, an application can use taf\_dcs\_RemoveRoamingStatusHandler(roamingStatusHandlerRef);.

The following APIs are added for roaming status and APN types:

- [taf\_dcs\_AddRoamingStatusHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a1ab1d015c453d74415e2818cb2cfec8c.html#Documentationa00320_1a1ab1d015c453d74415e2818cb2cfec8c) — Adds a handler for roaming status.
- [taf\_dcs\_RemoveRoamingStatusHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a45fb229f83c58321726dbf440f0c2d74.html#Documentationa00320_1a45fb229f83c58321726dbf440f0c2d74) — Removes a handler for roaming status.
- [taf\_dcs\_GetRoamingStatus()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1aaed27ae9f3dd3ff51b77c232d8fc98fc.html#Documentationa00320_1aaed27ae9f3dd3ff51b77c232d8fc98fc) — Gets current roaming status.
- [taf\_dcs\_GetApnTypes()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a441bd9d2595be4cda356a9e2da1f2418.html#Documentationa00320_1a441bd9d2595be4cda356a9e2da1f2418) — Gets APN types.

## Phone ID support

Data call service provides API to support phone ID for DSSA/DSDA mode. The application can use phone ID for these APIs.

profileReference = GetProfileEx(phoneId, profileId);
    Copy to clipboard

The following APIs are added for supporting phone ID.

- [taf\_dcs\_GetProfileListEx()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1adf31f83cc990e6c38b6b60b007a51c20.html#Documentationa00320_1adf31f83cc990e6c38b6b60b007a51c20) — Gets the data profile list with the specified phone ID.
- [taf\_dcs\_GetDefaultPhoneIdAndProfileId()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a5132f31aebac90fab4593cb4c0f2e2fe.html#Documentationa00320_1a5132f31aebac90fab4593cb4c0f2e2fe) — Gets the default phone ID and profile index.
- [taf\_dcs\_SetDefaultProfileIndexEx()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1abdb79e5b6abec09d156d4b36f9bf27d4.html#Documentationa00320_1abdb79e5b6abec09d156d4b36f9bf27d4) — Sets the default profile corresponding to the specified phone ID and profile index.
- [taf\_dcs\_GetDefaultProfileIndexEx()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ac37e620dd50c225447fe9463c01dc07f.html#Documentationa00320_1ac37e620dd50c225447fe9463c01dc07f) — Gets the default profile corresponding to the specified phone ID.
- [taf\_dcs\_GetProfileEx()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a00b1f35508c0bd8502ad064664c23ac8.html#Documentationa00320_1a00b1f35508c0bd8502ad064664c23ac8) — Gets the profile reference for the given phone ID and profile index.
- [taf\_dcs\_GetPhoneId()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a511a926bc3a68afd7f7390abb0d5b761.html#Documentationa00320_1a511a926bc3a68afd7f7390abb0d5b761) — Gets the phone ID for the given profile reference.
- [taf\_dcs\_GetPhoneIdByInterfaceName()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a9d1cd567d75e1718586d57113d52f4e6.html#Documentationa00320_1a9d1cd567d75e1718586d57113d52f4e6) — Gets the phone ID by the interface name.

## Managing profiles

Data call service provides APIs to manage profiles. TelAF applications can create profiles, update profile parameters and delete profiles with the profile management APIs.
 To create a profile, applications should first get a profile reference using the [taf\_dcs\_GetProfileEx()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a00b1f35508c0bd8502ad064664c23ac8.html#Documentationa00320_1a00b1f35508c0bd8502ad064664c23ac8) API with [TAF\_DCS\_UNDEFINED\_PROFILE\_ID](https://docs.qualcomm.com/doc/80-41102-2/topic/define_a00317_1a19ff65bd5dfcbe40d0e68dc5563360a0.html#Documentationa00317_1a19ff65bd5dfcbe40d0e68dc5563360a0) for profileId. After setting all relevant parameters, applications can use [taf\_dcs\_CreateProfile()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a339f17c350ffa0b5c85fadf6da8e1e7b.html#Documentationa00320_1a339f17c350ffa0b5c85fadf6da8e1e7b) to create the profile.
 Applications can get the ID of the created profile using [taf\_dcs\_GetProfileId()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ac2a8b2c84474d9ed1aec663a8d370233.html#Documentationa00320_1ac2a8b2c84474d9ed1aec663a8d370233) API.
 Profiles can be deleted using [taf\_dcs\_DeleteProfile()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1add44a6a38f008aed17472b4c958edc74.html#Documentationa00320_1add44a6a38f008aed17472b4c958edc74).

profileReference = taf_dcs_GetProfileEx(phoneId, #TAF_DCS_UNDEFINED_PROFILE_ID);
    taf_dcs_SetAPN (profileReference, "TestAPN");
    taf_dcs_CreateProfile(profileReference);
    taf_dcs_GetProfileId (profileReference, &profileID);
    taf_dcs_DeleteProfile(profileReference);
    Copy to clipboard

-

## Throughput information

Data call service provides APIs to configure and monitor throughput information. An application can register a handler to receive throughput information changes using [taf\_dcs\_AddThroughputInfoChangeHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a13fcdd5a0601bc6dde1547ee6a93a6de.html#Documentationa00320_1a13fcdd5a0601bc6dde1547ee6a93a6de). The handler will be called with the new throughput information indication when the throughput changes.

throughputHandlerRef = taf_dcs_AddThroughputInfoChangeHandler(phoneId, ThroughputInfoHandlerFunc, NULL);
    Copy to clipboard

Throughput reporting can be enabled or disabled for a specific link direction and interval using [taf\_dcs\_SetThroughputReport()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a0d2284edcfc4a6daf075ef1de0a40a7f.html#Documentationa00320_1a0d2284edcfc4a6daf075ef1de0a40a7f).

To remove the handler, an application can use [taf\_dcs\_RemoveThroughputInfoChangeHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ab4a7e5db5281beb1e70d2ac48631434e.html#Documentationa00320_1ab4a7e5db5281beb1e70d2ac48631434e). To retrieve the latest throughput information, the application can use [taf\_dcs\_GetLastThroughputInfoList()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a7842a208fcd3d063367e5a970e268339.html#Documentationa00320_1a7842a208fcd3d063367e5a970e268339) to get the list reference. Then use [taf\_dcs\_GetThroughputInfoCount()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1af8d92aee84275ab5d2584656dbd73e16.html#Documentationa00320_1af8d92aee84275ab5d2584656dbd73e16) and [taf\_dcs\_GetThroughputInfo()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1af139b6e29b557c74d26bd3152f749ec4.html#Documentationa00320_1af139b6e29b557c74d26bd3152f749ec4) to iterate through the information. After processing, the list must be deleted using [taf\_dcs\_DeleteLastThroughputInfoList()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ade4ef1cd5fcf6cf0fa1e5277fcfde2d4.html#Documentationa00320_1ade4ef1cd5fcf6cf0fa1e5277fcfde2d4).

Various properties of the throughput information can be retrieved using:

- [taf\_dcs\_GetThroughputApnName()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1ac6d775ba41d3aea1b372d673976bf1ba.html#Documentationa00320_1ac6d775ba41d3aea1b372d673976bf1ba) — Gets the throughput APN name.
- [taf\_dcs\_GetThroughputActualRate()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a1dd53dec15dfe32b3dc7087b45b6dfd3.html#Documentationa00320_1a1dd53dec15dfe32b3dc7087b45b6dfd3) — Gets the throughput actual rate.
- [taf\_dcs\_GetThroughputAllowedRate()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a6fa62df0a6994f12efc107c2aa16ba35.html#Documentationa00320_1a6fa62df0a6994f12efc107c2aa16ba35) — Gets the throughput allowed rate.
- [taf\_dcs\_GetThroughputQueueSize()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a3aabc3771aa92c513d6ebe84de04d861.html#Documentationa00320_1a3aabc3771aa92c513d6ebe84de04d861) — Gets the throughput queue size.
- [taf\_dcs\_GetThroughputQuality()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00320_1a6cd1565ef0f635d58c1d60cc11fbc62f.html#Documentationa00320_1a6cd1565ef0f635d58c1d60cc11fbc62f) — Gets the throughput quality.

Last Published: Jun 09, 2026

[Previous Topic
CAN Service](https://docs.qualcomm.com/bundle/publicresource/80-41102-2/topics/page_c_tafcan.md) [Next Topic
Device Information Service](https://docs.qualcomm.com/bundle/publicresource/80-41102-2/topics/page_c_tafDevInfo.md)