realtimenetprots/sipfw/SIP/ConnectionMgr/src/cellulardatausagemonitor.cpp
changeset 0 307788aac0a8
equal deleted inserted replaced
-1:000000000000 0:307788aac0a8
       
     1 /*
       
     2 * Copyright (c) 2004-2009 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:
       
    15 * Name          : cellulardatausagemonitor.cpp
       
    16 * Part of       : ConnectionMgr
       
    17 * See class definition below.
       
    18 */
       
    19 
       
    20 
       
    21 
       
    22 #include <centralrepository.h>
       
    23 #include "cellulardatausagemonitor.h"
       
    24 #include <cmmanagerkeys.h>
       
    25 #include <cmgenconnsettings.h>
       
    26 #include "SipLogs.h"
       
    27 
       
    28 // -----------------------------------------------------------------------------
       
    29 // CSipCellularDataUsageMonitor::NewLC
       
    30 // -----------------------------------------------------------------------------
       
    31 //
       
    32 CSipCellularDataUsageMonitor* CSipCellularDataUsageMonitor::NewL(MSipCellularDataUsageObserver & aObserver)
       
    33 {
       
    34 	CSipCellularDataUsageMonitor* self = new (ELeave) CSipCellularDataUsageMonitor(aObserver);
       
    35     CleanupStack::PushL(self);
       
    36     self->ConstructL();
       
    37     CleanupStack::Pop(self);
       
    38     return self;
       
    39 }
       
    40 
       
    41 // -----------------------------------------------------------------------------
       
    42 // CSipCellularDataUsageMonitor::CSipCellularDataUsageMonitor
       
    43 // -----------------------------------------------------------------------------
       
    44 //
       
    45 
       
    46 CSipCellularDataUsageMonitor::CSipCellularDataUsageMonitor(MSipCellularDataUsageObserver & aObserver) :
       
    47 	CActive(EPriorityStandard),
       
    48 	iObserver(aObserver)
       
    49 {
       
    50 	CActiveScheduler::Add(this);
       
    51 }
       
    52 	
       
    53 // -----------------------------------------------------------------------------
       
    54 // CSipCellularDataUsageMonitor::~CSipCellularDataUsageMonitor
       
    55 // -----------------------------------------------------------------------------
       
    56 //
       
    57 
       
    58 
       
    59 CSipCellularDataUsageMonitor::~CSipCellularDataUsageMonitor()
       
    60 {
       
    61 	Cancel();
       
    62 	delete iRepository;
       
    63 }
       
    64 
       
    65 // -----------------------------------------------------------------------------
       
    66 // CSipCellularDataUsageMonitor::DoCancel
       
    67 // -----------------------------------------------------------------------------
       
    68 //
       
    69 
       
    70 void CSipCellularDataUsageMonitor::DoCancel()
       
    71 {
       
    72 	if (iRepository)
       
    73 		{
       
    74 		iRepository->NotifyCancelAll();
       
    75 		}
       
    76 }
       
    77 
       
    78 // -----------------------------------------------------------------------------
       
    79 // CSipCellularDataUsageMonitor::ConstructL
       
    80 // -----------------------------------------------------------------------------
       
    81 //
       
    82 
       
    83 void CSipCellularDataUsageMonitor:: ConstructL()
       
    84 {
       
    85 iRepository = CRepository::NewL( KCRUidCmManager );
       
    86 //Current Usage Status;
       
    87 TInt iUsageStatus;
       
    88 iRepository->Get( KCurrentCellularDataUsage, iUsageStatus );
       
    89 __SIP_INT_LOG1( "CSipCellularDataUsageMonitor::ConstructL, Initial CenRepValue ", iUsageStatus )	
       
    90 SetCellularUsageStatus(iUsageStatus);
       
    91 MonitorStatus();
       
    92 }
       
    93 
       
    94 // -----------------------------------------------------------------------------
       
    95 // CSipCellularDataUsageMonitor::MonitorStatus
       
    96 // -----------------------------------------------------------------------------
       
    97 //
       
    98 
       
    99 void CSipCellularDataUsageMonitor::MonitorStatus()
       
   100 {
       
   101 __SIP_LOG( "CSipCellularDataUsageMonitor::MonitorStatus, Requesting Notify" )
       
   102 TInt err = iRepository->NotifyRequest( KCurrentCellularDataUsage, iStatus );
       
   103 SetActive();
       
   104 }
       
   105 
       
   106 // -----------------------------------------------------------------------------
       
   107 // CSipCellularDataUsageMonitor::RunL
       
   108 // -----------------------------------------------------------------------------
       
   109 //
       
   110 
       
   111 void CSipCellularDataUsageMonitor::RunL()
       
   112 {
       
   113 	__SIP_INT_LOG1( "CSipCellularDataUsageMonitor::RunL, Status ", iStatus.Int() )
       
   114 	if (iStatus.Int() >=  KErrNone)
       
   115 		{
       
   116 		TInt iUsageStatus;
       
   117 		TInt err = iRepository->Get( KCurrentCellularDataUsage, iUsageStatus );
       
   118 		__SIP_INT_LOG1( "CSipCellularDataUsageMonitor::RunL, Notified CenRepValue ", iUsageStatus )
       
   119 		SetCellularUsageStatus(iUsageStatus);
       
   120 		iObserver.CellularDataUsageChangedL(iPermissionStatus);
       
   121 		}
       
   122 
       
   123 	MonitorStatus();
       
   124 }
       
   125 
       
   126 // -----------------------------------------------------------------------------
       
   127 // CSipCellularDataUsageMonitor::RunError
       
   128 // -----------------------------------------------------------------------------
       
   129 //
       
   130 
       
   131 TInt CSipCellularDataUsageMonitor::RunError(TInt aError)
       
   132 {
       
   133 return aError;
       
   134 }
       
   135 
       
   136 // -----------------------------------------------------------------------------
       
   137 // CSipCellularDataUsageMonitor::CellularUsageStatus
       
   138 // -----------------------------------------------------------------------------
       
   139 //
       
   140 
       
   141 MSipCellularDataUsageObserver::TCellularDataUsageStatus CSipCellularDataUsageMonitor::CellularUsageStatus()
       
   142 {
       
   143 
       
   144 __SIP_INT_LOG1( "CSipCellularDataUsageMonitor::CellularUsageStatus, Status is ", iPermissionStatus )
       
   145 return iPermissionStatus;
       
   146 }
       
   147 
       
   148 // -----------------------------------------------------------------------------
       
   149 // CSipCellularDataUsageMonitor::SetCellularUsageStatus
       
   150 // -----------------------------------------------------------------------------
       
   151 //
       
   152 
       
   153 void CSipCellularDataUsageMonitor::SetCellularUsageStatus(TInt aVal)
       
   154 
       
   155 {
       
   156 if(aVal != ECmCellularDataUsageDisabled) 
       
   157 	{
       
   158 	// This means the connectivity Settings Value is set to either "Automatic" or "Always Ask" for  the current Network.
       
   159 		iPermissionStatus = MSipCellularDataUsageObserver::EDataUsageAllowed;
       
   160 	}
       
   161 else
       
   162 	{
       
   163 	// This means the connectivity Settings Value is set to "WLAN Only" for  the current Network.
       
   164 	iPermissionStatus = MSipCellularDataUsageObserver::EDataUsageNotAllowed;
       
   165 	}
       
   166 }