Voice Line Status Tutorial

This tutorial describes how to get the voice line status with the telephony API for applications.


The CTelephony functions provide a detailed information on the voice line status. The detailed call information provides the information about:

  • call status

  • date of the call

  • time of the call

  • duration of the call

  • destination number

  • caller identification

  • dynamic call capabilities


  1. create a new instance of [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]CTelephony

  2. use [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]CTelephony::GetLineStatus() to get the simple voice line status

  3. use [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]CTelephony::GetCallStatus() to get the status of any voice call owned by the client application

  4. use [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]CTelephony::GetCallInfo() to get the detailed call information about the call

    pass the following parameters for the required information
    Parameter Function


    To get the status of a call like idle, on-hold, dialling and ringing


    To get the data and time of a call


    To get the duration of a call


    To get the destination number


    To get the ciphering information from the network


    To determine if the remote caller status is available


    To determine the call direction

  5. use [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]GetCallDynamicCaps() to get the dynamic capability information about the call.

Voice call information example

The example code describes the steps to get the detailed call information.

CTelephony* telephony = CTelephony::NewLC();

CTelephony::TCallInfoV1 callInfoV1;
CTelephony::TCallInfoV1Pckg callInfoV1Pckg( callInfoV1 );

CTelephony::TCallSelectionV1 callSelectionV1;
CTelephony::TCallSelectionV1Pckg callSelectionV1Pckg( callSelectionV1 );

CTelephony::TRemotePartyInfoV1 remotePartyInfoV1;
CTelephony::TRemotePartyInfoV1Pckg remotePartyInfoV1Pckg( remotePartyInfoV1  );

callSelectionV1.iLine = CTelephony::EVoiceLine;
callSelectionV1.iSelect = CTelephony::EActiveCall;

telephony->GetCallInfo( callSelectionV1Pckg, callInfoV1Pckg, remotePartyInfoV1Pckg );

CleanupStack::PopAndDestroy( telephony );

Next actions

The example code to get the dynamic call capability information

CTelephony::TCallCapsV1 callCapsV1;
CTelephony::TCallCapsV1Pckg callCapsV1Pckg( callCapsV1 );

telephony->GetCallDynamicCaps( callId, callCapsV1Pckg );
TUint32 caps = callCapsV1.iControlCaps;
if( caps & CTelephony::KCapsHold )
   {} // The call represented by 'callId' can be put on hold