diff -r 7d48bed6ce0c -r 987c9837762f convergedcallengine/csplugin/inc/cspaudiostreams.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedcallengine/csplugin/inc/cspaudiostreams.h Wed Sep 01 12:15:03 2010 +0100 @@ -0,0 +1,244 @@ +/* +* Copyright (c) 2006 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: Starts and stops audio streams. +* +*/ + + +#ifndef CSPAUDIOSTREAMS_H +#define CSPAUDIOSTREAMS_H + + +#include +#include +#include "MTelephonyAudioRoutingObserver.h" +#include "mcspdevsoundobserver.h" +#include "mcsptimerobserver.h" + +class MCSPDevSoundFactory; +class CSPTimer; +class CSPMicrophone; +class CSPSpeaker; +class MCSPAudioStreamObserver; +class CSPTimer; + + +/** + * Starts and stops audio streams. + * If the activation fails then there is a retry timer which + * will try the activation later. + */ +NONSHARABLE_CLASS( CSPAudioStreams ) : + public CBase, + public MCSPDevSoundObserver, + public MCSPTimerObserver, + public MTelephonyAudioRoutingObserver + { + +public: + + /** + * Two-phased constructing. + */ + static CSPAudioStreams* NewL( ); + + /** + * Two-phased constructing. + */ + static CSPAudioStreams* NewLC( ); + + /** + * C++ default destructor. + */ + virtual ~CSPAudioStreams(); + + /** + * Starts audio streams ie inits mic and speaker. + */ + void StartStreams(); + + /** + * Stops audio streams ie shuts down mic and speaker. + */ + void StopStreams(); + + /** + * Sets volume for ear. + */ + void VolumeChangedEar( TInt aVolume ); + + /** + * Sets volume for loudspeaker. + */ + void VolumeChangedLoudspeaker( TInt aVolume ); + + /** + * Stores volume levels. + */ + void StoreVolumes(TInt aVolumeEar, TInt aVolumeLoudspeaker); + + /** + * Set unmuted. + */ + void SetUnmuted(); + + /** + * Set muted. + */ + void SetMuted(); + + /** + * Gives access to CSPMicrophone instance. Ownership not given. + * @return MCSPMic instance. + */ + CSPMicrophone& Mic() const; + + /** + * Gives access to CSPSpeaker instance. Ownership not given. + * @return MCSPSpeaker instance. + */ + CSPSpeaker& Speaker() const; + + /** + * Set observer for audio stream events. + * @param aObserver + */ + void SetAudioStreamObserver( MCSPAudioStreamObserver& aObserver ); + +// from base class MCSPDevSoundObserver + + /** + * From MCSPDevSoundObserver + * Notification that Mic has been activated successfully + */ + void MicActivatedSuccessfully(); + + /** + * From MCSPDevSoundObserver + * Notification that speaker has been activated successfully + */ + void SpeakerActivatedSuccessfully(); + + /** + * From MCSPDevSoundObserver + * Notification that Mic initialisation failed. + */ + void MicActivationFailed(); + + /** + * From MCSPDevSoundObserver + * Notification that Speaker activation failed. + */ + void SpeakerActivationFailed(); + +// from base class MCSPTimerObserver + + /** + * From MCSPTimerObserver. + * Notify from CSPTimer that timeout passed. + */ + void TimerEvent(); + +protected: // Functions from base classes + +// from base class MTelephonyAudioRoutingObserver + + /** + * @see MTelephonyAudioRoutingObserver. + */ + void AvailableOutputsChanged( CTelephonyAudioRouting& aTelephonyAudioRouting ); + + /** + * @see MTelephonyAudioRoutingObserver. + */ + void OutputChanged( CTelephonyAudioRouting& aTelephonyAudioRouting); + + /** + * @see MTelephonyAudioRoutingObserver. + */ + void SetOutputComplete( CTelephonyAudioRouting& aTelephonyAudioRouting, TInt aError); + +private: + + /** + * C++ default constructor. + */ + CSPAudioStreams( ); + + void ConstructL( ); + + static TInt TimerCallBack( TAny* aThisPtr ); + + void AudioStreamsStarted(); + + void StartTimer(); + + void StartMicAndSpeaker(); + + TBool IsMicAndSpeakerStarted(); + + void ApplyVolume(TInt aVolumeEar, TInt aVolumeLoudspeaker); + +private: // data + + /** + * Mic. + * own. + */ + CSPMicrophone* iMic; + + /** + * Speaker. + * Own. + */ + CSPSpeaker* iSpeaker; + + /** + * Timer for retrying the activation of streams (mic & speaker) if + * there was a failure in activation. + * Own. + */ + CSPTimer* iTimer; + + /** + * Timeout value used with timer. Timeout value doubles every retry to + * activate the streams. + */ + TInt iTimeout; + + /** + * Audio output for checking if loadspeaker or ear volume should be used. + * Own. + */ + CTelephonyAudioRouting* iAudioRouting; + + /** + * Observer for stream events. + * Not own. + */ + MCSPAudioStreamObserver* iStreamObserver; + + /** + * Ear volume. + */ + TInt iVolumeEar; + + /** + * Loudspeaker volume. + */ + TInt iVolumeLoudspeaker; + + }; + +#endif // CSPAUDIOSTREAMS_H