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 ); }