diff -r 000000000000 -r 4e1aa6a622a0 dosservices/tsrc/dsytesttool/dosservercontrol/src/tfdosservercontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dosservices/tsrc/dsytesttool/dosservercontrol/src/tfdosservercontrol.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,1094 @@ +/* +* 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 "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: Implementation of CTFDosServerControl class +* +*/ + + +// INCLUDE FILES +#ifndef RD_STARTUP_CHANGE +#include +#endif // RD_STARTUP_CHANGE + +#include "ctffactory.h" +#include "tftypes.h" +#include +#include "dsytesttooltrace.h" +#include "dsyenums.h" +#include "ctfdosservercontrol.h" +#include "ctfdosservercontroltestcase.h" +#include "ctfdoseventlistener.h" + + +// ----------------------------------------------------------------------------- +// GetDosServerControl +// ----------------------------------------------------------------------------- +EXPORT_C MTFDosServerControl* GetDosServerControl( void ) + { + CTFStub* stub = CTFFactory::Stub( KTFStubTypeDosServerControl ); + return STATIC_CAST( CTFDosServerControl*, stub ); + } + + +// ----------------------------------------------------------------------------- +// MTFDosServerControl::MTFDosServerControl +// ----------------------------------------------------------------------------- +MTFDosServerControl::MTFDosServerControl( void ) + { + } + + +// ----------------------------------------------------------------------------- +// MTFDosServerControl::~MTFDosServerControl +// ----------------------------------------------------------------------------- +MTFDosServerControl::~MTFDosServerControl( void ) + { + } + + +CTFDosServerControl::CTFDosServerControl( void ) +: CTFStub( KTFStubTypeDosServerControl ) + { + } + +//lint -e1740 Pointer not directly deleted by destructor +CTFDosServerControl::~CTFDosServerControl( void ) + { + ResetDosServices(); + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerControl::~CTFDosServerControl() - DosServer connection closed" ) ) ); + } +//lint +e1740 + +void CTFDosServerControl::InitializeL( void ) + { + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerControl::InitializeL()" ) ) ); + + User::LeaveIfError( iDosServer.Connect() ); + iEventListener = new ( ELeave ) CTFDosServerEventListener( iDosServer ); + TRegisterEvent eventList[] = + { +#ifndef RD_STARTUP_CHANGE + { KNotifySelfTestStatus, sizeof ( TInt ), EQueue }, + { KDoMtcInitiatedShutdown, sizeof ( TInt ), EQueue }, + { KPhonePowerOn, 0, EQueue }, +#endif //RD_STARTUP_CHANGE + +#ifndef RD_STARTUP_CHANGE + { KSimReady, sizeof ( TInt ), EQueue }, + { KSimChanged, sizeof ( TInt ), EQueue }, + { KSimLockStatus, sizeof ( TInt ), EQueue }, + { KSimState, sizeof ( TInt ), EQueue }, + { KCallsForwardingStatus, sizeof ( TInt ), EQueue }, + { KVoiceMailStatus, sizeof ( TInt ), EQueue }, + { KFaxMessage, sizeof ( TInt ), EQueue }, + { KEmailMessage, sizeof ( TInt ), EQueue }, +#endif //RD_STARTUP_CHANGE + + // { KNetworkBars, sizeof ( TInt ), EQueue }, + +#ifndef RD_STARTUP_CHANGE + { KSecurityCode, sizeof ( TInt ), EQueue }, +#endif //RD_STARTUP_CHANGE + +#ifndef RD_STARTUP_CHANGE + { KCurrentSimOwnedStatus, sizeof ( TInt ), EQueue }, +#endif //RD_STARTUP_CHANGE + +#ifndef __ACCESSORY_FW + { KAudioLinkOpenReq, sizeof ( TInt ), EQueue }, + { KAudioLinkCloseReq, sizeof ( TInt ), EQueue }, + { KActivateVoiceRecognitionReq, sizeof ( TInt ), EQueue }, + { KAbortVoiceRecognitionReq, sizeof ( TInt ), EQueue }, + { KVoiceRecognitionStatusReq, sizeof ( TInt ), EQueue }, + { KQuerySpeedDialNumberReq, sizeof ( TInt ), EQueue }, + { KQueryLastDialledVoiceNumberReq, sizeof ( TInt ), EQueue }, + { KAccessoryModeChangedInd, sizeof ( TInt ), EQueue }, + { KBTAccessoryModeChangedInd, sizeof ( TInt ), EQueue }, + { KAccessorySpeakerVolumeSetInd, sizeof ( TInt ), EQueue }, + { KServiceLevelConnEstablishedInd, sizeof ( TInt ), EQueue }, + { KHeadsetButtonChanged, sizeof ( TInt ), EQueue }, + { KHandsfreeModeChanged, sizeof ( TInt ), EQueue }, + { KOutputVolumeLevelChanged, sizeof ( TInt ), EQueue }, +#endif //__ACCESSORY_FW + +#ifndef RD_STARTUP_CHANGE + { KSmsStorageStatusChanged, sizeof ( TDosSmsStorageStatus ), EQueue }, +#endif // RD_STARTUP_CHANGE + +#ifndef __ACCESSORY_FW + { KAccessoryModeChanged, sizeof ( TInt ), EQueue } +#endif //__ACCESSORY_FW + }; + iEventListener->StartListeningL( eventList, sizeof ( eventList ) / sizeof ( TRegisterEvent ) ); + iInitialized = ETrue; + + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerControl::InitializeL - return" ) ) ); + } + +void CTFDosServerControl::ResetDosServices( void ) + { + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerStub::ResetDosServices()" ) ) ); + + if ( iEventListener != NULL ) + { + iEventListener->Stop(); + delete iEventListener; + } +#ifndef RD_STARTUP_CHANGE + if ( iDosSysUtils != NULL ) + { + iDosSysUtils->Close(); + iDosSysUtils = NULL; + } + if ( iDosHelper != NULL ) + { + iDosHelper->Close(); + iDosHelper = NULL; + } + if ( iDosMtc != NULL ) + { + iDosMtc->Close(); + iDosMtc = NULL; + } + if ( iDosSelfTest != NULL ) + { + iDosSelfTest->Close(); + iDosSelfTest = NULL; + } +#endif //RD_STARTUP_CHANGE + + if ( iDosSae != NULL ) + { + iDosSae->Close(); + iDosSae = NULL; + } +#ifndef __ACCESSORY_FW + if ( iDosBTAudio != NULL ) + { + iDosBTAudio->Close(); + iDosBTAudio = NULL; + } +#endif //__ACCESSORY_FW + if ( iDosExtension != NULL ) + { + iDosExtension->Close(); + iDosExtension = NULL; + } +#ifndef __ACCESSORY_FW + if ( iDosAccessory != NULL ) + { + iDosAccessory->Close(); + iDosAccessory = NULL; + } + if ( iDosAudio != NULL ) + { + iDosAudio->Close(); + iDosAudio = NULL; + } +#endif //__ACCESSORY_FW + + iDosServer.Close(); + iInitialized = EFalse; + + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerStub::ResetDosServices() - Success" ) ) ); + } + +void CTFDosServerControl::CallDosFunctionL( TTFDosServerControlTestCaseState& aParameter ) + { + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerControl::CallDosFunctionL(%d, %d, %d)" ), aParameter.iDosFunction, aParameter.iArg1, aParameter.iArg2 ) ); + + // DosServer connection needs to be opened. + if ( !iInitialized ) + { + InitializeL(); + } + + TInt retval = KTFErrDosServiceMissing; + switch ( aParameter.iDosFunction ) + { + +#ifndef RD_STARTUP_CHANGE + case ETFDosSysUtils_Open: + if ( iDosSysUtils == NULL ) + { + iDosSysUtils = new ( ELeave ) RDosSysUtils(); + retval = iDosSysUtils->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosSysUtils_GetSimLanguage: + TRACE_ASSERT( iDosSysUtils != NULL ); + if ( iDosSysUtils != NULL ) + { + retval = iDosSysUtils->GetSimLanguage( aParameter.iArg1 ); + } + break; + case ETFDosSysUtils_SetDosAlarm: + TRACE_ASSERT( iDosSysUtils != NULL ); + if ( iDosSysUtils != NULL ) + { + if ( aParameter.iArg1 != 0 ) + { + TTime time; + time.HomeTime(); + if ( aParameter.iArg1 > 0 ) + { + TTimeIntervalMinutes interval = aParameter.iArg1; + time += interval; + } + else + { + TTimeIntervalMinutes interval = 0 - aParameter.iArg1; + time -= interval; + } + time.RoundUpToNextMinute(); + if ( aParameter.iArg2 != 0 ) + { + TTimeIntervalSeconds interval = aParameter.iArg2; + time += interval; + } + retval = iDosSysUtils->SetDosAlarm( &time ); + } + else + { + retval = iDosSysUtils->SetDosAlarm( NULL ); + } + } + break; + case ETFDosSysUtils_PerformDosRfs: + TRACE_ASSERT( iDosSysUtils != NULL ); + if ( iDosSysUtils != NULL ) + { + } + break; + case ETFDosSysUtils_Close: + TRACE_ASSERT( iDosSysUtils != NULL ); + if ( iDosSysUtils != NULL ) + { + iDosSysUtils->Close(); + delete iDosSysUtils; + iDosSysUtils = NULL; + } + retval = KErrNone; + break; + + case ETFDosHelper_Open: + if ( iDosHelper == NULL ) + { + iDosHelper = new ( ELeave ) RDosHelper(); + retval = iDosHelper->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosHelper_GetStartupReason: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + retval = iDosHelper->GetStartupReason( aParameter.iArg1 ); + } + break; + case ETFDosHelper_GetSWStartupReason: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + TInt16 temp; + retval = iDosHelper->GetSWStartupReason( temp ); + aParameter.iArg1 = temp; + } + break; + case ETFDosHelper_SetSWStartupReason: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + retval = iDosHelper->SetSWStartupReason( ( TInt16 )aParameter.iArg1 ); + } + break; + case ETFDosHelper_HiddenReset: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + aParameter.iArg1 = iDosHelper->HiddenReset(); + retval = KErrNone; + } + break; + case ETFDosHelper_GetRTCStatus: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + retval = iDosHelper->GetRTCStatus( aParameter.iArg1 ); + } + break; + /*case ETFDosHelper_GenerateGripEvent: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + retval = iDosHelper->GenerateGripEvent(); + } + break;*/ + case ETFDosHelper_Close: + TRACE_ASSERT( iDosHelper != NULL ); + if ( iDosHelper != NULL ) + { + iDosHelper->Close(); + delete iDosHelper; + iDosHelper = NULL; + } + retval = KErrNone; + break; + + case ETFDosMtc_Open: + if ( iDosMtc == NULL ) + { + iDosMtc = new ( ELeave ) RDosMtc(); + retval = iDosMtc->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosMtc_PowerOn: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + retval = iDosMtc->PowerOn(); + } + break; + case ETFDosMtc_PowerOff: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + retval = iDosMtc->PowerOff(); + } + break; + case ETFDosMtc_DosSync: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + retval = iDosMtc->DosSync(); + } + break; + case ETFDosMtc_ResetGenerate: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + retval = iDosMtc->ResetGenerate(); + } + break; + case ETFDosMtc_SetState: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + retval = iDosMtc->SetState( aParameter.iArg1 ); + } + break; + case ETFDosMtc_SetStateFlag: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + retval = iDosMtc->SetStateFlag( ( TDosStateFlag )aParameter.iArg1 ); + } + break; + case ETFDosMtc_GetStateFlag: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + TDosStateFlag flag; + retval = iDosMtc->GetStateFlag( flag ); + aParameter.iArg1 = flag; + } + break; + case ETFDosMtc_Close: + TRACE_ASSERT( iDosMtc != NULL ); + if ( iDosMtc != NULL ) + { + iDosMtc->Close(); + delete iDosMtc; + iDosMtc = NULL; + } + retval = KErrNone; + break; + + case ETFDosSelfTest_Open: + if ( iDosSelfTest == NULL ) + { + iDosSelfTest = new ( ELeave ) RDosSelfTest(); + retval = iDosSelfTest->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosSelfTest_PerformSelfTest: + TRACE_ASSERT( iDosSelfTest != NULL ); + if ( iDosSelfTest != NULL ) + { + retval = iDosSelfTest->PerformSelfTest(); + } + break; + case ETFDosSelfTest_Close: + TRACE_ASSERT( iDosSelfTest != NULL ); + if ( iDosSelfTest != NULL ) + { + iDosSelfTest->Close(); + delete iDosSelfTest; + iDosSelfTest = NULL; + } + retval = KErrNone; + break; +#endif // RD_STARTUP_CHANGE + + case ETFDosSae_Open: + if ( iDosSae == NULL ) + { + iDosSae = new ( ELeave ) RDosSae(); + retval = iDosSae->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosSae_StartSae: + TRACE_ASSERT( iDosSae != NULL ); + if ( iDosSae != NULL ) + { + retval = iDosSae->StartSae(); + } + break; + case ETFDosSae_Close: + TRACE_ASSERT( iDosSae != NULL ); + if ( iDosSae != NULL ) + { + iDosSae->Close(); + delete iDosSae; + iDosSae = NULL; + } + retval = KErrNone; + break; + +#ifndef __ACCESSORY_FW + case ETFDosBTAudio_Open: + if ( iDosBTAudio == NULL ) + { + iDosBTAudio = new ( ELeave ) RDosBTAudio(); + retval = iDosBTAudio->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosBTAudio_AttachAudioAccessoryReq: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_CancelAttachReq: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_DetachAudioAccessoryReq: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_CancelDetachReq: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_AudioLinkOpenResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_AudioLinkCloseResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_ActivateVoiceRecognitionResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_AbortVoiceRecognitionResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_VoiceRecognitionStatusResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_QuerySpeedDialNumberResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_QueryLastDialledVoiceNumberResp: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_AudioLinkOpenInd: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_AudioLinkCloseInd: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_VoiceRecognitionStatusInd: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + } + break; + case ETFDosBTAudio_Close: + TRACE_ASSERT( iDosBTAudio != NULL ); + if ( iDosBTAudio != NULL ) + { + iDosBTAudio->Close(); + delete iDosBTAudio; + iDosBTAudio = NULL; + } + retval = KErrNone; + break; +#endif // __ACCESSORY_FW + + case ETFDosExtension_Open: + if ( iDosExtension == NULL ) + { + iDosExtension = new ( ELeave ) RTFDosExtension(); + retval = iDosExtension->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosExtension_CallFunction: + TRACE_ASSERT( iDosExtension != NULL ); + if ( iDosExtension != NULL ) + { + retval = iDosExtension->CallSyncDosExtFunction( aParameter.iArg1, ( TAny* )&aParameter.iArg2, sizeof ( aParameter.iArg2 ), ETrue ); + } + break; + case ETFDosExtension_CallFunctionAndComplete: + TRACE_ASSERT( iDosExtension != NULL ); + if ( iDosExtension != NULL ) + { + TRequestStatus status; + retval = iDosExtension->CallAsyncDosExtFunction( status, aParameter.iArg1, ( TAny* )&aParameter.iArg2, sizeof ( TInt ), ETrue ); + } + break; + case ETFDosExtension_Close: + TRACE_ASSERT( iDosExtension != NULL ); + if ( iDosExtension != NULL ) + { + iDosExtension->Close(); + delete iDosExtension; + iDosExtension = NULL; + } + retval = KErrNone; + break; + +#ifndef __ACCESSORY_FW + case ETFDosAccessory_Open: + if ( iDosAccessory == NULL ) + { + iDosAccessory = new ( ELeave ) RDosAccessory(); + retval = iDosAccessory->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosAccessory_GetAccessoryMode: + TRACE_ASSERT( iDosAccessory != NULL ); + if ( iDosAccessory != NULL ) + { + TDosAccessoryMode acc; + retval = iDosAccessory->GetAccessoryMode( acc ); + if ( retval == KErrNone ) + { + aParameter.iArg1 = acc; + } + } + break; + case ETFDosAccessory_SetLoopSetModeState: + TRACE_ASSERT( iDosAccessory != NULL ); + if ( iDosAccessory != NULL ) + { + retval = iDosAccessory->SetLoopSetModeState( ( EPSAccLpsMode )aParameter.iArg1 ); + } + break; + case ETFDosAccessory_GetLoopSetModeState: + TRACE_ASSERT( iDosAccessory != NULL ); + if ( iDosAccessory != NULL ) + { + EPSAccLpsMode acc; + retval = iDosAccessory->GetLoopSetModeState( acc ); + if ( retval == KErrNone ) + { + aParameter.iArg1 = acc; + } + } + break; + + case ETFDosAccessory_Close: + TRACE_ASSERT( iDosAccessory != NULL ); + if ( iDosAccessory != NULL ) + { + iDosAccessory->Close(); + delete iDosAccessory; + iDosAccessory = NULL; + } + retval = KErrNone; + break; +#endif // __ACCESSORY_FW + + +#ifndef __ACCESSORY_FW + case ETFDosAudio_Open: + if ( iDosAudio == NULL ) + { + iDosAudio = new ( ELeave ) RDosAudio(); + retval = iDosAudio->Open( iDosServer ); + } + else + { + retval = KErrNone; + } + break; + case ETFDosAudio_SetHandsfreeMode: + TRACE_ASSERT( iDosAudio != NULL ); + if ( iDosAudio != NULL ) + { + retval = iDosAudio->SetHandsfreeMode( ( EPSHandsFreeMode )aParameter.iArg1 ); + } + break; + case ETFDosAudio_GetHandsfreeMode: + TRACE_ASSERT( iDosAudio != NULL ); + if ( iDosAudio != NULL ) + { + EPSHandsFreeMode hf; + retval = iDosAudio->GetHandsfreeMode( hf ); + if ( retval == KErrNone ) + { + aParameter.iArg1 = hf; + } + } + break; + + case ETFDosAudio_GetOutputVolume: + TRACE_ASSERT( iDosAudio != NULL ); + if ( iDosAudio != NULL ) + { + retval = iDosAudio->GetOutputVolume( aParameter.iArg1 ); + } + break; + case ETFDosAudio_SetOutputVolume: + TRACE_ASSERT( iDosAudio != NULL ); + if ( iDosAudio != NULL ) + { + retval = iDosAudio->SetOutputVolume( aParameter.iArg1 ); + } + break; + case ETFDosAudio_Close: + TRACE_ASSERT( iDosAudio != NULL ); + if ( iDosAudio != NULL ) + { + iDosAudio->Close(); + delete iDosAudio; + iDosAudio = NULL; + } + retval = KErrNone; + break; +#endif // __ACCESSORY_FW + + default: + TRACE_ASSERT_ALWAYS; + break; + } + User::LeaveIfError( retval ); + } + +// Getters return 0, since they are not used in parameter tests +TInt CTFDosServerControl::ParameterCount( TTFDosFunction aFunction ) const + { + TInt retval = 0; + switch ( aFunction ) + { +#ifndef RD_STARTUP_CHANGE + case ETFDosSysUtils_Open: + case ETFDosHelper_Open: + case ETFDosMtc_Open: + case ETFDosSelfTest_Open: + case ETFDosSysUtils_Close: + case ETFDosHelper_Close: + case ETFDosMtc_Close: + case ETFDosSelfTest_Close: +#endif // RD_STARTUP_CHANGE + + case ETFDosSae_Open: + case ETFDosSae_Close: + +#ifndef __ACCESSORY_FW + case ETFDosBTAudio_Open: + case ETFDosBTAudio_Close: +#endif // __ACCESSORY_FW + + case ETFDosExtension_Open: + case ETFDosExtension_Close: + +#ifndef __ACCESSORY_FW + case ETFDosAccessory_Open: + case ETFDosAudio_Open: + case ETFDosAccessory_Close: + case ETFDosAudio_Close: +#endif // __ACCESSORY_FW + break; + +#ifndef RD_STARTUP_CHANGE + case ETFDosSysUtils_SetDosAlarm: + case ETFDosSysUtils_PerformDosRfs: + retval = 1; + break; + case ETFDosHelper_GetStartupReason: + case ETFDosHelper_GetSWStartupReason: + break; + case ETFDosHelper_SetSWStartupReason: + retval = 1; + break; + case ETFDosHelper_HiddenReset: + case ETFDosHelper_GetRTCStatus: + //case ETFDosHelper_GenerateGripEvent: + case ETFDosMtc_PowerOn: + case ETFDosMtc_PowerOff: + case ETFDosMtc_DosSync: + case ETFDosMtc_ResetGenerate: + break; + case ETFDosMtc_SetState: + case ETFDosMtc_SetStateFlag: + retval = 1; + break; + case ETFDosMtc_GetStateFlag: + case ETFDosSelfTest_PerformSelfTest: + break; +#endif // RD_STARTUP_CHANGE + + case ETFDosSae_StartSae: + break; + +#ifndef __ACCESSORY_FW + case ETFDosBTAudio_AttachAudioAccessoryReq: + break; + case ETFDosBTAudio_CancelAttachReq: + break; + case ETFDosBTAudio_DetachAudioAccessoryReq: + break; + case ETFDosBTAudio_CancelDetachReq: + break; + case ETFDosBTAudio_AudioLinkOpenResp: + break; + case ETFDosBTAudio_AudioLinkCloseResp: + break; + case ETFDosBTAudio_ActivateVoiceRecognitionResp: + break; + case ETFDosBTAudio_AbortVoiceRecognitionResp: + break; + case ETFDosBTAudio_VoiceRecognitionStatusResp: + break; + case ETFDosBTAudio_QuerySpeedDialNumberResp: + break; + case ETFDosBTAudio_QueryLastDialledVoiceNumberResp: + break; + case ETFDosBTAudio_AudioLinkOpenInd: + break; + case ETFDosBTAudio_AudioLinkCloseInd: + break; + case ETFDosBTAudio_VoiceRecognitionStatusInd: + break; +#endif // __ACCESSORY_FW + + case ETFDosExtension_CallFunction: + break; + case ETFDosExtension_CallFunctionAndComplete: + break; + +#ifndef __ACCESSORY_FW + case ETFDosAccessory_GetAccessoryMode: + break; + case ETFDosAccessory_SetLoopSetModeState: + retval = 1; + break; + case ETFDosAccessory_GetLoopSetModeState: + break; + + case ETFDosAudio_SetHandsfreeMode: + retval = 1; + break; + case ETFDosAudio_GetHandsfreeMode: + break; + + case ETFDosAudio_GetOutputVolume: + break; + case ETFDosAudio_SetOutputVolume: + retval = 1; + break; +#endif // __ACCESSORY_FW + + default: + TRACE_ASSERT_ALWAYS; + break; + } + return retval; + } + + +TBool CTFDosServerControl::ParameterBounds( TTFDosFunction aFunction, TInt* aMin, TInt* aMax ) const + { + TBool retval = EFalse; + TRACE_ASSERT( aMin != NULL && aMax != NULL ); + if ( aMin != NULL && aMax != NULL ) + { + switch ( aFunction ) + { +#ifndef RD_STARTUP_CHANGE + case ETFDosSysUtils_Open: + case ETFDosHelper_Open: + case ETFDosMtc_Open: + case ETFDosSelfTest_Open: + case ETFDosSysUtils_Close: + case ETFDosHelper_Close: + case ETFDosMtc_Close: + case ETFDosSelfTest_Close: +#endif // RD_STARTUP_CHANGE + + case ETFDosSae_Open: + case ETFDosExtension_Open: + +#ifndef __ACCESSORY_FW + case ETFDosBTAudio_Open: + case ETFDosBTAudio_Close: + case ETFDosAccessory_Open: + case ETFDosAudio_Open: + case ETFDosAccessory_Close: + case ETFDosAudio_Close: +#endif // __ACCESSORY_FW + + case ETFDosSae_Close: + case ETFDosExtension_Close: + break; + +#ifndef RD_STARTUP_CHANGE + case ETFDosSysUtils_GetSimLanguage: + break; + case ETFDosSysUtils_SetDosAlarm: + // Not supported, too many time values to test. + break; + case ETFDosSysUtils_PerformDosRfs: + retval = ETrue; + *aMin = ERfsNormal; + *aMax = ERfsDeep; + break; + + case ETFDosHelper_GetStartupReason: + break; + case ETFDosHelper_GetSWStartupReason: + break; + case ETFDosHelper_SetSWStartupReason: + retval = ETrue; + *aMin = ESWNone; + *aMax = ESWRestoreFactorySetDeep; + break; + case ETFDosHelper_HiddenReset: + break; + case ETFDosHelper_GetRTCStatus: + break; + //case ETFDosHelper_GenerateGripEvent: + // break; + + case ETFDosMtc_PowerOn: + break; + case ETFDosMtc_PowerOff: + break; + case ETFDosMtc_DosSync: + break; + case ETFDosMtc_ResetGenerate: + break; + case ETFDosMtc_SetState: + retval = ETrue; + *aMin = ESysApMtcChargingState; + *aMax = ESysApMtcRfInactiveState; + break; + case ETFDosMtc_SetStateFlag: + retval = ETrue; + *aMin = EDosOfflineStateFlagFalse; + *aMax = EDosOfflineStateFlagTrue; + break; + case ETFDosMtc_GetStateFlag: + break; + + case ETFDosSelfTest_PerformSelfTest: + break; +#endif // RD_STARTUP_CHANGE + + case ETFDosSae_StartSae: + break; + +#ifndef __ACCESSORY_FW + case ETFDosBTAudio_AttachAudioAccessoryReq: + break; + case ETFDosBTAudio_CancelAttachReq: + break; + case ETFDosBTAudio_DetachAudioAccessoryReq: + break; + case ETFDosBTAudio_CancelDetachReq: + break; + case ETFDosBTAudio_AudioLinkOpenResp: + break; + case ETFDosBTAudio_AudioLinkCloseResp: + break; + case ETFDosBTAudio_ActivateVoiceRecognitionResp: + break; + case ETFDosBTAudio_AbortVoiceRecognitionResp: + break; + case ETFDosBTAudio_VoiceRecognitionStatusResp: + break; + case ETFDosBTAudio_QuerySpeedDialNumberResp: + break; + case ETFDosBTAudio_QueryLastDialledVoiceNumberResp: + break; + case ETFDosBTAudio_AudioLinkOpenInd: + break; + case ETFDosBTAudio_AudioLinkCloseInd: + break; + case ETFDosBTAudio_VoiceRecognitionStatusInd: + break; +#endif // __ACCESSORY_FW + + case ETFDosExtension_CallFunction: + break; + case ETFDosExtension_CallFunctionAndComplete: + break; + +#ifndef __ACCESSORY_FW + case ETFDosAccessory_GetAccessoryMode: + break; + case ETFDosAccessory_SetLoopSetModeState: + retval = ETrue; + *aMin = EPSAccLpsOff; + *aMax = EPSAccTty; + break; + case ETFDosAccessory_GetLoopSetModeState: + break; + + case ETFDosAudio_SetHandsfreeMode: + retval = ETrue; + *aMin = EPSIhfOff; + *aMax = EPSIhfOn; + break; + case ETFDosAudio_GetHandsfreeMode: + break; + + case ETFDosAudio_GetOutputVolume: + break; + case ETFDosAudio_SetOutputVolume: + retval = ETrue; + *aMin = 0; + *aMax = 9; + break; +#endif // __ACCESSORY_FW + + default: + TRACE_ASSERT_ALWAYS; + break; + } + } + else + { + retval = KErrArgument; + } + return retval; + } + +void CTFDosServerControl::NotifyDosEvent( TInt aEvent, TInt aParameter ) + { + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerControl::NotifyDosEvent( %d, %d )" ), aEvent, aParameter ) ); + CTFDosServerControlTestCase* testCase = STATIC_CAST( CTFDosServerControlTestCase*, CurrentTestCase() ); + TRACE_ASSERT( testCase != NULL ); + if ( testCase != NULL ) + { + testCase->NotifyDosEvent( aEvent, aParameter ); + } + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - CTFDosServerControl::NotifyDosEvent - return" ) ) ); + } + + +TInt RTFDosExtension::CallSyncDosExtFunction( const TInt& aFunc, TAny* aParam = NULL, TInt aParLength = 0, TBool aAutoComplete = ETrue ) + { + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - RTFDosExtension::CallSyncDosExtFunction(0x%x, 0x%x, 0x%x, 0x%x)" ), aFunc, aParam, aParLength, aAutoComplete ) ); + TExtensionParPckg package; + package().iFunc = aFunc; + package().iParLength = aParLength; + package().iAutoComplete = aAutoComplete; + TPtr8 ptr( ( TUint8* )aParam, aParLength, aParLength ); + TInt result = CallFunction( package, ptr ); + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - RTFDosExtension::CallSyncDosExtFunction - return 0x%x" ), result ) ); + return result; + } + + +TInt RTFDosExtension::CallAsyncDosExtFunction( TRequestStatus& aStatus, TInt aFunc, TAny* aParam = NULL, TInt aParLength = 0, TBool aAutoComplete = EFalse ) + { + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - RTFDosExtension::CallAsyncDosExtFunction(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)" ), &aStatus, aFunc, aParam, aParLength, aAutoComplete ) ); + TExtensionParPckg package; + package().iFunc = aFunc; + package().iParLength = aParLength; + package().iAutoComplete = aAutoComplete; + TPtr8 ptr( ( TUint8* )aParam, aParLength, aParLength ); + CallFunction( aStatus, package, ptr ); + User::WaitForRequest( aStatus ); + COMPONENT_TRACE( ( _L( " DSYTESTTOOL - RTFDosExtension::CallAsyncDosExtFunction - return 0x%x" ), aStatus.Int() ) ); + return aStatus.Int(); + }