usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanager.h
branchRCL_3
changeset 15 f92a4f87e424
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanager.h	Tue Aug 31 17:01:47 2010 +0300
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+/** @file
+@internalComponent
+*/
+
+#ifndef NCMCONNECTIONMANAGER_H
+#define NCMCONNECTIONMANAGER_H
+
+#ifdef OVERDUMMY_NCMCC
+#include <usb/testncmcc/dummy_essock.h>
+#include <usb/testncmcc/dummy_insock.h>
+#include <usb/testncmcc/dummy_nifman.h>
+#else
+#include <es_sock.h>
+#include <in_sock.h> 
+#include <nifman.h>
+#include <commdbconnpref.h>
+#endif // OVERDUMMY_NCMCC
+
+#include <e32property.h>
+#include "ncmcommon.h"
+#include "ncmiapprogressstateobserver.h"
+#include "ncmiapconnectionobserver.h"
+#include "ncmdhcpnotifobserver.h"
+#include "ncmiapreaderobserver.h"
+
+
+class MNcmConnectionManagerObserver;
+class CNcmIapProgressWatcher;
+class CNcmConnectionManHelper;
+class CNcmDhcpNotifWatcher;
+class CNcmIapReader;
+class RNcmInternalSrv;
+
+/**
+ * CNcmConnectionManager to control ncm networking interface
+ * It handles:
+ *  1 Searching NCM IAP
+ *  2 Start NCM connection
+ *  3 IAP progress notification
+ *  4 DHCP provisioning request from NCM internal server
+ */
+NONSHARABLE_CLASS(CNcmConnectionManager) : public CBase,
+										public MNcmIapProgressStateObserver,
+										public MNcmConnectionObserver,
+										public MNcmDhcpNotificationObserver,
+										public MNcmIAPReaderObserver
+	{
+public:
+    /**
+     * Constructs a CNcmConnectionManager object.
+     * @param[in]   aOwner, NCM connection observer
+     * @param[in]   aHostMacAddress, the NCM interface MAC address
+     * @param[in]   aDataBufferSize, the EndPoint buffer size
+     * @param[in]   aNcmInternalSvr, the NCM internal server
+     * @return      Ownership of a new CNcmConnectionManager object
+     */ 
+	static CNcmConnectionManager* NewL(MNcmConnectionManagerObserver& aOwner,
+            const TNcmMacAddress& aMacAddress, TUint aDataBufferSize,
+            RNcmInternalSrv&   aNcmInternalSvr);
+	~CNcmConnectionManager();
+	
+    /**
+     * Start NCM connection
+     * @param aStatus complete status for this request.
+     */
+	void Start(TRequestStatus& aStatus);
+	
+    /**
+     * Cancel starting of NCM connection 
+     */
+	void StartCancel();
+    
+    /**
+     * Stop NCM connection 
+     */
+	void Stop();
+	
+	// From MIapPorgressStateObserver
+	virtual void MipsoHandleClassFatalError(TInt aError);
+	
+	// From MNcmConnectionObserver
+	virtual void MicoHandleConnectionComplete(TInt aError);
+	
+	// From MNcmDhcpNotificationObserver
+	virtual void MdnoHandleDhcpNotification(TInt aError);
+	
+	// From MNcmIAPReaderObserver
+	virtual void MicoHandleIAPReadingComplete(TInt aError);
+
+private:
+    /**
+     * Two-phase construction: phase 1
+     * @param[in]   aObserver, NCM connection observer
+     * @param[in]   aHostMacAddress, the NCM interface MAC address
+     * @param[in]   aDataBufferSize, the EndPoint buffer size
+     * @param[in]   aNcmInternalSvr, the NCM internal server
+     */ 
+	CNcmConnectionManager(MNcmConnectionManagerObserver& aObserver, 
+	        const TNcmMacAddress& aHostMacAddress, TUint aDataBufferSize,
+            RNcmInternalSrv&   aNcmInternalSvr);
+	/**
+	 * Two-phase construction: phase 2
+	 */
+	void ConstructL();
+	
+	/**
+	 * Reset NCM connection manager
+	 */
+    void Reset();
+    
+    /*
+     * Change default MTU size on NCM connection
+     */
+    void SetCustomMtuL();
+    
+    /*
+     * Handle NCM connection building completion 
+     */
+	void HandleConnectionCompleteL();
+	
+private:
+	// Owned.
+	CNcmIapProgressWatcher*       iIapPrgrsWatcher;
+	CNcmConnectionManHelper*      iConnManHelper;
+	CNcmDhcpNotifWatcher*         iDhcpNotifWatcher;
+	CNcmIapReader*                iIapReader;
+
+	// Not own.
+	TRequestStatus* 					iReportStatus;
+	
+	MNcmConnectionManagerObserver& 		iConnMgrObserver;
+	
+	// RSocketServ used for starting NCM IAP and configuring DHCP and NAPT, owned
+	RSocketServ							iSocketServ;
+
+	// RConnection used for starting NCM IAP and configuring DHCP server, owned
+	RConnection							iConnection;
+    
+    TCommDbConnPref                     iConnPref;
+
+	RProperty 							iProperty;
+	TBool 								iConnComplete;
+	
+    const TNcmMacAddress&               iHostMacAddress;
+    const TUint                         iDataBufferSize;
+    RNcmInternalSrv&                    iNcmInternalSvr;
+};
+
+#endif // NCMCONNECTIONMANAGER_H