diff -r f3d95d9c00ab -r 46974bebc798 fmradio/activeidleengine/src/fmradioactiveidleengine.cpp --- a/fmradio/activeidleengine/src/fmradioactiveidleengine.cpp Tue Feb 02 00:17:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,386 +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: FMRadio active idle engine -* -*/ - - -#include - -#include "fmradioactiveidleengine.h" -#include "fmradioactiveidleenginenotifyhandler.h" - - -/** -* Listing of the subscribed P&S values. -* Changing the order of this enumeration requires changes to CFMRadioActiveIdleEngine::ConstructL as well. -*/ - -enum TFMRadioActiveIdleStatusObserverArray - { - //EFMRadioActiveIdleRadioVolumeObserver, /**< Index of the radio volume observer. */ - EFMRadioActiveIdleTuningStateObserver, /**< Index of the tuning state observer. */ - EFMRadioActiveIdleFrequencyObserver, /**< Index of the current frequency observer. */ - EFMRadioActiveIdleChannelChangeObserver, /**< Index of the current channel observer. */ - EFMRadioActiveIdleChannelModifyObserver, /**< Index of the channel modified observer. */ - EFMRadioActiveIdleMuteStateObserver, /**< Index of the muting state observer. */ - EFMRadioActiveIdleApplicationObserver, /**< Index of the FM Radio application observer used to observer whether the application is running or not. */ - EFMRadioActiveIdleHeadsetStatusObserver, /**< Index of the antenna status observer. */ - EFMRadioActiveIdleDecimalCountObserver, /**< Index of the frequency decimal count observer. */ - EFMRadioActiveIdlePowerStateObserver, /**< Index of the power state observer. */ - EFMRadioActiveIdleRDSProgramServiceObserver, /**< Index of the RDS Program Service observer. */ - EFMRadioPSDataRDSRadioText, - EFMRadioPSDataChannelName, - EFMRadioActiveIdlePresetListCountObserver, /**< Index of the active preset list count observer */ - EFMRadioActiveIdlePresetListFocusObserver /**< Index of the active preset list focus observer */ - }; - -// ==================== LOCAL FUNCTIONS ==================== - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -CFMRadioActiveIdleEngine::CFMRadioActiveIdleEngine( MFMRadioActiveIdleEngineNotifyHandler& aObserver ) - : iObserver( aObserver ) - { - } - -// --------------------------------------------------------------------------- -// Second-phase constructor. -// --------------------------------------------------------------------------- -// -void CFMRadioActiveIdleEngine::ConstructL() - { - //User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioEnginePSUid, KFMRadioPSDataVolume, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataTuningState, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataFrequency, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataChannel, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataChannelDataChanged, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataRadioMuteState, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataApplicationRunning, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataHeadsetStatus, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataFrequencyDecimalCount, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataRadioPowerState, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataRDSProgramService, CFMRadioPropertyObserver::EFMRadioPropertyText ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataRDSRadioText, CFMRadioPropertyObserver::EFMRadioPropertyText ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioPSDataChannelName, CFMRadioPropertyObserver::EFMRadioPropertyText ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioActiveIdlePresetListCount, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - User::LeaveIfError( iPropertyObserverArray.Append( CFMRadioPropertyObserver::NewL( *this, KFMRadioPSUid, KFMRadioActiveIdlePresetListFocus, CFMRadioPropertyObserver::EFMRadioPropertyInt ) ) ); - } - -// --------------------------------------------------------------------------- -// Makes all pubsub objects to subscribe. -// --------------------------------------------------------------------------- -// -EXPORT_C void CFMRadioActiveIdleEngine::ActivateL() - { - for ( TInt i = 0; i < iPropertyObserverArray.Count(); i++ ) - { - iPropertyObserverArray[i]->ActivateL(); - } - } - -// --------------------------------------------------------------------------- -// Cancels all pubsub objects. -// --------------------------------------------------------------------------- -// -EXPORT_C void CFMRadioActiveIdleEngine::Cancel() - { - for ( TInt i = 0; i < iPropertyObserverArray.Count(); i++ ) - { - iPropertyObserverArray[i]->Cancel(); - } - } - -// --------------------------------------------------------------------------- -// Static constructor. -// --------------------------------------------------------------------------- -// -EXPORT_C CFMRadioActiveIdleEngine* CFMRadioActiveIdleEngine::NewL( MFMRadioActiveIdleEngineNotifyHandler& aObserver ) - { - CFMRadioActiveIdleEngine* self = new ( ELeave ) CFMRadioActiveIdleEngine( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -EXPORT_C CFMRadioActiveIdleEngine::~CFMRadioActiveIdleEngine() - { - iPropertyObserverArray.ResetAndDestroy(); - iPropertyObserverArray.Close(); - /* - if ( iServ ) - { - iServ->Close(); - } - delete iServ; - */ - } - -// --------------------------------------------------------------------------- -// Invoked when a listened integer P&S key is changed. -// --------------------------------------------------------------------------- -// -void CFMRadioActiveIdleEngine::HandlePropertyChangeL( const TUid& aCategory, TUint aKey, TInt aValue ) - { - if ( aCategory == KFMRadioPSUid ) - { - switch ( aKey ) - {/* - case KFMRadioPSDataVolume: - iObserver.HandleRadioVolumeChangeL( aValue ); - break;*/ - - case KFMRadioPSDataTuningState: - iObserver.HandleTuningStateChangeL( static_cast( aValue ) ); - break; - - case KFMRadioPSDataFrequency: - iObserver.HandleFrequencyChangeL( aValue ); - break; - - case KFMRadioPSDataChannel: - // Sync the cache values for channel name and index - iPropertyObserverArray[EFMRadioPSDataChannelName]->ValueDes( ETrue ); - iObserver.HandleChannelChangeL( aValue ); - break; - - case KFMRadioPSDataChannelDataChanged: - iPropertyObserverArray[EFMRadioPSDataChannelName]->ValueDes( ETrue ); - iObserver.HandleChannelModifyL( aValue ); - break; - - case KFMRadioPSDataRadioMuteState: - iObserver.HandleMuteStateChangeL( static_cast( aValue ) ); - break; - - case KFMRadioPSDataApplicationRunning: - iObserver.HandleApplicationRunningStateChangeL( static_cast( aValue ) ); - break; - - case KFMRadioPSDataHeadsetStatus: - iObserver.HandleAntennaStatusChangeL( static_cast( aValue ) ); - break; - - case KFMRadioPSDataFrequencyDecimalCount: - iObserver.HandleFrequencyDecimalCountChangeL( static_cast( aValue ) ); - break; - - case KFMRadioPSDataRadioPowerState: - iObserver.HandlePowerStateChangeL( static_cast( aValue ) ); - break; - - case KFMRadioActiveIdlePresetListCount: - iObserver.HandlePresetListCountChangeL( aValue ); - break; - - case KFMRadioActiveIdlePresetListFocus: - //iObserver.HandlePresetListFocusChangeL( aValue ); - break; - - default: - break; - } - } - } - -// --------------------------------------------------------------------------- -// Invoked when a listened byte array P&S key is changed. -// --------------------------------------------------------------------------- -// -//void CFMRadioActiveIdleEngine::HandlePropertyChangeL( const TUid& /*aCategory*/, TUint /*aKey*/, const TDesC8& /*aValue*/ ) -// { -// } - -// --------------------------------------------------------------------------- -// Invoked when a listened text P&S key is changed. -// --------------------------------------------------------------------------- -// - -void CFMRadioActiveIdleEngine::HandlePropertyChangeL( const TUid& aCategory, TUint aKey, const TDesC& aValue ) - { - if ( aCategory == KFMRadioPSUid ) - { - switch ( aKey ) - { - case KFMRadioPSDataRDSProgramService: - iObserver.HandleRDSProgramServiceChangeL( aValue ); - break; - case KFMRadioPSDataRDSRadioText: - iObserver.HandleRDSRadioTextChangeL( aValue ); - break; - case KFMRadioPSDataChannelName: - // Sync the cache valuse for channel name and index - iPropertyObserverArray[EFMRadioActiveIdleChannelChangeObserver]->ValueInt( ETrue ); - iObserver.HandleChannelNameChangeL( aValue ); - break; - default: - break; - } - } - - } -// --------------------------------------------------------------------------- -// Invoked when a listened text P&S key is changed. -// --------------------------------------------------------------------------- -// -void CFMRadioActiveIdleEngine::HandlePropertyChangeL( const TUid&, TUint, const TDesC8&) - { - } - -// --------------------------------------------------------------------------- -// Invoked when an error has occured while fetching the new value of any listened P&S key. -// --------------------------------------------------------------------------- -// -void CFMRadioActiveIdleEngine::HandlePropertyChangeErrorL( const TUid& /*aCategory*/, TUint /*aKey*/, TInt aError ) - { - if (aError < 0) - { - // If any error should pass to this method, handle it like 'application shutdown'. - // This situation will realize whenever the application is killed, by accident/by system/by an app crash - // or due to change to offline mode. - HandlePropertyChangeL(KFMRadioPSUid, KFMRadioPSDataApplicationRunning, EFMRadioPSApplicationClosing); - } - } - -// --------------------------------------------------------------------------- -// Returns the current radio volume. -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CFMRadioActiveIdleEngine::RadioVolume() const - { - //return iPropertyObserverArray[EFMRadioActiveIdleRadioVolumeObserver]->ValueInt(); - return 0; - } - -// --------------------------------------------------------------------------- -// Sets the radio volume. -// --------------------------------------------------------------------------- -// -EXPORT_C void CFMRadioActiveIdleEngine::AdjustRadioVolume( TFMRadioPSAdjustVolume aVolume ) const - { - RProperty::Set( KFMRadioPSUid, KFMRadioPSControlAdjustVolume, aVolume ); - } - - -// --------------------------------------------------------------------------- -// Returns the current tuning state. -// --------------------------------------------------------------------------- -// -EXPORT_C TFMRadioPSTuningState CFMRadioActiveIdleEngine::TuningState() const - { - return static_cast( iPropertyObserverArray[EFMRadioActiveIdleTuningStateObserver]->ValueInt() ); - } - -// --------------------------------------------------------------------------- -// Returns the current frequency. -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CFMRadioActiveIdleEngine::Frequency() const - { - return iPropertyObserverArray[EFMRadioActiveIdleFrequencyObserver]->ValueInt(); - } - -// --------------------------------------------------------------------------- -// Returns the currently active channel ID. -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CFMRadioActiveIdleEngine::Channel() const - { - return iPropertyObserverArray[EFMRadioActiveIdleChannelChangeObserver]->ValueInt(); - } - -// --------------------------------------------------------------------------- -// Returns the currently active channel name. -// --------------------------------------------------------------------------- -// -EXPORT_C const TDesC& CFMRadioActiveIdleEngine::ChannelName() const - { - return iPropertyObserverArray[EFMRadioPSDataChannelName]->ValueDes(); - } - -// --------------------------------------------------------------------------- -// Returns the current mute state. -// --------------------------------------------------------------------------- -// -EXPORT_C TFMRadioPSRadioMuteState CFMRadioActiveIdleEngine::MuteState() const - { - return static_cast( iPropertyObserverArray[EFMRadioActiveIdleMuteStateObserver]->ValueInt() ); - } - -// --------------------------------------------------------------------------- -// Sets the mute state. -// --------------------------------------------------------------------------- -// -EXPORT_C void CFMRadioActiveIdleEngine::SetMuteState( TFMRadioPSRadioMuteState aMuteState ) const - { - RProperty::Set( KFMRadioPSUid, KFMRadioPSControlSetRadioMuteState, aMuteState ); - } - -// --------------------------------------------------------------------------- -// Returns the current antenna connectivity status. -// --------------------------------------------------------------------------- -// -EXPORT_C TFMRadioPSHeadsetStatus CFMRadioActiveIdleEngine::AntennaStatus() const - { - return static_cast( iPropertyObserverArray[EFMRadioActiveIdleHeadsetStatusObserver]->ValueInt() ); - } - -// --------------------------------------------------------------------------- -// Returns the current frequency decimal count. -// --------------------------------------------------------------------------- -// -EXPORT_C TFMRadioPSFrequencyDecimalCount CFMRadioActiveIdleEngine::FrequencyDecimalCount() const - { - return static_cast( iPropertyObserverArray[EFMRadioActiveIdleDecimalCountObserver]->ValueInt() ); - } - -// --------------------------------------------------------------------------- -// Returns FM Radio application's running state. -// --------------------------------------------------------------------------- -// -EXPORT_C TFMRadioPSApplicationRunningState CFMRadioActiveIdleEngine::ApplicationRunningState() const - { - return static_cast( iPropertyObserverArray[EFMRadioActiveIdleApplicationObserver]->ValueInt() ); - } - -// --------------------------------------------------------------------------- -// Returns the radio's power state. -// --------------------------------------------------------------------------- -// -EXPORT_C TFMRadioPSRadioPowerState CFMRadioActiveIdleEngine::PowerState() const - { - return static_cast( iPropertyObserverArray[EFMRadioActiveIdlePowerStateObserver]->ValueInt() ); - } - -// --------------------------------------------------------------------------- -// Returns RDS Program Service information. -// --------------------------------------------------------------------------- -// - -EXPORT_C const TDesC& CFMRadioActiveIdleEngine::RDSProgramService() const - { - return iPropertyObserverArray[EFMRadioActiveIdleRDSProgramServiceObserver]->ValueDes(); - } - -// ================= OTHER EXPORTED FUNCTIONS ============== -