mmserv/radioutility/radio_utility/tsrc/src/TFMRadioUtility.cpp
changeset 53 eabc8c503852
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/radio_utility/tsrc/src/TFMRadioUtility.cpp	Tue Sep 21 11:38:43 2010 -0500
@@ -0,0 +1,1581 @@
+/*
+* 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: The class provides a way to test Radio Utility's functions
+*
+*
+*/
+
+
+// INCLUDES
+#include <e32cons.h>
+#include <f32file.h>
+#include <RadioUtility.h>
+#include "RadioSession.h"
+#include "TFMRadioUtility.h"
+
+class CRadioUtility;
+
+/**
+* Cause a panic
+* @param aPanic - The panic to be raised
+**/
+GLDEF_C void Panic(TInt aPanic)
+	{
+	_LIT(KNameOfApp,"TRadioEngine");
+	User::Panic(KNameOfApp, aPanic);
+	}
+
+/**
+* Start the BTTestHarness up.
+**/
+void StartupL()
+	{
+	CActiveScheduler *pA=new(ELeave) CActiveScheduler;
+	CleanupStack::PushL(pA);
+	CActiveScheduler::Install(pA);
+	CTRadioUtility* tester = CTRadioUtility::NewLC();
+	tester->StartTestingL();
+	CActiveScheduler::Start();
+	CleanupStack::Pop(); 
+	delete tester;
+	tester = NULL;
+	CleanupStack::PopAndDestroy(1);
+	}
+
+/**
+* The main entrypoint for the application
+**/
+GLDEF_C TInt E32Main()
+	{
+
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup=CTrapCleanup::New(); 
+	TRAPD(error, StartupL() );
+
+	delete cleanup; 
+	__UHEAP_MARKEND;
+	if (error == KErrNone)
+		{
+		return KErrNone;
+		}
+		else
+		{
+			return error;
+		}
+	}
+
+/**
+* NewL method for creating new instances of this class.
+**/
+CTRadioUtility* CTRadioUtility::NewL()
+	{
+	CTRadioUtility* s = CTRadioUtility::NewLC();
+	CleanupStack::Pop();
+	return s;
+	}
+
+
+/**
+* NewLC method for creating new instances of this class.
+**/
+CTRadioUtility* CTRadioUtility::NewLC()
+	{
+	RDebug::Print(_L("CTRadioUtility::NewLC"));
+	CTRadioUtility* s = new(ELeave) CTRadioUtility();
+	CleanupStack::PushL(s);
+	s->ConstructL();
+	return s;
+	}
+/**
+* MRadioPlayerObserver Callback 
+* 
+*
+**/
+void CTRadioUtility::MrpoStateChange( TPlayerState aState, TInt aError )
+	{
+		iConsole->Printf(_L("Player State Change: %x Error Code: %x\n"),aState, aError);
+	}
+
+/**
+* MRadioPlayerObserver MrpoVolumeChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrpoVolumeChange( TInt aVolume )
+	{
+		iConsole->Printf(_L("Volume Change: %x\n"),aVolume);
+	}
+
+/**
+* MRadioPlayerObserver MrpoMuteChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrpoMuteChange( TBool aMute )
+	{
+		iConsole->Printf(_L("Mute Change: %x\n"),aMute);
+	}
+
+/**
+* MRadioPlayerObserver MrpoBalanceChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrpoBalanceChange( TInt aLeftPercentage, TInt aRightPercentage )
+	{
+		iConsole->Printf(_L("Left Percentage: %x Right Percentage: %x\n"),aLeftPercentage, aRightPercentage);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoRequestTunerControlComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoRequestTunerControlComplete( TInt aError )
+	{
+		iConsole->Printf(_L("Request Tuner Control Complete: %x\n"),aError);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoSetFrequencyRangeComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoSetFrequencyRangeComplete( TInt aError )
+	{
+		iConsole->Printf(_L("Set Frequency Range Complete: %x\n"),aError);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoSetFrequencyComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoSetFrequencyComplete( TInt aError )
+	{
+		iConsole->Printf(_L("Set Frequency Complete: %x\n"),aError);
+	}
+	
+/**
+* MRadioFmTunerObserver  Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoStationSeekComplete( TInt aError, TInt aFrequency )
+	{
+		iConsole->Printf(_L("Station Seek Complete: %x Frequency: %x\n"),aError, aFrequency);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoFmTransmitterStatusChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoFmTransmitterStatusChange( TBool aActive )
+	{
+		iConsole->Printf(_L("Transmitter Status Change: %x\n"),aActive);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoAntennaStatusChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoAntennaStatusChange( TBool aAttached )
+	{
+		iConsole->Printf(_L("Antenna Status Change: %x\n"),aAttached);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoOfflineModeStatusChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoOfflineModeStatusChange( TBool aOfflineMode )
+	{
+		iConsole->Printf(_L("Offline Mode Change: %x\n"),aOfflineMode);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoFrequencyRangeChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoFrequencyRangeChange( TFmRadioFrequencyRange aNewRange )
+	{
+		iConsole->Printf(_L("Frequency Range Change: Range = %d"),aNewRange);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoFrequencyChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoFrequencyChange( TInt aNewFrequency )
+	{
+		iConsole->Printf(_L("Frequency Change: %x\n"),aNewFrequency);
+	}
+	
+/**
+* MRadioFmTunerObserver MrftoForcedMonoChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoForcedMonoChange( TBool aForcedMono )
+	{
+		iConsole->Printf(_L("Forced Mono Change: %x\n"),aForcedMono);
+	}
+	
+/**
+* MRadioFmTunerObserver  MrftoSquelchChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrftoSquelchChange( TBool aSquelch )
+	{
+		iConsole->Printf(_L("Squelch Change: %x\n"),aSquelch);
+	}
+		
+
+/**
+* MRadioRdsTunerObserver MrroStationSeekByPTYComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroStationSeekByPTYComplete( TInt /*aError*/, TInt aFrequency )
+	{
+		iConsole->Printf(_L(" Station Seek By PTY Complete: %x\n"),aFrequency);
+	}
+	
+/**
+* MRadioRdsTunerObserver MrroStationSeekByTAComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroStationSeekByTAComplete( TInt /*aError*/, TInt aFrequency )
+	{
+		iConsole->Printf(_L(" Station Seek By TA Complete: %x\n"),aFrequency);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroStationSeekByTPComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroStationSeekByTPComplete( TInt /*aError*/, TInt aFrequency ) 
+	{
+		iConsole->Printf(_L(" Statio Seek TP Complete: %x\n"),aFrequency);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroGetFreqByPTYComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroGetFreqByPTYComplete( TInt aError, RArray<TInt>& /*aFreqList*/ )
+	{
+		iConsole->Printf(_L(" Freq By PTY Complete: %x\n"),aError);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroGetFreqByTAComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroGetFreqByTAComplete( TInt aError, RArray<TInt>& /*aFreqList*/ )
+	{
+		iConsole->Printf(_L(" Freq By TA Complete: %x\n"),aError);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroGetPSByPTYComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroGetPSByPTYComplete( TInt aError, RArray<TRdsPSName>& /*aPsList*/ )
+	{
+		iConsole->Printf(_L(" PSByPTY Complete: %x\n"),aError);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroGetPSByTAComplete Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroGetPSByTAComplete( TInt aError, RArray<TRdsPSName>& /*aPsList*/ )
+	{
+		iConsole->Printf(_L(" PSByTA Complete: %x\n"),aError);
+	}
+	
+/**
+* MRadioRdsTunerObserver MrroRdsDataPI Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataPI( TInt aPi )
+	{
+		iConsole->Printf(_L(" Data PI: %x\n"),aPi);
+	}	
+
+/**
+* MRadioRdsTunerObserver MrroRdsDataPTY Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataPTY( TRdsProgrammeType aPty )
+	{
+		iConsole->Printf(_L(" Data PTY: %x\n"),aPty);
+	}	
+
+/**
+* MRadioRdsTunerObserver MrroRdsDataPS Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataPS( TRdsPSName& /*aPs*/ )
+	{
+		iConsole->Printf(_L(" Data PS:\n"));
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsDataRT Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataRT( TRdsRadioText& /*aRt*/ )
+	{
+		iConsole->Printf(_L(" Data RT: \n"));
+	}
+	
+/**
+* MRadioRdsTunerObserver MrroRdsDataRTPlus Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataRTplus( TRdsRTplusClass /*aRtPlusClass*/, TRdsRadioText& /*aRtPlusData*/ )
+	{
+		iConsole->Printf(_L(" Data RTPlusData: \n"));
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsDataCT Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataCT( TDateTime& /*aCt*/ )
+	{
+		iConsole->Printf(_L(" Data CT: \n"));
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsDataTA Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsDataTA( TBool aTaOn )
+	{
+		iConsole->Printf(_L(" Data TA: %x\n"),aTaOn);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsSearchBeginAF Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsSearchBeginAF()
+	{
+		iConsole->Printf(_L(" Search Begin AF:\n"));
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsSearchEndAF Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsSearchEndAF( TInt /*aError*/, TInt aFrequency )
+	{
+		iConsole->Printf(_L(" Search End AF: %x\n"),aFrequency);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsStationChangeTA Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsStationChangeTA( TInt aFrequency )
+	{
+		iConsole->Printf(_L("Station Change TA: %x\n"),aFrequency);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsEventAutomaticSwitchingChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsEventAutomaticSwitchingChange( TBool aAuto )
+	{
+		iConsole->Printf(_L(" Auto Switch Change: %x\n"),aAuto);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsEventAutomaticTrafficAnnouncement Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsEventAutomaticTrafficAnnouncement( TBool aAuto )
+	{
+		iConsole->Printf(_L(" Auto TA Change: %x\n"),aAuto);
+	}
+
+/**
+* MRadioRdsTunerObserver MrroRdsEventSignalChange Callback 
+* 
+*
+**/
+void CTRadioUtility::MrroRdsEventSignalChange( TBool aSignal )
+	{
+		iConsole->Printf(_L(" Signal Change: %x\n"),aSignal);
+	}
+    
+/**
+* 2nd phase constructor
+**/
+void CTRadioUtility::ConstructL()
+	{
+	RDebug::Print(_L("CTRadioUtility::ConstructL()"));
+	iConsole=Console::NewL(_L("CTestRadioUtility"), TSize(-1,-1));
+	iReadConsole = CTRadioUtilityConsole::NewL(this);
+	TBool PrimaryClient = ETrue;
+	iRadioUtility = CRadioUtility::NewL(PrimaryClient);
+	iFmTunerUtility = &iRadioUtility->RadioFmTunerUtilityL(*this);
+	iPlayerUtility  = &iRadioUtility->RadioPlayerUtilityL(*this);
+	iRdsUtility     = &iRadioUtility->RadioRdsUtilityL(*this);
+	}
+
+/**
+* c++ default constructor
+**/
+CTRadioUtility::CTRadioUtility()
+	{
+	}
+
+/**
+* destructor
+**/
+CTRadioUtility::~CTRadioUtility()
+	{
+//	iSharedDataClient.Close();
+	delete iRadioUtility;
+	delete iReadConsole;
+	delete iConsole;
+	User::After(20000000);
+	}
+
+/**
+* Simple helper method to retrieve a pointer to the console method
+* @return a pointer to the console
+**/
+CConsoleBase* CTRadioUtility::ConsoleWin()
+	{
+	return iConsole;
+	}
+	
+//	
+//
+// Tuner Utility Test Cases
+//
+//
+
+/**
+* RequestTunerControl
+* @return None
+**/
+void CTRadioUtility::RequestTunerControl()
+	{
+	iFmTunerUtility->RequestTunerControl();
+	}
+	
+/**
+* CloseTuner 
+* @return None
+**/
+void CTRadioUtility::CloseTuner()
+	{
+	//iFmTunerUtility->Close();
+	}
+	
+/**
+* GetCapabilities 
+* @return None
+**/
+void CTRadioUtility::GetTunerCapabilities()
+	{
+	TFmTunerCapabilities Caps;
+	TInt err = iFmTunerUtility->GetCapabilities(Caps);
+	iConsole->Printf(_L("TunerCapabilities: %x\n"),Caps.iTunerBands);
+	}
+	
+/**
+* EnableTunerInOfflineMode 
+* @return None
+**/
+void CTRadioUtility::EnableTunerInOfflineMode()
+	{
+	TBool Enable = EFalse;
+	TInt err = iFmTunerUtility->EnableTunerInOfflineMode(Enable);
+	}
+	
+/**
+* SetFrequencyRange 
+* @return None
+**/
+void CTRadioUtility::SetFrequencyRange()
+	{
+	iRange = EFmRangeJapan;
+	iConsole->Printf(_L("Frequency was Japanese: %x\n"),iRange);
+	TFmRadioFrequencyRange Range = EFmRangeEuroAmerica;
+	iFmTunerUtility->SetFrequencyRange(Range);
+	iRange = Range;
+	iConsole->Printf(_L("Frequency now set to America: %x\n"),iRange);
+	}
+	
+/**
+* GetFrequencyRange 
+* @return None
+**/
+void CTRadioUtility::GetFrequencyRange()
+	{
+	TFmRadioFrequencyRange Range = EFmRangeEuroAmerica;
+	TInt MinFreq;
+	TInt MaxFreq;
+	TInt err = iFmTunerUtility->GetFrequencyRange(Range, MinFreq, MaxFreq );
+	iConsole->Printf(_L("GetFrequncy Range: Min %x Max %x\n"),MinFreq, MaxFreq);
+	}
+	
+/**
+* SetFrequency 
+* @return None
+**/
+void CTRadioUtility::SetFrequency()
+	{
+	TInt Freq = 106100000;
+	
+	iFmTunerUtility->SetFrequency(Freq);
+	iConsole->Printf(_L("Set Frequency to 106100000: %d\n"),Freq);
+	}
+	
+/**
+* GetFrequency 
+* @return None
+**/
+void CTRadioUtility::GetFrequency()
+	{
+	TInt Freq;
+	TInt err = iFmTunerUtility->GetFrequency(Freq);
+	iConsole->Printf(_L("GetFrequncy: %d\n"),Freq);
+	}
+	
+/**
+* StationSee 
+* @return None
+**/
+void CTRadioUtility::StationSeek()
+	{
+	TBool Upwards = ETrue;
+	iFmTunerUtility->StationSeek(Upwards);
+	}
+	
+/**
+* GetSignalStrength 
+* @return None
+**/
+void CTRadioUtility::GetSignalStrength()
+	{
+	TInt SignalStrength;
+	TInt err = iFmTunerUtility->GetSignalStrength(SignalStrength);
+	iConsole->Printf(_L("GetSignalStrength: %d\n"),SignalStrength);
+	}
+	
+/**
+* GetMaxSignalStrength
+* @return None
+**/
+void CTRadioUtility::GetMaxSignalStrength()
+	{
+	TInt SignalStrength;
+	TInt err = iFmTunerUtility->GetMaxSignalStrength(SignalStrength);
+	iConsole->Printf(_L("GetMaxSignalStrength: %x\n"),SignalStrength);
+	}
+	
+/**
+* GetStereoMode 
+* @return None
+**/
+void CTRadioUtility::GetStereoMode()
+	{
+	TBool Stereo;
+	TInt err = iFmTunerUtility->GetStereoMode(Stereo);
+	iConsole->Printf(_L("Stereo Mode: %x\n"),Stereo);
+	} 
+
+/**
+* ForceMonoReception 
+* @return None
+**/
+void CTRadioUtility::ForceMonoReception()
+	{
+	TBool ForceMono = ETrue;
+	TInt err = iFmTunerUtility->ForceMonoReception(ForceMono);
+	iConsole->Printf(_L("Set ForceMonoReception: %x\n"),ForceMono);
+	}
+	
+/**
+* GetForceMonoReception 
+* @return None
+**/
+void CTRadioUtility::GetForceMonoReception()
+	{
+	TBool ForceMono;
+	TInt err = iFmTunerUtility->GetForcedMonoReception(ForceMono);
+	iConsole->Printf(_L("GetForceMonoReception: %x\n"),ForceMono);
+	}
+	
+/**
+* SetSquelch 
+* @return None
+**/
+void CTRadioUtility::SetSquelch()
+	{
+	TBool Squelch = ETrue;
+	TInt err = iFmTunerUtility->SetSquelch(Squelch);
+	iConsole->Printf(_L("SetSquelch: %x\n"),Squelch);
+	}
+	
+/**
+* GetSquelch 
+* @return None
+**/
+void CTRadioUtility::GetSquelch()
+	{
+	TBool Squelch;
+	TInt err = iFmTunerUtility->GetSquelch(Squelch);
+	iConsole->Printf(_L("GetSquelch: %x\n"),Squelch);
+	}
+	
+/**
+* CancelStationSeek 
+* @return None
+**/
+void CTRadioUtility::CancelStationSeek()
+	{
+	iFmTunerUtility->CancelStationSeek();
+	}
+	
+/**
+* CancelSetFrequencyRange 
+* @return None
+**/
+void CTRadioUtility::CancelSetFrequencyRange()
+	{
+	iFmTunerUtility->CancelSetFrequencyRange();
+	}
+	
+/**
+* CancelSetFrequency 
+* @return None
+**/
+void CTRadioUtility::CancelSetFrequency()
+	{
+	iFmTunerUtility->CancelSetFrequency();
+	}
+	
+	
+//
+// Player Utility Test Cases
+//
+
+/**
+* Play Radio
+* @return None
+**/
+void CTRadioUtility::Play()
+	{
+	iPlayerUtility->Play();
+	}
+	
+/**
+* PlayerState Radio
+* @return None
+**/
+void CTRadioUtility::PlayerState()
+	{ 
+		TPlayerState PState;	
+		PState = iPlayerUtility->PlayerState();
+		iConsole->Printf(_L("PlayerState: %x\n"),PState);
+	}
+	
+/**
+* Close Radio
+* @return None
+**/
+void CTRadioUtility::ClosePlayer()
+	{
+	iPlayerUtility->Close();
+	}
+	
+/**
+* Stop Radio
+* @return None
+**/
+void CTRadioUtility::StopPlayer()
+	{
+	iPlayerUtility->Stop();
+	}
+	
+/**
+* Mute Radio
+* @return None
+**/
+void CTRadioUtility::Mute()
+	{
+	TInt err = iPlayerUtility->Mute(ETrue);
+	}
+	
+/**
+* IsMute Radio
+* @return None
+**/
+void CTRadioUtility::IsMute()
+	{
+	TBool Mute = iPlayerUtility->IsMute();
+	iConsole->Printf(_L("IsMute: %x\n"),Mute);
+	}
+	
+/**
+* SetVolume Radio
+* @return None
+**/
+void CTRadioUtility::SetVolume()
+	{
+	TInt Volume = 6;
+	TInt err = iPlayerUtility->SetVolume(Volume);
+	}
+	
+/**
+* GetVolume Radio
+* @return None
+**/
+void CTRadioUtility::GetVolume()
+	{
+	TInt Volume;
+	TInt err = iPlayerUtility->GetVolume(Volume);
+	iConsole->Printf(_L("Volume: %x\n"),Volume);
+	}
+	
+/**
+* SetVolumeRamp Radio
+* @return None
+**/
+void CTRadioUtility::SetVolumeRamp()
+	{
+	TTimeIntervalMicroSeconds RampInterval = 4;
+	TInt err = iPlayerUtility->SetVolumeRamp(RampInterval);
+	iConsole->Printf(_L("RampInterval: %x\n"),RampInterval.Int64() );
+	}
+	   
+/**
+* GetMaxVolume Radio
+* @return None
+**/
+void CTRadioUtility::GetMaxVolume()
+	{
+	TInt MaxVolume;
+	TInt err = iPlayerUtility->GetMaxVolume(MaxVolume);
+	iConsole->Printf(_L("MaxVolume: %x\n"),MaxVolume);
+	}
+	
+/**
+* SetBalance Radio
+* @return None
+**/
+void CTRadioUtility::SetBalance()
+	{
+	TInt LeftPercentage = 49;
+	TInt RightPercentage = 51;
+	TInt err = iPlayerUtility->SetBalance(LeftPercentage, RightPercentage);
+	}
+	
+/**
+* GetBalance Radio
+* @return None
+**/
+void CTRadioUtility::GetBalance() 
+	{
+	TInt LeftPercentage;
+	TInt RightPercentage;
+	TInt err = iPlayerUtility->GetBalance(LeftPercentage, RightPercentage);
+	iConsole->Printf(_L("GetBalance: left %x right %x \n"),LeftPercentage,RightPercentage);
+	}
+	
+//
+// Rds Utility
+//
+
+void CTRadioUtility::Close()
+	{
+	iRdsUtility->Close();
+	}
+
+void CTRadioUtility::GetRdsCapabilities()
+	{
+	TRdsCapabilities Caps;
+	TInt err = iRdsUtility->GetCapabilities( Caps );
+	}
+
+
+void CTRadioUtility::GetRdsSignalStatus()
+	{
+	TBool RdsSignal = ETrue;
+	TInt err = iRdsUtility->GetRdsSignalStatus( RdsSignal );
+	}
+
+void CTRadioUtility::NotifyRdsDataChange()
+	{
+	TRdsData RdsData;
+	RdsData.iAdditionalFunctions1 = 0;
+	RdsData.iAdditionalFunctions2 = 0;
+	RdsData.iRdsFunctions = ERdsTrafficAnnouncement | ERdsRadioText | ERdsClockTime;
+	TInt err = iRdsUtility->NotifyRdsDataChange( RdsData );
+	}
+
+void CTRadioUtility::CancelNotifyRdsDataChange()
+	{
+	iRdsUtility->CancelNotifyRdsDataChange();
+	}
+
+void CTRadioUtility::SetAutomaticSwitching()
+	{
+	TBool Auto = ETrue;
+	TInt err = iRdsUtility->SetAutomaticSwitching( Auto );
+	}
+
+void CTRadioUtility::GetAutomaticSwitching()
+	{
+	TBool Auto = EFalse;
+	TInt err = iRdsUtility->GetAutomaticSwitching( Auto );
+	}
+
+void CTRadioUtility::CancelAFSearch()
+	{
+	iRdsUtility->CancelAFSearch();
+	}
+
+void CTRadioUtility::SetAutomaticTrafficAnnouncement()
+	{
+	TBool Auto = ETrue;
+	TInt err = iRdsUtility->SetAutomaticTrafficAnnouncement( Auto );
+	}
+
+void CTRadioUtility::GetAutomaticTrafficAnnouncement()
+	{
+	TBool Auto = EFalse;
+	TInt err = iRdsUtility->GetAutomaticTrafficAnnouncement( Auto );
+	}
+
+void CTRadioUtility::StationSeekByPTY()
+	{
+	TRdsProgrammeType Pty = KRdsPtyNone;
+	TBool SeekUp = ETrue;
+	iRdsUtility->StationSeekByPTY( Pty, SeekUp );
+	}
+
+void CTRadioUtility::StationSeekByTA()
+	{
+	TBool SeekUp = ETrue;
+	iRdsUtility->StationSeekByTA( SeekUp );
+	}
+
+void CTRadioUtility::StationSeekByTP()
+	{
+	TBool SeekUp = ETrue;
+	iRdsUtility->StationSeekByTP( SeekUp );
+	}
+
+void CTRadioUtility::CancelRdsStationSeek()
+	{
+	iRdsUtility->CancelRdsStationSeek();
+	}
+
+void CTRadioUtility::GetFreqByPTY()
+	{
+	TRdsProgrammeType Pty = KRdsPtyNone;
+	iRdsUtility->GetFreqByPTY( Pty );
+	}
+
+void CTRadioUtility::CancelGetFreqByPTY()
+	{
+	iRdsUtility->CancelGetFreqByPTY();
+	}
+
+void CTRadioUtility::GetFreqByTA()
+	{
+	iRdsUtility->GetFreqByTA();
+	}
+
+void CTRadioUtility::CancelGetFreqByTA()
+	{
+	iRdsUtility->CancelGetFreqByTA();
+	}
+
+void CTRadioUtility::GetPSByPTY()
+	{
+	TRdsProgrammeType Pty = KRdsPtyNone;
+	iRdsUtility->GetPSByPTY( Pty );
+	}
+
+void CTRadioUtility::CancelGetPSByPTY()
+	{
+	iRdsUtility->CancelGetPSByPTY();
+	}
+
+void CTRadioUtility::GetPSByTA()
+	{
+	iRdsUtility->GetPSByTA();
+	}
+
+void CTRadioUtility::CancelGetPSByTA()
+	{
+	iRdsUtility->CancelGetPSByTA();
+	}  
+
+void CTRadioUtility::GetProgrammeIdentification()
+	{
+	TInt Pi = 0;
+	TInt err = iRdsUtility->GetProgrammeIdentification( Pi );
+	}
+
+void CTRadioUtility::GetProgrammeType()
+	{
+	TRdsProgrammeType Pty = KRdsPtyNone;
+	TInt err = iRdsUtility->GetProgrammeType( Pty );
+	}
+
+void CTRadioUtility::GetProgrammeService()
+	{
+	TRdsPSName Ps = NULL;
+	TInt err = iRdsUtility->GetProgrammeService( Ps );
+	}
+
+void CTRadioUtility::GetRadioText()
+	{
+	TRdsRadioText Rt;
+	TInt err = iRdsUtility->GetRadioText( Rt );
+	}
+	
+void CTRadioUtility::GetRadioTextPlus()
+	{
+	TRdsRTplusClass RtPlusClass( ERTplusItemDummy );
+	TRdsRadioText   RtPlusData;
+	
+	TInt err = iRdsUtility->GetRadioTextPlus( RtPlusClass, RtPlusData );
+	}
+
+void CTRadioUtility::GetClockTime()
+	{
+	TDateTime Ct;
+	TInt err = iRdsUtility->GetClockTime( Ct );
+	}
+
+void CTRadioUtility::GetTrafficAnnouncementStatus()
+	{
+	TBool TaStatus = EFalse;
+	TInt err = iRdsUtility->GetTrafficAnnouncementStatus( TaStatus );
+	}
+
+void CTRadioUtility::GetTrafficProgrammeStatus()
+	{
+	TBool TpStatus = EFalse;
+	TInt err = iRdsUtility->GetTrafficProgrammeStatus( TpStatus );
+	}
+
+/**
+* Start listening for client keypresses.
+**/
+void CTRadioUtility::StartTestingL()
+	{
+	iReadConsole->IssueRequestL();
+	}
+
+/**
+* Shutdown the BTTestHarness console.
+**/
+void CTRadioUtility::StopTesting()
+	{
+	CActiveScheduler::Stop();
+	}
+
+void CTRadioUtility::HandleNotifyL(const TUid /*aUid*/, const TDesC& /*aKey*/, const TDesC& /*aValue*/)
+	{
+	}
+	
+/**
+* NewL method for creating new instances of this class.
+* @param aParent - a pointer to the BTTestHarness
+* @return - a pointer to the newly created CBTTestHarnessConsole
+**/
+CTRadioUtilityConsole* CTRadioUtilityConsole::NewL(CTRadioUtility* aParent)
+	{
+	CTRadioUtilityConsole* s = CTRadioUtilityConsole::NewLC(aParent);
+	CleanupStack::Pop();
+	return s;
+	}
+	
+/**
+* NewLC method for creating new instances of this class.
+* @param aParent - a pointer to the BTTestHarness
+* @return - a pointer to the newly created CBTTestHarnessConsole
+**/
+CTRadioUtilityConsole* CTRadioUtilityConsole::NewLC(CTRadioUtility* aParent)
+	{
+	CTRadioUtilityConsole* s = new(ELeave) CTRadioUtilityConsole(aParent);
+	CleanupStack::PushL(s);
+	s->ConstructL();
+	return s;
+	}
+
+/**
+* Destructor
+**/
+CTRadioUtilityConsole::~CTRadioUtilityConsole()
+	{
+	Cancel();
+	}
+
+
+/**
+* This method is called whenever a key is pressed in the console window.
+* 
+* Player Utility Selections
+*
+**/
+
+void CTRadioUtilityConsole::RunL()
+	{
+	TInt key = iConsole->KeyCode();
+	switch (key)
+		{
+	case '1':
+		iParent->Play();
+		IssueRequestL();
+		break;		
+	case '2':
+		iParent->PlayerState();
+		IssueRequestL();
+		break;
+	case '3':
+		iParent->ClosePlayer();
+		IssueRequestL();
+		break;
+	case '4':
+		iParent->StopPlayer();
+		IssueRequestL();
+		break;
+	case '5':
+		iParent->Mute();
+		IssueRequestL();
+		break;
+	case '6':
+		iParent->IsMute();
+		IssueRequestL();
+		break;
+	case '7':
+		iParent->SetVolume();
+		IssueRequestL();
+		break;
+	case '8':
+		iParent->GetVolume();
+		IssueRequestL();
+		break;
+	case '9':
+		iParent->SetVolumeRamp();
+		IssueRequestL();
+		break;
+	case '0':
+		iParent->GetMaxVolume();
+		IssueRequestL();
+		break;
+	case 'a':
+		iParent->RequestTunerControl();
+		IssueRequestL();
+		break;
+	case 'd':
+		iParent->SetFrequency();
+		IssueRequestL();
+		break;
+	case 'g':
+		iParent->Play();
+		IssueRequestL();
+		break;		
+	case 'j':
+		iParent->SetVolume();
+		IssueRequestL();
+		break;	
+	case 'm':
+		iParent->StopPlayer();
+		IssueRequestL();
+		break;	
+	case 'p':
+		iParent->IsMute();
+		IssueRequestL();
+		break;	
+	case 't':
+		iParent->GetVolume();
+		IssueRequestL();
+		break;	
+		
+	case 'z':
+		IssueRequestL();
+		break;
+	case 'x':
+		iParent->StopTesting();
+		break;
+	default:
+		IssueRequestL();
+		break;
+		}
+	}
+
+/**
+* This method is called whenever a key is pressed in the console window.
+* 
+* Tuner Utility Selections
+*
+**/
+/*
+void CTRadioUtilityConsole::RunL()
+	{
+
+	TInt key = iConsole->KeyCode();
+	switch (key)
+		{
+	case '1':
+		iParent->RequestTunerControl();
+		IssueRequestL();
+		break;
+	case '2':
+		iParent->EnableTunerInOfflineMode();
+		IssueRequestL();
+		break;
+	case '3':
+		iParent->CloseTuner();
+		IssueRequestL();
+		break;
+	case '4':
+		iParent->GetCapabilities();
+		IssueRequestL();
+		break;
+	case '5':
+		iParent->SetFrequencyRange();
+		IssueRequestL();
+		break;
+	case '6':
+		iParent->GetFrequencyRange();
+		IssueRequestL();
+		break;
+	case '7':
+		iParent->SetFrequency();
+		IssueRequestL();
+		break;
+	case '8':
+		iParent->GetFrequency();
+		IssueRequestL();
+		break;
+	case '9':
+		iParent->StationSeek();
+		IssueRequestL();
+		break;
+	case '0':
+		iParent->GetSignalStrength();
+		IssueRequestL();
+		break;
+	case 'a':
+		iParent->GetMaxSignalStrength();
+		IssueRequestL();
+		break;
+	case 'b':
+		iParent->GetStereoMode();
+		IssueRequestL();
+		break;
+	case 'c':
+		iParent->ForceMonoReception();
+		IssueRequestL();
+		break;
+	case 'd':
+		iParent->GetForceMonoReception();
+		IssueRequestL();
+		break;
+	case 'e':
+		iParent->SetSquelch();
+		IssueRequestL();
+		break;
+	case 'f':
+		iParent->GetSquelch();
+		IssueRequestL();
+		break;
+	case 'g':
+		iParent->CancelStationSeek();
+		IssueRequestL();
+		break;
+	case 'h':
+		iParent->CancelSetFrequency();
+		IssueRequestL();
+		break;
+	case 'i':
+		iParent->CancelSetFrequencyRange();
+		IssueRequestL();
+		break;
+	case 'j':
+		iParent->Play();
+		IssueRequestL();
+		break;	
+
+	case 'z':
+		IssueRequestL();
+		break;
+	case 'x':
+		iParent->StopTesting();
+		break;
+	default:
+		IssueRequestL();
+		break;
+		}
+	key = 0;
+	}
+*/
+
+/**
+* This method is called whenever a key is pressed in the console window.
+* 
+* Rds Utility Selections
+*
+**/
+/*
+void CTRadioUtilityConsole::RunL()
+	{
+
+	TInt key = iConsole->KeyCode();
+	switch (key)
+		{
+	case '1':
+		iParent->RequestTunerControl();
+		IssueRequestL();
+		break;
+	case '2':
+		iParent->EnableTunerInOfflineMode();
+		IssueRequestL();
+		break;
+	case '3':
+		iParent->Close();
+		IssueRequestL();
+		break;
+	case '4':
+		iParent->GetCapabilities();
+		IssueRequestL();
+		break;
+	case '5':
+		iParent->GetRdsSignalStatus();
+		IssueRequestL();
+		break;
+	case '6':
+		iParent->NotifyRdsDataChange();
+		IssueRequestL();
+		break;
+	case '7':
+		iParent->CancelNotifyRdsDataChange();
+		IssueRequestL();
+		break;
+	case '8':
+		iParent->SetAutomaticSwitching();
+		IssueRequestL();
+		break;
+	case '9':
+		iParent->GetAutomaticSwitching();
+		IssueRequestL();
+		break;
+	case '0':
+		iParent->CancelAFSearch();
+		IssueRequestL();
+		break;
+	case 'a':
+		iParent->SetAutomaticTrafficAnnouncement();
+		IssueRequestL();
+		break;
+	case 'b':
+		iParent->GetAutomaticTrafficAnnouncement();
+		IssueRequestL();
+		break;
+	case 'c':
+		iParent->StationSeekByPTY();
+		IssueRequestL();
+		break;
+	case 'd':
+		iParent->StationSeekByTA();
+		IssueRequestL();
+		break;
+	case 'e':
+		iParent->StationSeekByTP();
+		IssueRequestL();
+		break;
+	case 'f':
+		iParent->CancelRdsStationSeek();
+		IssueRequestL();
+		break;
+	case 'g':
+		iParent->GetFreqByPTY();
+		IssueRequestL();
+		break;
+	case 'h':
+		iParent->CancelGetFreqByPTY();
+		IssueRequestL();
+		break;
+	case 'i':
+		iParent->GetFreqByTA();
+		IssueRequestL();
+		break;
+	case 'j':
+		iParent->CancelGetFreqByTA();
+		IssueRequestL();
+		break;	
+	case 'k':
+		iParent->GetPSByPTY();
+		IssueRequestL();
+		break;
+	case 'l':
+		iParent->CancelGetPSByPTY();
+		IssueRequestL();
+		break;
+	case 'm':
+		iParent->GetPSByTA();
+		IssueRequestL();
+		break;	
+	case 'n':
+		iParent->CancelGetPSByTA();
+		IssueRequestL();
+		break;
+	case 'o':
+		iParent->GetProgrammeIdentification();
+		IssueRequestL();
+		break;
+	case 'p':
+		iParent->GetProgrammeType();
+		IssueRequestL();
+		break;
+	case 'q':
+		iParent->GetProgrammeService();
+		IssueRequestL();
+		break;
+	case 'r':
+		iParent->GetRadioText();
+		IssueRequestL();
+		break;
+	case 's':
+		iParent->GetRadioTextPlus();
+		IssueRequestL();
+		break;
+	case 't':
+		iParent->GetClockTime();
+		IssueRequestL();
+		break;
+	case 'u':
+		iParent->GetTrafficAnnouncementStatus();
+		IssueRequestL();
+		break;
+	case 'v':
+		iParent->GetTrafficProgrammeStatus();
+		IssueRequestL();
+		break;
+		
+
+	case 'z':
+		IssueRequestL();
+		break;
+	case 'x':
+		iParent->StopTesting();
+		break;
+	default:
+		IssueRequestL();
+		break;
+		}
+	key = 0;
+	}
+*/
+/**
+* Cancel any outstanding test requests.
+**/
+void CTRadioUtilityConsole::DoCancel()
+	{
+	if (iConsole)
+		{
+		iConsole->ReadCancel();
+		iConsole->Printf(_L("Console read cancelled...\n"));
+		}
+	}
+
+/**
+* Constructor
+* @param aParent - a pointer to the BTTestHarness
+**/
+CTRadioUtilityConsole::CTRadioUtilityConsole(CTRadioUtility* aParent) :
+	CActive(EPriorityStandard),
+	iParent(aParent)
+	{
+	iConsole = iParent->ConsoleWin();
+	CActiveScheduler::Add(this);
+	}
+
+/**
+* 2nd phase constructor
+**/
+void CTRadioUtilityConsole::ConstructL()
+	{
+	}
+
+/**
+* Display the console options, and wait for another key press.
+*
+* Player Utility
+*
+**/
+
+void CTRadioUtilityConsole::IssueRequestL() // here is what you can choose
+	{
+	iConsole->Printf(_L("1. Play\n"));
+	iConsole->Printf(_L("2. PlayerState\n"));
+	iConsole->Printf(_L("3. Close\n"));
+	iConsole->Printf(_L("4. Stop\n"));
+	iConsole->Printf(_L("5. Mute\n"));
+	iConsole->Printf(_L("6. IsMute\n"));
+	iConsole->Printf(_L("7. SetVolume\n"));
+	iConsole->Printf(_L("8. GetVolume\n"));
+	iConsole->Printf(_L("9. SetVolumeRamp\n"));
+	iConsole->Printf(_L("0. GetMaxVolume\n"));
+	iConsole->Printf(_L("a. RequestTunerControl\n"));
+	iConsole->Printf(_L("d. SetFrequency\n"));
+	iConsole->Printf(_L("g. Play\n"));
+	iConsole->Printf(_L("j. SetVolume\n"));
+	iConsole->Printf(_L("m. Stop\n"));
+	iConsole->Printf(_L("p. IsMute\n"));
+	iConsole->Printf(_L("t. GetVolume\n"));
+
+	iConsole->Printf(_L("---------------------\n"));
+	iConsole->Printf(_L("x. Exit\n"));
+	ReadConsoleL();
+	}
+
+	
+/**
+* Display the console options, and wait for another key press.
+*
+* Tuner Utility
+*
+**/
+/*
+void CTRadioUtilityConsole::IssueRequestL() 
+	{
+	iConsole->Printf(_L("1. RequestTunerControl\n"));
+	iConsole->Printf(_L("2. EnableTunerInOfflineMode\n"));
+	iConsole->Printf(_L("3. CloseTuner\n"));
+	iConsole->Printf(_L("4. GetTunerCapabilities\n"));
+	iConsole->Printf(_L("5. SetFrequencyRange\n"));
+	iConsole->Printf(_L("6. GetFrequencyRange\n"));
+	iConsole->Printf(_L("7. SetFrequency\n"));
+	iConsole->Printf(_L("8. GetFrequency\n"));
+	iConsole->Printf(_L("9. StationSeek\n"));
+	iConsole->Printf(_L("0. GetSignalStrength\n"));
+	iConsole->Printf(_L("a. GetMaxSignalStrength\n"));
+	iConsole->Printf(_L("b. GetStereoMode\n"));
+	iConsole->Printf(_L("c. ForceMonoRecepion\n"));
+	iConsole->Printf(_L("d. GetForceMonoReception\n"));
+	iConsole->Printf(_L("e. SetSquelch\n"));
+	iConsole->Printf(_L("f. GetSquelch\n"));
+	iConsole->Printf(_L("g. CancelStationSeek\n"));
+	iConsole->Printf(_L("h. CancelSetFrequency\n"));
+	iConsole->Printf(_L("i. CancelSetFrequencyRange\n"));
+	iConsole->Printf(_L("j. Play\n"));
+
+
+	iConsole->Printf(_L("---------------------\n"));
+	iConsole->Printf(_L("x. Exit\n"));
+	ReadConsoleL();
+	}
+*/
+
+/**
+* Display the console options, and wait for another key press.
+*
+* Rds Utility
+*
+**/
+/*
+void CTRadioUtilityConsole::IssueRequestL() 
+	{
+	iConsole->Printf(_L("1. RequestTunerControl\n"));
+	iConsole->Printf(_L("2. EnableTunerInOfflineMode\n"));
+	iConsole->Printf(_L("3. CloseRds\n"));
+	iConsole->Printf(_L("4. GetRdsCapabilities\n"));
+	iConsole->Printf(_L("5. GetRdsSignalStatus\n"));
+	iConsole->Printf(_L("6. NotifyRdsDataChange\n"));
+	iConsole->Printf(_L("7. CancelNotifyRdsDataChange\n"));
+	iConsole->Printf(_L("8. SetAutomaticSwitching\n"));
+	iConsole->Printf(_L("9. GetAutomaticSwitching\n"));
+	iConsole->Printf(_L("0. CancelAFSearch\n"));
+	iConsole->Printf(_L("a. SetAutomaticTrafficAnnouncement\n"));
+	iConsole->Printf(_L("b. GetAutomaticTrafficAnnouncement\n"));
+	iConsole->Printf(_L("c. StationSeekByPTY\n"));
+	iConsole->Printf(_L("d. StationSeekByTA\n"));
+	iConsole->Printf(_L("e. StationSeekByTP\n"));
+	iConsole->Printf(_L("f. CancelRdsStationSeek\n"));
+	iConsole->Printf(_L("g. GetFreqByPTY\n"));
+	iConsole->Printf(_L("h. CancelGetFreqByPTY\n"));
+	iConsole->Printf(_L("i. GetFreqByTA\n"));
+	iConsole->Printf(_L("j. CancelGetFreqByTA\n"));
+	iConsole->Printf(_L("k. GetPSByPTY\n"));
+	iConsole->Printf(_L("l. CancelGetPSByPTY\n"));
+	iConsole->Printf(_L("m. GetPSByTA\n"));
+	iConsole->Printf(_L("n. CancelGetPSByTA\n"));
+	iConsole->Printf(_L("o. GetProgrammeIdentification\n"));
+	iConsole->Printf(_L("p. GetProgrammeType\n"));
+	iConsole->Printf(_L("q. GetProgrammeService\n"));
+	iConsole->Printf(_L("r. GetRadioText\n"));
+	iConsole->Printf(_L("s. GetRadioTextPlus\n"));
+	iConsole->Printf(_L("t. GetClockTime\n"));
+	iConsole->Printf(_L("u. GetTrafficAnnouncementStatus\n"));
+	iConsole->Printf(_L("v. GetTrafficProgrammeStatus\n"));
+
+	iConsole->Printf(_L("---------------------\n"));
+	iConsole->Printf(_L("x. Exit\n"));
+	ReadConsoleL();
+	}
+
+*/
+/**
+* Outstanding request has been completed, start waiting for another request.
+**/
+void CTRadioUtilityConsole::ReadConsoleL()
+	{
+	iConsole->Read(iStatus);
+	SetActive();
+	}
+
+