usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.h
author hgs
Wed, 07 Jul 2010 14:16:40 +0800
changeset 28 f1fd07aa74c9
permissions -rw-r--r--
201025_08
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     1
/*
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     3
* All rights reserved.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     8
*
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
     9
* Initial Contributors:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    11
*
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    12
* Contributors:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    13
*
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    14
* Description:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    15
*
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    16
*/
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    17
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    18
/**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    19
@file
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    20
@internalComponent
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    21
*/
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    22
#ifndef NCMENGINE_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    23
#define NCMENGINE_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    24
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    25
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    26
#ifndef __OVER_DUMMYUSBSCLDD__
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    27
#include <es_mbuf.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    28
#else
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    29
#include <usb/testncm/ethinter.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    30
#endif
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    31
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    32
#include <random.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    33
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    34
#include "ncmpktdrvcommon.h"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    35
#include "ncmcommunicationinterface.h"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    36
#include "ncmdatainterface.h"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    37
#include "ncmsharedstatemanager.h"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    38
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    39
class CNcmPktDrv;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    40
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    41
/**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    42
NCM Engine: coordinate with Data Interface, Comm Interface and Shared State Manager.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    43
*/
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    44
NONSHARABLE_CLASS(CNcmEngine) : public CActive,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    45
                                public MNcmDataObserver,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    46
                                public MNcmControlObserver,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    47
                                public MShareStateObserver
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    48
    {
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    49
public:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    50
    static CNcmEngine* NewL(CNcmPktDrv& aPktDrv);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    51
    ~CNcmEngine();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    52
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    53
    //Start the engine, called by TransferHandle after PktDrvBase's StartInterface;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    54
    TInt Start(RMessagePtr2& aMsg);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    55
    //Stop the engine, called by PktDrvBase's StopInterface;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    56
    void Stop();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    57
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    58
    //Send a Packet to USB Host.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    59
    TInt Send(RMBufChain &aPacket);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    60
    //Get the Interface Mac Address;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    61
    TUint8* InterfaceAddress();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    62
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    63
    //From MNcmControlObserver
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    64
    TInt HandleSetNtbInputSize(TDes8&);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    65
    TInt HandleGetNtbParam(TDes8&);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    66
    TInt HandleGetNtbInputSize(TDes8&);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    67
    void ControlError(TInt aError);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    68
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    69
    //From MNcmDataObserver
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    70
    void ProcessReceivedDatagram(RMBufPacket&);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    71
    void ResumeSending();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    72
    void DataError(TInt aError);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    73
    void HandleAltSetting(TInt aIfNum);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    74
    TInt SetInEpBufferSize(TUint aSize);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    75
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    76
    //From MShareStateObserver
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    77
    void NotifyDhcpStarted();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    78
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    79
    inline TInt SetStateToWatcher(TInt aType, TInt aValue) const;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    80
    inline TInt RegisterNotify(const RMessage2& aMsg) const;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    81
    inline TInt DeRegisterNotify() const;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    82
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    83
#ifdef __OVER_DUMMYUSBSCLDD__
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    84
public:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    85
    TInt State() const {return iEngineState;}
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    86
#endif
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    87
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    88
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    89
    //From CActive
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    90
    void RunL();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    91
    void DoCancel();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    92
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    93
    CNcmEngine();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    94
    CNcmEngine(CNcmPktDrv& aPktDrv);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    95
    void ConstructL();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    96
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    97
    void InitLddL(const RMessagePtr2& aMsg);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    98
    void RandomMacAddressL(TNcmMacAddress& aMacAddress);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    99
    void DoNcmStarted();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   100
    void StartDataLayer();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   101
    void StopDataLayer();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   102
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   103
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   104
    enum TNcmEngineState
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   105
        {
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   106
        ENcmStateUninitialized = 0,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   107
        ENcmStateStarting,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   108
        ENcmStateStarted,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   109
        ENcmStatePaused,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   110
        ENcmStateStopped,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   111
        ENcmStateMax
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   112
        };
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   113
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   114
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   115
    CNcmPktDrv&             iPktDrv;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   116
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   117
    CNcmDataInterface*      iDataInterface;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   118
    CNcmCommunicationInterface* iCommInterface;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   119
    CNcmSharedStateManager* iSharedStateManager;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   120
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   121
    TNcmEngineState         iEngineState;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   122
    TUint                   iDeviceState;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   123
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   124
    TNcmMacAddress          iSymbianMacAddress;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   125
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   126
    RDevUsbcScClient        iDataLdd;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   127
    RDevUsbcScClient        iCommLdd;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   128
    };
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   129
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   130
//inline functions
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   131
#include "ncmengine.inl"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   132
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   133
#endif // NCMENGINE_H