diff -r b67dd1fc57c5 -r 2ed61feeead6 khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h Fri May 28 19:26:28 2010 -0500 @@ -0,0 +1,264 @@ +/* +* 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: +* +*/ + +#ifndef CMMFRADIOBACKENDENGINE_H +#define CMMFRADIOBACKENDENGINE_H + +#ifdef __cplusplus + +#include +#include +#include +#include +#include +#include +#include +#include "xaadaptationmmf.h" + +NONSHARABLE_CLASS(CMMFRadioBackendEngine) : public CBase, + public MRadioPlayerObserver, + public MRadioFmTunerObserver, + public MRadioPresetObserver + { +public: + + static CMMFRadioBackendEngine* Instance(); + void DeleteInstance(); + ~CMMFRadioBackendEngine(); + + void SetFrequency(TInt aFreq); + TInt GetFrequency(TInt& aFreq); + TInt GetSignalStrength(TInt& aFreq); + void StationSeek(XAboolean aUpwards); + void CancelSetFrequency(); + void CancelStationSeek(); + void SetFreqRange(TFmRadioFrequencyRange aRange); + TInt GetFreqRange(TFmRadioFrequencyRange& aRange); + TInt GetFreqRangeProperties(TFmRadioFrequencyRange& aRange, TInt& aMinFreq, TInt& aMaxFreq); + TInt GetMaxVolume(TInt& aMaxVol); + TInt SetVolume(TInt aVol); + TInt GetVolume(TInt& aVol); + TInt SetMute(XAboolean aMute); + TInt GetForcedMonoReception(XAuint32& aForcedMono); + TInt ForceMonoReception(XAuint32 aForcedMono); + void PlayRadio(); + void StopRadio(); + XAresult SetRadioAdaptContext(void * adaptcontext); + XAresult SetPlayerAdaptContext(void * adaptcontext); + + /** + * From MRadioPlayerObserver. + * Called when Radio state changed. + * + * @since S60 3.2 + * @param aState Radio player state + * @param aError A standard system error code, only used when aState is ERadioPlayerIdle + */ + void MrpoStateChange( TPlayerState aState, TInt aError ); + + /** + * From MRadioPlayerObserver. + * Called when volume changes. This may be caused by other applications. + * + * @since S60 3.2 + * @param aVolume Current volume. + */ + void MrpoVolumeChange( TInt aVolume ); + + /** + * From MRadioPlayerObserver. + * Called when mute setting changes. This may be caused by other applications. + * + * @since S60 3.2 + * @param aMute ETrue indicates audio is muted. + */ + void MrpoMuteChange( TBool aMute ); + + /** + * From MRadioPlayerObserver. + * Called when mute setting changes. This may be caused by other applications. + * + * Called when balance setting changes. This may be caused by other applications. + * + * @since S60 3.2 + * @param aLeftPercentage + * Left speaker volume percentage. This can be any value from zero to 100. + * Zero value means left speaker is muted. + * @param aRightPercentage + * Right speaker volume percentage. This can be any value from zero to 100. + * Zero value means right speaker is muted. + */ + void MrpoBalanceChange( TInt aLeftPercentage, TInt aRightPercentage ); + + /** + * From MRadioFmTunerObserver. + * Called when Request for tuner control completes. + * + * @since S60 3.2 + * @param aError A standard system error code or FM tuner error (TFmRadioTunerError). + */ + void MrftoRequestTunerControlComplete( TInt aError ); + + /** + * From MRadioFmTunerObserver. + * Set frequency range complete event. This event is asynchronous and is received after + * a call to CRadioFmTunerUtility::SetFrequencyRange. + * + * @since S60 3.2 + * @param aError A standard system error code or FM tuner error (TFmRadioTunerError). + */ + void MrftoSetFrequencyRangeComplete( TInt aError ); + + /** + * From MRadioFmTunerObserver. + * Set frequency complete event. This event is asynchronous and is received after a call to + * CRadioFmTunerUtility::SetFrequency. + * + * @since S60 3.2 + * @param aError A standard system error code or FM tuner error (TFmRadioTunerError). + */ + void MrftoSetFrequencyComplete( TInt aError ); + + /** + * From MRadioFmTunerObserver. + * Station seek complete event. This event is asynchronous and is received after a call to + * CRadioFmTunerUtility::StationSeek. + * + * @since S60 3.2 + * @param aError A standard system error code or FM tuner error (TFmRadioTunerError). + * @param aFrequency The frequency(Hz) of the radio station that was found. + */ + void MrftoStationSeekComplete( TInt aError, TInt aFrequency ); + + /** + * From MRadioFmTunerObserver. + * Called when FM Transmitter status changes (if one is present in the device). Tuner receiver + * is forced to be turned off due to hardware conflicts when FM transmitter is activated. + * + * @since S60 3.2 + * @param aActive ETrue if FM transmitter is active; EFalse otherwise. + */ + void MrftoFmTransmitterStatusChange( TBool aActive ); + + /** + * From MRadioFmTunerObserver. + * Called when antenna status changes. + * + * @since S60 3.2 + * @param aAttached ETrue if antenna is attached; EFalse otherwise. + */ + void MrftoAntennaStatusChange(TBool aAttached ); + + /** + * From MRadioFmTunerObserver. + * Called when offline mode status changes. + * @since S60 3.2 + * + * @param aOfflineMode ETrue if offline mode is enabled; EFalse otherwise. + */ + void MrftoOfflineModeStatusChange(TBool aOfflineMode ); + + /** + * From MRadioFmTunerObserver. + * Called when the frequency range changes. This may be caused by other applications. + * + * @since S60 3.2 + * @param aBand New frequency range. + */ + void MrftoFrequencyRangeChange(TFmRadioFrequencyRange aBand ); + + /** + * From MRadioFmTunerObserver. + * Called when the tuned frequency changes. This may be caused by other + * applications or RDS if AF/TA is enabled. + * + * @since S60 3.2 + * @param aNewFrequency The new tuned frequency(Hz). + */ + void MrftoFrequencyChange( TInt aNewFrequency ); + + /** + * From MRadioFmTunerObserver. + * Called when the forced mono status change. This may be caused by other applications. + * + * @since S60 3.2 + * @param aForcedMono ETrue if forced mono mode is enabled; EFalse otherwise. + */ + void MrftoForcedMonoChange( TBool aForcedMono ); + + /** + * From MRadioFmTunerObserver. + * Called when the squelch (muting the frequencies without broadcast) status change. + * This may be caused by other applications. + * + * @since S60 3.2 + * @param aSquelch ETrue if squelch is enabled; EFalse otherwise. + */ + void MrftoSquelchChange( TBool aSquelch ); + + /** + * From MRadioPresetObserver. + * Called when a preset changes. + * + * NOTE: EPresetDeleted with aIndex == 0, indicates that all presets have been deleted. + * + * @since S60 3.2 + * @param aChange Change event type + * @param aIndex Index to the preset that has changed. Zero means all presets. + */ + void MrpeoPresetChanged( TPresetChangeEvent aChange, TInt aIndex ); + +private: + static CMMFRadioBackendEngine* s_instance; + CMMFRadioBackendEngine(); + void ConstructL(); + +private: + CRadioUtility* iRadioUtility; + CRadioFmTunerUtility* iFmTunerUtility; + CRadioPlayerUtility* iPlayerUtility; + TBool iAutoFlag; + void* iRadioAdaptContext; + void* iPlayerAdaptContext; + + }; + +#else /* __cplusplus */ + +extern void* cmmfradiobackendengine_init(void); +extern void cmmfradiobackendengine_delete(void* context); +extern void set_frequency(void* context, XAuint32 freq); +extern void cancel_set_frequency(void* context); +extern void station_seek(void* context, XAboolean upwards); +extern void cancel_station_seek(void* context); +extern XAresult get_frequency(void* context, XAuint32* freq); +extern XAresult get_signal_strength(void* context, XAuint32* signalStrength); +extern void set_freq_range(void* context, XAuint8 range); +extern XAresult get_freq_range(void* context, XAuint8* range); +extern XAresult get_freq_range_properties(void* context, XAuint8 range, XAuint32* aMinFreq, XAuint32* aMaxFreq); +extern XAresult set_stereo_mode(void* context, XAuint32 mode); +extern XAresult get_stereo_mode(void* context, XAuint32* mode); +extern XAresult mmf_set_radio_adapt_context(void * context, void * adaptcontext); +extern XAresult mmf_set_player_adapt_context(void * context, void * adaptcontext); +extern void stop_radio(void * context); +extern void play_radio(void* context); +extern XAresult set_volume(void* context, XAuint32 vol); +extern XAresult mmf_set_player_adapt_context(void * context, void * adaptcontext); +extern XAresult set_mute(void* context, XAboolean mute); +#endif /* __cplusplus */ + +#endif /* CMMFRADIOBACKENDENGINE_H */