Network Signal Status Tutorial

This tutorial describes how to get the network signal status with the telephony API for applications.

Steps

  1. create 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::GetIndicator() to get the network signal status information
  3. you can cancel the asynchronous request with a [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]EGetIndicatorCancel object
  4. use the enumeration[[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]EIndicatorChange to get the notification of any changes to the network signal status
  5. cancel the notification request with [[[ERROR: [NOKX000E] Unable to find definition for key reference 'CTelephony']]]EIndicatorChangeCancel enumeration.

Network signal status example

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

class CClientApp : public CActive
    { 

private:
    CTelephony* iTelephony;
    CTelephony::TIndicatorV1 iIndicatorV1;
    CTelephony::TIndicatorV1Pckg iIndicatorV1Pckg;

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),
      iIndicatorV1Pckg(iIndicatorV1)
    {
    //default constructor
    }

void CClientApp::SomeFunction()
    {
    iTelephony->GetIndicator(iStatus, iIndicatorV1Pckg);
    SetActive();
    }

void CClientApp::RunL()
    {
    if(iStatus==KErrNone)
       {
       if(iIndicatorV1.iCapabilities & CTelephony::KIndNetworkAvailable)
          {
          // We can detect when a network is present
          if(iIndicatorV1.iIndicator & CTelephony::KIndNetworkAvailable)
             {} // Network is present
          else
             {} // Network is no present
          }
       else
          {} // We do not know whether a network is present
       }
    }

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