diff -r 000000000000 -r 63b37f68c1ce connectivitylayer/usbphonetlink/usbpnserver_exe/src/cusbpnalt.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectivitylayer/usbphonetlink/usbpnserver_exe/src/cusbpnalt.cpp Fri Nov 06 17:28:23 2009 +0000 @@ -0,0 +1,242 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + +// INCLUDE FILES +#include "cusbpnalt.h" +#include "usbpndefinitions.h" // For constants +#include "usbpntrace.h" +#include "musbpnaltobserver.h" + +#include "osttracedefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "cusbpnaltTraces.h" +#endif + +#include // For RDevUsbcClient +#include // For RIscApi +#ifndef NCP_COMMON_BRIDGE_FAMILY +#include // For SOS USB Media Module Message constants +#include // For TIsiSend +#include // For PhoNet definitions +#include // For resources +#include // For media control +#endif /* NCP_COMMON_BRIDGE_FAMILY */ + +// EXTERNAL DATA STRUCTURES +// EXTERNAL FUNCTION PROTOTYPES +// CONSTANTS +// MACROS +// LOCAL CONSTANTS AND MACROS +// MODULE DATA STRUCTURES +// LOCAL FUNCTION PROTOTYPES +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CUsbPnAlt::CUsbPnAlt +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CUsbPnAlt::CUsbPnAlt( MUsbPnAltObserver& aAltObserver, RDevUsbcClient& aLdd, RIscApi& aIscApi ) + :CActive( CActive::EPriorityStandard ) + ,iAltObserver( aAltObserver ) + ,iLdd( aLdd ) + ,iIscApi( aIscApi ) + { + OstTrace1( TRACE_NORMAL, CUSBPNALT_CUSBPNALT_ENTRY, "CUsbPnAlt::CUsbPnAlt;aAltObserver=%x", ( TUint )&( aAltObserver ) ); + C_TRACE( ( _T( "CUsbPnAlt::CUsbPnAlt( aAltObserver 0x%x )" ), &aAltObserver ) ); + + CActiveScheduler::Add(this); + + OstTrace0( TRACE_NORMAL, CUSBPNALT_CUSBPNALT_EXIT, "CUsbPnAlt::CUsbPnAlt - return" ); + C_TRACE( ( _T( "CUsbPnAlt::CUsbPnAlt() - return" ) ) ); + } + + +// ----------------------------------------------------------------------------- +// CUsbPnAlt::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CUsbPnAlt* CUsbPnAlt::NewL( MUsbPnAltObserver& aAltObserver, RDevUsbcClient& aLdd, RIscApi& aIscApi ) + { + OstTrace1( TRACE_NORMAL, CUSBPNALT_NEWL_ENTRY, "CUsbPnAlt::NewL;aAltObserver=%x", ( TUint )&( aAltObserver ) ); + C_TRACE( ( _T( "CUsbPnAlt::NewL( aAltObserver 0x%x )" ), &aAltObserver ) ); + + CUsbPnAlt* self = new( ELeave ) CUsbPnAlt( aAltObserver, aLdd, aIscApi ); + + OstTrace1( TRACE_NORMAL, CUSBPNALT_NEWL_EXIT, "CUsbPnAlt::NewL - return;self=%x", self ); + C_TRACE( ( _T( "CUsbPnAlt::NewL() - return 0x%x" ), self ) ); + return self; + } + + +// Destructor +CUsbPnAlt::~CUsbPnAlt() + { + OstTrace0( TRACE_NORMAL, CUSBPNALT_CUSBPNALT_DESTRUCTOR_ENTRY, "CUsbPnAlt::~CUsbPnAlt" ); + C_TRACE( ( _T( "CUsbPnAlt::~CUsbPnAlt()" ) ) ); + + Cancel(); + + OstTrace0( TRACE_NORMAL, CUSBPNALT_CUSBPNALT_DESTRUCTOR_EXIT, "CUsbPnAlt::~CUsbPnAlt - return" ); + C_TRACE( ( _T( "CUsbPnAlt::~CUsbPnAlt() - return" ) ) ); + } + + +// ----------------------------------------------------------------------------- +// CUsbPnAlt::ListenStateChange +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUsbPnAlt::ListenStateChange( ) + { + OstTrace0( TRACE_NORMAL, CUSBPNALT_LISTENSTATECHANGE_ENTRY, "CUsbPnAlt::ListenStateChange" ); + C_TRACE( ( _T( "CUsbPnAlt::ListenStateChange()" ) ) ); + + iLdd.AlternateDeviceStatusNotify( iStatus, iState ); + SetActive(); + + OstTrace0( TRACE_NORMAL, CUSBPNALT_LISTENSTATECHANGE_EXIT, "CUsbPnAlt::ListenStateChange - return void" ); + C_TRACE( ( _T( "CUsbPnAlt::ListenStateChange() - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CUsbPnAlt::DoCancel +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUsbPnAlt::DoCancel( ) + { + OstTrace0( TRACE_NORMAL, CUSBPNALT_DOCANCEL_ENTRY, "CUsbPnAlt::DoCancel" ); + C_TRACE( ( _T( "CUsbPnAlt::DoCancel()" ) ) ); + + iLdd.AlternateDeviceStatusNotifyCancel(); + + OstTrace0( TRACE_NORMAL, CUSBPNALT_DOCANCEL_EXIT, "CUsbPnAlt::DoCancel - return void" ); + C_TRACE( ( _T( "CUsbPnAlt::DoCancel() - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CUsbPnAlt::RunL +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUsbPnAlt::RunL( ) + { + OstTrace1( TRACE_API, CUSBPNALT_RUNL_ENTRY, "CUsbPnAlt::RunL;iStatus=%d", iStatus.Int() ); + A_TRACE( ( _T( "CUsbPnAlt::RunL() iStatus:%d" ), iStatus.Int() ) ); + + User::LeaveIfError( iStatus.Int() ); +#ifndef NCP_COMMON_BRIDGE_FAMILY + // Check and send control messages. + if( !( iState & KUsbAlternateSetting ) ) // KUsbAlternateSetting bit is not set. + { + switch( iState ) + { + case EUsbcDeviceStateAddress: + { + OstTrace0( TRACE_API, CUSBPNALT_RUNL_DUP1, "CUsbPnAlt::RunL - EUsbcDeviceStateAddress" ); + A_TRACE( ( _T( "CUsbPnAlt::RunL - EUsbcDeviceStateAddress"))); + SendControlMessage( PNS_USB_CABLE_PLUGGED ); + break; + } + case EUsbcDeviceStateConfigured: + { + OstTrace0( TRACE_API, CUSBPNALT_RUNL_DUP2, "CUsbPnAlt::RunL - EUsbcDeviceStateConfigured" ); + A_TRACE( ( _T( "CUsbPnAlt::RunL - EUsbcDeviceStateConfigured"))); + SendControlMessage( PNS_USB_CONNECTED ); + break; + } + case EUsbcDeviceStateUndefined: + { + OstTrace0( TRACE_API, CUSBPNALT_RUNL_DUP3, "CUsbPnAlt::RunL - EUsbcDeviceStateUndefined" ); + A_TRACE( ( _T( "CUsbPnAlt::RunL - EUsbcDeviceStateUndefined"))); + SendControlMessage( PNS_USB_CABLE_UNPLUGGED ); + break; + } + } + } +#endif /* NCP_COMMON_BRIDGE_FAMILY */ + iAltObserver.HandleDeviceStateChange( iState ); + + iLdd.AlternateDeviceStatusNotify( iStatus, iState ); + SetActive(); + + OstTrace0( TRACE_API, CUSBPNALT_RUNL_EXIT, "CUsbPnAlt::RunL - return void"); + A_TRACE( ( _T( "CUsbPnAlt::RunL() - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CUsbPnAlt::RunError +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CUsbPnAlt::RunError( TInt aError ) + { + OstTrace1( TRACE_NORMAL, CUSBPNALT_RUNERROR_ENTRY, "CUsbPnAlt::RunError;aError=%d", aError ); + C_TRACE( ( _T( "CUsbPnAlt::RunError( aError:%d )" ), aError ) ); + TRACE_ASSERT_ALWAYS; + User::Panic( KUsbPnPanicCat, aError ); + OstTrace1( TRACE_NORMAL, CUSBPNALT_RUNERROR_EXIT, "CUsbPnAlt::RunError - return;aError=%d", aError ); + C_TRACE( ( _T( "CUsbPnAlt::RunError() return - aError:%d )" ), aError ) ); + return aError; + } + +#ifndef NCP_COMMON_BRIDGE_FAMILY +// ----------------------------------------------------------------------------- +// CUsbPnAlt::SendControlMessage +// ?implementation_description +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUsbPnAlt::SendControlMessage( const TUint8 aId ) const + { + C_TRACE( ( _T( "CUsbPnAlt::SendControlMessage( aId:%d )" ), aId ) ); + OstTrace0( TRACE_API, CUSBPNALT_SENDCONTROLMESSAGE_DUP1, "CUsbPnAlt::SendControlMessage( aId )" ); + + TBuf8< SIZE_PNS_MEDIA_SPECIFIC_REQ > buf; + TIsiSend ctrlMsg(buf, 12 ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_SENDERDEVICE, PN_DEV_PC ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_MEDIA_CONTROL ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_RECEIVEROBJECT, PN_OBJ_ROUTER ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_TRANSID, 0x00 ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_MESSAGEID, PNS_MEDIA_SPECIFIC_REQ ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_SUBMESSAGEID, PN_MEDIA_USB ); + ctrlMsg.Set8bit( ISI_HEADER_OFFSET_SUBMESSAGEID + 1, aId ); + ctrlMsg.Complete(); + + C_TRACE( ( _T( "CUsbPnAlt::SendControlMessage() - Sending...") ) ); + OstTrace0( TRACE_API, CUSBPNALT_SENDCONTROLMESSAGE_DUP2, "CUsbPnAlt::SendControlMessage() - Sending..." ); + iIscApi.Send( buf ); + + C_TRACE( ( _T( "CUsbPnAlt::SendControlMessage() - return void") ) ); + OstTrace0( TRACE_API, CUSBPNALT_SENDCONTROLMESSAGE_DUP3, "CUsbPnAlt::SendControlMessage() - return void" ); + } + +#endif /* NCP_COMMON_BRIDGE_FAMILY */ + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// End of File