connectivitymodules/SeCon/servers/pcconn/src/sconimsireader.cpp
branchRCL_3
changeset 20 4a793f564d72
parent 18 453dfc402455
equal deleted inserted replaced
19:0aa8cc770c8a 20:4a793f564d72
       
     1 /*
       
     2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  CSconImsiReader implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "sconimsireader.h"
       
    20 #include "debug.h"
       
    21 
       
    22 TInt CSconImsiReader::GetImsiL( TDes& aImsi )
       
    23     {
       
    24     TRACE_FUNC_ENTRY;
       
    25     CTelephony::TRegistrationStatus temp;
       
    26     CSconImsiReader* self = new (ELeave) CSconImsiReader(aImsi, temp);
       
    27     CleanupStack::PushL(self);
       
    28     self->ConstructL();
       
    29     
       
    30     self->RequestImsi();
       
    31     
       
    32     TInt err = self->iStatus.Int();
       
    33     CleanupStack::PopAndDestroy(self);
       
    34     TRACE_FUNC_RET(err);
       
    35     return err;
       
    36     }
       
    37 
       
    38 TInt CSconImsiReader::GetNetworkStatusL( CTelephony::TRegistrationStatus& aRegistrationStatus )
       
    39     {
       
    40     TRACE_FUNC_ENTRY;
       
    41     TBuf<CTelephony::KIMSISize> temp;
       
    42     CSconImsiReader* self = new (ELeave) CSconImsiReader(temp, aRegistrationStatus);
       
    43     CleanupStack::PushL(self);
       
    44     self->ConstructL();
       
    45     
       
    46     self->RequestNetworkStatus();
       
    47     
       
    48     TInt err = self->iStatus.Int();
       
    49     CleanupStack::PopAndDestroy(self);
       
    50     TRACE_FUNC_RET(err);
       
    51     return err;
       
    52     }
       
    53  
       
    54 void CSconImsiReader::ConstructL()
       
    55     {
       
    56     TRACE_FUNC_ENTRY;
       
    57     iTelephony = CTelephony::NewL();
       
    58     CActiveScheduler::Add(this);
       
    59     TRACE_FUNC_EXIT;
       
    60     }
       
    61 
       
    62 void CSconImsiReader::RequestImsi()
       
    63     {
       
    64     iImsiReaderStatus = ERequestingImsi;
       
    65     iTelephony->GetSubscriberId(iStatus,iSubscriberIdV1Pckg);
       
    66     SetActive();
       
    67     CActiveScheduler::Start();
       
    68     }
       
    69 
       
    70 void CSconImsiReader::RequestNetworkStatus()
       
    71     {
       
    72     iImsiReaderStatus = ERequestingNetworkStatus;
       
    73     iTelephony->GetNetworkRegistrationStatus(iStatus, iNetworkRegistrationV1Pckg);
       
    74     SetActive();
       
    75     CActiveScheduler::Start();
       
    76     }
       
    77 
       
    78 CSconImsiReader::~CSconImsiReader()
       
    79     {
       
    80     TRACE_FUNC_ENTRY;
       
    81     delete iTelephony;
       
    82     TRACE_FUNC_EXIT;
       
    83     }
       
    84  
       
    85 CSconImsiReader::CSconImsiReader(TDes& aImsi, CTelephony::TRegistrationStatus& aRegistrationStatus): CActive(EPriorityStandard),
       
    86     iImsi(aImsi), iNetworkStatus(aRegistrationStatus), iSubscriberIdV1Pckg(iSubscriberIdV1), iNetworkRegistrationV1Pckg(iNetworkRegistrationV1)
       
    87     {
       
    88     }
       
    89  
       
    90 void CSconImsiReader::RunL()
       
    91     {
       
    92     TRACE_FUNC_ENTRY;
       
    93     LOGGER_WRITE_1("iStatus: %d", iStatus.Int() );
       
    94     if ( iStatus == KErrNone )
       
    95         {
       
    96         if ( iImsiReaderStatus == ERequestingImsi )
       
    97             {
       
    98             iImsi = iSubscriberIdV1.iSubscriberId;
       
    99             LOGGER_WRITE_1("iImsi: %S", &iImsi);
       
   100             }
       
   101         else if ( iImsiReaderStatus == ERequestingNetworkStatus )
       
   102             {
       
   103             iNetworkStatus = iNetworkRegistrationV1.iRegStatus;
       
   104             LOGGER_WRITE_1( "iNetworkStatus: %d", (TInt)iNetworkStatus);
       
   105             }
       
   106         }
       
   107     CActiveScheduler::Stop();
       
   108     TRACE_FUNC_EXIT;
       
   109     }
       
   110  
       
   111 void CSconImsiReader::DoCancel()
       
   112     {
       
   113     TRACE_FUNC_ENTRY;
       
   114     if ( iImsiReaderStatus == ERequestingImsi )
       
   115         {
       
   116         iTelephony->CancelAsync( CTelephony::EGetSubscriberIdCancel );
       
   117         }
       
   118     else if ( iImsiReaderStatus == ERequestingNetworkStatus )
       
   119         {
       
   120         iTelephony->CancelAsync( CTelephony::EGetNetworkRegistrationStatusCancel );
       
   121         }
       
   122     TRACE_FUNC_EXIT;
       
   123     }