usbmgmt/usbmgrtest/t_ncm/src/simpancommand.cpp
branchRCL_3
changeset 43 012cc2ee6408
parent 42 f92a4f87e424
child 45 ee9b31ff95f7
child 52 3d9964be03bc
--- a/usbmgmt/usbmgrtest/t_ncm/src/simpancommand.cpp	Tue Aug 31 17:01:47 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,269 +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 <e32property.h> 
-
-#include "simpancommand.h"
-#include "ncmtestconsole.h"
-
-static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
-static _LIT_SECURITY_POLICY_C1(KNetworkControlPolicy, ECapabilityNetworkControl); 
-
-_LIT(KSimPANCommandActive, "Simulate PAN connection is active");
-_LIT(KSimPANCommandNone, "Simulate PAN connection is not active");
-
-CSimPANCommand* CSimPANCommand::NewL(CUsbNcmConsole& aTestConsole, TUint aKey)
-	{
-	LOG_STATIC_FUNC_ENTRY
-	
-	CSimPANCommand* self = new(ELeave) CSimPANCommand(aTestConsole, aKey);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
-CSimPANCommand::~CSimPANCommand()
-	{
-	Cancel();
-	iNcmExclusiveProp.Close();
-	}
-
-CSimPANCommand::CSimPANCommand(CUsbNcmConsole& aTestConsole, TUint aKey)
-	: CNcmCommandBase(EPriorityStandard, aTestConsole, aKey)
-	{
-	}
-
-void CSimPANCommand::ConstructL()
-	{
-	//Attach the property of Exclusive state
-	User::LeaveIfError(iNcmExclusiveProp.Attach(KC32ExeSid, KIPBearerCoexistenceProperty));
-	CActiveScheduler::Add(this);
-	iNcmExclusiveProp.Subscribe(iStatus);
-	SetActive();
-	
-	//Get the current value of exclusive state
-	TInt state; 
-	TInt err = iNcmExclusiveProp.Get(state);
-	switch(err)
-		{
-		case KErrNotFound:
-			//The property is not defined. means BtPAN and Ncm didn't start.
-			DisplayExclusive(ENoneIsActive);
-			break;
-		case KErrNone:
-			//Display the exclusive state on main console
-			DisplayExclusive(state);
-			break;
-		default:
-			User::LeaveIfError(err);
-			break;
-		}
- 
-	}
-
-void CSimPANCommand::RunL()
-/**
-Get the current exclusive state and update on main console when the state changed
-*/	
-	{
-	LOG_FUNC
-	__FLOG_STATIC1(KSubSys, KLogComponent , _L8("CNcmExclusiveStateAO::RunL - iStatus = %d"), iStatus.Int());
-
-	User::LeaveIfError(iStatus.Int());
-
-	iNcmExclusiveProp.Subscribe(iStatus);
-	SetActive();
-	
-	TInt exclusiveState; 
-	TInt err = iNcmExclusiveProp.Get(exclusiveState);
-
-	__FLOG_STATIC2(KSubSys, KLogComponent , _L8("Get[IPBearerCoexistence]=%d, err=%d"), exclusiveState, err);
-
-	if(err == KErrNone)
-		{
-		//Display the exclusive state on main console
-		DisplayExclusive(exclusiveState);
-		}	
-	}
-
-void CSimPANCommand::DoCancel()
-	{
-	iNcmExclusiveProp.Cancel();
-	}
-
-TInt CSimPANCommand::RunError(TInt aError)
-	{
-	User::Panic(_L("CSimPANCommand"), aError);
-	return aError;
-	}
-
-void CSimPANCommand::DoCommandL()
-/**
-Main function of simualate Pan active/inactive. 
-It will try to get the exclusive state from P&S key. And set the value based on the iSetPAN.
-There's three value for this P&S key: EExclusiveNone,ENcmOwned,EBtPanOwned
-
-If now the command is 'active PAN'(iSetPAN=ETrue), then set the value of property to Pan active.
-If now the command is 'inactive PAN'(iSetPAN=EFalse), then set the value of property to Pan inactive.
-*/	
-	{
-	LOG_FUNC
-		
-	//Get the mutex which used to protect the P&S key.
-	RMutex mtx;
-	TInt ret;
-	ret = mtx.CreateGlobal(KIPBearerCoexistenceMutex);
-	if (ret == KErrAlreadyExists)
-		{
-		ret  = mtx.OpenGlobal(KIPBearerCoexistenceMutex);
-		}	
-	User::LeaveIfError(ret);
-	__FLOG_STATIC0(KSubSys, KLogComponent , _L8("Get Mutex, wait()"));
-	CleanupClosePushL(mtx);
- 	mtx.Wait();
- 	
- 	RProperty prop;
- 	TInt state;
- 	TBool bSet = ETrue;
- 	
- 	//Get the exclusive state.
- 	ret = prop.Get(KC32ExeSid, KIPBearerCoexistenceProperty, state);
-	CleanupClosePushL(prop);
- 	__FLOG_STATIC2(KSubSys, KLogComponent , _L8("Get Property[IPBearerCoexistence]: ret=%d, val=%d"), ret, state);
- 	
- 	switch(ret)
- 		{
- 		case KErrNotFound:
- 			{
-	 		//The property not exists. (NCM not start.)
-	
-		 	__FLOG_STATIC0(KSubSys, KLogComponent , _L8("Not define property yet. define it"));		
-			CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL();
-			event->iEvent.AppendFormat(_L("Not define property yet. define it."));
-			iTestConsole.NotifyEvent(event);
-	
-			//Define the property
-			User::LeaveIfError(RProperty::Define(KC32ExeSid, KIPBearerCoexistenceProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy));
-		 	__FLOG_STATIC0(KSubSys, KLogComponent , _L8("Define Property[IPBearerCoexistence] ok"));
-		 	break;
- 			}
- 		case KErrNone:
- 			{
-	 		//property exists.
-	 		if(state == ENcmIsActive)
-	 			{
-	 			//Ncm hold the key. PAN can't active. Do nothing in this command.
-	 			CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL();
-	 			event->iEvent.AppendFormat(_L("NCM hold the P&S key!"));
-	 			iTestConsole.NotifyEvent(event); 	
-	 			bSet = EFalse;
-	 			}
-	 		break;
- 			}
- 		default:
- 			{
- 			//error when get P&S key.
- 			CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL();
- 			event->iEvent.AppendFormat(_L("Get P&S key error! err = %d"), ret);
- 			iTestConsole.NotifyEvent(event);
- 			bSet = EFalse;
- 			break;
- 			}
- 		}
- 	
- 	if(bSet)
- 		{
- 		//Set the property value
-		CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL();
-		CleanupStack::PushL(event);
- 		if(this->iSetPAN)
- 			{
- 			User::LeaveIfError(prop.Set(KC32ExeSid, KIPBearerCoexistenceProperty, EBTPanIsActive));
- 	 		__FLOG_STATIC1(KSubSys, KLogComponent , _L8("Set Property[IPBearerCoexistence]: val = %d"), EBTPanIsActive);		
- 			event->iEvent.AppendFormat(_L("Set PAN active! prop=%d"), EBTPanIsActive);			
- 			}
- 		else
- 			{
- 			User::LeaveIfError(prop.Set(KC32ExeSid, KIPBearerCoexistenceProperty, ENoneIsActive));
- 	 		__FLOG_STATIC1(KSubSys, KLogComponent , _L8("Set Property[IPBearerCoexistence]: val = %d"), ENoneIsActive);		
-			event->iEvent.AppendFormat(_L("Set PAN disactive! prop=%d"), ENoneIsActive);
-			}
- 		CleanupStack::Pop(event);
-		iTestConsole.NotifyEvent(event);
-					
- 		}
- 	
- 	CleanupStack::Pop(2, &mtx); //prop, mtx
- 	mtx.Signal();
- 	prop.Close();
- 	mtx.Close();
- 	
-	}
-
-void CSimPANCommand::ChangeDescription()
-	{
-	if(iSetPAN)
-		{
-		SetDescription(KSimPANCommandActive());
-		}
-	else
-		{
-		SetDescription(KSimPANCommandNone());
-		}
-	}
-
-void CSimPANCommand::DisplayExclusive(TInt aState)
-/**
-Display the exclusive state on main console and change the description of command by the
-value of aState
-  @param  aState 	Exclusive state
-*/
-	{
-	TBuf<DISPLAY_NCM_BTPAN_LEN>	exclusive;
-	iSetPAN = ETrue;
-	switch(aState)
-		{
-		case ENoneIsActive:
-			{
-			exclusive = _L("None    ");
-			}
-			break;
-		case ENcmIsActive:
-			{
-			exclusive = _L("NCM   ");
-			}
-			break;
-		case EBTPanIsActive:
-			{
-			exclusive = _L("BT PAN  ");
-			//If Bt Pan is active, the command description should be 'disactive BT PAN'
-			iSetPAN = EFalse;
-			}
-			break;
-		default:
-			exclusive = _L("        ");
-			break;
-		}
-	
-	ChangeDescription();
-	iTestConsole.SetDisplayItem(ENcmBtPanItem, exclusive);
-	}