/*
* Copyright (c) 2001-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:
*
*/
#include <Mmf/Server/SoundDevice.h>
/*
*
* Default Constructor.
*
*
*/
CMMFDevSound::CMMFDevSound()
{
}
/*
* -doxygen comments moved to header-
*
* Destructor.
*
* Deletes all objects and releases all resource owned by this
* instance.
*
*/
EXPORT_C CMMFDevSound::~CMMFDevSound()
{
}
/*
* -doxygen comments moved to header-
*
* Constructs, and returns a pointer to, a new CMMFDevSound object.
*
* Leaves on failure.
*
*/
EXPORT_C CMMFDevSound* CMMFDevSound::NewL()
{
CMMFDevSound* self = new (ELeave) CMMFDevSound;
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop();
return self;
}
/*
* -doxygen comments moved to header-
*
* Second phase constructor.
*
*/
void CMMFDevSound::ConstructL()
{
}
/*
* -doxygen comments moved to header-
*
* Initializes CMMFDevSound object to play and record PCM16 raw audio data
* with sampling rate of 8 KHz.
*
* On completion of Initialization, calls InitializeComplete() on
* aDevSoundObserver.
*
* Leaves on failure.
*
* @param "aDevSoundObserver"
* A reference to DevSound Observer instance.
*
* @param "aMode"
* Mode for which this object will be used.
*
*/
EXPORT_C void CMMFDevSound::InitializeL(MDevSoundObserver& aDevSoundObserver, TMMFState aMode)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes DevSound object for the mode aMode for processing audio data
* with hardware device aHWDev.
*
* On completion of Initialization, the observer will be notified via call back
* InitializeComplete().
*
* Leaves on failure.
*
* @param "aDevSoundObserver"
* A reference to DevSound Observer instance.
*
* @param "aHWDev"
* CMMFHwDevice implementation identifier.
*
* @param "aMode"
* Mode for which this object will be used.
*
*/
EXPORT_C void CMMFDevSound::InitializeL(MDevSoundObserver& aDevSoundObserver, TUid aHWDev, TMMFState aMode)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes DevSound object for the mode aMode for processing audio data
* with hardware device supporting FourCC aDesiredFourCC.
*
* On completion of Initialization, the observer will be notified via call back
* InitializeComplete().
*
* Leaves on failure.
*
* @param "aDevSoundObserver"
* A reference to DevSound Observer instance.
*
* @param "aDesiredFourCC"
* CMMFHwDevice implementation FourCC.
*
* @param "aMode"
* Mode for which this object will be used.
*
*/
EXPORT_C void CMMFDevSound::InitializeL(MDevSoundObserver& aDevSoundObserver,
TFourCC aDesiredFourCC, TMMFState aMode)
{
}
/*
* -doxygen comments moved to header-
*
* Returns the supported Audio settings.
*
* @return "TMMFCapabilities"
* Device settings.
*
*/
EXPORT_C TMMFCapabilities CMMFDevSound::Capabilities()
{
return TMMFCapabilities();
}
/*
* -doxygen comments moved to header-
*
* Returns the current audio settings.
*
* @return "TMMFCapabilities"
* Device settings.
*
*/
EXPORT_C TMMFCapabilities CMMFDevSound::Config() const
{
return TMMFCapabilities();
}
/*
* -doxygen comments moved to header-
*
* Configure CMMFDevSound object for the settings in aConfig.
*
* Use this to set sampling rate, Encoding and Mono/Stereo.
*
* @param "aConfig"
* Attribute values to which CMMFDevSound object will be configured to.
*
*/
EXPORT_C void CMMFDevSound::SetConfigL(const TMMFCapabilities& aConfig)
{
}
/*
* -doxygen comments moved to header-
*
* Returns an integer representing the maximum volume.
*
* This is the maximum value which can be passed to CMMFDevSound::SetVolume.
*
* @return "TInt"
* The maximum volume. This value is platform dependent but is always
* greater than or equal to one.
*
*/
EXPORT_C TInt CMMFDevSound::MaxVolume()
{
return 100;
}
/*
* -doxygen comments moved to header-
*
* Returns an integer representing the current volume.
*
* @return "TInt"
* The current volume level.
*
*/
EXPORT_C TInt CMMFDevSound::Volume()
{
return 50;
}
/*
* -doxygen comments moved to header-
*
* Changes the current playback volume to a specified value.
*
* The volume can be changed before or during playback and is effective
* immediately.
*
* @param "aVolume"
* The volume setting. This can be any value from zero to the value
* returned by a call to CMMFDevSound::MaxVolume(). If the
* volume is not within this range, the volume is automatically set to
* minimum or maximum value based on the value that is being passed.
* Setting a zero value mutes the sound. Setting the maximum value
* results in the loudest possible sound.
*
*/
EXPORT_C void CMMFDevSound::SetVolume(TInt aVolume)
{
}
/*
* -doxygen comments moved to header-
*
* Returns an integer representing the maximum gain.
*
* This is the maximum value which can be passed to CMMFDevSound::SetGain.
*
* @return "TInt"
* The maximum gain. This value is platform dependent but is always
* greater than or equal to one.
*
*/
EXPORT_C TInt CMMFDevSound::MaxGain()
{
return 100;
}
/*
* -doxygen comments moved to header-
*
* Returns an integer representing the current gain.
*
* @return "TInt"
* The current gain level.
*
*/
EXPORT_C TInt CMMFDevSound::Gain()
{
return 50;
}
/*
* -doxygen comments moved to header-
*
* Changes the current recording gain to a specified value.
*
* The gain can be changed before or during recording and is effective
* immediately.
*
* @param "TInt aGain"
* The gain setting. This can be any value from zero to the value
* returned by a call to CMMFDevSound::MaxGain(). If the
* volume is not within this range, the gain is automatically set to
* minimum or maximum value based on the value that is being passed.
* Setting a zero value mutes the sound. Setting the maximum value
* results in the loudest possible sound.
*
*/
EXPORT_C void CMMFDevSound::SetGain(TInt aGain)
{
}
/*
* -doxygen comments moved to header-
*
* Returns the speaker balance set for playing.
*
* Leaves on failure.
*
* @param "aLeftPrecentage"
* On return contains the left speaker volume percentage.
*
* @param "aRightPercentage"
* On return contains the right speaker volume percentage.
*
*/
EXPORT_C void CMMFDevSound::GetPlayBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage)
{
aLeftPercentage = 50;
aRightPercentage = 50;
}
/*
* -doxygen comments moved to header-
*
* Sets the speaker balance for playing.
*
* The speaker balance can be changed before or during playback and is
* effective immediately.
*
* @param "aLeftPercentage"
* On return contains left speaker volume perecentage. This can be any
* value from zero to 100. Setting a zero value mutes the sound on left
* speaker.
*
* @param "aRightPercentage"
* On return contains right speaker volume perecentage. This can be any
* value from zero to 100. Setting a zero value mutes the sound on
* right speaker.
*
*/
EXPORT_C void CMMFDevSound::SetPlayBalanceL(TInt aLeftPercentage, TInt aRightPercentage)
{
}
/*
* -doxygen comments moved to header-
*
* Returns the microphone gain balance set for recording.
*
* Leaves on failure.
*
* @param "aLeftPercentage"
* On return contains the left microphone gain percentage.
*
* @param "aRightPercentage"
* On return contains the right microphone gain percentage.
*
*/
EXPORT_C void CMMFDevSound::GetRecordBalanceL(TInt& aLeftPercentage, TInt& aRightPercentage)
{
}
/*
* -doxygen comments moved to header-
*
* Sets the microphone gain balance for recording.
*
* The microphone gain balance can be changed before or during recording and
* is effective immediately.
*
* @param "aLeftPercentage"
* Left microphone gain precentage. This can be any value from zero to
* 100. Setting a zero value mutes the gain on left microphone.
*
* @param "aRightPercentage"
* Right microphone gain precentage. This can be any value from zero to
* 100. Setting a zero value mutes the gain on right microphone.
*
*/
EXPORT_C void CMMFDevSound::SetRecordBalanceL(TInt aLeftPercentage, TInt aRightPercentage)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start play process. This method queries and
* acquires the audio policy before initializing audio device. If there was an
* error during policy initialization, PlayError() method will be called on
* the observer with error code KErrAccessDenied, otherwise BufferToBeFilled()
* method will be called with a buffer reference. After reading data into the
* buffer reference passed, the client should call PlayData() to play data.
*
* The amount of data that can be played is specified in
* CMMFBuffer::RequestSize(). Any data that is read into buffer beyond this
* size will be ignored.
*
* Leaves on failure.
*
*/
EXPORT_C void CMMFDevSound::PlayInitL()
{
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start record process. This method queries and
* acquires the audio policy before initializing audio device. If there was an
* error during policy initialization, RecordError() method will be called on
* the observer with error code KErrAccessDenied, otherwise BufferToBeEmptied()
* method will be called with a buffer reference. This buffer contains recorded
* or encoded data. After processing data in the buffer reference passed, the
* client should call RecordData() to continue recording process.
*
* The amount of data that is available is specified in
* CMMFBuffer::RequestSize().
*
* Leaves on failure.
*
*/
EXPORT_C void CMMFDevSound::RecordInitL()
{
}
/*
* -doxygen comments moved to header-
*
* Plays data in the buffer at the current volume. The client should fill
* the buffer with audio data before calling this method. The Observer gets
* reference to buffer along with callback BufferToBeFilled(). When playing of
* the audio sample is complete, successfully or otherwise, the method
* PlayError() on observer is called.
*
*/
EXPORT_C void CMMFDevSound::PlayData()
{
}
/*
* -doxygen comments moved to header-
*
* Contine the process of recording. Once the buffer is filled with recorded
* data, the Observer gets reference to buffer along with callback
* BufferToBeEmptied(). After processing the buffer (copying over to a
* different buffer or writing to file) the client should call this
* method to continue recording process.
*
*/
EXPORT_C void CMMFDevSound::RecordData()
{
}
/*
* -doxygen comments moved to header-
*
* Stops the ongoing operation (Play, Record, TonePlay, Convert)
*
*/
EXPORT_C void CMMFDevSound::Stop()
{
}
/*
* -doxygen comments moved to header-
*
* Temporarily Stops the ongoing operation (Play, Record, TonePlay, Convert)
*
*/
EXPORT_C void CMMFDevSound::Pause()
{
}
/*
* -doxygen comments moved to header-
*
* Returns the sample recorded so far.
*
* @return "TInt"
* Returns the samples recorded.
*
*/
EXPORT_C TInt CMMFDevSound::SamplesRecorded()
{
return 10;
}
/*
* -doxygen comments moved to header-
*
* Returns the sample played so far.
*
* @return "TInt"
* Returns the samples recorded.
*
*/
EXPORT_C TInt CMMFDevSound::SamplesPlayed()
{
return 10;
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start playing tone. Tone is played with
* frequency and for duration specified.
*
* Leaves on failure.
*
* @param "aFrequency"
* Frequency at with the tone will be played.
*
* @param "aDuration"
* The period over which the tone will be played. A zero value causes
* the no tone to be played (Verify this with test app).
*
*/
EXPORT_C void CMMFDevSound::PlayToneL(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start playing a dual tone.
* The tone consists of two sine waves of different frequencies summed together
* Dual Tone is played with specified frequencies and for specified duration.
*
* @param "aFrequencyOne"
* First frequency of dual tone
*
* @param "aFrequencyTwo"
* Second frequency of dual tone
*
* @param "aDuration"
* The period over which the tone will be played. A zero value causes
* the no tone to be played (Verify this with test app).
*/
EXPORT_C void CMMFDevSound::PlayDualToneL(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start playing DTMF string aDTMFString.
*
* Leaves on failure.
*
* @param "aDTMFString"
* DTMF sequence in a descriptor.
*
*/
EXPORT_C void CMMFDevSound::PlayDTMFStringL(const TDesC& aDTMFString)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start playing tone sequence.
*
* Leaves on failure.
*
* @param "TDesC8& aData"
* Tone sequence in a descriptor.
*
*/
EXPORT_C void CMMFDevSound::PlayToneSequenceL(const TDesC8& aData)
{
}
/*
* -doxygen comments moved to header-
*
* Initializes audio device and start playing the specified pre-defined tone
* sequence.
*
* Leaves on failure.
*
* @param "aSequenceNumber"
* The index identifying the specific pre-defined tone sequence. Index
* values are relative to zero.
* This can be any value from zero to the value returned by a call to
* FixedSequenceCount() - 1.
* The function raises a panic if sequence number is not within this
* range.
* @see FixedSequenceCount()
*
*/
EXPORT_C void CMMFDevSound::PlayFixedSequenceL(TInt aSequenceNumber)
{
}
/*
* -doxygen comments moved to header-
*
* Defines the number of times the audio is to be repeated during the tone
* playback operation.
*
* A period of silence can follow each playing of tone. The tone playing can
* be repeated indefinitely.
*
* @param " aRepeatCount"
* The number of times the tone, together with the trailing silence,
* is to be repeated. If this is set to KMdaRepeatForever, then the
* tone, together with the trailing silence, is repeated indefinitely
* or until Stop() is called. If this is set to zero, then the tone is
* not repeated.
*
* Supported only during tone playing.
*
*/
EXPORT_C void CMMFDevSound::SetToneRepeats(TInt aRepeatCount,
const TTimeIntervalMicroSeconds& aRepeatTrailingSilence)
{
}
/*
* -doxygen comments moved to header-
*
* Defines the duration of tone on, tone off and tone pause to be used during the
* DTMF tone playback operation.
*
* Supported only during tone playing.
*
* @param "aToneOnLength"
* The period over which the tone will be played. If this is set to
* zero, then the tone is not played.
*
* @param "aToneOffLength"
* The period over which the no tone will be played.
*
* @param "aPauseLength"
* The period over which the tone playing will be paused.
*
*/
EXPORT_C void CMMFDevSound::SetDTMFLengths(TTimeIntervalMicroSeconds32& aToneOnLength,
TTimeIntervalMicroSeconds32& aToneOffLength,
TTimeIntervalMicroSeconds32& aPauseLength)
{
}
/*
* -doxygen comments moved to header-
*
* Defines the period over which the volume level is to rise smoothly from
* nothing to the normal volume level.
*
* @param "aRampDuration"
* The period over which the volume is to rise. A zero value causes
* the tone sample to be played at the normal level for the full
* duration of the playback. A value, which is longer than the duration
* of the tone sample, that the sample never reaches its normal
* volume level.
*
*
*/
EXPORT_C void CMMFDevSound::SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration)
{
}
/*
* -doxygen comments moved to header-
*
* Defines the priority settings that should be used for this instance.
*
* @param "aPrioritySettings"
* An class type representing the client's priority, priority
* preference and state.
*
*/
EXPORT_C void CMMFDevSound::SetPrioritySettings(const TMMFPrioritySettings& aPrioritySettings)
{
}
EXPORT_C TAny* CMMFDevSound::CustomInterface(TUid aInterface)
{
return NULL;
}
/*
* -doxygen comments moved to header-
*
* Returns the number of available pre-defined tone sequences.
*
* This is the number of fixed sequence supported by DevSound by default.
*
* @return "TInt"
* The fixed sequence count. This value is implementation dependent
* but is always greater than or equal to zero.
*
*/
EXPORT_C TInt CMMFDevSound::FixedSequenceCount()
{
return 0;
}
/*
* -doxygen comments moved to header-
*
* Returns the name assigned to a specific pre-defined tone sequence.
*
* This is the number of fixed sequence supported by DevSound by default.
*
* The function raises a panic if sequence number specified invalid.
*
* @return "TDesC&"
* A reference to a Descriptor containing the fixed sequence
* name indexed by aSequenceNumber.
*
* @param "aSequenceNumber"
* The index identifying the specific pre-defined tone sequence. Index
* values are relative to zero.
* This can be any value from zero to the value returned by a call to
* FixedSequenceCount() - 1.
* The function raises a panic if sequence number is not within this
* range.
*
* @see FixedSequenceCount()
*
*/
EXPORT_C const TDesC& CMMFDevSound::FixedSequenceName(TInt aSequenceNumber)
{
return KNullDesC;
}
/*
* -doxygen comments in header-
*/
EXPORT_C void CMMFDevSound::GetSupportedInputDataTypesL(RArray<TFourCC>& aSupportedDataTypes,const TMMFPrioritySettings& aPrioritySettings) const
{
}
/*
* -doxygen comments in header-
*/
EXPORT_C void CMMFDevSound::GetSupportedOutputDataTypesL(RArray<TFourCC>& aSupportedDataTypes, const TMMFPrioritySettings& aPrioritySettings) const
{
}