diff -r 7b872347d83b -r 6d0b9f605b61 convergedconnectionhandler/cchclientapi/src/cchserviceimpl.cpp --- a/convergedconnectionhandler/cchclientapi/src/cchserviceimpl.cpp Tue Feb 02 00:05:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,588 +0,0 @@ -/* -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Cch client api -* -*/ - - -// INCLUDE FILES -#include - -#include "cchserviceimpl.h" -#include "cchlogger.h" -#include "cchimpl.h" -#include "cchclientobserver.h" -#include "cchclientserverinternal.h" - -#ifdef CCHAPI_USE_CCHUI -#include "cchuiprivateapi.h" -#endif - -// EXTERNAL DATA STRUCTURES -// None - -// EXTERNAL FUNCTION PROTOTYPES -// None - -// CONSTANTS -// None - -// MACROS -// None - -// LOCAL CONSTANTS AND MACROS -// None - -// MODULE DATA STRUCTURES -// None - -// LOCAL FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// ============================= LOCAL FUNCTIONS ============================= - -// ============================ MEMBER FUNCTIONS ============================= - -// --------------------------------------------------------------------------- -// CCchServiceImpl::CCchServiceImpl -// C++ default constructor can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -// -CCchServiceImpl::CCchServiceImpl( CCchImpl& aCch, - TInt aServiceId, - CCchUiPrivateApi& aCchUi ) - : iCch( aCch ), - iServiceId( aServiceId ), - iCchUi( aCchUi ) - { - - } - -CCchServiceImpl::~CCchServiceImpl() - { - if( iObserver ) - { - RemoveObserver(); - } - delete iObserver; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::ConstructL -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -// -void CCchServiceImpl::ConstructL() - { - CCHLOGSTRING( "CCchServiceImpl::ConstructL: IN" ); - iObserver = CCchClientObserver::NewL( *this ); - CCHLOGSTRING( "CCchServiceImpl::ConstructL: OUT" ); - } -// --------------------------------------------------------------------------- -// CCchServiceImpl::NewL -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CCchServiceImpl* CCchServiceImpl::NewL( CCchImpl& aCch, - TInt aServiceId, - CCchUiPrivateApi& aCchUi ) - { - CCHLOGSTRING( "CCchServiceImpl::NewL: IN" ); - CCchServiceImpl* self = - CCchServiceImpl::NewLC( aCch, aServiceId, aCchUi ); - CleanupStack::Pop( self ); - CCHLOGSTRING( "CCchServiceImpl::NewL: OUT" ); - return self; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::NewLC -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CCchServiceImpl* CCchServiceImpl::NewLC( CCchImpl& aCch, TInt aServiceId, - CCchUiPrivateApi& aCchUi ) - { - CCHLOGSTRING( "CCchServiceImpl::NewLC: IN" ); - CCchServiceImpl* self = - new (ELeave) CCchServiceImpl( aCch, aServiceId, aCchUi ); - CleanupStack::PushL( self ); - self->ConstructL(); - CCHLOGSTRING( "CCchServiceImpl::NewLC: OUT" ); - return self; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::Enable -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::Enable( TCCHSubserviceType aType ) - { - CCHLOGSTRING( "CCchServiceImpl::Enable: IN" ); - - TRequestStatus status = KErrNone; - TServiceSelection selection( iServiceId, aType ); - iCch.CchClient().EnableService( selection, status, EFalse ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - CCHLOGSTRING( "CCchServiceImpl::Enable: OUT" ); - - if ( iCch.ConnectivityDialogsAllowed() ) - { - TRAPD( err, iCchUi.ManualEnableResultL( - iServiceId, status.Int() ) ); - - if( err != KErrNone ) - { - return KErrNotReady; - } - } - - return status.Int(); - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::Disable -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::Disable( TCCHSubserviceType aType ) - { - CCHLOGSTRING( "CCchServiceImpl::Disable: IN" ); - - TRequestStatus status = KErrNone; - TServiceSelection selection( iServiceId, aType ); - iCch.CchClient().DisableService( selection, status ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - CCHLOGSTRING( "CCchServiceImpl::Disable: OUT" ); - return status.Int(); - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::GetStatus -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::GetStatus( TCCHSubserviceType aType, - TCchServiceStatus& aStatus ) const - { - CCHLOGSTRING( "CCchServiceImpl::GetStatus: IN" ); - TCCHSubserviceState state( ECCHUninitialized ); - TServiceSelection selection( iServiceId, aType ); - TInt error = iCch.CchClient().GetServiceState( selection, state ); - //if this is a cch error, return it in the structure, otherwise in return - if( KCCHErrorInvalidIap >= error || KErrNone == error ) - { - aStatus.SetError( error ); - aStatus.SetState( state ); - error = KErrNone; - } - CCHLOGSTRING( "CCchServiceImpl::GetStatus: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::GetConnectionParameter -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::GetConnectionParameter( TCCHSubserviceType aType, - TCchConnectionParameter aParameter, TInt& aValue ) const - { - CCHLOGSTRING( "CCchServiceImpl::GetConnectionParameter: IN" ); - TRequestStatus status = KErrNone; - - switch( aParameter ) - { - case ECchIapId: - case ECchSnapId: - case ECchSnapLocked: - case ECchPasswordSet: - case ECchReserved: - { - TServiceSelection selection( iServiceId, aType, aParameter ); - TServiceConnectionInfo serviceConnInfo; - TPckgBuf serviceConnInfoPckg; - - iCch.CchClient().GetConnectionInfo( selection, - serviceConnInfoPckg, status ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - if ( KErrNone == status.Int() ) - { - serviceConnInfo = serviceConnInfoPckg(); - if( ECchSnapId == aParameter ) - { - aValue = serviceConnInfo.iSNAPId; - } - else if( ECchIapId == aParameter ) - { - aValue = serviceConnInfo.iIapId; - } - else if( ECchSnapLocked == aParameter ) - { - aValue = serviceConnInfo.iSNAPLocked; - } - else if( ECchPasswordSet == aParameter ) - { - aValue = serviceConnInfo.iPasswordSet; - } - else if( ECchReserved == aParameter ) - { - aValue = serviceConnInfo.iReserved; - } - } - } - break; - default: - { - status = KErrArgument; - } - break; - } - - CCHLOGSTRING( "CCchServiceImpl::GetConnectionParameter: OUT" ); - return status.Int(); - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::SetConnectionParameter -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::SetConnectionParameter( TCCHSubserviceType aType, - TCchConnectionParameter aParameter, TInt aValue ) - { - CCHLOGSTRING( "CCchServiceImpl::SetConnectionParameter: IN" ); - TPckgBuf serviceConnInfoPckg; - TRequestStatus status = KErrNone; - TInt error = KErrNone; - - switch( aParameter ) - { - case ECchIapId: - case ECchSnapId: - case ECchReserved: - { - serviceConnInfoPckg().SetServiceId( iServiceId ); - serviceConnInfoPckg().SetType( aType ); - if( ECchSnapId == aParameter ) - { - serviceConnInfoPckg().iSNAPId = aValue; - } - else if ( ECchIapId == aParameter ) - { - serviceConnInfoPckg().iIapId = aValue; - } - else if ( ECchReserved == aParameter ) - { - serviceConnInfoPckg().SetParameter( aParameter ); - serviceConnInfoPckg().iReserved = aValue; - } - else - { - return KErrArgument; - } - iCch.CchClient().SetConnectionInfo( serviceConnInfoPckg, status ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - error = status.Int(); - } - break; - case ECchSnapLocked: - case ECchPasswordSet: - { - error = KErrNotSupported; - } - break; - default: - { - error = KErrArgument; - } - break; - } - - CCHLOGSTRING( "CCchServiceImpl::SetConnectionParameter: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::GetConnectionParameters -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::GetConnectionParameter( TCCHSubserviceType aType, - TCchConnectionParameter aParameter, RBuf& aValue ) const - { - CCHLOGSTRING( "CCchServiceImpl::GetConnectionParameter: IN" ); - TServiceSelection selection( iServiceId, aType, aParameter ); - TRequestStatus status = KErrNone; - TInt error = KErrNone; - - switch( aParameter ) - { - case ECchServiceInfo: - { - error = iCch.CchClient().GetServiceInfo( selection, aValue ); - } - break; - - case ECchUsername: - { - TServiceConnectionInfo serviceConnInfo; - TPckgBuf serviceConnInfoPckg; - - iCch.CchClient().GetConnectionInfo( selection,serviceConnInfoPckg, status ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - - serviceConnInfo = serviceConnInfoPckg(); - aValue = serviceConnInfo.iUsername; - } - break; - case ECchPassword: - { - error = KErrNotSupported; - } - break; - default: - { - error = KErrArgument; - } - break; - } - - CCHLOGSTRING( "CCchServiceImpl::GetConnectionParameter: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::SetConnectionParameters -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::SetConnectionParameter( TCCHSubserviceType aType, - TCchConnectionParameter aParameter, const TDesC& aValue ) - { - CCHLOGSTRING( "CCchServiceImpl::SetConnectionParameter: IN" ); - CCHLOGSTRING2( " aValue: %S", &aValue ); - - // Type of subservice has to be ECCHUnknown for username and password - __ASSERT_ALWAYS( aType == ECCHUnknown, - User::Panic( KNullDesC, KErrArgument ) ); - - TPckgBuf serviceConnInfoPckg; - TRequestStatus status = KErrNone; - TInt error = KErrNone; - - switch( aParameter ) - { - case ECchUsername: - { - serviceConnInfoPckg().SetServiceId( iServiceId ); - serviceConnInfoPckg().SetType( aType ); - serviceConnInfoPckg().SetParameter( aParameter ); - - if ( aValue.Length() < KCCHMaxUsernameLength ) - { - serviceConnInfoPckg().iUsername.Append( aValue ); - - iCch.CchClient().SetConnectionInfo( serviceConnInfoPckg, status ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - error = status.Int(); - } - else - { - error = KErrArgument; - } - } - break; - case ECchPassword: - { - serviceConnInfoPckg().SetServiceId( iServiceId ); - serviceConnInfoPckg().SetType( aType ); - serviceConnInfoPckg().SetParameter( aParameter ); - if ( aValue.Length() < KCCHMaxPasswordLength ) - { - serviceConnInfoPckg().iPassword.Append( aValue ); - - iCch.CchClient().SetConnectionInfo( serviceConnInfoPckg, status ); - //even the cchclient api seems to be asynchronous, - //this method is completed immediately - User::WaitForRequest( status ); - error = status.Int(); - } - else - { - error = KErrArgument; - } - } - break; - default: - { - error = KErrArgument; - } - break; - } - - CCHLOGSTRING( "CCchServiceImpl::SetConnectionParameter: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::Reserve -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::Reserve( TCCHSubserviceType aType ) - { - CCHLOGSTRING( "CCchServiceImpl::Reserve: IN" ); - TServiceSelection selection( iServiceId, aType ); - TInt error = iCch.CchClient().ReserveService( selection ); - CCHLOGSTRING( "CCchServiceImpl::Reserve: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::Free -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::Free( TCCHSubserviceType aType ) - { - CCHLOGSTRING( "CCchServiceImpl::Free: IN" ); - TServiceSelection selection( iServiceId, aType ); - TInt error = iCch.CchClient().FreeService( selection ); - CCHLOGSTRING( "CCchServiceImpl::Free: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::IsReserved -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::IsReserved( TCCHSubserviceType aType, - TBool& aReserved ) const - { - CCHLOGSTRING( "CCchServiceImpl::IsReserved: IN" ); - TServiceSelection selection( iServiceId, aType ); - aReserved = iCch.CchClient().IsReserved( selection ); - CCHLOGSTRING( "CCchServiceImpl::IsReserved: OUT" ); - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::ServiceId -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::ServiceId() const - { - CCHLOGSTRING( "CCchServiceImpl::ServiceId: IN" ); - return iServiceId; - } - -// --------------------------------------------------------------------------- -// CCchServiceImpl::IsSupported -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::IsSupported( TCCHSubserviceType aType, - TBool& aSupported ) const - { - CCHLOGSTRING( "CCchServiceImpl::IsSupported: IN" ); - TCCHSubserviceState state( ECCHUninitialized ); - TServiceSelection selection( iServiceId, aType ); - TInt error = iCch.CchClient().GetServiceState( selection, state ); - if( error == KErrNone || - error <= KCCHErrorInvalidIap ) // cch errors are ok - { - aSupported = ETrue; - } - else - { - aSupported = EFalse; - } - - CCHLOGSTRING( "CCchServiceImpl::IsSupported: OUT" ); - return error; - } - -// --------------------------------------------------------------------------- -// CCchClientObserver::SetObserver -// --------------------------------------------------------------------------- -// -void CCchServiceImpl::SetObserver( MCchServiceStatusObserver& aObserver ) - { - CCHLOGSTRING( "CCchServiceImpl::SetObserver: IN - deprecated - do not use this anymore " ); - iObserver->SetObserver( aObserver ); - CCHLOGSTRING( "CCchServiceImpl::SetObserver: OUT - deprecated - do not use this anymore " ); - } - -// --------------------------------------------------------------------------- -// CCchClientObserver::RemoveObserver -// --------------------------------------------------------------------------- -// -void CCchServiceImpl::RemoveObserver( ) - { - CCHLOGSTRING( "CCchServiceImpl::RemoveObserver: IN - deprecated - do not use this anymore " ); - iObserver->RemoveObserver( ); - CCHLOGSTRING( "CCchServiceImpl::RemoveObserver: OUT - deprecated - do not use this anymore " ); - } - -// --------------------------------------------------------------------------- -// CCchClientObserver::AddObserver -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::AddObserver( - MCchServiceStatusObserver& aObserver ) - { - CCHLOGSTRING( "CCchServiceImpl::AddObserver: IN" ); - TInt err = iObserver->AddObserver( aObserver ); - CCHLOGSTRING( "CCchServiceImpl::AddObserver: OUT" ); - - return err; - } - -// --------------------------------------------------------------------------- -// CCchClientObserver::RemoveObserver -// --------------------------------------------------------------------------- -// -TInt CCchServiceImpl::RemoveObserver( - MCchServiceStatusObserver& aObserver ) - { - CCHLOGSTRING( "CCchServiceImpl::RemoveObserver: IN" ); - TInt err = iObserver->RemoveObserver( aObserver ); - CCHLOGSTRING( "CCchServiceImpl::RemoveObserver: OUT" ); - - return err; - } - - -// --------------------------------------------------------------------------- -// CCchClientObserver::CchImpl -// --------------------------------------------------------------------------- -// -CCchImpl* CCchServiceImpl::CchImpl() const - { - return &iCch; - } - - - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - - -// End of File