usbmgmt/usbmgrtest/t_ncm/src/devicewatcher.cpp
branchRCL_3
changeset 42 f92a4f87e424
--- /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<DISPLAY_USB_DEVICE_STATE_LEN> 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);
+	}