diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/setncmiapcommand.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/setncmiapcommand.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* -* 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 "setncmiapcommand.h" -#include "ncmtestconsole.h" - -_LIT(KSetNcmIapCommandDescription, "Set Ncm Iap ID"); - -CSetNcmIapCommand* CSetNcmIapCommand::NewL(CUsbNcmConsole& aTestConsole, TUint aKey) - { - LOG_STATIC_FUNC_ENTRY - - CSetNcmIapCommand* self = new(ELeave) CSetNcmIapCommand(aTestConsole, aKey); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CSetNcmIapCommand::~CSetNcmIapCommand() - { - EndWork(); - } - -CSetNcmIapCommand::CSetNcmIapCommand(CUsbNcmConsole& aTestConsole, TUint aKey) - : CNcmCommandBase(EPriorityStandard, aTestConsole, aKey) - { - CActiveScheduler::Add(this); - } - -void CSetNcmIapCommand::ConstructL() - { - SetDescription(KSetNcmIapCommandDescription()); - } - -void CSetNcmIapCommand::DoCommandL() -/** -Main function of set ncm iap. -It will start a new console to display all Iaps in commsdb and current setting for ncm. -Then prompt user to input ncm iap id and the index of this iap will be placed in central -repository. Press 'ESC' for give up this function. After the setting is successful, the -console will be destroyed and return to main console -*/ - { - LOG_FUNC - - if(!IsActive()) - { - //If the console has existed, close the old console. The work on old console will be - //gived up. - if(iConsole) - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Close old console")); - EndWork(); - } - InitWorkL(); - - iConsole->Printf(_L("Press \'ESC\' to exit without change\n")); - - //Display all iaps in commsdb - ListAllNcmIapL(); - - //wait user input iap id - iConsole->Printf(KSetIapMemo()); - iCommandState = EIapId; - iConsole->Read(iStatus); - SetActive(); - } - } - -void CSetNcmIapCommand::ListAllNcmIapL() -/** -Display all iaps in commsdb on console and get current config in cental repoistory -*/ - { - LOG_FUNC - - //Display commsdb's iaps - TInt iapcount = iTestConsole.DrawAvailableIapsL(); - - TInt iapId = 0; - - //Get iap config from central repository - TInt err = iRepository->FindL(KPartialKey, KMask, iRows); - if(err == KErrNone) - { - TUint count = iRows.Count(); - for (TInt row = 0; row < count; ++row) - { - // Read each IAP ID - User::LeaveIfError(iRepository->Get(iRows[row], iapId)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("index[%d]: iap = %d"), row, iapId); - iConsole->Printf(_L("index[%d]: iap = %d\n"), row, iapId); - } - } - else - { - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("FindL() err[%d]"), err); - } - } - -void CSetNcmIapCommand::GetDefaultIapL(TInt& aDefaultIap) -/** -Get the default iap id (The first one) stored in central repository. -@return the default iap id -*/ - { - LOG_FUNC - aDefaultIap = 13; - return ; - } - -void CSetNcmIapCommand::SetNcmIapL() -/** -Set iap id into central repository. The iap id is iIapId. The place of iap id in central -repository is iIndex. iIndex is started from 0. If the iIndex is not exist in central -repository, iIapId will be placed at last place. -*/ - { - LOG_FUNC - - TUint count = iRows.Count(); - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("now iap count = %d"), count); - - TInt idx; - if(iIndex >= count) - { - //iIndex is not exist in central repository, create a new entry in central repository - idx = iRows[count-1]+1; - User::LeaveIfError(iRepository->Create(idx, iIapId)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("add iap: idx = %d, iIapId"), idx, iIapId); - } - else - { - //iIndex exists, just set in the new value - idx = iRows[iIndex]; - User::LeaveIfError(iRepository->Set(idx, iIapId)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("set iap: aIdx = %d, iIapId"), idx, iIapId); - } - - } - -void CSetNcmIapCommand::RunL() - { - LOG_FUNC - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("CSetNcmIapCommand::RunL - iStatus = %d"), iStatus.Int()); - - User::LeaveIfError(iStatus.Int()); - - TKeyCode code = iConsole->KeyCode(); - switch(code) - { - case EKeyEnter: - { - iConsole->Printf(_L("\n")); - - //get value - TInt val; - TBool typeErr = EFalse; - if(iChars.Length() != 0) - { - TLex lex(iChars); - lex.SkipSpaceAndMark(); - - if(KErrNone != lex.Val(val)) - { - typeErr = ETrue; - } - } - else - { - typeErr = ETrue; - } - - if(typeErr) - { - //Prompt user input again - iConsole->Printf(KErrInput()); - iConsole->Printf(KSetIapMemo()); - iChars.SetLength(0); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Input error")); - break; - } - - //The input is correct - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("Get val = %d"), val); - - if(iCommandState == EIapId) - { - //if the command state is wait iap id, now get the iap id, wait for iap index - iIapId = val; - iChars.SetLength(0); - iConsole->Printf(KSetIapIndexMemo()); - iCommandState = EIapPriority; - } - else //(iCommandState == EIapPriority) - { - //if the command state is wait iap index, now the index. set into central repoistory. - //Then destroy the current console and update the value displayed on main console if the - //setting value is ncm default value. - iIndex = val; - SetNcmIapL(); - EndWork(); - if(iIndex == 0) - { - iTestConsole.SetLocalIapId(iIapId); - } - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("Set Ncm Iap, idx = %d, id = %d"), - iIndex, iIapId); - - return; - } - } - break; - case EKeyEscape: - //delete this; - EndWork(); - return; - case EKeyBackspace: - if(iChars.Length() > 0) - { - iConsole->SetCursorPosRel(TPoint(-1, 0)); - iConsole->ClearToEndOfLine(); - iChars.SetLength(iChars.Length()-1); - } - break; - default: - iChars.Append(code); - iConsole->Printf(_L("%c"), code); - break; - } - iConsole->Read(iStatus); - SetActive(); - - } - -void CSetNcmIapCommand::DoCancel() - { - iConsole->ReadCancel(); - } - -TInt CSetNcmIapCommand::RunError(TInt aError) - { - User::Panic(_L("CSetNcmIapCommand"), aError); - return aError; - } - -void CSetNcmIapCommand::InitWorkL() -/** -Initialize work. Including start a new console, create buf for getting user input, get repoistory handle. -*/ - { - LOG_FUNC - - if(!iConsole) - { - iConsole = Console::NewL(_L("Set Ncm IAP Console"), TSize(-1,-1)); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Create Console ok!")); - - User::LeaveIfError(iChars.Create(KMaxNumOfChars)); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Create iChars ok!")); - - iRepository = CRepository::NewL(KNcmIapIdRepositoryUID); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Get CRepository ok!")); - - iIapId = 1; - iIndex = 0; - } - } - -void CSetNcmIapCommand::EndWork() -/** -Finalize work. Including delete console, delete the buf used for getting user input, close repoistory handle. -*/ - { - LOG_FUNC - - if(iConsole) - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Destroy console...")); - Cancel(); - iChars.Close(); - iRows.Close(); - delete iRepository; - delete iConsole; - iConsole = NULL; - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Destroy console ok!")); - } - } -