Network Signal Status Tutorial

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


  1. create new instance of CTelephony

  2. use CTelephony::GetIndicator() to get the network signal status information

  3. you can cancel the asynchronous request with a EGetIndicatorCancel object

  4. use the enumeration EIndicatorChange to get the notification of any changes to the network signal status

  5. cancel the notification request with 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);
    }