diff -r 086aae6fc07e -r f7816ffc66ed alwayson_net_plugin/pdpcontextmanager2/src/caoserver.cpp --- a/alwayson_net_plugin/pdpcontextmanager2/src/caoserver.cpp Mon Jan 18 20:33:49 2010 +0200 +++ b/alwayson_net_plugin/pdpcontextmanager2/src/caoserver.cpp Tue Jan 26 12:12:48 2010 +0200 @@ -18,6 +18,7 @@ // INCLUDE FILES #include +#include #include "caoserver.h" #include "caoconnectionmanager.h" @@ -179,6 +180,7 @@ delete iPointerStatePool; } + delete iCenRepObserver; delete iGpds; delete iRAUManager; delete iTimer; @@ -227,6 +229,8 @@ #endif // __ALWAYS_ON_CUSTOM_API iGpds = CAOGpds::NewL( iCustomAPI ); + + iCenRepObserver = CAOCenRepObserver::NewL( *this ); InitStatePoolL(); @@ -935,6 +939,37 @@ } } +// --------------------------------------------------------------------------- +// CAOServer::CurrentCellularDataUsageChanged +// --------------------------------------------------------------------------- +// +void CAOServer::CurrentCellularDataUsageChangedL( const TInt aValue ) + { + LOG_1( _L("CAOServer::CurrentCellularDataUsageChanged") ); + LOG_2( _L("> Current state: %S"), + &StateToDesC( CurrentState()->StateName() ) ); + + if ( aValue != ECmCellularDataUsageDisabled ) + { + TAOState* newState = NULL; + + if ( CurrentState()->StateName() == TAOState::EStateDisabled ) + { + newState = iCurrentState->HandleEnableAlwaysOnL(); + } + else + { + // Behaviour is the same as if unconnect timer had expired + iTimer->StopUnconnectTimer(); + newState = iCurrentState->HandleUnconnectTimerExpiredL(); + + if( newState ) + { + iCurrentState = newState; + } + } + } + } // --------------------------------------------------------------------------- // CAOServer::InitStatePoolL