Send Dual Tone Multi Frequency (DTMF) Tutorial

This tutorial describes how to send DTMF tones with the telephony API for applications.


  1. create a new instance of CTelephony

  2. use CTelephony::SendDTMFTones() to transmit a sequence of DTMF tones across the currently active call The sequence of tones is a TDesC string. It contains one or more occurrences of the numbers 0 to 9, * and #.

  3. pass the enumeration CTelephony::ESendDTMFTonesCancel to cancel the asynchronous request.

Send DTMF example

This example sends the string 123456789:

#include <e32base.h>
#include <Etel3rdParty.h>

_LIT(KTheTones, "123456789");

class CClientApp : public CActive
    { 

private:
    CTelephony* iTelephony;

public:
    CClientApp(CTelephony* aTelephony);
    void SomeFunction();

private:
    /*
       These are the pure virtual methods from CActive that  
       MUST be implemented by all active objects
       */
    void RunL();
    void DoCancel();
   };

CClientApp::CClientApp(CTelephony* aTelephony)
    : CActive(EPriorityStandard),
      iTelephony(aTelephony)
    {
    //default constructor
    }

void CClientApp::SomeFunction()
    {
    iTelephony->SendDTMFTones(iStatus, KTheTones);
    SetActive();
    }

void CClientApp::RunL()
    {
    if(iStatus==KErrNone)
       {} // The tones were sent successfully;
    }

void CClientApp::DoCancel()
    {
    iTelephony->CancelAsync(CTelephony::ESendDTMFTonesCancel);
    }