--- a/usbengines/usbotgwatcher/src/cusbotgwatcher.cpp Fri Feb 19 23:50:33 2010 +0200
+++ b/usbengines/usbotgwatcher/src/cusbotgwatcher.cpp Fri Mar 12 15:48:40 2010 +0200
@@ -1,48 +1,42 @@
/*
-* Copyright (c) 2008-2009 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: Implementation
+ * Copyright (c) 2008-2009 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: Implementation
+ *
+ */
#include <usbpersonalityids.h>
#include <usbuinotif.h>
#include <UsbWatcherInternalPSKeys.h>
-
#include "cusbotgwatcher.h"
#include "cusbstate.h"
-
#include "cusbstatehostainitiate.h"
#include "cusbstatehostahost.h"
#include "cusbstatehostaperipheral.h"
-#include "cusbstatehostaidle.h"
#include "cusbstatehosthandle.h"
#include "cusbstatehostdelayhandle.h"
+#include "cusbstatehostdelayattachedhandle.h"
+#include "cusbstatehostdelaynotattachedhandle.h"
+#include "cusbstatehosthandledropping.h"
#include "cusbstatehostundefined.h"
-
#include "cusbwarningnotifier.h"
-
#ifndef STIF
#include "cusbnotifmanager.h"
#else
#include "mockcusbnotifmanager.h"
#endif
-
#include "errors.h"
#include "debug.h"
#include "panic.h"
-
_LIT_SECURITY_POLICY_PASS( KAlwaysPassPolicy );
_LIT_SECURITY_POLICY_C1( KLocalServicesPolicy, ECapabilityLocalServices );
@@ -51,9 +45,10 @@
// ---------------------------------------------------------------------------
//
CUsbOtgWatcher::CUsbOtgWatcher(RUsb& aUsbMan) :
- iUsb(aUsbMan), iPersonalityId(KUsbPersonalityIdMTP)
+ iUsb(aUsbMan), iPersonalityId(KUsbPersonalityIdMTP), iUsbServiceRequest(
+ CUsbServiceControl::ERequestUndefined)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::CUsbOtgWatcher" ) );
+ LOG_FUNC
}
// ---------------------------------------------------------------------------
@@ -62,32 +57,35 @@
//
void CUsbOtgWatcher::ConstructL()
{
-
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::ConstructL" ) );
+ LOG_FUNC
#ifdef _DEBUG
SelfTestL();
#endif
#ifndef STIF
- User::LeaveIfError(RProperty::Define( KPSUidUsbWatcher,
- KUsbWatcherIsPeripheralConnected, RProperty::EInt, KAlwaysPassPolicy,
- KLocalServicesPolicy ) );
+ User::LeaveIfError(RProperty::Define(KPSUidUsbWatcher,
+ KUsbWatcherIsPeripheralConnected, RProperty::EInt,
+ KAlwaysPassPolicy, KLocalServicesPolicy));
- User::LeaveIfError( RProperty::Set( KPSUidUsbWatcher,
+ User::LeaveIfError(RProperty::Set(KPSUidUsbWatcher,
KUsbWatcherIsPeripheralConnected,
- KUsbWatcherPeripheralIsNotConnected ) );
+ KUsbWatcherPeripheralIsNotConnected));
#endif
-
- iUsbServiceControl = CUsbServiceControl::NewL(this, iUsb);
+
+ iUsbServiceControl = CUsbServiceControl::NewL(*this, iUsb);
- User::LeaveIfError(iStates.Append(CUsbStateHostUndefined::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAInitiate::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAHost::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAPeripheral::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAIdle::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostHandle::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostDelayHandle::NewL(this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostUndefined::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostAInitiate::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostAHost::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostAPeripheral::NewL(*this)));
+
+ User::LeaveIfError(iStates.Append(CUsbStateHostDelayAttachedHandle::NewL(
+ *this)));
+ User::LeaveIfError(iStates.Append(
+ CUsbStateHostDelayNotAttachedHandle::NewL(*this)));
+ User::LeaveIfError(iStates.Append(
+ CUsbStateHostHandleDropping::NewL(*this)));
iIdPinObserver = CUsbIdPinObserver::NewL();
iVBusObserver = CUsbVBusObserver::NewL();
@@ -97,12 +95,12 @@
&iUsb);
iMessageNotificationObserver = CUsbMessageNotificationObserver::NewL(
&iUsb);
-
+
iHostState = iStates[EUsbStateHostUndefined];
-
+
// Notif manager must be created at least after VBus observer and iHostState initialization
// to allow USb indicator subscribe to its notifications at construction and check their's current states
- iNotifManager = CUsbNotifManager::NewL(this);
+ iNotifManager = CUsbNotifManager::NewL(*this);
iVBusObserver->SubscribeL(*this);
iOtgStateObserver->SubscribeL(*this);
@@ -136,7 +134,7 @@
//
EXPORT_C CUsbOtgWatcher* CUsbOtgWatcher::NewL(RUsb& aUsbMan)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::NewL" ) );
+ LOG_FUNC
CUsbOtgWatcher* self = new (ELeave) CUsbOtgWatcher(aUsbMan);
CleanupStack::PushL(self);
@@ -151,41 +149,41 @@
//
CUsbOtgWatcher::~CUsbOtgWatcher()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::~CUsbOtgWatcher" ) );
-
+ LOG_FUNC
+
#ifndef STIF
- RProperty::Delete( KPSUidUsbWatcher, KUsbWatcherIsPeripheralConnected );
+ RProperty::Delete(KPSUidUsbWatcher, KUsbWatcherIsPeripheralConnected);
#endif
-
+
// delete Notif manager before VBus observer, due to USB indicator observes VBus
delete iNotifManager;
-
- if(iIdPinObserver)
+
+ if (iIdPinObserver)
{
TRAP_IGNORE(iIdPinObserver->UnsubscribeL(*this));
}
-
- if(iVBusObserver)
+
+ if (iVBusObserver)
{
TRAP_IGNORE(iVBusObserver->UnsubscribeL(*this));
}
- if(iOtgStateObserver)
+ if (iOtgStateObserver)
{
TRAP_IGNORE(iOtgStateObserver->UnsubscribeL(*this));
}
- if(iBusActivityObserver)
+ if (iBusActivityObserver)
{
TRAP_IGNORE(iBusActivityObserver->UnsubscribeL(*this));
}
- if(iHostEventNotificationObserver)
+ if (iHostEventNotificationObserver)
{
TRAP_IGNORE(iHostEventNotificationObserver->UnsubscribeL(*this));
}
- if(iMessageNotificationObserver)
+ if (iMessageNotificationObserver)
{
TRAP_IGNORE(iMessageNotificationObserver->UnsubscribeL(*this));
}
-
+
delete iIdPinObserver;
delete iVBusObserver;
delete iOtgStateObserver;
@@ -194,11 +192,11 @@
delete iMessageNotificationObserver;
iOtgStateObservers.Close();
-
+
// Destroy states
iStates.ResetAndDestroy();
iStates.Close();
-
+
delete iUsbServiceControl;
iUsb.Close();
@@ -212,8 +210,9 @@
void CUsbOtgWatcher::SetPersonalityL(TRequestStatus& /*aStatus*/,
TInt aPersonality)
{
+ LOG_FUNC
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SetPersonalityL aPersonality = %d" ), aPersonality));
+ LOG1( "aPersonality = %d" , aPersonality);
// watcher keeps this value, no need to pass it to request object
// state can read it from watcher when needed
@@ -233,7 +232,7 @@
//
void CUsbOtgWatcher::CancelSetPersonalityL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::CancelSetPersonalityL" ) );
+ LOG_FUNC
iState->CancelSetPersonalityL();
}
@@ -244,7 +243,7 @@
//
void CUsbOtgWatcher::SetPreviousPersonalityL(TRequestStatus& /*aStatus*/)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SetPreviousPersonalityL" ) );
+ LOG_FUNC
// maybe more complex processing needed here
iState->SetPreviousPersonalityL();
@@ -256,7 +255,7 @@
//
void CUsbOtgWatcher::SetPreviousPersonalityL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SetPreviousPersonalityL" ) );
+ LOG_FUNC
iState->SetPreviousPersonalityL();
}
@@ -267,7 +266,7 @@
//
void CUsbOtgWatcher::CancelSetPreviousPersonalityL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::CancelSetPreviousPersonalityL" ) );
+ LOG_FUNC
iState->CancelSetPreviousPersonalityL();
}
@@ -278,7 +277,7 @@
//
void CUsbOtgWatcher::SetPreviousPreviousPersonalityOnDisconnectL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SetPreviousPreviousPersonalityOnDisconnectL" ) );
+ LOG_FUNC
}
@@ -289,19 +288,22 @@
//
void CUsbOtgWatcher::StartSessionL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::StartSessionL" ) );
+ LOG_FUNC
if (!CanStartSessionL())
{
- HandleHostProblemL(EUsbWatcherErrorInConnection, EUsbStateHostHandle);
+ HandleHostProblemL(EUsbWatcherCanNotStartSession,
+ EUsbStateHostHandleDropping);
return;
}
+ iUsbServiceRequest = CUsbServiceControl::EStartUsbService;
TInt err = iUsbServiceControl->StartL(iPersonalityId);
if (KErrNone != err)
{
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::StartSessionL Can not start usb services. reason = %d" ), err));
- HandleHostProblemL(EUsbWatcherCanNotStartUsbServices, EUsbStateHostHandle);
+ LOG1( "Can not start usb services. err = %d" , err);
+ HandleHostProblemL(EUsbWatcherCanNotStartUsbServices,
+ EUsbStateHostHandleDropping);
return;
}
@@ -314,9 +316,10 @@
//
// ---------------------------------------------------------------------------
//
-void CUsbOtgWatcher::HandleHostProblemL(TInt aWhatKindOf, TUsbStateIds aInState )
+void CUsbOtgWatcher::HandleHostProblemL(TInt aWhatKindOf,
+ TUsbStateIds aInState)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::HandleProblemL" ) );
+ LOG_FUNC
HostHandle(aInState)->SetWhat(aWhatKindOf);
ChangeHostStateL(aInState);
}
@@ -327,7 +330,7 @@
//
void CUsbOtgWatcher::IdPinOnL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOnL" ) );
+ LOG_FUNC
StartSessionL();
}
@@ -337,26 +340,24 @@
//
void CUsbOtgWatcher::IdPinOffL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL" ) );
+ LOG_FUNC
ChangeHostStateL(EUsbStateHostUndefined);
iNotifManager->CloseAllNotifiers();
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL Before DisableFunctionDriverLoad " ) );
Usb().DisableFunctionDriverLoading();
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL Before TryStop" ) );
+ iUsbServiceRequest = CUsbServiceControl::EStopUsbService;
+ TInt err = iUsbServiceControl->StopL();
- TInt err = iUsbServiceControl->StopL();
+ LOG1( "iUsbServiceControl->Stop() err = %d", err );
if (KErrNone != err)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOnL ErrorStoppingUsbServices" ) );
+ LOG( "ErrorStoppingUsbServices" );
Panic(ECanNotStopUsbServices);
}
-
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinOffL iUsbServiceControl->Stop() OK" ) );
}
// ---------------------------------------------------------------------------
@@ -365,9 +366,8 @@
//
void CUsbOtgWatcher::IdPinErrorL(TInt aError)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::IdPinErrorL" ) );
- __ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
- HandleHostProblemL(EUsbWatcherIdPinError, EUsbStateHostHandle);
+ __ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
+ HandleHostProblemL(EUsbWatcherIdPinError, EUsbStateHostHandleDropping);
}
@@ -378,7 +378,6 @@
//
void CUsbOtgWatcher::VBusDownL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::VBusDownL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->VBusDownL();
}
@@ -389,7 +388,6 @@
//
void CUsbOtgWatcher::VBusUpL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::VBusUpL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->VBusUpL();
}
@@ -400,9 +398,9 @@
//
void CUsbOtgWatcher::VBusObserverErrorL(TInt aError)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::VBusObserverErrorL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
- HandleHostProblemL(EUsbWatcherVBusObserverError, EUsbStateHostHandle);
+ HandleHostProblemL(EUsbWatcherVBusObserverError,
+ EUsbStateHostHandleDropping);
}
// From OTG state observer
@@ -412,7 +410,6 @@
//
void CUsbOtgWatcher::AIdleL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::AIdleL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->AIdleL();
}
@@ -423,7 +420,6 @@
//
void CUsbOtgWatcher::AHostL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::AHostL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->AHostL();
}
@@ -434,7 +430,6 @@
//
void CUsbOtgWatcher::APeripheralL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::APeripheralL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->APeripheralL();
}
@@ -445,7 +440,6 @@
//
void CUsbOtgWatcher::AVBusErrorL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::AVBusErrorL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->AVBusErrorL();
}
@@ -456,7 +450,6 @@
//
void CUsbOtgWatcher::BIdleL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BIdleL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->BIdleL();
}
@@ -467,7 +460,6 @@
//
void CUsbOtgWatcher::BPeripheralL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BPeripheralL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->BPeripheralL();
}
@@ -478,7 +470,6 @@
//
void CUsbOtgWatcher::BHostL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BHostL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->BHostL();
}
@@ -489,9 +480,8 @@
//
void CUsbOtgWatcher::OtgStateErrorL(TInt aError)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::OtgStateErrorL" ) );
-__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
-HandleHostProblemL(EUsbWatcherOtgStateError, EUsbStateHostHandle);
+ __ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
+ HandleHostProblemL(EUsbWatcherOtgStateError, EUsbStateHostHandleDropping);
}
// From bus activity observer
@@ -501,7 +491,6 @@
//
void CUsbOtgWatcher::BusIdleL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BusIdleL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->BusIdleL();
}
@@ -512,7 +501,6 @@
//
void CUsbOtgWatcher::BusActiveL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BusActiveL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->BusActiveL();
}
@@ -523,7 +511,6 @@
//
void CUsbOtgWatcher::BusActivityErrorL(TInt aError)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BusActivityErrorL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
// no action, continue
}
@@ -535,7 +522,6 @@
//
void CUsbOtgWatcher::DeviceAttachedL(TDeviceEventInformation aTdi)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::DeviceAttachedL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->DeviceAttachedL(aTdi);
}
@@ -546,7 +532,6 @@
//
void CUsbOtgWatcher::DeviceDetachedL(TDeviceEventInformation aTdi)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::DeviceDetachedL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->DeviceDetachedL(aTdi);
}
@@ -557,7 +542,6 @@
//
void CUsbOtgWatcher::DriverLoadSuccessL(TDeviceEventInformation aTdi)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::DriverLoadSuccessL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->DriverLoadSuccessL(aTdi);
}
@@ -568,7 +552,6 @@
//
void CUsbOtgWatcher::DriverLoadPartialSuccessL(TDeviceEventInformation aTdi)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::DriverLoadPartialSuccessL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->DriverLoadPartialSuccessL(aTdi);
}
@@ -579,7 +562,6 @@
//
void CUsbOtgWatcher::DriverLoadFailureL(TDeviceEventInformation aTdi)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::DriverLoadFailureL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->DriverLoadFailureL(aTdi);
}
@@ -590,9 +572,9 @@
//
void CUsbOtgWatcher::HostEventNotificationErrorL(TInt aError)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::HostEventNotificationErrorL" ) );
-__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
-HandleHostProblemL(EUsbWatcherHostEventNotificationError, EUsbStateHostHandle);
+ __ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
+ HandleHostProblemL(EUsbWatcherHostEventNotificationError,
+ EUsbStateHostHandleDropping);
}
// From message notification observer
@@ -602,7 +584,6 @@
//
void CUsbOtgWatcher::MessageNotificationReceivedL(TInt aMessage)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::MessageNotificationReceivedL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->MessageNotificationReceivedL(aMessage);
}
@@ -613,7 +594,6 @@
//
void CUsbOtgWatcher::BadHubPositionL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::BadHubPositionL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->BadHubPositionL();
}
@@ -624,7 +604,6 @@
//
void CUsbOtgWatcher::VBusErrorL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::VBusErrorL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->VBusErrorL();
}
@@ -635,7 +614,6 @@
//
void CUsbOtgWatcher::SrpReceivedL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SrpReceivedL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->SrpReceivedL();
}
@@ -646,7 +624,6 @@
//
void CUsbOtgWatcher::SessionRequestedL()
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SessionRequestedL" ) );
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
iHostState->SessionRequestedL();
}
@@ -657,9 +634,9 @@
//
void CUsbOtgWatcher::MessageNotificationErrorL(TInt aError)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::MessageNotificationErrorL" ) );
- __ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
- HandleHostProblemL(EUsbWatcherMessageNotificationError, EUsbStateHostHandle);
+ __ASSERT_DEBUG(iHostState != NULL, Panic(EBadHostState));
+ HandleHostProblemL(EUsbWatcherMessageNotificationError,
+ EUsbStateHostHandleDropping);
}
// ---------------------------------------------------------------------------
@@ -760,9 +737,8 @@
//
CUsbStateHostHandle* CUsbOtgWatcher::HostHandle(TUsbStateIds aInState) const
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::HostHandle" ) );
__ASSERT_DEBUG(iStates[aInState] != NULL, Panic(EBadState));
-
+
return (CUsbStateHostHandle*) iStates[aInState];
}
@@ -772,20 +748,13 @@
//
void CUsbOtgWatcher::ChangeStateL(TUsbStateIds aNewStateId)
{
+ LOG_FUNC
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::ChangeStateL aNewState = %d" ), aNewStateId));
+ LOG1( "aNewState = %d" , aNewStateId);
if (NULL != iState)
{
- if (aNewStateId == iState->Id())
- {
- return; // we already in the target state
- }
- else
- {
-
- iState->JustBeforeLeavingThisStateL();
- }
+ iState->JustBeforeLeavingThisStateL();
}
// sets new state
@@ -809,20 +778,13 @@
//
void CUsbOtgWatcher::ChangeHostStateL(TUsbStateIds aNewStateId)
{
+ LOG_FUNC
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::ChangeHostStateL aNewState = %d" ), aNewStateId));
+ LOG1( "aNewState = %d", aNewStateId);
if (NULL != iHostState)
{
- if (aNewStateId == iHostState->Id())
- {
- return; // we already in the target state
- }
- else
- {
-
- iHostState->JustBeforeLeavingThisStateL();
- }
+ iHostState->JustBeforeLeavingThisStateL();
}
// set new state
@@ -837,7 +799,7 @@
__ASSERT_DEBUG(iHostState != NULL, Panic(EBadState));
iHostState->JustAdvancedToThisStateL(); // checks if there are conditions for advancing to another state(s)
-
+
// notify state change to observers
for (TInt i(0); i < iOtgStateObservers.Count(); ++i)
{
@@ -861,18 +823,19 @@
//
void CUsbOtgWatcher::PrintStateToLog()
{
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::PrintStateToLog IdPin = %d" ), iIdPinObserver->IdPin()));
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::PrintStateToLog VBus = %d" ), iVBusObserver->VBus()));
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::PrintStateToLog OtgState = %d" ), iOtgStateObserver->OtgState()));
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::PrintStateToLog BusActivity = %d" ), iBusActivityObserver->BusActivity()));
-
- TInt isPeripheralConnected(KUsbWatcherPeripheralIsNotConnected);
-
- RProperty::Get( KPSUidUsbWatcher, KUsbWatcherIsPeripheralConnected,
- isPeripheralConnected );
-
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::PrintStateToLog IsPeripheralConnected = %d" ), isPeripheralConnected));
-
+ LOG1( "Current state id = %d" , iHostState->Id());
+ LOG1( "IdPin = %d" , iIdPinObserver->IdPin());
+ LOG1( "VBus = %d" , iVBusObserver->VBus());
+ LOG1( "OtgState = %d" , iOtgStateObserver->OtgState());
+ LOG1( "BusActivity = %d" , iBusActivityObserver->BusActivity());
+
+ TInt isPeripheralConnected(KUsbWatcherPeripheralIsNotConnected);
+
+ RProperty::Get(KPSUidUsbWatcher, KUsbWatcherIsPeripheralConnected,
+ isPeripheralConnected);
+
+ LOG1( "IsPeripheralConnected = %d" , isPeripheralConnected);
+
}
// ---------------------------------------------------------------------------
@@ -890,38 +853,46 @@
//
void CUsbOtgWatcher::UsbServiceControlReqCompletedL(TInt aError)
{
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompleted Error returned by UsbServiceControl = %d" ), aError));
-
- switch(aError)
- {
- case KErrInUse:
- // usb services already started (this might happen if more than one idpin on event come)
- {
- return;
- }
-
- case KErrNone:
+ LOG_FUNC
+
+ LOG1( "aError = %d" , aError);
+
+ switch (aError)
{
- break; // do normal routine
+ case KErrInUse:
+ // usb services already started (this might happen if more than one idpin on event come)
+ {
+ return;
+ }
+
+ case KErrNone:
+ {
+ break; // do normal routine
+ }
+
+ default: // handle the issue
+ {
+ if (iUsbServiceRequest == CUsbServiceControl::EStartUsbService) // Handle only start issues
+ {
+ HandleHostProblemL(EUsbWatcherCanNotStartUsbServices,
+ EUsbStateHostHandleDropping);
+ }
+
+ iUsbServiceRequest = CUsbServiceControl::ERequestUndefined;
+ return;
+ }
}
-
- default: // handle the issue
- {
- if(IsDeviceA()) // if there is no cable, give up
- {
- HandleHostProblemL(EUsbWatcherCanNotStartUsbServices, EUsbStateHostHandle);
- }
- return;
- }
- }
+
+ iUsbServiceRequest = CUsbServiceControl::ERequestUndefined;
TUsbServiceState serviceState;
TInt err = iUsb.GetServiceState(serviceState);
if (KErrNone != err)
{
- FTRACE( FPrint(_L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompleted Error when requesting GetServiceState = %d" ), err));
- HandleHostProblemL(EUsbWatcherCanNotStartUsbServices, EUsbStateHostHandle);
+ LOG1( "Error when requesting GetServiceState = %d" , err);
+ HandleHostProblemL(EUsbWatcherCanNotStartUsbServices,
+ EUsbStateHostHandleDropping);
return;
}
@@ -929,38 +900,36 @@
{
case EUsbServiceIdle: // just stopped usb service
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompletedL UsbServiceState == EUsbServiceIdle" ) );
+ LOG("UsbServiceState == EUsbServiceIdle" );
// do nothing
break;
}
case EUsbServiceStarted: // just started usb service
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompletedL UsbServiceState == EUsbServiceStarted" ) );
+ LOG( "UsbServiceState == EUsbServiceStarted" );
- iHostState = iStates[EUsbStateHostAInitiate];
-
- iHostState->JustAdvancedToThisStateL(); // do any initial activity, once advanced to the state
+ ChangeHostStateL(EUsbStateHostAInitiate);
break;
}
case EUsbServiceStarting:
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompletedL UsbServiceState == EUsbServiceStarting" ) );
+ LOG("UsbServiceState == EUsbServiceStarting" );
// should not receive that, due to call back is called when service stopped or started
// therefore scream
// no break statement here
}
case EUsbServiceStopping:
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompletedL UsbServiceState == EUsbServiceStopping" ) );
+ LOG("UsbServiceState == EUsbServiceStopping" );
// should not receive that, due to call back is called when service stopped or started
// therefore scream
// no break statement here
}
case EUsbServiceFatalError:
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UsbServiceControlReqCompletedL UsbServiceState == EUsbServiceFatalError" ) );
+ LOG( "UsbServiceState == EUsbServiceFatalError" );
Panic(EUnexpectedUsbServiceState);
break;
}
@@ -970,7 +939,6 @@
Panic(EUnknownUsbServiceState);
}
}
-
}
// ---------------------------------------------------------------------------
@@ -980,21 +948,19 @@
TInt CUsbOtgWatcher::SelfTestL()
{
#ifdef _DEBUG
-
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Creating observers." ) );
+ LOG_FUNC
// create all the observers
iIdPinObserver = CUsbIdPinObserver::NewL();
iVBusObserver = CUsbVBusObserver::NewL();
iOtgStateObserver = CUsbOtgStateObserver::NewL();
- iBusActivityObserver =
- CUsbBusActivityObserver::NewL();
- iHostEventNotificationObserver =
- CUsbHostEventNotificationObserver::NewL(&iUsb);
- iMessageNotificationObserver =
- CUsbMessageNotificationObserver::NewL(&iUsb);
+ iBusActivityObserver = CUsbBusActivityObserver::NewL();
+ iHostEventNotificationObserver = CUsbHostEventNotificationObserver::NewL(
+ &iUsb);
+ iMessageNotificationObserver = CUsbMessageNotificationObserver::NewL(
+ &iUsb);
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Observers getters." ) );
+ LOG( "Observers getters" );
if (iIdPinObserver != IdPinObserver())
{
@@ -1021,11 +987,11 @@
User::Leave(KErrGeneral);
}
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Observers destructors." ) );
+ LOG( "Observers destructors" );
// idpinobserver is deleted later
// Vbus observer is deleted later
-
+
delete iOtgStateObserver;
iOtgStateObserver = 0;
delete iBusActivityObserver;
@@ -1035,69 +1001,72 @@
delete iMessageNotificationObserver;
iMessageNotificationObserver = 0;
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Creating states." ) );
+ LOG("Creating states");
- User::LeaveIfError(iStates.Append(CUsbStateHostUndefined::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAInitiate::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAHost::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAPeripheral::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostAIdle::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostHandle::NewL(this)));
- User::LeaveIfError(iStates.Append(CUsbStateHostDelayHandle::NewL(this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostUndefined::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostAInitiate::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostAHost::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostAPeripheral::NewL(*this)));
+ User::LeaveIfError(iStates.Append(CUsbStateHostDelayAttachedHandle::NewL(
+ *this)));
+ User::LeaveIfError(iStates.Append(
+ CUsbStateHostDelayNotAttachedHandle::NewL(*this)));
+ User::LeaveIfError(iStates.Append(
+ CUsbStateHostHandleDropping::NewL(*this)));
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Check State()" ) );
+ LOG("Check State()" );
if (iStates[EUsbStateHostAInitiate] != State(EUsbStateHostAInitiate))
{
User::Leave(KErrGeneral);
}
-
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Check CurrentHostState()" ) );
-
+
+ LOG("Check CurrentHostState()" );
+
iHostState = iStates[EUsbStateHostAInitiate];
-
- if (iStates[EUsbStateHostAInitiate] != CurrentHostState())
+
+ if (iStates[EUsbStateHostAInitiate] != CurrentHostState())
{
User::Leave(KErrGeneral);
}
-
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL NotifManager and WarningNotifier." ) );
- CUsbNotifManager* usbnotifmanager = CUsbNotifManager::NewL(this);
+ LOG("NotifManager and WarningNotifier." );
+
+ CUsbNotifManager* usbnotifmanager = CUsbNotifManager::NewL(*this);
RNotifier rnotifier;
User::LeaveIfError(rnotifier.Connect());
CUsbWarningNotifier* usbnotifier = CUsbWarningNotifier::NewL(rnotifier,
- usbnotifmanager, EUsbOtgPartiallySupportedDevice);
+ *usbnotifmanager, EUsbOtgPartiallySupportedDevice);
usbnotifier->IsFeedbackNeeded();
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL NotifManager and WarningNotifier destruction." ) );
+ LOG( "NotifManager and WarningNotifier destruction." );
delete usbnotifier;
rnotifier.Close();
- delete usbnotifmanager;
-
+ delete usbnotifmanager;
+
// VBus observer is deleted here, due to it is used by usbnotifmanager.usbindicatornotifier
delete iVBusObserver;
iVBusObserver = 0;
-
+
// id pin observer is deleted here due to it is used by usbnotifmanager.usbindicatornotifier
delete iIdPinObserver;
iIdPinObserver = 0;
-
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Destructing states." ) );
-
+
+ LOG("Destructing states");
+
iStates.ResetAndDestroy();
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL Check UsbServiceControl" ) );
+ LOG( "Check UsbServiceControl" );
- CUsbServiceControl* usbServiceControl = CUsbServiceControl::NewL(this,
+ CUsbServiceControl* usbServiceControl = CUsbServiceControl::NewL(*this,
iUsb);
usbServiceControl->RunError(KErrNone);
delete usbServiceControl;
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SelfTestL All completed OK." ) );
+ LOG("All completed OK" );
#endif
- return KErrNone;
+ return KErrNone;
}
@@ -1107,16 +1076,16 @@
//
void CUsbOtgWatcher::SubscribeL(MUsbOtgWatcherStateObserver& aObserver)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SubscribeL" ) );
+ LOG_FUNC
- // check if the same observer already exist in a list
- if(KErrNotFound != iOtgStateObservers.Find(&aObserver))
- {
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::SubscribeL Observer already exists." ) );
- Panic(EObserverAlreadyExists);
- return;
- }
- iOtgStateObservers.AppendL(&aObserver);
+ // check if the same observer already exist in a list
+ if (KErrNotFound != iOtgStateObservers.Find(&aObserver))
+ {
+ LOG( "Observer already exists" );
+ Panic(EObserverAlreadyExists);
+ return;
+ }
+ iOtgStateObservers.AppendL(&aObserver);
}
@@ -1126,14 +1095,15 @@
//
void CUsbOtgWatcher::UnsubscribeL(MUsbOtgWatcherStateObserver& aObserver)
{
- FLOG( _L( "[USBOTGWATCHER]\tCUsbOtgWatcher::UnsubscribeL" ) );
- TInt i(iOtgStateObservers.Find(&aObserver));
- if(KErrNotFound == i)
- {
- FLOG( _L( "[USBOTGWATCHER]\tCUsbIdPinObserver::UnsubscribeL Observer not found." ) );
- Panic(ECanNotFindUsbOtgWatcherStateObserver);
- return;
- }
-
- iOtgStateObservers.Remove(i);
+ LOG_FUNC
+
+ TInt i(iOtgStateObservers.Find(&aObserver));
+ if (KErrNotFound == i)
+ {
+ LOG( "Observer not found" );
+ Panic(ECanNotFindUsbOtgWatcherStateObserver);
+ return;
+ }
+
+ iOtgStateObservers.Remove(i);
}