usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.h Wed Jul 07 14:16:40 2010 +0800
@@ -0,0 +1,133 @@
+/*
+* 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 NCMENGINE_H
+#define NCMENGINE_H
+
+
+#ifndef __OVER_DUMMYUSBSCLDD__
+#include <es_mbuf.h>
+#else
+#include <usb/testncm/ethinter.h>
+#endif
+
+#include <random.h>
+
+#include "ncmpktdrvcommon.h"
+#include "ncmcommunicationinterface.h"
+#include "ncmdatainterface.h"
+#include "ncmsharedstatemanager.h"
+
+class CNcmPktDrv;
+
+/**
+NCM Engine: coordinate with Data Interface, Comm Interface and Shared State Manager.
+*/
+NONSHARABLE_CLASS(CNcmEngine) : public CActive,
+ public MNcmDataObserver,
+ public MNcmControlObserver,
+ public MShareStateObserver
+ {
+public:
+ static CNcmEngine* NewL(CNcmPktDrv& aPktDrv);
+ ~CNcmEngine();
+
+ //Start the engine, called by TransferHandle after PktDrvBase's StartInterface;
+ TInt Start(RMessagePtr2& aMsg);
+ //Stop the engine, called by PktDrvBase's StopInterface;
+ void Stop();
+
+ //Send a Packet to USB Host.
+ TInt Send(RMBufChain &aPacket);
+ //Get the Interface Mac Address;
+ TUint8* InterfaceAddress();
+
+ //From MNcmControlObserver
+ TInt HandleSetNtbInputSize(TDes8&);
+ TInt HandleGetNtbParam(TDes8&);
+ TInt HandleGetNtbInputSize(TDes8&);
+ void ControlError(TInt aError);
+
+ //From MNcmDataObserver
+ void ProcessReceivedDatagram(RMBufPacket&);
+ void ResumeSending();
+ void DataError(TInt aError);
+ void HandleAltSetting(TInt aIfNum);
+ TInt SetInEpBufferSize(TUint aSize);
+
+ //From MShareStateObserver
+ void NotifyDhcpStarted();
+
+ inline TInt SetStateToWatcher(TInt aType, TInt aValue) const;
+ inline TInt RegisterNotify(const RMessage2& aMsg) const;
+ inline TInt DeRegisterNotify() const;
+
+#ifdef __OVER_DUMMYUSBSCLDD__
+public:
+ TInt State() const {return iEngineState;}
+#endif
+
+private:
+ //From CActive
+ void RunL();
+ void DoCancel();
+
+ CNcmEngine();
+ CNcmEngine(CNcmPktDrv& aPktDrv);
+ void ConstructL();
+
+ void InitLddL(const RMessagePtr2& aMsg);
+ void RandomMacAddressL(TNcmMacAddress& aMacAddress);
+ void DoNcmStarted();
+ void StartDataLayer();
+ void StopDataLayer();
+
+private:
+ enum TNcmEngineState
+ {
+ ENcmStateUninitialized = 0,
+ ENcmStateStarting,
+ ENcmStateStarted,
+ ENcmStatePaused,
+ ENcmStateStopped,
+ ENcmStateMax
+ };
+
+private:
+ CNcmPktDrv& iPktDrv;
+
+ CNcmDataInterface* iDataInterface;
+ CNcmCommunicationInterface* iCommInterface;
+ CNcmSharedStateManager* iSharedStateManager;
+
+ TNcmEngineState iEngineState;
+ TUint iDeviceState;
+
+ TNcmMacAddress iSymbianMacAddress;
+
+ RDevUsbcScClient iDataLdd;
+ RDevUsbcScClient iCommLdd;
+ };
+
+//inline functions
+#include "ncmengine.inl"
+
+#endif // NCMENGINE_H