--- /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 <sysstartup.h>
+#endif // RD_STARTUP_CHANGE
+
+#include "ctffactory.h"
+#include "tftypes.h"
+#include <psvariables.h>
+#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();
+ }