--- a/mmserv/tms/tmsserver/inc/tmsrtplayer.h Tue Aug 31 15:43:02 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,475 +0,0 @@
-/*
- * Copyright (c) 2010 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: Active object which implements ringing tone functionality
- *
- */
-
-#ifndef TMSRINGTONEPLAYER_H
-#define TMSRINGTONEPLAYER_H
-
-// INCLUDES
-#include <MProEngEngine.h>
-#include <MProEngProfile.h>
-#include "tmsrtaudiohdlrobsrv.h"
-#include "tmsrtplayerobsrv.h"
-#include "tmsrtaudiohdlr.h"
-#include "tmstimer.h"
-#include "tmsasyncreqao.h"
-#include "tmsrtparam.h"
-
-namespace TMS {
-
-// FORWARD DECLARATIONS
-class TMSRtAudioHdlr;
-class TMSTimer;
-class CMdaServer;
-class TMSRtContainer;
-class TMSRtParam;
-
-// CLASS DECLARATION
-
-/**
- * It implements ringing tone functionality.
- * Note that when issuing Play-command to audio side, ALWAYS set the tone type
- * before the Play() is called. This is to ensure that correct tone is tried to
- * be played.
- */
-class TMSRingTonePlayer : public CBase,
- public TMSRtAudioHdlrObsrv,
- public TMSTimerObserver,
- public TMSAsyncReqObsrv
- {
-public:
-
- /**
- * Two-phased constructor.
- * @return new instance.
- */
- static TMSRingTonePlayer* NewL(TMSRtPlayerObsrv& aObserver);
-
- /**
- * Destructor.
- */
- ~TMSRingTonePlayer();
-
- /**
- * Construct default tone player.
- */
- void CreateDefaultRtPlayerL();
-
- /**
- * Do construct tone.
- * @param aRtParam
- * @param aFile
- */
- void CreateRingTonePlayerL(const TRtPlayerType aPlayer,
- const TDesC& aFile = KNullDesC());
-
- /**
- * Construct audio player.
- */
- void CreateAudioPlayerL();
-
- /**
- * Construct sequence player.
- * @param aPlayer
- */
- void CreateSequencePlayerL(const TRtPlayerType aPlayer);
-
- /**
- * Construct custom sequence players.
- * @param aSequence
- */
- void CreateCustomSequencePlayerL(const TDesC8& aSequence);
-
- /**
- * Construct TTS player.
- * @param aTextToSay
- */
- void CreateTTSPlayerL(const TDesC& aTextToSay);
-
- /**
- * Delete TTS player.
- */
- void RemoveTTSPlayer();
-
- /**
- * Play ring tone
- */
- void PlayRingToneL();
-
- /**
- * Play audio ring tone
- */
- void PlayAudioRingToneL();
-
- /**
- * Playing the Beep once.
- */
- void BeepOnceL();
-
- /**
- * Play silent tone. No_sound.wav will be played.
- * If vibration alert is ON, phone will vibrate.
- */
- void PlaySilentToneL();
-
- /**
- * Play unsecure VoIP tone.
- * Play tone if secure call fails and call is changed to unsecure call
- */
- void PlayUnsecureVoIPToneL();
-
- /**
- * Play custom sequence tone.
- */
- void PlaySequenceToneL();
-
- /**
- * Stops playing the ringing tone.
- */
- void StopPlaying();
-
- /**
- * Continues video and audio RT playback with volume 0
- */
- void MuteRingTone();
-
- /**
- * Deinitialize Ringtone player.
- */
- void DeinitRingTonePlayer();
-
- /**
- * Play default tone.
- */
- void PlayDefaultToneL();
-
- /**
- * Play TTS tone along with audio RT. Only supported with Default and
- * custom sample tones. TTS does not start playing immediately.
- * This method does not command phone to play TTS immediately but after
- * pre-determined delay.
- */
- void PlayTtsTone();
-
- /**
- * Checks if extended security is required.
- * @return ETrue if extended security is required.
- */
- TBool ExtendedSecurity() const;
-
- /*
- * Return RT player type
- */
- TRtPlayerType PlayerType() const;
-
- /*
- * From TMSAsyncReqObsrv
- */
- virtual void HandleError(TInt aError);
- virtual void HandleAsyncReq();
-
-private:
-
- /**
- * Creates single beep tone player.
- */
- void CreateBeepOncePlayerL();
-
- /**
- * Creates silent tone player.
- */
- void CreateSilentPlayerL();
-
- /**
- * Creates unsecure voip tone player.
- */
- void CreateUnsecureVoipPlayerL();
-
- /**
- * Initializes ring tone configuration parameters.
- */
- void InitRtParams(TRtPlayerType aPlayerType);
-
- /*
- * from TMSRtAudioHdlrObsrv
- */
- void RtAudioHdlrEvent(TInt aEvent, TInt aError, TInt aPlayer);
-
- /**
- * Handle RT player error event.
- */
- void HandleRtAudioError(TInt aEvent, TInt aError, TInt aPlayer);
-
- /**
- * Handle RT player initialize complete event.
- */
- virtual void HandleRtAudioInitComplete(TInt aEvent, TInt aError,
- TInt aPlayer);
-
- /**
- * Handle RT play complete event.
- */
- virtual void HandleRtAudioPlayComplete(TInt aEvent, TInt aError,
- TInt aPlayer);
-
- /**
- * From TMSTimerObserver
- */
- virtual void TimerEvent();
-
- /**
- * Enumerates how many times TTS has played
- * ESaidOnce
- * ESaidTwice
- */
- enum TTtsStatus
- {
- ESaidOnce,
- ESaidTwice
- };
-
- /**
- * C++ default constructor.
- */
- TMSRingTonePlayer(TMSRtPlayerObsrv& aObserver);
-
- /**
- * Default Symbian OS constructor.
- */
- void ConstructL();
-
- /**
- * Play backup tone.
- */
- void PlayBackupToneL();
-
- /**
- * Handle audio player error.
- * @param aDelete ETrue if deletion of the player allowed.
- * @param aSync ETrue if synchronous deletion of players is allowed.
- */
- void DoHandlePlayerError(TBool aDelete, TBool aSync);
-
- /**
- * Convert ringing type from TProfileRingingType to local type.
- * @param aRingingType ringing type form PhoneAppEngine.
- * @return local ringing type mapping.
- */
- TMSRtAudioHdlr::TRingingType ConvertRingingType(
- TProfileRingingType aRingingType);
-
- /**
- * Construct default ring tone container
- */
- void CreateDefaultRingToneL();
-
- /**
- * Load ring tone settings from curent Profile
- */
- void LoadActiveProfileSettingsL();
-
- /**
- * Load ring tone settings from curent Profile
- */
- void LoadProfileRingToneL();
-
- /**
- * Sets TTS volume ramp and schedules next TTS playback
- */
- void ResumeTTS();
-
- /**
- * Construct backup tone player.
- */
- void CreateBkpRtPlayerL();
-
- /**
- * Delete all players.
- */
- void RemovePlayers();
-
- /**
- * Delete single player based on index.
- */
- void DeletePlayer();
-
- /**
- * Deletes player asynchronoysly.
- * @param aPlayer player to be deleted.
- */
- void DeletePlayerAsync(TRtPlayerType aPlayer);
-
- /**
- * Wrapper of DoHandleTtsDelayTimeout, that can be used as TCallback.
- * Immediately passes control to DoHandleTtsDelayTimeout method.
- * @param object Object to call DoHandleTtsDelayTimeout() on.
- * @return status.
- */
- static TInt HandleTtsDelayTimeout(TAny* object);
-
- /**
- * It is called after TTS delay elapsed. Starts playing TTS.
- */
- void DoHandleTtsDelayTimeout();
-
- /**
- * Returns currently active player which is used with TTS player.
- * @return pointer to active player.
- */
- TMSRtAudioHdlr* GetCurrentlyActiveAudioPlayerWithTTS();
-
- /**
- * Calculates new volume and ramptimes for Ascending TTS and normal TTS
- * ringing.
- * @param aStatus - TTS player status.
- */
- void SolveNewVolumeAndRamptime(TTtsStatus aStatus);
-
- /**
- * Restarts currently active ringingtone player.
- */
- void ReStartRingTonePlayer();
-
- /**
- * Checks if ring tone file size is within allowed limit. If size limit
- * is exceeded, default tone is played instead.
- * @param aRingingTone RT file to be checked.
- * @return EFalse if the limit was exceeded.
- * ETrue if tone file's size was valid.
- */
- TBool CheckAndHandleToneSizeLimit(TMSRtContainer* aRingingTone);
-
- /**
- * Checks if ring tone file size is larger than the allowed limit.
- * @param aFile File to check.
- * aSizeLimitKB the size limit in kB.
- * @return KErrNone if the file can be used as a ring tone.
- * KErrTooBig if the file size limit is exceeded.
- * Other error value if error happened during size checking.
- */
- TInt CheckToneFileSize(const TDesC& aFile, TInt aSizeLimitKB);
-
- /**
- * Reads from central repository the file size limit of following tones:
- * - contact's personal ringing tone
- * - voice call line1
- * - voice call line2
- * Value 0 means all sizes are allowed.
- * @param aSizeLimitKB the size limit in kB is read to this variable.
- * @return leaves on error.
- */
- void GetMaxToneFileSizeL(TInt& aSizeLimitKB) const;
-
- /**
- * Returns currently active audio player.
- * @return Currently active audio player or NULL if none is active.
- */
- TMSRtAudioHdlr* ActiveAudioPlayer();
-
-private:
-
- TMSRtAudioHdlr* iAudioPlayer;
- TMSRtAudioHdlr* iBeepOncePlayer;
- TMSRtAudioHdlr* iSilentPlayer;
- TMSRtAudioHdlr* iUnsecureVoIPTonePlayer;
- TMSRtAudioHdlr* iDefaultPlayer;
- TMSRtAudioHdlr* iSequencePlayer;
- TMSRtAudioHdlr* iTtsPlayer;
- TMSRtAudioHdlr* iBackupPlayer;
-
- // Indicate which tone is playing
- enum TTonePlayingStatus
- {
- EIdle,
- EAudioTonePlaying,
- EBeepOnce,
- ESilentTonePlaying,
- EUnsecureVoIPTonePlaying,
- EDefaultTonePlaying,
- EBackupTonePlaying,
- EVideoTonePlaying,
- ESilentVideoTonePlaying,
- ESequenceTonePlaying,
- EPersonalVideoTonePlaying
- };
-
- // Current playing status.
- TTonePlayingStatus iTonePlayingStatus;
-
- // True if TTS is currently playing. Different from iTonePlayingStatus,
- // because TTS is played in parallel with the other tone types.
- TBool iTtsTonePlaying;
-
- // Zero -based index of the TTS delay that is "executed" currently,
- // or to be "executed" after the current playing of the TTS tone.
- TInt iTtsDelayIndex;
-
- // True if TTS tone should be played when the next playing of the
- // default or personal tone is fired.
- TBool iTtsToneToBePlayed;
-
- // Audio/Video RT file container
- TMSRtContainer* iRtContainer;
-
- // Volume of the TTS
- TInt iTtsVolume;
-
- // RT player type
- TInt iRtType;
-
- //
- TMSRtPlayerObsrv& iRtObserver;
- TMSAsyncReqAO* iAsyncReqAO;
- TMSRtParam iRtParam;
-
- // 3 sec timer that fires up fallback logic.
- TMSTimer* iTimer;
-
- // Timer that tracks delays before playing TTS.
- TMSTimer* iTtsDelayTimer;
-
- // Number of times TTS tone should be played for the current ringtone.
- // If ringing tone is to be played just once, iTtsDelayCount == 1,
- // otherwise iTtsDelayCount == KTtsDelayCount.
- TInt iTtsDelaysCount;
-
- // Array of players to be deleted asynchronously.
- RPointerArray<TMSRtAudioHdlr> iAsyncDeletePlayers;
-
- // DRM extend security flag.
- TBool iExtSecNeeded;
-
- // Async delete request is active.
- TBool iAsyncReq;
-
- // Ringing Type of TTS Player.
- TProfileRingingType iTtsRingingType;
-
- // Counter for TTS timeouts.
- TInt iTTsTimeOutCounter;
-
- // Voice call RT file size max.
- TInt iToneFileSizeLimitKB;
-
- MProEngEngine* iEngine;
- MProEngProfile* iProfile;
- };
-
-} //namespace TMS
-
-#endif // TMSRINGTONEPLAYER_H
-
-// End of File