diff -r 000000000000 -r c9bc50fca66e usbmgmt/usbmgr/usbman/chargingplugin/src/vbuswatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/vbuswatcher.cpp Tue Feb 02 02:02:59 2010 +0200 @@ -0,0 +1,95 @@ +/* +* 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: +* Talks directly to the USB Logical Device Driver (LDD) and +* watches any state changes +* +*/ + +/** + @file +*/ + +#include "vbuswatcher.h" +#include + +CVBusWatcher* CVBusWatcher::NewL(MOtgPropertiesObserver* aObserver) + { + CVBusWatcher* self = new(ELeave) CVBusWatcher(aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CVBusWatcher::~CVBusWatcher() + { + Cancel(); + iVBusProp.Close(); + } + +CVBusWatcher::CVBusWatcher(MOtgPropertiesObserver* aObserver) + : CActive(EPriorityStandard) + , iObserver(aObserver), iVBusState(EFalse) + { + CActiveScheduler::Add(this); + } + +void CVBusWatcher::ConstructL() + { + User::LeaveIfError(iVBusProp.Attach(KUidUsbManCategory, KUsbOtgVBusPoweredProperty)); + iVBusProp.Subscribe(iStatus); + SetActive(); + + TInt err = iVBusProp.Get(iVBusState); + if (KErrNone != err) + { +#ifndef __WINS__ + iVBusState = EFalse; +#else + iVBusState = ETrue; +#endif + } + } + +void CVBusWatcher::DoCancel() + { + iVBusProp.Cancel(); + } + +void CVBusWatcher::RunL() + { + iVBusProp.Subscribe(iStatus); + SetActive(); + + TInt err = iVBusProp.Get(iVBusState); + if (KErrNone == err) + { + iObserver->MpsoVBusStateChanged(iVBusState); + } + else + { +#ifndef __WINS__ + iVBusState = EFalse; +#else + iVBusState = ETrue; +#endif + iObserver->MpsoVBusStateChanged(iVBusState); + } + } + +TInt CVBusWatcher::VBusState() const + { + return iVBusState; + }