usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcomminterfacesenderandreceiver.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
* header file of class for read and write data from share chunk LDD 
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
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    20
/**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    21
@file
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    22
@internalComponent
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    23
*/
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    24
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    25
#ifndef NCMCOMMINTERFACESENDERANDRECEIVER_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    26
#define NCMCOMMINTERFACESENDERANDRECEIVER_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    27
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    28
#include <e32base.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    29
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    30
#ifndef __OVER_DUMMYUSBSCLDD__
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    31
#include <d32usbcsc.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    32
#else
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    33
#include <dummyusbsclddapi.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    34
#endif
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    35
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    36
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    37
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    38
class CNcmCommunicationInterface;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    39
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    40
/**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    41
Responsible for sending and receiving data on Control Endpoint
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    42
*/
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    43
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    44
NONSHARABLE_CLASS(CNcmCommInterfaceSenderAndReceiver) : public CActive
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    45
    {
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    46
public:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    47
    static CNcmCommInterfaceSenderAndReceiver* NewL(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aCommInterface);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    48
    ~CNcmCommInterfaceSenderAndReceiver();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    49
    void Start();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    50
    void Stop();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    51
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    52
    * read aLength data from LDD
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    53
    *
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    54
    * @param aStatus complete status for this request.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    55
    * @param aBuf buffer to store data.    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    56
    * @param aLength length to read.    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    57
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    58
    TInt Read(TRequestStatus& aStatus, TDes8& aBuf, TInt aLength);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    59
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    60
    * write aLength data to LDD
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    61
    *
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    62
    * @param aStatus complete status for this request.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    63
    * @param aBuf buffer of data.    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    64
    * @param aLength length to write.    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    65
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    66
    TInt Write(TRequestStatus& aStatus, TDesC8& aBuf, TInt aLength);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    67
    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    68
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    69
    enum TNcmControlEndpointState
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    70
        {
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    71
        EUnInit = 1,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    72
        EIdle,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    73
        EReceiving,
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    74
        ESending        
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    75
        };
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    76
    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    77
    CNcmCommInterfaceSenderAndReceiver(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aCommInterface);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    78
    void ReadData();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    79
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    80
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    81
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    82
    *  derived from CActive
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    83
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    84
    void RunL();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    85
    void DoCancel();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    86
    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    87
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    88
    RDevUsbcScClient&               iPort;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    89
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    90
    *  LDD control endpoint buffer
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    91
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    92
    TEndpointBuffer                 iEp0Buffer;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    93
    CNcmCommunicationInterface&     iCommInterface;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    94
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    95
    *  point to buffer to store data of Read function, this is not ownership
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    96
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    97
    TDes8*                          iReceiveBuf;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    98
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    99
    *  length of data left to be read from LDD for a Read request
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   100
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   101
    TInt                            iToReceiveLength;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   102
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   103
    *  complete status for Read and Write function, this is not ownership
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   104
    */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   105
    TRequestStatus*                 iCompleteStatus;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   106
    TNcmControlEndpointState        iState;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   107
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   108
    };
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   109
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   110
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   111
#endif //NCMCOMMINTERFACESENDERANDRECEIVER_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   112