--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fmradio/fmradioengine/inc/fmradioengine.h Tue Feb 02 00:17:10 2010 +0200
@@ -0,0 +1,848 @@
+/*
+* Copyright (c) 2005 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 implements the core functionality of the
+* Radio Engine
+*
+*/
+
+
+#ifndef FMRADIOENGINE_H
+#define FMRADIOENGINE_H
+
+#include <e32base.h>
+#include <AccMonitorCapabilities.h>
+#include <fmradiointernalpskeys.h>
+#include <RadioUtility.h>
+#include <RadioFmTunerUtility.h>
+#include <RadioPlayerUtility.h>
+#include <RadioPresetUtility.h>
+#include <RadioFmPresetUtility.h>
+#include <etelmm.h>
+
+#include "fmradiosystemeventdetectorobserver.h"
+#include "fmradionetworkchangeobserver.h"
+#include "fmradiordsobserver.h"
+#include "fmradioengine.hrh"
+#include "fmradioheadseteventobserver.h"
+
+#ifndef __ACCESSORY_FW
+#include <DosSvrServices.h>
+#endif
+
+// CONSTANTS
+const TUint8 KPresetNameLength = 32;
+const TInt KDefaultRadioFrequency = 87500000;
+_LIT(KFMRadioEngineResourceFile, "fmradioengine.rsc");
+const TInt KFMRadioFreqMultiplier = 1000;
+
+// FORWARD DECLARATIONS
+class CAudioOutput;
+class CCentralRepositoryHandler;
+class CDesC16Array;
+class CFMRadioAccessoryObserver;
+class CFMRadioContextPublisher;
+class CFMRadioMobileNetworkInfoListener;
+class CFMRadioPubSub;
+class CFMRadioRdsReceiverBase;
+class CFMRadioSystemEventDetector;
+class CRadioStateHandler;
+class MRadioEngineStateChangeCallback;
+class TRadioSettings;
+
+#ifndef __ACCESSORY_FW
+class RDosServer;
+class CDosServerObserver;
+#endif
+
+// CLASS DECLARATION
+
+/**
+ * This class implements the core functionality of the Radio Engine
+ *
+ * @since S60 3.2
+ */
+class CRadioEngine : public CBase,
+ public MRadioPlayerObserver,
+ public MRadioFmTunerObserver,
+ public MRadioPresetObserver,
+ public MFMRadioSystemEventDetectorObserver,
+ public MFMRadioNetworkChangeObserver,
+ public MFMRadioRdsObserver,
+ public MFMRadioHeadsetEventObserver
+
+ {
+public:
+
+ typedef TBuf<KPresetNameLength> TStationName;
+
+ enum TRadioMode
+ {
+ ERadioTunerMode,
+ ERadioPresetMode
+ };
+
+ enum TFMRadioAudioMode
+ {
+ EFMRadioStereo = 0,
+ EFMRadioMono
+ };
+
+ enum TFMRadioAudioOutput
+ {
+ EFMRadioOutputHeadset = 0,
+ EFMRadioOutputIHF
+ };
+
+public:
+
+ /**
+ * Two-phased class constructor.
+ * @return pointer to CRadioEngine class instance
+ */
+ IMPORT_C static CRadioEngine* NewL( MRadioEngineStateChangeCallback& aCallback );
+ /**
+ * Destructor of CRadioEngine class.
+ */
+ IMPORT_C virtual ~CRadioEngine();
+
+public: // New functions
+
+ /**
+ * Set radio settings to their default values.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C void InitializeRadio();
+ /**
+ * Retrieves the current radio mode .
+ * @since Series 60 3.0
+ * @return tune/preset
+ */
+ IMPORT_C TRadioMode GetRadioMode() const;
+
+ /**
+ * Gets the current audio mode.
+ * @since Series 60 3.0
+ * @return stereo/mono
+ * @retval 0 = stereo
+ * @retval 1 = mono
+ */
+ IMPORT_C TInt GetAudioMode() const;
+
+ /**
+ * Set the radio's audio mode.
+ * @since Series 60 3.0
+ * @param aAudioMode the new audio mode
+ * @return none
+ */
+ IMPORT_C void SetAudioMode( const TFMRadioAudioMode aAudioMode );
+
+ /**
+ * get the currently selected channel index.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C TInt GetPresetIndex() const;
+
+ /**
+ * Update the channel located at the index to use the frequency specified.
+ * @since Series 60 3.0
+ * @param aIndex index into the channel array.
+ * @param aStationName name of the channel
+ * @param aFrequency frequency value to be used.
+ * @return none
+ */
+ IMPORT_C void SetPresetNameFrequencyL( TInt aIndex, const TStationName& aStationName, TInt aFrequency );
+
+ /**
+ * Retrieve the channel frequency at the index specified
+ * @since Series 60 3.0
+ * @param aIndex index into the channel array.
+ * @return the frequency
+ */
+ IMPORT_C TInt GetPresetFrequencyL(TInt aIndex) const;
+
+ /**
+ * Retrieve the channel name at the index specified
+ * @since Series 60 3.0
+ * @param aIndex index into the channel array.
+ * @return the channel name
+ */
+ IMPORT_C CRadioEngine::TStationName& GetPresetNameL( TInt aIndex );
+
+ /**
+ * Retrieve the channel name and the frequency at the index specified
+ * @param aIndex station index
+ * @param aName stored station name
+ * @param aFrequency preset frequency
+ */
+ IMPORT_C void GetPresetNameAndFrequencyL( TInt aIndex, TDes& aName, TInt& aFrequency );
+
+ /**
+ * Starts the radio.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C void RadioOn();
+
+ /**
+ * Stops the radio.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C void RadioOff();
+
+ /**
+ * Returns the radio status
+ * @since ??
+ * @return ETrue = radio is on, EFalse = radio is off
+ */
+ IMPORT_C TBool IsRadioOn();
+
+ /**
+ * Checks if offine profile is current active profile
+ * @since ??
+ * @return True / False
+ */
+ IMPORT_C TBool IsOfflineProfileL();
+
+ /**
+ * Tune to the specified frequency
+ * @since Series 60 3.0
+ * @param aFrequency - frequency to lock onto.
+ * @param aRadioMode - The radio mode to be used. Tuner mode by default
+ * @return none
+ */
+ IMPORT_C void Tune( TInt aFrequency, TRadioMode aRadioMode = ERadioTunerMode );
+
+ /*
+ * Sets tuner mode on i.e. preset channel is not active.
+ * Active preset Channel P&S data is also cleared.
+ * Useful for example when preset channel is deleted.
+ */
+ IMPORT_C void SetTunerModeOn();
+
+ /**
+ * Scan up to the next available frequency.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C void ScanUp();
+
+ /**
+ * Scan down to the last available frequency.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C void ScanDown();
+
+ /**
+ * Cancel previously requested scan, and
+ * return to the already tuned frequency.
+ * @since Series 60 3.0
+ * @return none
+ */
+ IMPORT_C void CancelScan();
+
+ /**
+ * Sets the audio mute state
+ * @since Series 60 3.0
+ * @param aMuteOn - flag to determine whether mute should be turned on or off
+ * @return none
+ */
+ IMPORT_C void SetMuteOn(TBool aMuteOn);
+
+ /**
+ * Gets the audio mute state
+ * @since Series 60 3.0
+ * @return ETrue or EFalse to indicate whether mute is currently on.
+ */
+ IMPORT_C TBool IsMuteOn() const;
+
+ /**
+ * Sets the volume level of the FM radio
+ * @since Series 60 3.0
+ * @param aVolume - the volume to be used.
+ * @return none
+ */
+ IMPORT_C void SetVolume(TInt aVolume);
+
+ /**
+ * Gets the volumelevel.
+ * @since Series 60 3.0
+ * @return the current volume
+ */
+ IMPORT_C TInt GetVolume() const;
+
+ /**
+ * Gets the max volumelevel.
+ * @since Series 60 3.0
+ * @return the max volume
+ */
+ IMPORT_C TInt GetMaxVolume() const;
+
+ /**
+ * Sets the audio Output
+ * @since Series 60 3.0
+ * @param aAudioOutput - where should the audio be routed?
+ * @return none
+ */
+ IMPORT_C void SetAudioOutput( const TFMRadioAudioOutput aAudioOutput );
+
+ /**
+ * Sets the rds af search enabled
+ * @param aEnabled ETrue if rds af search is enabled; EFalse otherwise.
+ * @return none
+ */
+ IMPORT_C void SetRdsAfSearchEnable( TBool aEnabled );
+
+ /**
+ * Check whether flight mode is currently enabled
+ * @since Series 60 3.0
+ * @return ETrue or EFalse dependent on whether flightmode is enabled
+ */
+ IMPORT_C TBool IsRdsAfSearchEnabled() const;
+
+ /**
+ * @return reference to settings
+ */
+ IMPORT_C TRadioSettings& RadioSettings( );
+
+ /**
+ * Retrieve the current audio output
+ * @since Series 60 3.0
+ * @return EFMRadioOutputIHF or EFMRadioOutputHeadset
+ */
+ IMPORT_C TFMRadioAudioOutput GetAudioOutput() const;
+
+ /**
+ * Tunes to the chosen channel.
+ * @since Series 60 3.0
+ * @param aIndex - the index number of the channel you wish to tune to.
+ * @return none
+ */
+ IMPORT_C void TunePresetL(TInt aIndex);
+
+ /**
+ * Retrieves the current frequency.
+ * @since Series 60 3.0
+ * @return the frequency
+ */
+ IMPORT_C TInt GetTunedFrequency() const;
+
+ /**
+ * Check whether flight mode is currently enabled
+ * @since Series 60 3.0
+ * @return ETrue or EFalse dependent on whether flightmode is enabled
+ */
+ IMPORT_C TBool IsFlightModeEnabled() const;
+
+ /**
+ * Get the frequency range (in Hertz) of the specified band.
+ * This function should be used to enquire the frequency range
+ * of the bands that GetCapabilities reports as supported.
+ * @since Series 60 3.0
+ * @param aBottomFrequency The variable to set to the lowest frequency allowed
+ * @param aTopFrequency The variable to set to the highest frequency allowed
+ * @return A standard system error code
+ **/
+ IMPORT_C TInt GetFrequencyBandRange( TInt& aBottomFrequency, TInt& aTopFrequency );
+
+ /**
+ * Check whether call is in progress
+ * @since Series 60 3.1
+ * @return ETrue or EFalse to indicate whether call is in progress
+ */
+ IMPORT_C TBool IsInCall() const;
+
+ /**
+ * Has the frequency been set by RDS AF search or not.
+ *
+ * @return ETrue if frequency was set by RDS AF, otherwise EFalse
+ */
+ IMPORT_C TBool FrequencySetByRdsAf() const;
+
+ /**
+ * Getter for RDS receiver
+ *
+ * @return Reference to CFMRadioRdsReceiver
+ */
+ IMPORT_C CFMRadioRdsReceiverBase& RdsReceiver();
+ /**
+ * Notifies UI that the headset button has been pressed
+ */
+ void HandleHeadsetButtonPress();
+ /**
+ * Switches the engine into flight mode, and notifies the UI of
+ * the change in status.
+ */
+ void HandleFlightModeEnabled();
+ /**
+ * Switches the engine out of flight mode, and notifies the UI of
+ * the change in status
+ */
+ void HandleFlightModeDisabled();
+ /**
+ * Calls the User Interface callback function, indicating the event code and
+ * error code.
+ */
+ void HandleCallback(TInt aEventCode, TInt aErrorCode );
+
+ /**
+ * Gets the headset status
+ * @return ETrue if headset connected
+ */
+ IMPORT_C TBool IsHeadsetConnected() const;
+
+ /**
+ * 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 );
+ /**
+ * From base class MFMRadioSystemEventDetectorObserver
+ * This callback notifies when networks comes up.
+ */
+ void NetworkUpCallbackL();
+ /**
+ * From base class MFMRadioSystemEventDetectorObserver
+ * This callback notifies when network goes down.
+ */
+ void NetworkDownCallbackL();
+
+ /**
+ * From base class MFMRadioSystemEventDetectorObserver
+ * This callback notifies when audio resources become available.
+ */
+ void AudioResourcesAvailableL();
+
+ /**
+ * From base class MFMRadioSystemEventDetectorObserver
+ * This callback notifies when audio auto resuming is forbidden.
+ */
+ void AudioAutoResumeForbiddenL();
+ /**
+ * From base class MFMRadioSystemEventDetectorObserver
+ * This callback notifies when call becomes active.
+ */
+ void CallActivatedCallbackL();
+
+ /**
+ * From base class MFMRadioSystemEventDetectorObserver
+ * This callback notifies when call becomes deactive.
+ */
+ void CallDeactivatedCallbackL();
+ /**
+ * From base class MFMRadioNetworkChangeObserver
+ *
+ * @see MFMRadioNetworkChangeObserver::NetworkIdChanged();
+ */
+ void NetworkIdChanged();
+
+ // from base class MFMRAdioRdsObserver
+ void RdsDataProgrammeService( const TDesC& aProgramService );
+ void RdsDataPsNameIsStatic( TBool aStatic );
+ void RdsDataRadioText( const TDesC& aRadioText );
+ void RdsDataRadioTextPlus( const TInt aRTPlusClass, const TDesC& aRadioTextPlus );
+
+ void RdsAfSearchBegin();
+ void RdsAfSearchEnd( TUint32 aFrequency, TInt aError );
+ void RdsAfSearchStateChange( TBool aEnabled );
+ void RdsAvailable( TBool aAvailable );
+
+ // from MFMRadioHeadsetEventObserver
+ void HeadsetAccessoryConnectedCallbackL();
+ void HeadsetAccessoryDisconnectedCallbackL();
+
+ /**
+ * Initialize fmradioengine resource file information
+ */
+ void InitializeResourceLoadingL();
+ /**
+ * Convert FMRadio region info to frequency range used by fmradiotunerutility
+ * @param aRegionId fmradio region
+ * @return frequency range used by fmradiotunerutility
+ */
+ TFmRadioFrequencyRange TunerFrequencyRangeForRegionId( const TInt aRegionId ) const;
+ /**
+ * Determine current region
+ * @return fmradio region
+ */
+ IMPORT_C TFMRadioRegionSetting GetRegionL() const;
+ /**
+ * fill the given list with fmradio regions
+ * @param aArray array to add regions
+ */
+ IMPORT_C void FillListWithRegionDataL( CDesC16Array& aArray ) const;
+ /**
+ * Returns region from the array of supported regions
+ * @param aIndex index for region
+ * @return fmradio region
+ */
+ IMPORT_C TFMRadioRegionSetting RegionIdAtIndex( const TInt aIndex ) const;
+ /**
+ * Returns current region Id
+ * @return current region Id.
+ */
+ IMPORT_C TInt RegionId() const;
+ /**
+ * Change current region
+ * @param aRegion region to set
+ */
+ IMPORT_C void SetRegionIdL( TInt aRegion ) const;
+ /**
+ * Request tuner control from fmradiotunerutility
+ */
+ IMPORT_C void RequestTunerControl() const;
+ /**
+ * Returns decimal count for current region MHz information
+ * @return decimal count for current region
+ */
+ IMPORT_C TInt DecimalCount() const;
+ /**
+ * Return step size for tuning.
+ * @return step size
+ */
+ IMPORT_C TUint32 FrequencyStepSize() const;
+ /**
+ * Returns a reference to P&S interface.
+ * Method leaves if iPubSub is not allocated
+ *
+ * @return PS& interface.
+ */
+ IMPORT_C CFMRadioPubSub& PubSubL() const;
+ /**
+ * increases startup count by one and returns amount of app startups.
+ *
+ * @return app startup count
+ */
+ IMPORT_C TInt UpdatedStartupCount() const;
+ /**
+ * Cancel seek and notify UI
+ */
+ IMPORT_C void CancelScanLocalStationsScan();
+ /**
+ * Is routing between loudspeaker and headset possible
+ *
+ * @return ETrue, if routing is possible
+ */
+ IMPORT_C TBool IsAudioRoutingPossible() const;
+
+ /**
+ * Has RT+ interaction tutorial dialog been shown to user.
+ *
+ * @return ETrue after the first time user sees the dialog.
+ */
+ IMPORT_C TBool MusicStoreNoteDisplayed();
+
+ /**
+ * Sets music store tutorial note displayed value to true.
+ * It needs to be false only before supported RT+ features
+ * become available for the first time.
+ */
+ IMPORT_C void SetMusicStoreNoteDisplayed();
+
+ /**
+ * Get level of support for RT+ interactions.
+ * Values are defined in fmradioengine.hrh:TFMRadioRTPlusLevel.
+ *
+ * @return which interactions are supported as a TFMRadioRTPlusLevel value
+ */
+ IMPORT_C TFMRadioRTPlusLevel GetRTPlusSupportLevel();
+
+ /**
+ * Sets the currently active preset index
+ * @param aIndex new active preset index
+ */
+ IMPORT_C void SetCurrentPresetIndex( const TInt aIndex );
+
+private:
+
+ /**
+ * Default class constructor.
+ */
+ CRadioEngine( MRadioEngineStateChangeCallback& aCallback );
+
+ /**
+ * Second phase class constructor.
+ */
+ void ConstructL();
+
+ /**
+ * ConnectLineL
+ */
+ void ConnectLineL();
+
+ /**
+ * Updates the frequency into settings and P&S
+ *
+ * @param aFrequency The frequency to be set
+ */
+ void StoreAndPublishFrequency( TInt aFrequency );
+
+ /**
+ * Scans all current presets and sets stored frequencies to KErrNotFound
+ * if the preset name is empty.
+ */
+ void ResetPresetsL();
+
+ /**
+ * Resolves if BT audio accessory is connected
+ * @return ETrue if BT Audio connected
+ */
+ TBool IsBTAccessoryConnectedL();
+private:
+
+ //the internal radio engine states
+ enum TRadioEngineState
+ {
+ EStateRadioOff,
+ EStateRadioOn,
+ };
+
+ // The Radio Utility
+ CRadioUtility* iRadioUtility; // own
+ // The Tuner Utility
+ CRadioFmTunerUtility* iFmTunerUtility;
+ // The Player Utility
+ CRadioPlayerUtility* iPlayerUtility;
+ // The Preset Utility
+ CRadioFmPresetUtility* iPresetUtility; // own
+ // Receives and notifies of the RDS data
+ CFMRadioRdsReceiverBase* iRdsReceiver;
+ // Capabilities of the tuner
+ TFmTunerCapabilities iTunerCaps;
+ // Multiplier used to scale UI volume setting to volume level used by the player utility
+ TReal iUiVolumeFactor;
+ // pointer to DosServerObserver
+#ifndef __ACCESSORY_FW
+ CDosServerObserver *iDosServerObserver; //own
+#endif
+ // Audio routing API
+ CAudioOutput* iAudioOutput; //own
+ // pointer to CCentralRepositoryHandler
+ CCentralRepositoryHandler* iCentralRepositoryHandler; // own
+ // Used to provide async behavior in some callbacks
+ CRadioStateHandler *iStateHandler;
+ // flag to indicate if auto resume is supported
+ TBool iAutoResume;
+ // flag to indicate if a call is in progress
+ TBool iInCall;
+ // pointer to TRadioSettings
+ TRadioSettings* iRadioSettings; // own
+ // the current radio state
+ TRadioEngineState iCurrentRadioState;
+ // a reference of MRadioEngineStateChangeCallback object
+ MRadioEngineStateChangeCallback& iCallback;
+ // temperary frequency
+ TInt iTempFrequency;
+ // a flag indicating if tune prset is requestd
+ TBool iTunePresetRequested;
+ // Indicates a request to initialized the radio is pending
+ TBool iInitializeRadioRequestExists;
+ // Indicates if the tuner control has been granted.
+ TBool iTunerControl;
+ // High and low frequency of the current band.
+ TInt iBottomFrequency;
+ TInt iTopFrequency;
+ // ETrue if frequency was set by RDS AF
+ TBool iFrequencySetByRdsAf;
+ //Listens changes in network availability
+ CFMRadioSystemEventDetector* iSystemEventDetector;
+ // for fmradio engine resource file
+ TInt iFMRadioEngineResourceOffset;
+ //Listens changes in network ID and country code
+ CFMRadioMobileNetworkInfoListener* iNetworkInfoListener;
+ //P&S interaction interface for FMRadio actions.
+ CFMRadioPubSub* iPubSub;
+ // accessory observer
+ CFMRadioAccessoryObserver* iHeadsetObserver;
+ // tel server session
+ RTelServer iTelServer;
+ // phone
+ RMobilePhone iPhone;
+ // line
+ RMobileLine iLine;
+ // tsy name
+ TFileName iTsyName;
+ // conrrectly constructer
+ TBool ilineConstructed;
+ // for storing station name for method GetPresetNameL
+ TStationName iStationName;
+ // Local cache for tuning state so that it doesn't get published before should
+ TFMRadioPSTuningState iTuningState;
+ // If last time audio is set to IHF with no headset connected.
+ TBool iHFOptionActivated;
+ };
+
+#endif //FMRADIOENGINE_H
+
+// End of file