diff -r 37b610eb7fe3 -r b5894bb67e73 audiostubs/fmradiotunercontrolstub/Src/FMRadioTunerControlStub.cpp --- a/audiostubs/fmradiotunercontrolstub/Src/FMRadioTunerControlStub.cpp Thu Aug 19 09:36:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1400 +0,0 @@ -/* -* Copyright (c) 2002-2004 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: -* Contains implementation of the CAdaptation class. -* Which holds RadioServer Console Test. -* -*/ - - - -// INCLUDE FILES -#include -#include "FMRadioTunerControlStub.h" - -// CONSTANTS -const TInt KReqTunerOn = 1; -const TInt KReqTunerOff = 2; -const TInt KReqSetFrequencyRange = 3; -const TInt KReqSetFrequency = 4; -const TInt KReqStationSeek = 5; -const TInt KReqAudioMode = 6; -const TInt KReqSetAudioMode = 7; -const TInt KReqMaxSignalStrength = 8; -const TInt KReqSignalStrength = 9; -const TInt KReqSquelch = 10; -const TInt KReqSetSquelch = 11; -//--------------------------------------- -const TInt KReqStationSeekByPTY = 12; -const TInt KReqStationSeekByTA = 13; -const TInt KReqStationSeekByTP = 14; -const TInt KReqGetFreqByPTY = 15; -const TInt KReqGetFreqByTA = 16; -const TInt KReqGetPSByPTY = 17; -const TInt KReqGetPSByTA = 18; - -const TInt KEuroAmericaMin = 87500000; -const TInt KEuroAmericaMax = 108000000; -const TInt KJapanMin = 76000000; -const TInt KJapanMax = 90000000; - -/* -KCBI 90.9 PTY = KRdsPtyReligion -KLTY 94.9 PTY = KRdsPtyReligion -KVIL 103.7 PTY = KRdsPtyLightClassical -KHKS 106.1 PTY = KRdsPtyRockMusic -*/ - -const TInt KFrequency1 = 90900000; // TA, TP -const TInt KFrequency2 = 94900000; // Alternate Frequency of KFrequency1 -const TInt KFrequency3 = 103700000; -const TInt KFrequency4 = 106100000; // TP - -// DATA TYPES -struct TRadioMessageRequestData - { - TSglQueLink iLink; - TInt iRequest; - TInt iError; - }; - -// ============================= LOCAL FUNCTIONS =============================== - -/** -* Class CTuner -* @lib FMRadioTunerControlStub.lib -* @since Series 60 3.0 -*/ -class CTuner : public CTimer - { - public: - static CTuner* NewL( MFMRadioTunerControlObserver& aObserver ) - { - CTuner* self = new( ELeave ) CTuner(aObserver); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - }; - - virtual ~CTuner() - { - iFreqList.Close(); - iPsList.Close(); - iRTplusTags.Close(); - if ( IsActive() ) - { - Cancel(); - } - TRadioMessageRequestData* data; - while ( !iRequestQue.IsEmpty() ) - { - data = iRequestQue.First(); - iRequestQue.Remove(*data); - delete data; - } - }; - - void CompleteRequest( TInt aRequest, TInt aError ) - { - TRadioMessageRequestData *data = new (ELeave) TRadioMessageRequestData; - data->iRequest = aRequest; - data->iError = aError; - // Add it to the queue - iRequestQue.AddLast(*data); - if ( !IsActive() ) - { - After(500000); // 0.5 sec by default - } - }; - - void Reset() - { - iTunerOn = EFalse; - iRange = EFMRadioFrequencyEuroAmerica; - iFrequency = KEuroAmericaMin; - iSigStrength = 0; - iMode = EFMRadioAudioStereo; - iSquelch = ETrue; - ResetRds(); - }; - - void ResetRds() - { - iNotifyOn = EFalse; - iRdsSignal = EFalse; - iRdsData = 0; - iAutoSwitch = EFalse; - iFreqList.Reset(); - iPsList.Reset(); - iPi = 0; - iPty = KRdsPtyNone; - iPs = _L8(""); - iRt = _L8(""); - iRTplusTags.Reset(); - // Hardcoded to 2007/11/10 7:35 - iCt.Set(2007,ENovember,10,7,35,0,0); - }; - - void SendRdsData() - { - // Make sure we are still in RDS channel - if ( !iRdsSignal || !iNotifyOn ) - { - return; - } - - if( iRdsData & ERdsProgrammeIdentification ) - { - iRdsObserver->RdsDataPI(iPi); - } - if( iRdsData & ERdsProgrammeType ) - { - iRdsObserver->RdsDataPTY(iPty); - } - if( iRdsData & ERdsProgrammeService ) - { - iRdsObserver->RdsDataPS(iPs); - } - if( iRdsData & ERdsRadioText ) - { - iRdsObserver->RdsDataRT(iRt, iRTplusTags); - } - if( iRdsData & ERdsClockTime ) - { - iRdsObserver->RdsDataCT(iCt); - } - }; - - void SendRdsAf(TBool aBegin) - { - if (aBegin) - { - iRdsObserver->RdsSearchBeginAF(); - } - else - { - iFrequency = KFrequency2; - iSigStrength = 2; - iPs = _L8("KLTY"); - iRdsObserver->RdsSearchEndAF(iError, iFrequency); - } - }; - - - private: - void DoCancel() - {}; - - void RunL() - { - TRadioMessageRequestData* data; - data = iRequestQue.First(); - iRequestQue.Remove(*data); - iRequest = data->iRequest; - iError = data->iError; - delete data; - - switch (iRequest) - { - case KReqTunerOn: - iObserver->TunerOnComplete(iError); - break; - case KReqTunerOff: - iObserver->TunerOffComplete(iError); - break; - case KReqSetFrequencyRange: - iObserver->SetFrequencyRangeComplete(iError); - break; - case KReqSetFrequency: - iObserver->SetFrequencyComplete(iError); - break; - case KReqStationSeek: - iObserver->StationSeekComplete(iError, iFrequency); - break; - case KReqAudioMode: - iObserver->AudioModeComplete(iError, iMode); - break; - case KReqSetAudioMode: - iObserver->SetAudioModeComplete(iError); - break; - case KReqMaxSignalStrength: - iObserver->MaxSignalStrengthComplete(iError, 15); - break; - case KReqSignalStrength: - iObserver->SignalStrengthComplete(iError, iSigStrength); - break; - case KReqSquelch: - iObserver->SquelchComplete(iError, iSquelch); - break; - case KReqSetSquelch: - iObserver->SetSquelchComplete(iError); - break; -// ----------------------------------------------------------------------------- -// RDS - case KReqStationSeekByPTY: - iRdsObserver->StationSeekByPTYComplete(iError, iFrequency); - break; - case KReqStationSeekByTA: - iRdsObserver->StationSeekByTAComplete(iError, iFrequency); - break; - case KReqStationSeekByTP: - iRdsObserver->StationSeekByTPComplete(iError, iFrequency); - break; - case KReqGetFreqByPTY: - iRdsObserver->GetFreqByPTYComplete(iError, iFreqList); - break; - case KReqGetFreqByTA: - iRdsObserver->GetFreqByTAComplete(iError, iFreqList); - break; - case KReqGetPSByPTY: - iRdsObserver->GetPSByPTYComplete(iError, iPsList); - break; - case KReqGetPSByTA: - iRdsObserver->GetPSByTAComplete(iError, iPsList); - break; -// RDS -// ----------------------------------------------------------------------------- - default: - break; - } - - // Process the next item in the queue if any - if ( !iRequestQue.IsEmpty() ) - { - // there is at least one element in the linked list - After(100000); // 0.1 sec by default - } - }; - - private: - CTuner( MFMRadioTunerControlObserver& aObserver ) - : CTimer(EPriorityStandard), - iObserver(&aObserver), - iRdsObserver(NULL), - iRequestQue(_FOFF( TRadioMessageRequestData, iLink )) - {}; - - void ConstructL() - { - CTimer::ConstructL(); - CActiveScheduler::Add(this); - Reset(); - }; - - private: // Data - // Tuner observer - MFMRadioTunerControlObserver* iObserver; - // Rds observer - MRdsControlObserver* iRdsObserver; - // Request queue - TSglQue iRequestQue; - // Outstanding request - TInt iRequest; - TInt iError; - - // Tuner data - TBool iTunerOn; - TFMRadioFrequencyRange iRange; - TInt iFrequency; - TInt iSigStrength; - TFMRadioAudioMode iMode; - TBool iSquelch; - - // RDS data - TBool iNotifyOn; - TBool iRdsSignal; - TUint32 iRdsData; - TBool iAutoSwitch; - RArray iFreqList; - RArray iPsList; - TInt iPi; - TRdsProgrammeType iPty; - TRdsPSName iPs; - TRdsRadioText iRt; - RArray iRTplusTags; - TDateTime iCt; - - private: // Friend classes - friend class CAdaptation; - friend class CRdsGenerator; - }; - -/** -* Class CRdsGenerator -* @lib FMRadioTunerControlStub.lib -* @since Series 60 3.2 -*/ -class CRdsGenerator : public CTimer - { - public: - static CRdsGenerator* NewL(CTuner& aTuner) - { - CRdsGenerator* self = new( ELeave ) CRdsGenerator(aTuner); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - }; - - virtual ~CRdsGenerator() - { - if ( IsActive() ) - { - Cancel(); - } - }; - - void Start() - { - if ( IsActive() ) - { - Cancel(); - } - After(1000000); // 1 sec - }; - - private: - void DoCancel() - {}; - - void RunL() - { - iTuner->SendRdsData(); - }; - - private: - CRdsGenerator( CTuner& aTuner ) - : CTimer(EPriorityStandard), - iTuner(&aTuner) - {}; - - void ConstructL() - { - CTimer::ConstructL(); - CActiveScheduler::Add(this); - }; - - private: // Data - // Tuner - CTuner* iTuner; - }; - -/** -* Class CAfSwitcher -* @lib FMRadioTunerControlStub.lib -* @since Series 60 3.2 -*/ -class CAfSwitcher : public CTimer - { - public: - static CAfSwitcher* NewL(CTuner& aTuner) - { - CAfSwitcher* self = new( ELeave ) CAfSwitcher(aTuner); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - return self; - }; - - virtual ~CAfSwitcher() - { - if ( IsActive() ) - { - Cancel(); - } - }; - - void Start() - { - if ( IsActive() ) - { - Cancel(); - } - iBegin = ETrue; - After(3000000); // 3 sec - }; - - private: - void DoCancel() - {}; - - void RunL() - { - iTuner->SendRdsAf(iBegin); - if (iBegin) - { - iBegin = EFalse; - After(2000000); // 2 sec - } - }; - - private: - CAfSwitcher( CTuner& aTuner ) - : CTimer(EPriorityStandard), - iTuner(&aTuner), - iBegin(EFalse) - {}; - - void ConstructL() - { - CTimer::ConstructL(); - CActiveScheduler::Add(this); - }; - - private: // Data - // Tuner - CTuner* iTuner; - TBool iBegin; - }; - -EXPORT_C CFMRadioTunerControl* CFMRadioTunerControl::NewL( - MFMRadioTunerControlObserver& aObserver ) - { - return CAdaptation::NewL(aObserver); - } - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAdaptation::CAdaptation -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CAdaptation::CAdaptation() - : iTuner(NULL), - iRds(NULL), - iRdsAf(NULL) - { - } - -// ----------------------------------------------------------------------------- -// CAdaptation::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CAdaptation::ConstructL( - MFMRadioTunerControlObserver& aObserver ) - { - iTuner = CTuner::NewL(aObserver); - iRds = CRdsGenerator::NewL(*iTuner); - iRdsAf = CAfSwitcher::NewL(*iTuner); - } - -// ----------------------------------------------------------------------------- -// CAdaptation::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CAdaptation* CAdaptation::NewL( - MFMRadioTunerControlObserver& aObserver ) - { - CAdaptation* self = new( ELeave ) CAdaptation(); - CleanupStack::PushL( self ); - self->ConstructL(aObserver); - CleanupStack::Pop(); - return self; - } - -// Destructor -CAdaptation::~CAdaptation() - { - delete iRdsAf; - delete iRds; - delete iTuner; - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::TunerOn( - TFMRadioFrequencyRange aRange, - TInt aFrequency ) - { - if ( ValidFrequency(aRange, aFrequency) ) - { - iTuner->iTunerOn = ETrue; - iTuner->iRange = aRange; - SetFrequencySettings(aFrequency); - iTuner->CompleteRequest(KReqTunerOn, KErrNone); - } - else - { - iTuner->CompleteRequest(KReqTunerOn, KFMRadioErrFrequencyOutOfBandRange); - } - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelTunerOn() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::TunerOff() - { - iTuner->Reset(); - iTuner->CompleteRequest(KReqTunerOff, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelTunerOff() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::SetFrequencyRange( - TFMRadioFrequencyRange aRange ) - { - iTuner->iRange = aRange; - iTuner->CompleteRequest(KReqSetFrequencyRange, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelSetFrequencyRange() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::SetFrequency( - TInt aFrequency ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqSetFrequency, KFMRadioErrNotPermittedInCurrentState); - return; - } - - if ( ValidFrequency(iTuner->iRange, aFrequency) ) - { - SetFrequencySettings(aFrequency); - iTuner->CompleteRequest(KReqSetFrequency, KErrNone); - } - else - { - iTuner->CompleteRequest(KReqTunerOn, KFMRadioErrFrequencyNotValid); - } - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelSetFrequency() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::StationSeek( - TFMRadioSeekDirection aDirection ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqStationSeek, KFMRadioErrNotPermittedInCurrentState); - return; - } - - if ( aDirection == EFMRadioSeekUp ) - { - if ( iTuner->iFrequency < KFrequency1 ) - { - SetFrequencySettings(KFrequency1); - } - else if ( (iTuner->iFrequency >= KFrequency1) && (iTuner->iFrequency < KFrequency2) ) - { - SetFrequencySettings(KFrequency2); - } - else if ( (iTuner->iFrequency >= KFrequency2) && (iTuner->iFrequency < KFrequency3) ) - { - SetFrequencySettings(KFrequency3); - } - else if ( (iTuner->iFrequency >= KFrequency3) && (iTuner->iFrequency < KFrequency4) ) - { - SetFrequencySettings(KFrequency4); - } - else // iTuner->iFrequency >= KFrequency4 - { - SetFrequencySettings(KFrequency1); - } - } - else - { - if ( iTuner->iFrequency > KFrequency4 ) - { - SetFrequencySettings(KFrequency4); - } - else if ( (iTuner->iFrequency <= KFrequency4) && (iTuner->iFrequency > KFrequency3) ) - { - SetFrequencySettings(KFrequency3); - } - else if ( (iTuner->iFrequency <= KFrequency3) && (iTuner->iFrequency > KFrequency2) ) - { - SetFrequencySettings(KFrequency2); - } - else if ( (iTuner->iFrequency <= KFrequency2) && (iTuner->iFrequency > KFrequency1) ) - { - SetFrequencySettings(KFrequency1); - } - else // iTuner->iFrequency < KFrequency1 - { - SetFrequencySettings(KFrequency4); - } - } - - iTuner->CompleteRequest(KReqStationSeek, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelStationSeek() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::AudioMode() - { - iTuner->CompleteRequest(KReqAudioMode, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelAudioMode() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::SetAudioMode( - TFMRadioAudioMode aMode ) - { - iTuner->iMode = aMode; - iTuner->CompleteRequest(KReqSetAudioMode, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelSetAudioMode() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::MaxSignalStrength() - { - iTuner->CompleteRequest(KReqMaxSignalStrength, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelMaxSignalStrength() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::SignalStrength() - { - iTuner->CompleteRequest(KReqSignalStrength, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelSignalStrength() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::Squelch() - { - iTuner->CompleteRequest(KReqSquelch, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelSquelch() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::SetSquelch( - TBool aEnabled ) - { - iTuner->iSquelch = aEnabled; - iTuner->CompleteRequest(KReqSetSquelch, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelSetSquelch() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::BufferToBeFilled( - TDes8& /*aBuffer*/ ) - { - // Not used. - } - -// ----------------------------------------------------------------------------- -// -TFMRadioCapabilities CAdaptation::Capabilities() - { - TFMRadioCapabilities cap; - cap.iSampleRate = EFMRadioSampleRate48000Hz; - cap.iChannels = EFMRadioAudioMono | EFMRadioAudioStereo; - //const TUint32 KMMFFourCCCodePCM16 = 0x36315020; //(' ', 'P', '1', '6') - cap.iEncoding = 0x36315020; - - cap.iTunerBands = EFMRadioFrequencyEuroAmerica | EFMRadioFrequencyJapan; - //cap.iTunerFunctions = ETunerAvailableInOfflineMode | ETunerRdsSupport; - cap.iTunerFunctions = 0x01 | 0x02; - return cap; - } - -/********************************************************************* -* RD_FM_RADIO_ENHANCEMENTS -**********************************************************************/ -#ifdef RD_FM_RADIO_ENHANCEMENTS - -// ----------------------------------------------------------------------------- -// -MRdsControl* CAdaptation::RdsControl( - MRdsControlObserver& aObserver ) - { - iTuner->iRdsObserver = &aObserver; - return this; - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetFrequencyRange( - TFMRadioFrequencyRange& aRange, - TInt& aMinFreq, - TInt& aMaxFreq ) const - { - aRange = iTuner->iRange; - if ( aRange == EFMRadioFrequencyEuroAmerica ) - { - aMinFreq = KEuroAmericaMin; - aMaxFreq = KEuroAmericaMax; - } - else // aRange = EFMRadioFrequencyJapan; - { - aMinFreq = KJapanMin; - aMaxFreq = KJapanMax; - } - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetCapabilities( - TRdsCapabilities& aCaps ) const - { - aCaps.iRdsFunctions = ERdsProgrammeIdentification | ERdsProgrammeType | ERdsProgrammeService - | ERdsRadioText | ERdsClockTime | ERdsAlternateFrequency; - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetRdsSignalStatus( - TBool& aRdsSignal ) const - { - aRdsSignal = iTuner->iRdsSignal; - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::NotifyRdsDataChange( - TRdsData aRdsData ) - { - iTuner->iRdsData = aRdsData.iRdsFunctions; - // We'll only generate events for ERdsProgrammeIdentification, ERdsProgrammeType, - // ERdsProgrammeService for now. - if ( (aRdsData.iRdsFunctions & ERdsProgrammeIdentification) || - (aRdsData.iRdsFunctions & ERdsProgrammeType) || - (aRdsData.iRdsFunctions & ERdsProgrammeService) ) - { - iTuner->iNotifyOn = ETrue; - } - - if ( (iTuner->iRdsSignal) && (iTuner->iNotifyOn) ) - { - iRds->Start(); - } - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelNotifyRdsDataChange() - { - iTuner->iRdsData = 0; - iTuner->iNotifyOn = EFalse; - iRds->Cancel(); - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::SetAutomaticSwitching( - TBool aAuto ) - { - iTuner->iAutoSwitch = aAuto; - if ( aAuto && (iTuner->iFrequency == KFrequency1) ) - { - iRdsAf->Start(); - } - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetAutomaticSwitching( - TBool& aAuto ) - { - aAuto = iTuner->iAutoSwitch; - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelAFSearch() - { - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::SetAutomaticTrafficAnnouncement( - TBool /*aAuto*/ ) - { - return KErrNotSupported; - }; - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetAutomaticTrafficAnnouncement( - TBool& aAuto ) - { - aAuto = EFalse; - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::StationSeekByPTY( - TRdsProgrammeType aPty, - TBool aSeekUp ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqStationSeekByPTY, KRdsErrNotPermittedInCurrentState); - return; - } - - TInt err = KErrNone; - switch ( aPty ) - { - case KRdsPtyReligion: - if ( aSeekUp ) - { - if ( iTuner->iFrequency < KFrequency1 ) - { - SetFrequencySettings(KFrequency1); - } - else if ( (iTuner->iFrequency >= KFrequency1) && (iTuner->iFrequency < KFrequency2) ) - { - SetFrequencySettings(KFrequency2); - } - else // iTuner->iFrequency >= KFrequency2 - { - SetFrequencySettings(KFrequency1); - } - } - else - { - if ( iTuner->iFrequency > KFrequency2 ) - { - SetFrequencySettings(KFrequency2); - } - else if ( (iTuner->iFrequency <= KFrequency2) && (iTuner->iFrequency > KFrequency1) ) - { - SetFrequencySettings(KFrequency1); - } - else // iTuner->iFrequency < KFrequency1 - { - SetFrequencySettings(KFrequency2); - } - } - break; - case KRdsPtyLightClassical: - SetFrequencySettings(KFrequency3); - break; - case KRdsPtyRockMusic: - SetFrequencySettings(KFrequency4); - break; - default: - err = KErrNotFound; - break; - } - iTuner->CompleteRequest(KReqStationSeekByPTY, err); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::StationSeekByTA( - TBool aSeekUp ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqStationSeekByTA, KRdsErrNotPermittedInCurrentState); - return; - } - - // Just for testing purpose, if aSeekUp return KFrequency1, else return KErrNotFound. - if ( aSeekUp ) - { - SetFrequencySettings(KFrequency1); - iTuner->CompleteRequest(KReqStationSeekByTA, KErrNone); - } - else - { - iTuner->CompleteRequest(KReqStationSeekByTA, KErrNotFound); - } - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::StationSeekByTP( - TBool aSeekUp ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqStationSeekByTP, KRdsErrNotPermittedInCurrentState); - return; - } - - if ( aSeekUp ) - { - if ( iTuner->iFrequency < KFrequency1 ) - { - SetFrequencySettings(KFrequency1); - } - else if ( (iTuner->iFrequency >= KFrequency1) && (iTuner->iFrequency < KFrequency4) ) - { - SetFrequencySettings(KFrequency4); - } - else // iTuner->iFrequency >= KFrequency4 - { - SetFrequencySettings(KFrequency1); - } - } - else - { - if ( iTuner->iFrequency > KFrequency4 ) - { - SetFrequencySettings(KFrequency4); - } - else if ( (iTuner->iFrequency <= KFrequency4) && (iTuner->iFrequency > KFrequency1) ) - { - SetFrequencySettings(KFrequency1); - } - else // iTuner->iFrequency < KFrequency1 - { - SetFrequencySettings(KFrequency4); - } - } - - iTuner->CompleteRequest(KReqStationSeekByTP, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelRdsStationSeek() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::GetFreqByPTY( - TRdsProgrammeType aPty ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqGetFreqByPTY, KRdsErrNotPermittedInCurrentState); - return; - } - - TInt err = KErrNone; - iTuner->iFreqList.Reset(); - switch ( aPty ) - { - case KRdsPtyReligion: - iTuner->iFreqList.Append(KFrequency1); - iTuner->iFreqList.Append(KFrequency2); - break; - case KRdsPtyLightClassical: - iTuner->iFreqList.Append(KFrequency3); - break; - case KRdsPtyRockMusic: - iTuner->iFreqList.Append(KFrequency4); - break; - default: - err = KErrNotFound; - break; - } - iTuner->CompleteRequest(KReqGetFreqByPTY, err); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelGetFreqByPTY() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::GetFreqByTA() - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqGetFreqByTA, KRdsErrNotPermittedInCurrentState); - return; - } - - iTuner->iFreqList.Reset(); - iTuner->iFreqList.Append(KFrequency1); - iTuner->CompleteRequest(KReqGetFreqByTA, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelGetFreqByTA() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::GetPSByPTY - ( TRdsProgrammeType aPty ) - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqGetPSByPTY, KRdsErrNotPermittedInCurrentState); - return; - } - - TInt err = KErrNone; - iTuner->iPsList.Reset(); - switch ( aPty ) - { - case KRdsPtyReligion: - iTuner->iPsList.Append(_L8("KCBI")); - iTuner->iPsList.Append(_L8("KLTY")); - break; - case KRdsPtyLightClassical: - iTuner->iPsList.Append(_L8("KVIL")); - break; - case KRdsPtyRockMusic: - iTuner->iPsList.Append(_L8("KHKS")); - break; - default: - err = KErrNotFound; - break; - } - iTuner->CompleteRequest(KReqGetPSByPTY, err); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelGetPSByPTY() - { - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::GetPSByTA() - { - if ( !iTuner->iTunerOn ) - { - iTuner->CompleteRequest(KReqGetPSByTA, KRdsErrNotPermittedInCurrentState); - return; - } - - iTuner->iPsList.Reset(); - iTuner->iPsList.Append(_L8("KCBI")); - iTuner->CompleteRequest(KReqGetPSByTA, KErrNone); - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::CancelGetPSByTA() - { - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetProgrammeIdentification( - TInt& aPi ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( iTuner->iRdsSignal ) - { - aPi = iTuner->iPi; - return KErrNone; - } - else - { - return KErrNotFound; - } - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetProgrammeType( - TRdsProgrammeType& aPty ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( iTuner->iRdsSignal ) - { - aPty = iTuner->iPty; - return KErrNone; - } - else - { - return KErrNotFound; - } - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetProgrammeService( - TRdsPSName& aPs ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( iTuner->iRdsSignal ) - { - aPs = iTuner->iPs; - return KErrNone; - } - else - { - return KErrNotFound; - } - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetRadioText( - TRdsRadioText& aRt, - RArray& /*aRTplusTags*/ ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( iTuner->iRdsSignal ) - { - aRt = iTuner->iRt; - return KErrNone; - } - else - { - return KErrNotFound; - } - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetClockTime( - TDateTime& aCt ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( iTuner->iRdsSignal ) - { - // Hardcoded to 2007/11/10 7:35 - aCt.Set(2007,ENovember,10,7,35,0,0); - return KErrNone; - } - else - { - return KErrNotFound; - } - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetTrafficAnnouncementStatus( - TBool& aTaStatus ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( iTuner->iFrequency == KFrequency1 ) - { - aTaStatus = ETrue; - return KErrNone; - } - else if ( iTuner->iFrequency == KFrequency4 ) - { - aTaStatus = EFalse; - return KErrNone; - } - else - { - return KErrNotFound; - - } - } - -// ----------------------------------------------------------------------------- -// -TInt CAdaptation::GetTrafficProgrammeStatus( - TBool& aTpStatus ) - { - if ( !iTuner->iTunerOn ) - { - return KRdsErrNotPermittedInCurrentState; - } - - if ( (iTuner->iFrequency == KFrequency1) || (iTuner->iFrequency == KFrequency4) ) - { - aTpStatus = ETrue; - return KErrNone; - } - else if ( (iTuner->iFrequency == KFrequency2) || (iTuner->iFrequency == KFrequency3) ) - { - aTpStatus = EFalse; - return KErrNone; - } - else - { - return KErrNotFound; - } - } - -#endif //#ifdef RD_FM_RADIO_ENHANCEMENTS - -// ----------------------------------------------------------------------------- -// -TBool CAdaptation::ValidFrequency( - TFMRadioFrequencyRange aRange, - TInt aFrequency ) - { - if ( aRange == EFMRadioFrequencyEuroAmerica ) - { - if ( (aFrequency < KEuroAmericaMin) || (aFrequency > KEuroAmericaMax) ) - { - return EFalse; - } - } - else // aRange = EFMRadioFrequencyJapan; - { - if ( (aFrequency < KJapanMin) || (aFrequency > KJapanMax) ) - { - return EFalse; - } - } - return ETrue; - } - -// ----------------------------------------------------------------------------- -// -void CAdaptation::SetFrequencySettings( - TInt aFrequency ) - { - iTuner->iFrequency = aFrequency; - switch ( aFrequency ) - { - case KFrequency1: - iTuner->iSigStrength = 1; - iTuner->iRdsSignal = ETrue; - iTuner->iPi = 1000; - iTuner->iPty = KRdsPtyReligion; - iTuner->iPs = _L8("KCBI"); - iTuner->iRt = _L8("Hail to the King"); - if ( iTuner->iAutoSwitch ) - { - iRdsAf->Start(); - } - break; - case KFrequency2: - iTuner->iSigStrength = 2; - iTuner->iRdsSignal = ETrue; - iTuner->iPi = 1000; - iTuner->iPty = KRdsPtyReligion; - iTuner->iPs = _L8("KLTY"); - iTuner->iRt = _L8("He Knows My Name"); - break; - case KFrequency3: - iTuner->iSigStrength = 3; - iTuner->iRdsSignal = ETrue; - iTuner->iPi = 2000; - iTuner->iPty = KRdsPtyLightClassical; - iTuner->iPs = _L8("KVIL"); - iTuner->iRt = _L8("Power of Love"); - break; - case KFrequency4: - iTuner->iSigStrength = 4; - iTuner->iRdsSignal = ETrue; - iTuner->iPi = 3000; - iTuner->iPty = KRdsPtyRockMusic; - iTuner->iPs = _L8("KHKS"); - iTuner->iRt = _L8("The Reason"); - break; - default: - iTuner->iSigStrength = 5; - iTuner->iRdsSignal = EFalse; - break; - } - if ( (iTuner->iRdsSignal) && (iTuner->iNotifyOn) ) - { - iRds->Start(); - } - } - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - - -// End of File -