S60 3rd Edition SDK for Symbian OS
Example Applications Guide

IsvTelInfoAppTelephony.cpp

00001 /*
00002 * ==============================================================================
00003 *  Name        : IsvTelInfoAppTelephony.cpp
00004 *  Part of     : IsvTelInfoApp
00005 *  Interface   : 
00006 *  Description : 
00007 *  Version     : 
00008 *
00009 *  Copyright (c) 2005-2006 Nokia Corporation.
00010 *  This material, including documentation and any related 
00011 *  computer programs, is protected by copyright controlled by 
00012 *  Nokia Corporation.
00013 * ==============================================================================
00014 */
00015 
00016 // INCLUDE FILES
00017 #include <e32std.h>
00018 #include <avkon.hrh>
00019 #include <aknnotewrappers.h> 
00020 #include <f32fsys.h>
00021 #include <IsvTelInfoApp.rsg>
00022 #include "IsvTelInfoAppTelephonyNotify.h"
00023 #include "IsvTelInfoAppTelephony.h"
00024 
00025 // ================= MEMBER FUNCTIONS =========================================
00026 
00027 // ----------------------------------------------------------------------------
00028 // CIsvTelInfoAppTelephony* CIsvTelInfoAppTelephony::NewL()
00029 // Two-phased constructor.
00030 // ----------------------------------------------------------------------------
00031 //
00032 CIsvTelInfoAppTelephony* CIsvTelInfoAppTelephony::NewL
00033     ( MIsvTelInfoAppTelephonyNotify& aNotify )
00034     {
00035     CIsvTelInfoAppTelephony* selfWrapperClass = 
00036         new ( ELeave ) CIsvTelInfoAppTelephony( aNotify );
00037     CleanupStack::PushL( selfWrapperClass );
00038     selfWrapperClass->ConstructL();
00039     CleanupStack::Pop();
00040     return selfWrapperClass;
00041     }
00042 
00043 // ----------------------------------------------------------------------------
00044 // CIsvTelInfoAppTelephony::~CIsvTelInfoAppTelephony()
00045 // Destructor.
00046 // ----------------------------------------------------------------------------
00047 //
00048 CIsvTelInfoAppTelephony::~CIsvTelInfoAppTelephony()
00049     {
00050     Cancel();
00051     }
00052 
00053 // ----------------------------------------------------------------------------
00054 // void CIsvTelInfoAppTelephony::RunL()
00055 // Handles the active object’s request completion event.
00056 // ----------------------------------------------------------------------------
00057 //
00058 void CIsvTelInfoAppTelephony::RunL()
00059     {
00060     if ( iTelApiCmd != EAsyncEvent ) 
00061         {
00062             iWait.AsyncStop();
00063         }
00064 
00065     TBuf16<KMaxErrMsgSize> errMsgBuffer;
00066     
00067     //Find the type of error message and store in errMsgBuffer.
00068         GeneralErrorMessage( iStatus.Int(), &errMsgBuffer );
00069    
00070     //Based on the command, invoke the appropriate "command complete" routines
00071     //in the notify-object.
00072     switch( iTelApiCmd )
00073         {
00074         case EGetPhoneId :
00075             {
00076             iNotify.GetPhoneIdApiCompleteL( iStatus.Int(), iPhoneId, errMsgBuffer );
00077             }
00078             break;
00079         
00080         case EGetSubscriberId :
00081             {
00082             iNotify.GetSubscriberIdApiCompleteL( iStatus.Int(), 
00083                 iSubscriberId, 
00084                 errMsgBuffer );
00085             }
00086             break;
00087 
00088         case ENwRegistrationStatus :
00089             {
00090             iNotify.GetNwRegistrationStatusApiCompleteL( iStatus.Int(),
00091                 iNwRegistrationStatus, errMsgBuffer );
00092             }
00093             break;
00094 
00095         case EGetBarringStatus :
00096             {
00097             iNotify.GetBarringStatusApiCompleteL( iStatus.Int(),
00098                 iBarringCondition, 
00099                 iCallBarringServices, 
00100                 errMsgBuffer );
00101             }
00102             break;
00103         
00104        case EGetWaitingStatus :
00105             {
00106             iNotify.GetWaitingStatusApiCompleteL( iStatus.Int(), 
00107                 iCallWaitingServices, 
00108                 errMsgBuffer );
00109             }
00110             break;
00111                 
00112        case EGetIdentityStatus :
00113             {
00114             iNotify.GetIdentityServiceStatusApiCompleteL( iStatus.Int(),
00115                 iIdentityServiceType, 
00116                 iIdentityService, 
00117                 errMsgBuffer );
00118             }
00119             break;
00120 
00121       default :
00122             break;
00123         }
00124     return;
00125     }
00126 
00127 // ----------------------------------------------------------------------------
00128 // void CIsvTelInfoAppTelephony::DoCancel()
00129 // Implements cancellation of an outstanding request.
00130 // ----------------------------------------------------------------------------
00131 //
00132 void CIsvTelInfoAppTelephony::DoCancel()
00133     {
00134     //Based on the command, invoke the appropriate CancelAsync APIs
00135     switch( iTelApiCmd )
00136         {
00137         case EGetPhoneId : 
00138             {
00139             iTel->CancelAsync( CTelephony::EGetPhoneIdCancel );
00140             }    
00141             break;
00142             
00143         case EGetSubscriberId : 
00144             {
00145             iTel->CancelAsync( CTelephony::EGetSubscriberIdCancel );
00146             }    
00147             break;
00148             
00149         case EGetBarringStatus :
00150             {
00151             iTel->CancelAsync( CTelephony::EGetCallBarringStatusCancel );
00152             }
00153             break;
00154         
00155         case EGetWaitingStatus :
00156             {
00157             iTel->CancelAsync( CTelephony::EGetCallWaitingStatusCancel );
00158             }
00159             break;
00160         
00161         case EGetIdentityStatus :
00162             {
00163             iTel->CancelAsync( CTelephony::EGetIdentityServiceStatusCancel );
00164             }
00165             break;
00166 
00167         default :
00168             break;
00169         }
00170     }
00171 
00172 // ----------------------------------------------------------------------------
00173 // CIsvTelInfoAppTelephony::CIsvTelInfoAppTelephony()
00174 // Default constructor.
00175 // ----------------------------------------------------------------------------
00176 //
00177 CIsvTelInfoAppTelephony::CIsvTelInfoAppTelephony( 
00178     MIsvTelInfoAppTelephonyNotify& aNotify )
00179     :CActive( EPriorityStandard ),
00180     iNotify( aNotify ), 
00181     iPhoneIdPckg( iPhoneId ),
00182     iSubscriberIdPckg( iSubscriberId ),
00183     iNwRegistrationStatusPckg( iNwRegistrationStatus ),
00184     iCallBarringServicesPckg( iCallBarringServices ),
00185     iCallWaitingServicesPckg( iCallWaitingServices ),
00186     iIdentityServicePckg( iIdentityService )
00187     { 
00188     CActiveScheduler::Add( this );
00189     }
00190 
00191 // ----------------------------------------------------------------------------
00192 // void CIsvTelInfoAppTelephony::ConstructL()
00193 // It creates a CTelephony object and initializes a locally 
00194 // contained command table.
00195 // ----------------------------------------------------------------------------
00196 //
00197 void CIsvTelInfoAppTelephony::ConstructL()
00198     {
00199     //----------------------------------------------------------------------
00200     // Load Error strings from resource file
00201     //----------------------------------------------------------------------
00202     LoadErrorStringsFromResource();
00203    
00204    //Creating Telephony object. 
00205 #ifdef __WINS__
00206 
00207 #else
00208     iTel = CTelephony::NewL();
00209 #endif   
00210     }
00211 
00212 // ----------------------------------------------------------------------------
00213 // void CIsvTelInfoAppTelephony::TelApiWrapperGetPhoneId()
00214 // Wrapper function that calls GetPhoneId of CTelephony class.
00215 // ----------------------------------------------------------------------------
00216 //
00217 void CIsvTelInfoAppTelephony::TelApiWrapperGetPhoneIdL( )
00218     {
00219     if ( IsActive() )
00220         {
00221         return;
00222         }
00223     
00224     iTelApiCmd = EGetPhoneId;
00225     
00226 #ifdef __WINS__
00227     CAknErrorNote* errorNote = new (ELeave) CAknErrorNote;
00228     errorNote->ExecuteLD(iEmuApiNotSupported);
00229 #else    
00230     iTel->GetPhoneId( iStatus, iPhoneIdPckg );
00231     SetActive();
00232     StartWait();
00233 #endif    
00234     }
00235 
00236 // ----------------------------------------------------------------------------
00237 // void CIsvTelInfoAppTelephony::TelApiWrapperGetSubscriberId( )
00238 // Wrapper function that calls GetSubscriberId of CTelephony class.
00239 // ----------------------------------------------------------------------------
00240 //
00241 void CIsvTelInfoAppTelephony::TelApiWrapperGetSubscriberIdL( )
00242     {
00243     if ( IsActive() )
00244         {
00245         return;
00246         }
00247         
00248     iTelApiCmd = EGetSubscriberId;
00249     
00250 #ifdef __WINS__
00251     CAknErrorNote* errorNote = new (ELeave) CAknErrorNote;
00252     errorNote->ExecuteLD(iEmuApiNotSupported);
00253 #else    
00254     iTel->GetSubscriberId( iStatus, iSubscriberIdPckg );
00255     SetActive();
00256     StartWait();
00257 #endif    
00258     }
00259 
00260 // ----------------------------------------------------------------------------
00261 // void CETelISVTestAppTelephony::TelApiWrapperGetBarringStatus( )
00262 // Wrapper function that calls GetCallBarringStatus of CTelephony class.
00263 // ----------------------------------------------------------------------------
00264 //
00265 void CIsvTelInfoAppTelephony::TelApiWrapperGetBarringStatusL( 
00266     CTelephony::TCallBarringCondition aBarCondition)
00267     {
00268     if ( IsActive() )
00269         {
00270         return;
00271         }
00272     
00273     iTelApiCmd = EGetBarringStatus;
00274    
00275     //Find the barring condition for which the status is to be fetched.
00276     iBarringCondition = aBarCondition;
00277     if ( ( TInt )iBarringCondition == KErrNotFound )
00278         {
00279         return;
00280         }
00281 #ifdef __WINS__
00282     CAknErrorNote* errorNote = new (ELeave) CAknErrorNote;
00283     errorNote->ExecuteLD(iEmuApiNotSupported);
00284 #else    
00285     iTel->GetCallBarringStatus( iStatus, iBarringCondition, 
00286         iCallBarringServicesPckg );
00287     SetActive();
00288     StartWait();
00289 #endif    
00290     }
00291 
00292 // ----------------------------------------------------------------------------
00293 // void CETelISVTestAppTelephony::TelApiWrapperGetWaitingStatus( )
00294 // Wrapper function that calls GetCallWaitingStatus of CTelephony class.
00295 // ----------------------------------------------------------------------------
00296 //
00297 void CIsvTelInfoAppTelephony::TelApiWrapperGetWaitingStatusL( )
00298     {
00299     if ( IsActive() )
00300         {
00301         return;
00302         }
00303     
00304     iTelApiCmd = EGetWaitingStatus;
00305     
00306 #ifdef __WINS__
00307     CAknErrorNote* errorNote = new (ELeave) CAknErrorNote;
00308     errorNote->ExecuteLD(iEmuApiNotSupported);
00309 #else    
00310     iTel->GetCallWaitingStatus( iStatus, iCallWaitingServicesPckg );
00311     SetActive();
00312     StartWait();
00313 #endif    
00314     }
00315 
00316 // ----------------------------------------------------------------------------
00317 // void CETelISVTestAppTelephony::TelApiWrapperGetNwRegistrationStatus()
00318 // Wrapper function that calls GetNetworkRegistrationStatus of CTelephony class.
00319 // ----------------------------------------------------------------------------
00320 //
00321 void CIsvTelInfoAppTelephony::TelApiWrapperGetNwRegistrationStatusL( )
00322     {
00323     if ( IsActive() )
00324         {
00325         return;
00326         }
00327     
00328     iTelApiCmd = ENwRegistrationStatus;
00329     
00330 #ifdef __WINS__
00331     CAknErrorNote* errorNote = new (ELeave) CAknErrorNote;
00332     errorNote->ExecuteLD(iEmuApiNotSupported);
00333 #else    
00334     iTel->GetNetworkRegistrationStatus( iStatus, iNwRegistrationStatusPckg );
00335     SetActive();
00336     StartWait();
00337 #endif    
00338     }
00339     
00340 // ----------------------------------------------------------------------------
00341 // void CETelISVTestAppTelephony::TelApiWrapperGetIdentityStatus( )
00342 // Wrapper function that calls GetIdentityServiceStatus of CTelephony class.
00343 // ----------------------------------------------------------------------------
00344 //
00345 void CIsvTelInfoAppTelephony::TelApiWrapperGetIdentityStatusL( 
00346     CTelephony::TIdentityService aIdentityServiceType )
00347     {
00348     if ( IsActive() )
00349         {
00350         return;
00351         }
00352     
00353     iTelApiCmd = EGetIdentityStatus;
00354    
00355        //Find the identity service for which the status is to be fetched.
00356     iIdentityServiceType = aIdentityServiceType;
00357        
00358     if ( ( TInt )iIdentityServiceType == KErrNotFound )
00359         {
00360         return;
00361         }
00362 #ifdef __WINS__
00363     CAknErrorNote* errorNote = new (ELeave) CAknErrorNote;
00364     errorNote->ExecuteLD(iEmuApiNotSupported);
00365 #else    
00366     iTel->GetIdentityServiceStatus( iStatus, iIdentityServiceType, 
00367         iIdentityServicePckg );
00368     SetActive();
00369     StartWait();
00370 #endif    
00371     }
00372 
00373 // ----------------------------------------------------------------------------
00374 // void CIsvTelInfoAppTelephony::StartWait()
00375 // Checks for the active scheduler wait class's start state and then starts the
00376 // wait
00377 // ----------------------------------------------------------------------------
00378 //
00379 void CIsvTelInfoAppTelephony::StartWait( )
00380     {
00381     if ( iWait.IsStarted() != (TInt)ETrue )
00382         {
00383         iWait.Start();
00384         }
00385     }
00386     
00387 // ----------------------------------------------------------------------------
00388 // void CIsvTelInfoAppTelephony::LoadErrorStringsFromResource()
00389 // ----------------------------------------------------------------------------
00390 //
00391 void CIsvTelInfoAppTelephony::LoadErrorStringsFromResource()
00392     {
00393     CCoeEnv::Static()->ReadResource(iErrStrNotFound,
00394         R_ISVTELINFOAPP_TELSTR_ERRNOTFOUND);
00395     CCoeEnv::Static()->ReadResource(iErrStrGeneral,
00396         R_ISVTELINFOAPP_TELSTR_ERRGENERAL);
00397     CCoeEnv::Static()->ReadResource(iErrStrCancel,
00398         R_ISVTELINFOAPP_TELSTR_ERRCANCEL);
00399     CCoeEnv::Static()->ReadResource(iErrStrNoMemory,
00400         R_ISVTELINFOAPP_TELSTR_ERRNOMEMORY);
00401     CCoeEnv::Static()->ReadResource(iErrStrNotSupported,
00402         R_ISVTELINFOAPP_TELSTR_ERRNOTSUPPORTED);
00403     CCoeEnv::Static()->ReadResource(iErrStrArgument,
00404         R_ISVTELINFOAPP_TELSTR_ERRARGUMENT);
00405     CCoeEnv::Static()->ReadResource(iErrStrTotalLossOfPrecision,
00406         R_ISVTELINFOAPP_TELSTR_ERRTOTALLOSSOFPRECISION);
00407     CCoeEnv::Static()->ReadResource(iErrStrBadHandle,
00408         R_ISVTELINFOAPP_TELSTR_ERRBADHANDLE);
00409     CCoeEnv::Static()->ReadResource(iErrStrOverflow,
00410         R_ISVTELINFOAPP_TELSTR_ERROVERFLOW);
00411     CCoeEnv::Static()->ReadResource(iErrStrUnderflow,
00412         R_ISVTELINFOAPP_TELSTR_ERRUNDERFLOW);
00413     CCoeEnv::Static()->ReadResource(iErrStrAlreadyExists,
00414         R_ISVTELINFOAPP_TELSTR_ERRALREADYEXISTS);
00415     CCoeEnv::Static()->ReadResource(iErrStrInUse,
00416         R_ISVTELINFOAPP_TELSTR_ERRINUSE);
00417     CCoeEnv::Static()->ReadResource(iErrStrServerTerminated,
00418         R_ISVTELINFOAPP_TELSTR_ERRSERVERTERMINATED);
00419     CCoeEnv::Static()->ReadResource(iErrStrServerBusy,
00420         R_ISVTELINFOAPP_TELSTR_ERRSERVERBUSY);
00421     CCoeEnv::Static()->ReadResource(iErrStrUnknown,
00422         R_ISVTELINFOAPP_TELSTR_ERRUNKNOWN);
00423     CCoeEnv::Static()->ReadResource(iErrStrCorrupt,
00424         R_ISVTELINFOAPP_TELSTR_ERRCORRUPT);
00425     CCoeEnv::Static()->ReadResource(iErrStrAccessDenied,
00426         R_ISVTELINFOAPP_TELSTR_ERRACCESSDENIED);
00427     CCoeEnv::Static()->ReadResource(iErrStrCommsLineFail,
00428         R_ISVTELINFOAPP_TELSTR_ERRCOMMSLINEFAIL);
00429     CCoeEnv::Static()->ReadResource(iErrStrTimedOut,
00430         R_ISVTELINFOAPP_TELSTR_ERRTIMEDOUT);
00431     CCoeEnv::Static()->ReadResource(iErrStrCouldNotConnect,
00432         R_ISVTELINFOAPP_TELSTR_ERRCOULDNOTCONNECT);
00433     CCoeEnv::Static()->ReadResource(iErrStrCouldNotDisconnect,
00434         R_ISVTELINFOAPP_TELSTR_ERRCOULDNOTDISCONNECT);
00435     CCoeEnv::Static()->ReadResource(iErrStrHardwareNotAvailable,
00436         R_ISVTELINFOAPP_TELSTR_ERRHARDWARENOTAVAILABLE);
00437     CCoeEnv::Static()->ReadResource(iErrStrSessionClosed,
00438         R_ISVTELINFOAPP_TELSTR_ERRSESSIONCLOSED);
00439     CCoeEnv::Static()->ReadResource(iErrStrPermissionDenied,
00440         R_ISVTELINFOAPP_TELSTR_ERRPERMISSIONDENIED);
00441     CCoeEnv::Static()->ReadResource(iErrStrDefault,
00442         R_ISVTELINFOAPP_TELSTR_ERRORDEFAULT);
00443         CCoeEnv::Static()->ReadResource(iEmuApiNotSupported,
00444             R_ISVTELINFOAPP_ERR_EMUAPINOTSUPPORTED);        
00445     }
00446 
00447 // ----------------------------------------------------------------------------
00448 // void CIsvTelInfoAppTelephony::GeneralErrorMessage()
00449 // Finds the system wide error. On return aErrMsgBuffer contains the 
00450 // error message.
00451 // ----------------------------------------------------------------------------
00452 //
00453 void CIsvTelInfoAppTelephony::GeneralErrorMessage( TInt aStatus,
00454     TBuf16<KMaxErrMsgSize> *aErrMsgBuffer )
00455     {
00456     switch( aStatus )
00457         {
00458         case KErrNotFound:
00459             {
00460             (*aErrMsgBuffer).Copy(iErrStrNotFound);
00461             }
00462             break;
00463         case KErrGeneral:
00464             {    
00465             (*aErrMsgBuffer).Copy(iErrStrGeneral);
00466             }
00467             break;
00468         case KErrCancel:
00469             {
00470             (*aErrMsgBuffer).Copy(iErrStrCancel);
00471             }
00472             break;
00473         case KErrNoMemory:
00474             {
00475             (*aErrMsgBuffer).Copy(iErrStrNoMemory);
00476             }
00477             break;
00478         case KErrNotSupported:
00479             {
00480             (*aErrMsgBuffer).Copy(iErrStrNotSupported);
00481             }
00482             break;
00483         case KErrArgument:
00484             {
00485             (*aErrMsgBuffer).Copy(iErrStrArgument);
00486             }
00487             break;
00488         case KErrTotalLossOfPrecision:
00489             {
00490             (*aErrMsgBuffer).Copy(iErrStrTotalLossOfPrecision);
00491             }
00492             break;
00493         case KErrBadHandle:
00494             {
00495             (*aErrMsgBuffer).Copy(iErrStrBadHandle);
00496             }
00497             break;
00498         case KErrOverflow:
00499             {
00500             (*aErrMsgBuffer).Copy(iErrStrOverflow);
00501             }
00502             break;
00503         case KErrUnderflow:
00504             {
00505             (*aErrMsgBuffer).Copy(iErrStrUnderflow);
00506             }
00507             break;
00508         case KErrAlreadyExists:
00509             {
00510             (*aErrMsgBuffer).Copy(iErrStrAlreadyExists);
00511             }
00512             break;
00513         case KErrInUse:
00514             {
00515             (*aErrMsgBuffer).Copy(iErrStrInUse);
00516             }
00517             break;
00518         case KErrServerTerminated:
00519             {
00520             (*aErrMsgBuffer).Copy(iErrStrServerTerminated);
00521             }
00522             break;
00523         case KErrServerBusy:
00524             {
00525             (*aErrMsgBuffer).Copy(iErrStrServerBusy);
00526             }
00527             break;
00528         case KErrUnknown:
00529             {
00530             (*aErrMsgBuffer).Copy(iErrStrUnknown);
00531             }
00532             break;
00533         case KErrCorrupt:
00534             {
00535             (*aErrMsgBuffer).Copy(iErrStrCorrupt);
00536             }
00537             break;
00538         case KErrAccessDenied:
00539             {
00540             (*aErrMsgBuffer).Copy(iErrStrAccessDenied);
00541             }
00542             break;
00543         case KErrCommsLineFail:
00544             {
00545             (*aErrMsgBuffer).Copy(iErrStrCommsLineFail);
00546             }
00547             break;
00548         case KErrTimedOut:
00549             {
00550             (*aErrMsgBuffer).Copy(iErrStrTimedOut);
00551             }
00552             break;
00553         case KErrCouldNotConnect:
00554             {
00555             (*aErrMsgBuffer).Copy(iErrStrCouldNotConnect);
00556             }
00557             break;
00558         case KErrCouldNotDisconnect:
00559             {
00560             (*aErrMsgBuffer).Copy(iErrStrCouldNotDisconnect);
00561             }
00562             break;
00563         case KErrHardwareNotAvailable:
00564             {
00565             (*aErrMsgBuffer).Copy(iErrStrHardwareNotAvailable);
00566             }
00567             break;
00568         case KErrSessionClosed:
00569             {
00570             (*aErrMsgBuffer).Copy(iErrStrSessionClosed);
00571             }
00572             break;
00573         case KErrPermissionDenied:
00574             {
00575             (*aErrMsgBuffer).Copy(iErrStrPermissionDenied);
00576             }
00577             break;
00578         default:
00579             {
00580             (*aErrMsgBuffer).Copy(iErrStrDefault);
00581             }
00582             break;
00583         }
00584     }
00585 
00586 // End of File  

© Nokia 2006

Back to top