diff -r 095bea5f582e -r 0ac9a5310753 khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp --- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,764 +0,0 @@ -/* -* 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: -* -*/ - -#include "cmmfradiobackendengine.h" - -extern "C" { -#include "xaradioitfadaptation.h" -#include "xanokiavolumeextitfadaptationmmf.h" -#include "xanokialinearvolumeitfadaptationmmf.h" -#include "xaplayitfadaptationmmf.h" -} - -CMMFRadioBackendEngine *CMMFRadioBackendEngine::s_instance = 0; - -CMMFRadioBackendEngine* CMMFRadioBackendEngine::Instance() -{ - if (!s_instance) - { - s_instance = new CMMFRadioBackendEngine(); - if (s_instance) - { - s_instance->ConstructL(); - } - } - return s_instance; -} - -void CMMFRadioBackendEngine::DeleteInstance() -{ - if (iFmTunerUtility) - { - iFmTunerUtility->Close(); - iFmTunerUtility = NULL; - } - if (iRadioPlayerUtility) - { - iRadioPlayerUtility->Close(); - iRadioPlayerUtility = NULL; - } - - if (iRadioUtility) - { - delete iRadioUtility; - iRadioUtility = NULL; - } - -} - -CMMFRadioBackendEngine::~CMMFRadioBackendEngine() -{ -} - -CMMFRadioBackendEngine::CMMFRadioBackendEngine() -{ - -} - -void CMMFRadioBackendEngine::ConstructL() -{ - iRadioUtility = CRadioUtility::NewL( ETrue ); - if (iRadioUtility) - { - iFmTunerUtility = &iRadioUtility->RadioFmTunerUtilityL( *this ); - } - if (iFmTunerUtility) - { - iFmTunerUtility->EnableTunerInOfflineMode( ETrue ); - iFmTunerUtility->RequestTunerControl(); - } - if (iRadioUtility) - { - iRadioPlayerUtility = &iRadioUtility->RadioPlayerUtilityL( *this ); - } - - SetForceMonoFlag(); - iDefaultFrequency = RADIO_DEFAULT_FREQ; - iDefaultFreqRange = (TFmRadioFrequencyRange)RADIO_DEFAULT_FREQ_RANGE; - iDefaultMinFreq = RADIO_DEFAULT_MIN_FREQ; - iDefaultMaxFreq = RADIO_DEFAULT_MAX_FREQ; - -} -void CMMFRadioBackendEngine::StationSeek(XAboolean aUpwards) -{ - if (iFmTunerUtility) - { - iFmTunerUtility->StationSeek(aUpwards); - } -} - -void CMMFRadioBackendEngine::SetFrequency(TInt aFreq) -{ - DEBUG_API_A1("CMMFRadioBackendEngine::SetFrequency: %d", aFreq); - - if (iFmTunerUtility) - { - iFmTunerUtility->SetFrequency(aFreq); - } -} - -TInt CMMFRadioBackendEngine::GetFrequency(TInt& aFreq) -{ - DEBUG_API("CMMFRadioBackendEngine::GetFrequency"); - TInt ret = KErrNotFound; - if (iFmTunerUtility) - { - ret = iFmTunerUtility->GetFrequency(aFreq); - if (ret != KErrNone) - { - aFreq = iDefaultFrequency; - ret = KErrNone; - } - } - DEBUG_API_A1("CMMFRadioBackendEngine::GetFrequency RET: %d", ret); -// RDebug::Print(_L("CMMFRadioBackendEngine::GetFrequency RET: %d"), ret); - return ret; -} - -TInt CMMFRadioBackendEngine::GetSignalStrength(TInt& aSignalStrength) -{ - TInt ret = KErrNotFound; - if (iFmTunerUtility) - { - ret = iFmTunerUtility->GetSignalStrength(aSignalStrength); - } - DEBUG_API_A1("CMMFRadioBackendEngine::GetSignalStrength RET: %d", ret); -// RDebug::Print(_L("CMMFRadioBackendEngine::GetSignalStrength RET: %d"), ret); - return ret; -} - -void CMMFRadioBackendEngine::CancelSetFrequency() -{ - if (iFmTunerUtility) - { - iFmTunerUtility->CancelSetFrequency(); - } -} - -void CMMFRadioBackendEngine::CancelStationSeek() -{ - if (iFmTunerUtility) - { - iFmTunerUtility->CancelStationSeek(); - } -} - -void CMMFRadioBackendEngine::SetFreqRange(TFmRadioFrequencyRange aRange) -{ - if (iFmTunerUtility) - { - iFmTunerUtility->SetFrequencyRange(aRange); - } -} - -TInt CMMFRadioBackendEngine::GetFreqRange(TFmRadioFrequencyRange& aRange) -{ - TInt ret = KErrNotFound; - TInt minFreq; - TInt maxFreq; - - if (iFmTunerUtility) - { - ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)minFreq, (TInt&)maxFreq); - if (ret != KErrNone) - { - minFreq = iDefaultMinFreq; - maxFreq = iDefaultMaxFreq; - aRange = iDefaultFreqRange; - ret = KErrNone; - } - } - DEBUG_API_A1("CMMFRadioBackendEngine::GetFreqRange RET: %d", ret); -// RDebug::Print(_L("CMMFRadioBackendEngine::GetFreqRange RET: %d"), ret); - return ret; -} - -TInt CMMFRadioBackendEngine::GetFreqRangeProperties(TFmRadioFrequencyRange& aRange, TInt& aMinFreq, TInt& aMaxFreq) -{ - TInt ret = KErrNotFound; - - if (iFmTunerUtility) - { - ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)aMinFreq, (TInt&)aMaxFreq); - if (ret != KErrNone) - { - aRange = iDefaultFreqRange; - aMinFreq = iDefaultMinFreq; - aMaxFreq = iDefaultMaxFreq; - ret = KErrNone; - } - } - DEBUG_API_A1("CMMFRadioBackendEngine::GetFreqRangeProperties RET: %d", ret); -// RDebug::Print(_L("CMMFRadioBackendEngine::GetFreqRangeProperties RET: %d"), ret); - return ret; -} -TInt CMMFRadioBackendEngine::GetMaxVolume(TInt& aMaxVol) -{ - TInt ret = KErrNotFound; - - if (iRadioPlayerUtility) - { - ret = iRadioPlayerUtility->GetMaxVolume(aMaxVol); - } - return ret; -} - -TInt CMMFRadioBackendEngine::SetVolume(TInt aVol) -{ - TInt ret = KErrNotFound; - - if (iRadioPlayerUtility) - { - ret = iRadioPlayerUtility->SetVolume(aVol); - } - return ret; -} - -TInt CMMFRadioBackendEngine::SetMute(XAboolean aMute) -{ - TInt ret = KErrNotFound; - - if (iRadioPlayerUtility) - { - ret = iRadioPlayerUtility->Mute(aMute); - } - return ret; -} - -TInt CMMFRadioBackendEngine::GetVolume(TInt& aVol) -{ - TInt ret = KErrNotFound; - - if (iRadioPlayerUtility) - { - ret = iRadioPlayerUtility->GetVolume(aVol); - } - return ret; -} - -TInt CMMFRadioBackendEngine::GetForcedMonoReception(XAuint32& aForcedMono) -{ - TInt ret = KErrNotFound; - TBool forceMono(EFalse); - - if (iFmTunerUtility) - { - ret = iFmTunerUtility->GetForcedMonoReception(forceMono); - if (ret == KErrNotReady) - { - aForcedMono = XA_STEREOMODE_AUTO; // Radio Utility Default value - return KErrNone; - } - } - - - if (forceMono) - { - aForcedMono = XA_STEREOMODE_MONO; - } - else - { - if (iForceStereo) - aForcedMono = XA_STEREOMODE_STEREO; - else - aForcedMono = XA_STEREOMODE_AUTO; - } - return ret; -} - -void CMMFRadioBackendEngine::PlayRadio() -{ - if (iRadioPlayerUtility) - { - iRadioPlayerUtility->Play(); - } -} - -void CMMFRadioBackendEngine::StopRadio() -{ - if (iRadioPlayerUtility) - { - iRadioPlayerUtility->Stop(); - } -} - -TInt CMMFRadioBackendEngine::ForceMonoReception(XAuint32 aForcedMono) -{ - TInt ret = KErrNotFound; - XAuint32 currentMode; - - ret = GetForcedMonoReception(currentMode); - if (ret != XA_RESULT_SUCCESS) - return ret; - - if (iFmTunerUtility) - { - if (aForcedMono == XA_STEREOMODE_MONO) - { - iForceStereo = EFalse; - ret = iFmTunerUtility->ForceMonoReception(ETrue); - } - else if (aForcedMono == XA_STEREOMODE_STEREO) - { - iForceStereo = ETrue; - if (currentMode == XA_STEREOMODE_AUTO) // Transition from Auto to Stereo doesn't require Utility call: - { - MrftoForcedMonoChange(ETrue); - } - else - { - ret = iFmTunerUtility->ForceMonoReception(EFalse); - } - } - else // (aForcedMono == XA_STEREOMODE_AUTO) - { - iForceStereo = EFalse; - if (currentMode == XA_STEREOMODE_STEREO) // Transition from Stereo to Auto doesn't require Utility call: - { - MrftoForcedMonoChange(EFalse); - } - else - { - ret = iFmTunerUtility->ForceMonoReception(EFalse); - } - } - } - DEBUG_API_A1("CMMFRadioBackendEngine::ForceMonoReception RET: %d", ret); - // RDebug::Print(_L("CMMFRadioBackendEngine::ForceMonoReception RET: %d"), ret); - return ret; -} - -XAresult CMMFRadioBackendEngine::SetForceMonoFlag() -{ - TInt ret = KErrNotFound; - TBool forceMono(EFalse); - - if (iFmTunerUtility) - { - ret = iFmTunerUtility->GetForcedMonoReception(forceMono); - if (ret == KErrNotReady) - { - // For Radio Utility Default value = XA_STEREOMODE_STEREO - iForceStereo = ETrue; - return KErrNone; - } - - } - - if (forceMono == XA_STEREOMODE_MONO) - { - iForceStereo = EFalse; - } - else - { - iForceStereo = ETrue; - } - return ret; -} -XAresult CMMFRadioBackendEngine::SetRadioAdaptContext(void * adaptcontext) -{ - iRadioAdaptContext = adaptcontext; - return XA_RESULT_SUCCESS; -} - -XAresult CMMFRadioBackendEngine::SetPlayerAdaptContext(void * adaptcontext) -{ - iPlayerAdaptContext = adaptcontext; - return XA_RESULT_SUCCESS; -} - -XAresult TranslateError(TInt error) - { - XAresult status(XA_RESULT_SUCCESS); - switch(error) - { - case KErrNone: - status = XA_RESULT_SUCCESS; - break; - // to do: investigate and add other possible errors: - - /* case XA_RESULT_PRECONDITIONS_VIOLATED: - - break; - case XA_RESULT_PARAMETER_INVALID: - - break; - case XA_RESULT_MEMORY_FAILURE: - - break; - case XA_RESULT_RESOURCE_ERROR: - - break; - case XA_RESULT_RESOURCE_LOST: - - break; - case XA_RESULT_IO_ERROR: - - break; - case XA_RESULT_BUFFER_INSUFFICIENT: - - break; - case XA_RESULT_CONTENT_CORRUPTED: - - break; - case XA_RESULT_CONTENT_UNSUPPORTED: - - break; - case XA_RESULT_CONTENT_NOT_FOUND: - - break; - case XA_RESULT_PERMISSION_DENIED: - - break; - case XA_RESULT_FEATURE_UNSUPPORTED: - - break; - case XA_RESULT_INTERNAL_ERROR: - - break; - case XA_RESULT_UNKNOWN_ERROR: - - break; - case XA_RESULT_OPERATION_ABORTED: - - break; - case XA_RESULT_CONTROL_LOST: - - break; - */ - default: - break; - } // end switch - return status; - } -// ----------------------------------------------------------------------------- -// CMMFRadioBackendEngine::MrpeoPresetChanged -// Observer for Presets -// ----------------------------------------------------------------------------- -void CMMFRadioBackendEngine::MrpeoPresetChanged( - TPresetChangeEvent /*aChange*/, - TInt /*aIndex*/ ) -{ - -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoSquelchChange -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoSquelchChange( - TBool /*aSquelch*/ ) -{ - -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoForcedMonoChanged -// Called when a client enables/disabled forced mono reception -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoForcedMonoChange( - TBool aForcedMono ) -{ - DEBUG_API_A1("CMMFRadioBackendEngine::MrftoForcedMonoChange: aForcedMono = %d", aForcedMono); -// RDebug::Print(_L("CMMFRadioBackendEngine::MrftoForcedMonoChange: aForcedMono = %d"), aForcedMono); - XARadioItfAdapt_StereoStatusChange((XAAdaptationBaseCtx*)iRadioAdaptContext, aForcedMono); -} - - // ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoFrequencyChange -// Called when the tuned frequency changes -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoFrequencyChange( - TInt aNewFrequency) -{ - DEBUG_API_A1("CMMFRadioBackendEngine::MrftoFrequencyChange: aNewFrequency = %d", aNewFrequency); - // RDebug::Print(_L("CMMFRadioBackendEngine::MrftoFrequencyChange aNewFrequency = %d"), aNewFrequency); - XARadioItfAdapt_FrequencyChange((XAAdaptationBaseCtx*)iRadioAdaptContext, aNewFrequency); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoFrequencyRangeChange -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoFrequencyRangeChange( - TFmRadioFrequencyRange aNewRange ) -{ - DEBUG_API_A1("CMMFRadioBackendEngine::MrftoFrequencyRangeChange: aNewRange = %d", aNewRange); -// RDebug::Print(_L("CMMFRadioBackendEngine::MrftoFrequencyRangeChange: aNewRange = %d"), aNewRange); - XARadioItfAdapt_FrequencyRangeChange((XAAdaptationBaseCtx*)iRadioAdaptContext, aNewRange); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoOfflineModeStatusChange -// Called when offline mode status changes -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoOfflineModeStatusChange( - TBool /*aOfflineMode*/ ) -{ - -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoAntennaStatusChange -// Called when antenna status changes. -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoAntennaStatusChange( - TBool /*aAttached*/ ) -{ - -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoFmTransmitterStatusChange -// The FM tuner is turned off when FM transmitter is on. -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoFmTransmitterStatusChange( - TBool /*aActive*/ ) -{ - -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoStationSeekComplete -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoStationSeekComplete( - TInt aError, - TInt aFrequency ) -{ - XARadioItfAdapt_SeekComplete((XAAdaptationBaseCtx*)iRadioAdaptContext, aError, aFrequency); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoSetFrequencyComplete -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoSetFrequencyComplete( - TInt aError ) -{ - DEBUG_API_A1("CMMFRadioBackendEngine::MrftoSetFrequencyComplete: aError = %d", aError); -// RDebug::Print(_L("CMMFRadioBackendEngine::MrftoFrrequencyComplete: aError = %d"), aError); - TInt freq = 0; - if (!aError) - { - iFmTunerUtility->GetFrequency(freq); - } - DEBUG_API_A1("CMMFRadioBackendEngine::MrftoSetFrequencyComplete: new freq is: %d", freq); -// RDebug::Print(_L("CMMFRadioBackendEngine::MrftoSetFrequencyComplete: new freq is: %d"), freq); - XARadioItfAdapt_SetFrequencyComplete((XAAdaptationBaseCtx*)iRadioAdaptContext, aError, freq); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete( - TInt aError ) -{ - DEBUG_API_A1("CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete: aError = %d", aError); -// RDebug::Print(_L("CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete: aError = %d"), aError); - XARadioItfAdapt_SetFrequencyRangeComplete((XAAdaptationBaseCtx*)iRadioAdaptContext, aError); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrftoRequestTunerControlComplete -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrftoRequestTunerControlComplete( - TInt aError) -{ -// RDebug::Print(_L("CMMFRadioBackendEngine::MrftoRequestTunerControlComplete: aError = %d"), aError); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrpoBalanceChange -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrpoBalanceChange( - TInt /*aLeftPercentage*/, - TInt /*aRightPercentage*/ ) -{ - -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrpoMuteChange -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrpoMuteChange( - TBool aMute ) -{ - XANokiaVolumeExtItfAdapt_MuteChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, aMute); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrpoVolumeChange -// -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrpoVolumeChange( - TInt aVolume ) -{ - XANokiaLinearVolumeItfAdapt_VolumeChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, aVolume); -} - -// ---------------------------------------------------- -// CMMFRadioBackendEngine::MrpoStateChange This is Tuner State -// Called when the state of the tuner changes -// ---------------------------------------------------- -// -void CMMFRadioBackendEngine::MrpoStateChange( - TPlayerState aState, - TInt aError ) -{ - if ( aError ) - { - DEBUG_API_A1("CMMFRadioBackendEngine::MrpoStateChange: aError = %d", aError); - // RDebug::Print(_L("CMMFRadioBackendEngine::MrpoStateChange: aError = %d"), aError); - } - - DEBUG_API_A1("CMMFRadioBackendEngine::MrpoStateChange: new state = %d", aState); -// RDebug::Print(_L("CMMFRadioBackendEngine::MrpoStateChange: new state = %d"), aState); - - if ( aState == ERadioPlayerPlaying ) - { - XAPlayItfAdaptMMF_StateChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, ETrue); - } - else // ERadioPlayerIdle - { - XAPlayItfAdaptMMF_StateChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, EFalse); - } -} - -extern "C" { - - void* cmmfradiobackendengine_init() - { - return CMMFRadioBackendEngine::Instance(); - } - - void cmmfradiobackendengine_delete(void* context) - { - ((CMMFRadioBackendEngine*)(context))->DeleteInstance(); - } - - void set_frequency(void* context, XAuint32 freq) - { - ((CMMFRadioBackendEngine*)(context))->SetFrequency((TInt)freq); - } - - XAresult get_frequency(void* context, XAuint32* freq) - { - return ((CMMFRadioBackendEngine*)(context))->GetFrequency((TInt&)*freq); - } - - XAresult get_signal_strength(void* context, XAuint32* signalStrength) - { - return ((CMMFRadioBackendEngine*)(context))->GetSignalStrength((TInt&)*signalStrength); - } - - void station_seek(void* context, XAboolean upwards) - { - ((CMMFRadioBackendEngine*)(context))->StationSeek(upwards); - } - - void cancel_set_frequency(void* context) - { - ((CMMFRadioBackendEngine*)(context))->CancelSetFrequency(); - } - - void cancel_station_seek(void* context) - { - ((CMMFRadioBackendEngine*)(context))->CancelStationSeek(); - } - - void set_freq_range(void* context, XAuint8 range) - { - ((CMMFRadioBackendEngine*)(context))->SetFreqRange((TFmRadioFrequencyRange)range); - } - - XAresult get_freq_range(void* context, XAuint8* range) - { - return ((CMMFRadioBackendEngine*)(context))->GetFreqRange((TFmRadioFrequencyRange&)*range); - } - - XAresult get_freq_range_properties(void* context, XAuint8 aRange, XAuint32* aMinFreq, XAuint32* aMaxFreq) - { - return ((CMMFRadioBackendEngine*)(context))->GetFreqRangeProperties((TFmRadioFrequencyRange&) aRange, (TInt&) *aMinFreq, (TInt&) *aMaxFreq); - } - - XAresult get_max_volume(void* context, XAmillibel* maxVol) - { - return ((CMMFRadioBackendEngine*)(context))->GetMaxVolume((TInt&)*maxVol); - } - - XAresult set_volume(void* context, XAuint32 vol) - { - return ((CMMFRadioBackendEngine*)(context))->SetVolume((TInt)vol); - } - - XAresult get_volume(void* context, XAuint32* vol) - { - return ((CMMFRadioBackendEngine*)(context))->GetVolume((TInt&)*vol); - } - - XAresult set_mute(void* context, XAboolean mute) - { - return ((CMMFRadioBackendEngine*)(context))->SetMute(mute); - } - - XAresult get_stereo_mode(void* context, XAuint32* mode) - { - return ((CMMFRadioBackendEngine*)(context))->GetForcedMonoReception(*mode); - } - - XAresult set_stereo_mode(void* context, XAuint32 mode) - { - return ((CMMFRadioBackendEngine*)(context))->ForceMonoReception(mode); - } - - void play_radio(void* context) - { - ((CMMFRadioBackendEngine*)(context))->PlayRadio(); - } - - void stop_radio(void* context) - { - ((CMMFRadioBackendEngine*)(context))->StopRadio(); - } - - XAresult mmf_set_radio_adapt_context(void * context, void * adaptcontext) - { - return ((CMMFRadioBackendEngine*)(context))->SetRadioAdaptContext(adaptcontext); - } - - XAresult mmf_set_player_adapt_context(void * context, void * adaptcontext) - { - return ((CMMFRadioBackendEngine*)(context))->SetPlayerAdaptContext(adaptcontext); - } -}