Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h)
Have multiple extension sections in the bld.inf, one for each version
of the compiler. The RVCT version building the tools will build the
runtime libraries for its version, but make sure we extract all the other
versions from zip archives. Also add the archive for RVCT4.
// 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 <e32cmn.h>
#include <e32base.h>
#include <e32property.h>
#include <d32otgdi.h>
#include <e32debug.h>
#include "cusbotg.h"
#include "cusbotgwatcher.h"
#include "tmslog.h"
#include "debug.h"
CUsbOtgBaseWatcher::CUsbOtgBaseWatcher(RUsbOtgDriver& aLdd)
: CActive(CActive::EPriorityStandard),
iLdd(aLdd)
{
__MSFNLOG
CActiveScheduler::Add(this);
}
CUsbOtgBaseWatcher::~CUsbOtgBaseWatcher()
{
__MSFNLOG
Cancel();
}
void CUsbOtgBaseWatcher::Start()
{
__MSFNLOG
Post();
}
CRequestSessionWatcher* CRequestSessionWatcher::NewL(MUsbRequestSessionObserver& aObserver)
{
__MSFNSLOG
CRequestSessionWatcher* r = new (ELeave) CRequestSessionWatcher(aObserver);
r->ConstructL();
return r;
}
CRequestSessionWatcher::CRequestSessionWatcher(MUsbRequestSessionObserver& aObserver)
: CActive(EPriorityStandard),
iObserver(aObserver)
{
__MSFNLOG
}
void CRequestSessionWatcher::ConstructL()
{
__MSFNLOG
User::LeaveIfError(iProperty.Define(KUidUsbManCategory, KUsbRequestSessionProperty, RProperty::EInt));
User::LeaveIfError(iProperty.Attach(KUidUsbManCategory, KUsbRequestSessionProperty));
CActiveScheduler::Add(this);
// initial subscription and process current property value
RunL();
}
void CRequestSessionWatcher::DoCancel()
{
__MSFNLOG
iProperty.Cancel();
}
CRequestSessionWatcher::~CRequestSessionWatcher()
{
__MSFNLOG
Cancel();
iProperty.Close();
iProperty.Delete(KUidUsbManCategory, KUsbRequestSessionProperty);
}
void CRequestSessionWatcher::RunL()
{
__MSFNLOG
// resubscribe before processing new value to prevent missing updates
iProperty.Subscribe(iStatus);
SetActive();
TInt val;
User::LeaveIfError(iProperty.Get(KUidUsbManCategory, KUsbRequestSessionProperty, val));
__USBOTGPRINT1(_L(">> CUsbRequestSessionWatcher[%d]"), val);
switch(val)
{
case KUsbManSessionOpen:
{
iObserver.BusRequestL();
}
break;
default:
__USBOTGPRINT(_L("Event ignored"));
break;
}
}
TInt CRequestSessionWatcher::RunError(TInt aError)
{
__MSFNLOG
__USBOTGPRINT1(_L("CUsbRequestSessionWatcher::RunError[%d]"), aError);
return KErrNone;
}
CUsbOtgEventWatcher* CUsbOtgEventWatcher::NewL(RUsbOtgDriver& aLdd,
CUsbOtg& aUsbOtg)
{
__MSFNSLOG
CUsbOtgEventWatcher* r = new (ELeave) CUsbOtgEventWatcher(aLdd, aUsbOtg);
r->ConstructL();
return r;
}
CUsbOtgEventWatcher::CUsbOtgEventWatcher(RUsbOtgDriver& aLdd,
CUsbOtg& aUsbOtg)
: CUsbOtgBaseWatcher(aLdd),
iUsbOtg(aUsbOtg)
{
__MSFNLOG
}
void CUsbOtgEventWatcher::ConstructL()
{
__MSFNLOG
}
void CUsbOtgEventWatcher::DoCancel()
{
__MSFNLOG
iLdd.CancelOtgEventRequest();
}
CUsbOtgEventWatcher::~CUsbOtgEventWatcher()
{
__MSFNLOG
}
void CUsbOtgEventWatcher::Post()
{
__MSFNLOG
iLdd.QueueOtgEventRequest(iEvent, iStatus);
SetActive();
}
void CUsbOtgEventWatcher::RunL()
{
__MSFNLOG
TInt r = iStatus.Int();
User::LeaveIfError(r);
__USBOTGPRINT1(_L(">> CUsbOtgEventWatcher[%x]"), iEvent);
User::LeaveIfError(r);
iUsbOtg.HandleUsbOtgEvent(iEvent);
Start();
}
TInt CUsbOtgEventWatcher::RunError(TInt aError)
{
__MSFNLOG
__USBOTGPRINT1(_L("CUsbRequestSessionWatcher::RunError[%d]"), aError);
return KErrNone;
}