usbengines/usbotgwatcher/src/cusbpersonalityswitch.cpp
branchRCL_3
changeset 67 56303587e92f
parent 66 3cb82e326395
child 68 165aafcbb3d8
--- a/usbengines/usbotgwatcher/src/cusbpersonalityswitch.cpp	Mon Mar 15 12:44:42 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,299 +0,0 @@
-/*
-* 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:  Switches personality
- *
-*/
-
-#include <e32base.h>
-#include <usb.h>
-#include <usbpersonalityids.h>
-
-#include "cusbpersonalityswitch.h"
-
-#include "panic.h"
-#include "debug.h"
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CUsbPersonalitySwitch::CUsbPersonalitySwitch(
-        MUsbPersonalitySwitchObserver* aObserver) :
-    CActive(CActive::EPriorityStandard), iObserver(aObserver), iState(EIdle)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CUsbPersonalitySwitch::~CUsbPersonalitySwitch()
-    {
-        FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::~CUsbPersonalitySwitch" ) );
-    Cancel();
-    iUsbInterface.Close();
-    iSendData.Close();
-    iRcvData.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CUsbPersonalitySwitch::ConstructL()
-    {
-        FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::ConstructL" ) );
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-CUsbPersonalitySwitch* CUsbPersonalitySwitch::NewL(
-        MUsbPersonalitySwitchObserver* aObserver)
-    {
-        FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::NewL" ) );
-
-    CUsbPersonalitySwitch* self = new (ELeave) CUsbPersonalitySwitch(
-            aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self); // pop self
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CUsbPersonalitySwitch::SwitchPersonalityL(TUint32 aDeviceId,
-        TInt aPersonalityToBeSet)
-    {
-        FTRACE(FPrint(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::SwitchPersonality aDeviceId %d, aPersonalityToBeSet %d" ), aDeviceId, aPersonalityToBeSet))
-
-    if (IsActive() || EIdle != iState)
-        {
-        Cancel();
-        iObserver->UsbPersonalitySwitchStateChangedL(
-                MUsbPersonalitySwitchObserver::ERequestCancelled, KErrNone);
-        }
-
-    // create usb interface for the device id
-    TUint32 token(0); // = RFdc.InterfaceToken();
-    TInt err = iUsbInterface.Open(token);
-
-        FTRACE(FPrint(_L("[USBOTGWATCHER]\tCUsbPersonalitySwitch::SwitchPersonality UsbInterface Open err = %d" ), err));
-    if (KErrNone != err)
-        {
-        return err;
-        }
-
-    iPersonalityToBeSet = aPersonalityToBeSet;
-
-    // get list of supported personalities
-    iTransfer.iRequestType = KUsbRequestType_DirToHost
-            | KUsbRequestType_TypeVendor | KUsbRequestType_DestDevice;
-
-    iTransfer.iRequest = KGetAllPersonalitiesReq;
-    iTransfer.iValue = 0;
-    iTransfer.iIndex = 0;
-    iTransfer.iFlags
-            = RUsbInterface::TUsbTransferRequestDetails::EShortTransferOk;
-
-    Reset();
-
-    iState = EGetAllPersonalities;
-
-        FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::SwitchPersonalityL Sending GetAllPersonalities request." ) );
-    iUsbInterface.Ep0Transfer(iTransfer, iSendData, iRcvData, iStatus);
-    SetActive();
-
-    iObserver->UsbPersonalitySwitchStateChangedL(
-            MUsbPersonalitySwitchObserver::ERequestingAllPersonalities,
-            KErrNone);
-
-    return KErrNone;
-    }
-
-void CUsbPersonalitySwitch::CancelSwitchPersonalityL()
-    {
-        FLOG(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::CancelSwitchPersonalityL"));
-
-    if (IsActive())
-        {
-        Cancel();
-        iObserver->UsbPersonalitySwitchStateChangedL(
-                MUsbPersonalitySwitchObserver::ERequestCancelled, KErrNone);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CUsbPersonalitySwitch::RunL()
-    {
-
-    if (KErrNone != iStatus.Int())
-        {
-            FTRACE(FPrint(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL iStatus %d" ), iStatus.Int()));
-        User::Leave(iStatus.Int());
-        }
-
-    switch (iState)
-        {
-
-        case EGetAllPersonalities:
-            {
-                FLOG(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL GetAllPersonalities completed."));
-
-            TInt numOfPersonalities = iRcvData[KNumOfPersShift];
-                FTRACE(FPrint(_L("[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL Amount of personalities in peripheral = %d" ), numOfPersonalities));
-
-            // if no personalities then return
-            if (0 == numOfPersonalities)
-                {
-                    FLOG(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL No personailies found in peripheral."));
-                Reset();
-                iObserver->UsbPersonalitySwitchStateChangedL(
-                        MUsbPersonalitySwitchObserver::EGetAllPersonalitiesCompleted,
-                        KErrNotFound);
-                return;
-                }
-
-            // if needed pers already set, then return
-            TInt currentPersonality = iRcvData[KCurrPersShift];
-            if (iPersonalityToBeSet == currentPersonality)
-                {
-                    FLOG(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL Needed personality already set in peripheral."));
-                Reset();
-                iObserver->UsbPersonalitySwitchStateChangedL(
-                        MUsbPersonalitySwitchObserver::EGetAllPersonalitiesCompleted,
-                        KErrInUse);
-                return;
-                }
-
-            // check if device supports needed personality
-            TInt count(0);
-            while (count < numOfPersonalities && iPersonalityToBeSet
-                    != iRcvData[KFirstPersonalityIdShift
-                            + KLenghtOfPersonalityData * count])
-                {
-                ++count;
-                }
-
-            if (count == numOfPersonalities) // not found == not supported
-                {
-                    FLOG(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL Peripheral does not support needed personality."));
-                Reset();
-                iObserver->UsbPersonalitySwitchStateChangedL(
-                        MUsbPersonalitySwitchObserver::EGetAllPersonalitiesCompleted,
-                        KErrNotFound);
-                return;
-                }
-
-            iObserver->UsbPersonalitySwitchStateChangedL(
-                    MUsbPersonalitySwitchObserver::EGetAllPersonalitiesCompleted,
-                    KErrNone);
-
-            // set personality
-            iTransfer.iRequestType = KUsbRequestType_DirToDev
-                    | KUsbRequestType_TypeVendor | KUsbRequestType_DestDevice;
-
-            iTransfer.iRequest = KSetPersonalityReq;
-            iTransfer.iValue = iPersonalityToBeSet;
-            iTransfer.iIndex = 0;
-            iTransfer.iFlags
-                    = RUsbInterface::TUsbTransferRequestDetails::EShortTransferOk;
-
-            iSendData.Close();
-            iRcvData.Close();
-
-            iState = ESetPersonality;
-
-                FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL Sending SetPersonality request." ) );
-            iUsbInterface.Ep0Transfer(iTransfer, iSendData, iRcvData, iStatus);
-            SetActive();
-            iObserver->UsbPersonalitySwitchStateChangedL(
-                    MUsbPersonalitySwitchObserver::ERequestingSetPersonality,
-                    KErrNone);
-
-            break;
-            }
-        case ESetPersonality:
-            {
-                FLOG(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL SetPersonality completed."));
-            Reset();
-            iObserver->UsbPersonalitySwitchStateChangedL(
-                    MUsbPersonalitySwitchObserver::ESetPersonalityCompleted,
-                    KErrNone);
-
-            break;
-            }
-            /*  case EGetAllPersResult:
-             {
-             FLOG( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL GetAllPersResult completed.");
-
-             break;
-             }
-             case EGetSetPersResult:
-             {
-             FLOG( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunL GetSetPersResult completed.");
-
-             break;
-             }  */
-
-        case EIdle: // do not break 
-        default:
-            {
-            Panic(EUnexpectedUsbSwitchPersonalityState);
-            }
-        }
-
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CUsbPersonalitySwitch::RunError(TInt aError)
-    {
-        FTRACE(FPrint(_L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::RunError aError %d" ), aError ));
-    Reset();
-    TRAP_IGNORE (iObserver->UsbPersonalitySwitchStateChangedL(
-            MUsbPersonalitySwitchObserver::ERequestFailed, aError) );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//
-void CUsbPersonalitySwitch::DoCancel()
-    {
-        FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::DoCancel" ) )
-
-    iUsbInterface.CancelEP0Transfer();
-    Reset();
-    }
-
-void CUsbPersonalitySwitch::Reset()
-    {
-        FLOG( _L( "[USBOTGWATCHER]\tCUsbPersonalitySwitch::Reset" ) )
-
-    iState = EIdle;
-    iSendData.Close();
-    iRcvData.Close();
-    }