usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclientmanager.h
author hgs
Thu, 16 Sep 2010 12:03:29 +0800
changeset 49 93c0009bd947
parent 28 f1fd07aa74c9
permissions -rw-r--r--
201036_01
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
/** @file
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    19
@internalComponent
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    20
*/
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    21
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    22
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    23
#ifndef NCMCLIENTMANAGER_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    24
#define NCMCLIENTMANAGER_H
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    25
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    26
#include <e32std.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    27
#include <e32base.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    29
#ifdef OVERDUMMY_NCMCC
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    30
#include <dummyusbsclddapi.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    31
#else
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    32
#include <d32usbcsc.h>
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    33
#endif // OVERDUMMY_NCMCC
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    34
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    35
#include "ncmcommon.h"
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    36
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    37
class RNcmInternalSrv;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    38
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    39
/**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    40
 * A class which encapsulates the operations related to USB shared chunk LDD
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    41
 */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    42
class CNcmClientManager : public CBase
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    43
    {
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    44
public:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    45
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    46
     * Constructor
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    47
     * @param[in]  aHostMacAddress, the NCM interface MAC address 
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    48
     *             which will be used to config.
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    49
     */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    50
    CNcmClientManager(const TNcmMacAddress& aHostMacAddress);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    51
    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    52
    ~CNcmClientManager();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    53
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    54
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    55
     * Setup NCM interfaces
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    56
     * @param[out]   aDataEpBufferSize, NCM data interface EP buffer size
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    57
     */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    58
    void SetNcmInterfacesL(TUint& aDataEpBufferSize);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    59
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    60
     * Transfer ownership of NCM interface handles to NCM internal 
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    61
     * server which is located in C32 process space
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    62
     * @param[in]   aServer, NCM internal server. 
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    63
     */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    64
    void TransferInterfacesL(RNcmInternalSrv& aServer);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    65
        
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    66
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    67
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    68
     * Setup NCM communication interface
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    69
     */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    70
    void SetCommunicationInterfaceL();
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    71
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    72
     * Setup NCM data interface
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    73
     * @param   aDataEpBufferSize, NCM data interface EP buffer size
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    74
     */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    75
    void SetDataInterfaceL(TUint& aDataEpBufferSize);
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    76
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    77
     * Setup NCM class specific descriptors
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    78
     * @param   aDataInterfaceNumber, NCM data interface number
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    79
     */
49
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    80
    TInt SetupClassSpecificDescriptor(TUint8 aControlInterfaceNumber, TUint8 aDataInterfaceNumber);
28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    81
    /**
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    82
     * Set NCM interface MAC address into NCM class specific descriptor
49
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    83
     * @param [out]   aStrIndex, the index of string which contains NCM 
28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    84
     *               interface MAC address 
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    85
     */
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    86
    TInt SetMacAddressString(TUint8& aStrIndex);
49
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    87
    
28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    88
    /**
49
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    89
     * Get interface number
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    90
     * @param aLdd The logic device driver which can be used to query for.
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    91
     * @param aSettingsNumber The alter settings for the interface
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    92
     * @param [out] aInterfaceNumber Carry out the interface bumber back to caller.
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    93
     * @return KErrNone If interface number is return via aInterfaceNumber.
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    94
     *                  Other system wide error code if anything went wrong.
28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    95
     */
49
93c0009bd947 201036_01
hgs
parents: 28
diff changeset
    96
    TInt InterfaceNumber(RDevUsbcScClient& aLdd,TInt aSettingsNumber,TUint8& aInterfaceNumber);
28
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    97
    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    98
private:
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
    99
    const TNcmMacAddress&   iHostMacAddress;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   100
    
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   101
    TBool                   iCommLddInitiated;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   102
    RDevUsbcScClient        iCommLdd;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   103
    TBool                   iDataLddInitiated;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   104
    RDevUsbcScClient        iDataLdd;
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   105
    };
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   106
f1fd07aa74c9 201025_08
hgs
parents:
diff changeset
   107
#endif // NCMCLIENTMANAGER_H