imstutils/imconnectionprovider/src/cicpplugin.cpp
changeset 0 5e5d6b214f4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imstutils/imconnectionprovider/src/cicpplugin.cpp	Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,368 @@
+/*
+* Copyright (c) 2008 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:  implementation for  CIcpPlugin
+*
+*/
+
+
+#include "cicpplugin.h"
+
+#include <ecom.h>
+#include <implementationproxy.h>
+#include <e32debug.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <apgtask.h>
+#include <w32std.h>
+
+#include "cicpservicemanager.h"
+#include "icplogger.h"
+#include "imconnectionprovideruids.hrh"
+#include "cicpservicerequest.h"
+
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CIcpPlugin::ConstructL()
+    {
+    ICPLOGSTRING( "CIcpPlugin::ConstructL" );
+
+    iServiceManager = CIcpServiceManager::NewL( iServiceObserver );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::CIcpPlugin()
+// -----------------------------------------------------------------------------
+//
+CIcpPlugin::CIcpPlugin( MCchServiceObserver& serviceObserver ) :
+    iServiceObserver( serviceObserver )
+    {
+	}
+
+	
+// -----------------------------------------------------------------------------
+// CIcpPlugin::NewL
+// -----------------------------------------------------------------------------
+//
+CIcpPlugin* CIcpPlugin::NewL( TAny* aParam )
+	{
+    ICPLOGSTRING2( "CIcpPlugin::NewL aParam: 0x%x", aParam );
+    __ASSERT_DEBUG( aParam, User::Panic( KNullDesC, KErrGeneral ) );
+
+    MCchServiceObserver& serviceObserver = *((MCchServiceObserver*)(aParam)); 
+
+    CIcpPlugin* self = new ( ELeave ) CIcpPlugin( serviceObserver );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::~CIcpPlugin
+// -----------------------------------------------------------------------------
+//
+CIcpPlugin::~CIcpPlugin()
+	{
+	delete iServiceManager;
+	}
+  
+// -----------------------------------------------------------------------------
+// CIcpPlugin::EnableServiceL
+// -----------------------------------------------------------------------------
+//
+void CIcpPlugin::EnableServiceL( const TServiceSelection& aServiceSelection )
+    {
+    ICPLOGSTRING3( "CIcpPlugin::EnableServiceL service id: %d type: %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType );
+	
+	iServiceManager->EnableServiceL( aServiceSelection.iServiceId, 
+                                    aServiceSelection.iType );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::EnableServiceL
+// -----------------------------------------------------------------------------
+//
+void CIcpPlugin::EnableServiceL( const TServiceSelection& aServiceSelection,
+                                 TUint aIapId )
+    {
+    ICPLOGSTRING4( "CIcpPlugin::EnableServiceL service id: %d type: %d iap id: %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType, aIapId );
+
+	
+	iServiceManager->EnableServiceL( aServiceSelection.iServiceId, 
+	                                     aServiceSelection.iType, 
+	                                     aIapId );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::DisableServiceL
+// -----------------------------------------------------------------------------
+//
+void CIcpPlugin::DisableServiceL( const TServiceSelection& aServiceSelection )
+    {
+    ICPLOGSTRING3( "CIcpPlugin::DisableServiceL service id: %d type: %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType );
+	
+	iServiceManager->DisableServiceL( aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType );
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::IsAvailableL
+// -----------------------------------------------------------------------------
+//
+TBool CIcpPlugin::IsAvailableL( const TServiceSelection& aServiceSelection,
+                                const RArray<TUint32>& aIapIdArray ) const
+    {
+    ICPLOGSTRING3( "CIcpPlugin::IsAvailableL service id: %d type: %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType );
+
+    return iServiceManager->IsAvailableL( aServiceSelection.iServiceId, 
+                                        aServiceSelection.iType, aIapIdArray );
+    }
+ 
+// -----------------------------------------------------------------------------
+// CIcpPlugin::GetServiceState
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::GetServiceState( const TServiceSelection& aServiceSelection, 
+                                  TCCHSubserviceState& aState ) const
+    {
+    ICPLOGSTRING3( "CIcpPlugin::GetServiceState service id: %d type: %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType );
+
+    return iServiceManager->GetServiceState( aServiceSelection.iServiceId, 
+                                            aServiceSelection.iType, aState );
+    }
+    
+// -----------------------------------------------------------------------------
+// CIcpPlugin::GetServiceNetworkInfo
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::GetServiceNetworkInfo( TServiceConnectionInfo& aConnectionInfo ) const
+    {
+    TServiceSelection& selection = aConnectionInfo.iServiceSelection;
+
+    ICPLOGSTRING3( "CIcpPlugin::GetServiceNetworkInfo service id: %d type: %d",
+                   selection.iServiceId, selection.iType );
+    TInt returnval = 0;
+    //TRAP_IGNORE to remove the codescanner high warning
+    TRAP_IGNORE(returnval = iServiceManager->GetServiceNetworkInfoL( selection.iServiceId,
+                                                   selection.iType,
+                                                   aConnectionInfo.iSNAPId,
+                                                   aConnectionInfo.iIapId,
+                                                   aConnectionInfo.iSNAPLocked,
+                                                   aConnectionInfo.iPasswordSet));
+    return returnval;
+    }
+    
+// -----------------------------------------------------------------------------
+// CIcpPlugin::SetSnapId
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::SetSnapId( const TServiceSelection& aServiceSelection,
+                            TUint aSnapId )
+    {
+    ICPLOGSTRING4( "CIcpPlugin::SetSnapId service id: %d type: %d Snap %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType, aSnapId );
+
+    return iServiceManager->SetSnapId( aServiceSelection.iServiceId, 
+                                       aServiceSelection.iType, 
+                                       aSnapId );
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::SetIapId
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::SetIapId( const TServiceSelection& aServiceSelection,
+                           TUint aIapId )
+    {
+    ICPLOGSTRING4( "CIcpPlugin::SetIapId service id: %d type: %d iap id %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType, aIapId );
+
+    return iServiceManager->SetIapId( aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType, 
+                                      aIapId );
+    }
+    
+// -----------------------------------------------------------------------------
+// CIcpPlugin::GetServiceInfo
+// -----------------------------------------------------------------------------
+//
+void CIcpPlugin::GetServiceInfoL( const TServiceSelection& aServiceSelection,
+                                  RBuf& aBuffer ) const
+    {
+    ICPLOGSTRING3( "CIcpPlugin::GetServiceInfoL service id: %d type: %d",
+                   aServiceSelection.iServiceId, aServiceSelection.iType );
+
+    iServiceManager->GetServiceInfoL( aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType, 
+                                      aBuffer );
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::ReserveService
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::ReserveService( const TServiceSelection& aServiceSelection )
+    {
+    return iServiceManager->SetServiceReserved( ETrue,
+                                                aServiceSelection.iServiceId, 
+                                                aServiceSelection.iType ); 
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::FreeService
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::FreeService( const TServiceSelection& aServiceSelection )
+    {
+    return iServiceManager->SetServiceReserved( EFalse,
+                                                aServiceSelection.iServiceId, 
+                                                aServiceSelection.iType );
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::IsReserved
+// -----------------------------------------------------------------------------
+//
+TBool CIcpPlugin::IsReserved( const TServiceSelection& aServiceSelection ) const
+    {
+    return iServiceManager->IsReserved( aServiceSelection.iServiceId, 
+                                        aServiceSelection.iType );
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::ServiceStateChanged
+// -----------------------------------------------------------------------------
+//
+void CIcpPlugin::ServiceStateChanged( 
+    const TUint aServiceId,
+    const TCCHSubserviceType aSubService,
+    TCCHSubserviceState aState,
+    TInt aError )
+    {
+    
+    // State of the service changed. Notify observer.
+    iServiceObserver.ServiceStateChanged( 
+                    TServiceSelection( aServiceId, aSubService ), 
+                    aState,
+                    aError );
+    
+    }
+    
+// -----------------------------------------------------------------------------
+// CIcpPlugin::GetConnectionParameter
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::GetConnectionParameter( 
+                         const TServiceSelection& aServiceSelection,
+                         TCchConnectionParameter aParameter,
+                         TInt& aValue ) const
+    {
+    return iServiceManager->GetConnectionParameter(
+   									  aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType,
+                                      aParameter,
+                                      aValue
+                                       ) ;
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::GetConnectionParameter
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::GetConnectionParameter(const TServiceSelection& aServiceSelection, 
+                                        TCchConnectionParameter aParameter,
+                                        RBuf& aValue  ) const
+    {
+  	TRAPD(error, iServiceManager->GetConnectionParameterL(
+   									  aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType,
+                                      aParameter,
+                                      aValue
+                                       )) ;
+	return error;                                       
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::SetConnectionParameter
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::SetConnectionParameter(  const TServiceSelection& aServiceSelection, 
+                                            TCchConnectionParameter aParameter,
+                                            TInt aValue )
+    {
+   	return iServiceManager->SetConnectionParameter(
+   									  aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType,
+                                      aParameter,
+                                      aValue
+                                       ) ;
+    }
+
+// -----------------------------------------------------------------------------
+// CIcpPlugin::SetConnectionParameter
+// -----------------------------------------------------------------------------
+//
+TInt CIcpPlugin::SetConnectionParameter( const TServiceSelection& aServiceSelection, 
+                                            TCchConnectionParameter aParameter,
+                                            const TDesC& aValue )
+    {
+   	TRAPD(error, iServiceManager->SetConnectionParameterL(
+   									  aServiceSelection.iServiceId, 
+                                      aServiceSelection.iType,
+                                      aParameter,
+                                      aValue
+                                       )) ;
+	return error;                                       
+    }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+//
+// Rest of the file is for ECom initialization. 
+//
+
+// Map the interface UIDs
+const TImplementationProxy ImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( KIMConnectivityPluginImplUid, CIcpPlugin::NewL )
+    };
+
+
+// -----------------------------------------------------------------------------
+// ImplementationGroupProxy implements for ECom
+// Exported proxy for instantiation method resolution
+// Returns: ImplementationTable
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
+    return ImplementationTable;
+    }
+
+// End of file
+