diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/public/usbncm.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/public/usbncm.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* 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 -@publishedPartner -*/ - -#ifndef USBNCM_H -#define USBNCM_H - -//INCLUDES -#include - -/** Defines the exported P&S key and data structure of the value. */ -namespace UsbNcm - { - /** The property's category UID. - * This property is to notify the NCM connection state. - */ - static const TUid KCatNcmSvrUid = {0x101F7989}; - - /** The property's sub-key.*/ - static const TUint KKeyNcmConnectionEvent = 0x2002C33F; - - - /** NCM connection state.*/ - enum TNcmConnectionState - { - ENcmStateDisconnected = 0, - ENcmStateConnected, - ENcmStateMax - }; - - /** - * Defines the NCM connection event, which contains the IapId, NCM connection state and corresponding error code. - * The NCM connection is a special one which can not only be used by RConnection, but also needed to monitor the P&S to fetch its state changing. - * Once the P&S published the ENcmStateConnected, the iIapId is also available for starting this connection. - * Otherwise, if the P&S published the ENcmStateDisconnected, the iErrCode should be checked to notify the failure reason: - * KErrNone, normally disconnected probably because of USB cable unpluged. - * KErrInUse, means the other component(currently, BtPan or RNDIS) hold the other P&S key so that the DHCP Provision can't be done by NCM. - * system-wide error code, please check Developer Library. - * It is also possible that this P&S key is deleted when fetching its value because of the NCM connection closed by its driver. - * - * @see below sample code. - */ - struct TNcmConnectionEvent - { - TUint32 iIapId; - TNcmConnectionState iState; - TInt iErrCode; - TUint8 reserved[20]; - }; - } // namespace UsbNcm - -/** - Example Usage: - @code - //header file. - #include - using namespace UsbNcm; - - CMySampleClass: public CActive - { - private: - RProperty iProperty; - RConnection iConnection; - TPckgBuf iNcmEvent; - RSocket iSocket; - } - @endcode - - @code - #include "mysampleclass.h" - - void CMySampleClass::ContructL() - { - User::LeaveIfError(iProperty.Attach(KCatNcmSvrUid, KKeyNcmConnectionEvent, EOwnerThread)); - - iProperty.Get(iNcmEvent); - if (ENcmStateConnected == iNcmEvent.iState) - { - TRequestStatus* pStatus = &iStatus; - iStatus = KRequestPending; - User::RequestComplete(pStatus, KErrNone); - } - else - { - iProperty.Subscribe(iStatus); - SetActive(); - } - } - - void CMySampleClass::RunL() - { - if (KErrNone == iStatus.Int()) - { - iProperty.Get(iNcmEvent); - - switch(iNcmEvent.iState) - { - case ENcmStateConnected: - StartConnection(); - break; - - case ENcmStateDisconnected: - if (KErrInUse == iNcmEvent.u.iErrCode) - { - //Show error UI with msg like "BtPan or Rndis is active, pls deactive it then re-try....", etc. - } - else - { - //Show error UI with other msg as you like. - //StopConnection(); - } - break; - } - } - } - - //Sample code, not all string in this panic show on. - LIT(KNotFoundNcm, "NotFoundPanic - The NCM connection was not found!"); - - TInt CMySampleClass::StartConnection() - { - //the number of connections. - TInt cnt = 0; - iConnection.EnumerateConnections(cnt); - - TInt index = 1; - for (index = 1; index <= cnt; index++) - { - TPckgBuf info; - iConnection.GetConnectionInfo(index, info); - if (info().iIapId == iNcmEvent.iIapId) - { - iConnection.Attach(info, RConnection::EAttachTypeNormal); - break; - } - } - __ASSERT_ALWAYS(index <= cnt, User::Panic(KErrNotFound, KNotFoundNcm)); - - TInt ret = iSocket.Open(...., iConnection); - //..... - return ret; - } - @endcode -*/ -#endif // USBNCM_H