|
S60 3rd Edition SDK for Symbian OS Example Applications Guide |
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 |