diff -r d3e8e7d462dd -r f92a4f87e424 usbmgmt/usbmgrtest/t_ncm/src/devicewatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgrtest/t_ncm/src/devicewatcher.cpp Tue Aug 31 17:01:47 2010 +0300 @@ -0,0 +1,179 @@ +/* +* Copyright (c) 2002-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: +* +*/ + +/** @file + @internalComponent + @test + */ + +#include "devicewatcher.h" +#include "ncmtestconsole.h" + +CDeviceWatcher* CDeviceWatcher::NewL(CUsbNcmConsole& aTestConsole) + { + LOG_STATIC_FUNC_ENTRY + + CDeviceWatcher* self = new(ELeave) CDeviceWatcher(aTestConsole); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } +CDeviceWatcher::~CDeviceWatcher() + { + Cancel(); + iLdd.Close(); + } + +CDeviceWatcher::CDeviceWatcher(CUsbNcmConsole& aTestConsole) + : CActive(EPriorityStandard), iTestConsole(aTestConsole), iWatchMode(EWatchMode) + { + CActiveScheduler::Add(this); + } + +void CDeviceWatcher::ConstructL() + { + User::LeaveIfError(iLdd.Open(0)); + iLdd.AlternateDeviceStatusNotify(iStatus, iDeviceState); + + SetActive(); + + //Get current device state + TUsbcDeviceState deviceState; + User::LeaveIfError(iLdd.DeviceStatus(deviceState)); + + DisplayDeviceState(deviceState); + + } + +void CDeviceWatcher::DoCancel() + { + iLdd.AlternateDeviceStatusNotifyCancel(); + } + +void CDeviceWatcher::RunL() + { + //Get USB device state change + iLdd.AlternateDeviceStatusNotify(iStatus, iDeviceState); + SetActive(); + + LOG_FUNC + __FLOG_STATIC1(KSubSys, KLogComponent , _L8("CDeviceWatcherCommand::RunL - iStatus = %d"), iStatus.Int()); + + //Display the current state on main console + DisplayDeviceState(iDeviceState); + + TUsbServiceState serviceState; + User::LeaveIfError(iTestConsole.Usb().GetServiceState(serviceState)); + + __FLOG_STATIC3(KSubSys, KLogComponent , + _L8("iDeviceState = %d, serviceState = %d, iStartNcm=%d"), + iDeviceState, serviceState, iStartNcm); + + iOldDeviceState = iDeviceState; + } + +TInt CDeviceWatcher::RunError(TInt aError) + { + User::Panic(_L("CDeviceWatcher"), aError); + return aError; + } + +TDeviceWatchMode CDeviceWatcher::GetWatchMode() const + { + return iWatchMode; + } + +void CDeviceWatcher::SetWatchMode(TDeviceWatchMode aWatchMode) +/** +Set the watch mode : If the mode is EWatchMode, only monitor the USB device status. +If the mode is EWatchAndStartMode, when cable plugin, NCM will be started automaticly + @param aWatchMode The mode user want to set +*/ + { + iWatchMode = aWatchMode; + switch(iWatchMode) + { + case EWatchMode: + iStartNcm = EFalse; + break; + case EWatchAndStartMode: + iStartNcm = ETrue; + break; + } + //When USB device state changed, CDeviceWatcher will check iStartNcm. The detail please see + //RunL() + } + +void CDeviceWatcher::DisplayDeviceState(TUint aDeviceState) +/** +Display device status on main console + @param aDeviceState the device state +*/ + { + TBuf devStatus; + switch(aDeviceState) + { + case EUsbcDeviceStateUndefined: + devStatus = + // 12345678901 + _L("Undefined "); + break; + + case EUsbcDeviceStateDefault: + devStatus = + // 12345678901 + _L("Default "); + break; + + case EUsbcDeviceStateAttached: + devStatus = + // 12345678901 + _L("Attached "); + break; + + case EUsbcDeviceStatePowered: + devStatus = + // 12345678901 + _L("Powered "); + break; + + case EUsbcDeviceStateConfigured: + devStatus = + // 12345678901 + _L("Configured "); + break; + + case EUsbcDeviceStateAddress: + devStatus = + // 12345678901 + _L("Address "); + break; + + case EUsbcDeviceStateSuspended: + devStatus = + // 12345678901 + _L("Suspended "); + break; + default: + devStatus = + // 12345678901 + _L("Unknown "); + break; + } + iTestConsole.SetDisplayItem(EUsbDeviceStateItem, devStatus); + }