mmapitest/devsoundhaitest/src/T_CMMFDevSoundData.cpp
author hgs
Thu, 16 Sep 2010 18:39:58 +0100
changeset 57 1cbb0d5bf7f2
parent 26 c36d67f77f75
permissions -rw-r--r--
2010wk34_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     1
/*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     3
* All rights reserved.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     8
*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     9
* Initial Contributors:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    11
*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    12
* Contributors:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    13
*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    14
* Description: 
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    15
*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    16
*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    17
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    18
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    19
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    20
#include "t_cmmfdevsounddata.h"
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    21
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    22
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    23
//Constants for HwDevice
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    24
const TInt KHwDeviceDefaultDataLength = 9;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    25
const TInt KFourCCLength = 4;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    26
//Supported Input Data Types
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    27
const TInt KFourCCMaxBitDisplacement = 24;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    28
const TInt K8Bits = 8;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    29
const TInt KTFourCC = 4;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    30
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    31
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    32
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    33
//Command literals
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    34
_LIT(KCmdNewL,                         "NewL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    35
_LIT(KCmdNewLLoopL,                    "NewLLoopL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    36
_LIT(KCmdDestructor,                   "~");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    37
_LIT(KCmdCapabilities,                 "Capabilities");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    38
_LIT(KCmdConfig,                       "Config");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    39
_LIT(KCmdMaxGain,                      "MaxGain");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    40
_LIT(KCmdMaxVolume,                    "MaxVolume");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    41
_LIT(KCmdGetPlayBalanceL,              "GetPlayBalanceL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    42
_LIT(KCmdGetRecordBalanceL,            "GetRecordBalanceL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    43
_LIT(KCmdGetSupportedInputDataTypesL,  "GetSupportedInputDataTypesL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    44
_LIT(KCmdGetSupportedOutputDataTypesL, "GetSupportedOutputDataTypesL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    45
_LIT(KCmdSamplesPlayed,                "SamplesPlayed");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    46
_LIT(KCmdSamplesRecorded,              "SamplesRecorded");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    47
_LIT(KCmdVolume,                       "Volume");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    48
_LIT(KCmdGain,                         "Gain");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    49
_LIT(KCmdFixedSequenceCount,           "FixedSequenceCount");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    50
_LIT(KCmdFixedSequenceName,            "FixedSequenceName");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    51
_LIT(KCmdSetConfigL,                   "SetConfigL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    52
_LIT(KCmdSetDTMFLengths,               "SetDTMFLengths");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    53
_LIT(KCmdSetGain,                      "SetGain");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    54
_LIT(KCmdSetPlayBalanceL,              "SetPlayBalanceL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    55
_LIT(KCmdSetPrioritySettings,          "SetPrioritySettings");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    56
_LIT(KCmdSetRecordBalanceL,            "SetRecordBalanceL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    57
_LIT(KCmdSetToneRepeats,               "SetToneRepeats");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    58
_LIT(KCmdSetVolume,                    "SetVolume");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    59
_LIT(KCmdSetVolumeRamp,                "SetVolumeRamp");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    60
_LIT(KCmdInitializeL,                  "InitializeL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    61
_LIT(KCmdPlayDTMFStringL,              "PlayDTMFStringL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    62
_LIT(KCmdPlayData,                     "PlayData");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    63
_LIT(KCmdPlayDualToneL,                "PlayDualToneL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    64
_LIT(KCmdPlayInitL,                    "PlayInitL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    65
_LIT(KCmdPlayToneL,                    "PlayToneL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    66
_LIT(KCmdPlayToneSequenceL,            "PlayToneSequenceL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    67
_LIT(KCmdRecordData,                   "RecordData");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    68
_LIT(KCmdRecordInitL,                  "RecordInitL");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    69
_LIT(KCmdStop,                         "Stop");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    70
_LIT(KCmdErrorConceal,                 "ErrorConceal");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    71
_LIT(KCmdSetVolumeLoop,                "SetVolumeLoop");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    72
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    73
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    74
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    75
//Utility literals
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    76
_LIT(KCmdUtilityReplaceFile,                  "ReplaceFile");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    77
_LIT(KCmdUtilityOpenFile,                     "OpenFile");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    78
_LIT(KCmdUtilityCloseFile,                    "CloseFile");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    79
_LIT(KCmdUtilityFileStartPosition,            "FileStartPosition");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    80
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    81
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    82
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    83
//INI Section name literals
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    84
_LIT(KGainValue,                       "Gain");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    85
_LIT(KVolumeValue,                     "Volume");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    86
_LIT(KLeftPercentage,                  "LeftPercentage");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    87
_LIT(KRightPercentage,                 "RightPercentage");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    88
_LIT(KSequenceNumber,                  "SequenceNumber");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    89
_LIT(KRate,                            "Rate");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    90
_LIT(KEncoding,                        "Encoding");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    91
_LIT(KChannels,                        "Channels");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    92
_LIT(KBufferSize,                      "BufferSize");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    93
_LIT(KToneOnLength,                    "ToneOnLength");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    94
_LIT(KToneOffLength,                   "ToneOffLength");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    95
_LIT(KPause,                           "Pause");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    96
_LIT(KPauseLength,                     "PauseLength");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    97
_LIT(KPriority,                        "Priority");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    98
_LIT(KPreference,                      "Preference");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    99
_LIT(KPriorityState,                   "PriorityState");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   100
_LIT(KRepeatCount,                     "RepeatCount");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   101
_LIT(KRepeatTrailingSilence,           "RepeatTrailingSilence");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   102
_LIT(KRampDuration,                    "RampDuration");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   103
_LIT(KMode,                            "Mode");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   104
_LIT(KHwDevice,                        "HwDevice");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   105
_LIT(KFourCC,                          "FourCC");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   106
_LIT(KFilename,                        "Filename");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   107
_LIT(KDTMFString,                      "DTMFString");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   108
_LIT(KFrequency,                       "Frequency");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   109
_LIT(KFrequencyOne,                    "FrequencyOne");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   110
_LIT(KFrequencyTwo,                    "FrequencyTwo");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   111
_LIT(KDuration,                        "Duration");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   112
_LIT(KLoop,                            "Loop");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   113
_LIT(KAllowedError,                    "AllowedError");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   114
_LIT(KVolumeList,                      "VolumeList");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   115
_LIT(KVolumeLoop,                      "VolumeLoop");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   116
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   117
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   118
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   119
//Literals for iEnumChannels
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   120
_LIT(KEMMFStereo, "EMMFStereo");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   121
_LIT(KEMMFMono,   "EMMFMono");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   122
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   123
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   124
const CDataWrapperBase::TEnumEntryTable CT_CMMFDevSoundData::iEnumChannels[] =
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   125
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   126
	{KEMMFMono,   EMMFMono},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   127
	{KEMMFStereo, EMMFStereo}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   128
	};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   129
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   130
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   131
//Literals for iEnumSampleRate
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   132
_LIT(KEMMFSampleRate8000Hz,  "EMMFSampleRate8000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   133
_LIT(KEMMFSampleRate11025Hz, "EMMFSampleRate11025Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   134
_LIT(KEMMFSampleRate16000Hz, "EMMFSampleRate16000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   135
_LIT(KEMMFSampleRate22050Hz, "EMMFSampleRate22050Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   136
_LIT(KEMMFSampleRate32000Hz, "EMMFSampleRate32000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   137
_LIT(KEMMFSampleRate44100Hz, "EMMFSampleRate44100Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   138
_LIT(KEMMFSampleRate48000Hz, "EMMFSampleRate48000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   139
_LIT(KEMMFSampleRate88200Hz, "EMMFSampleRate88200Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   140
_LIT(KEMMFSampleRate96000Hz, "EMMFSampleRate96000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   141
_LIT(KEMMFSampleRate12000Hz, "EMMFSampleRate12000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   142
_LIT(KEMMFSampleRate24000Hz, "EMMFSampleRate24000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   143
_LIT(KEMMFSampleRate64000Hz, "EMMFSampleRate64000Hz");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   144
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   145
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   146
const CDataWrapperBase::TEnumEntryTable CT_CMMFDevSoundData::iEnumSampleRate[] =
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   147
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   148
	{KEMMFSampleRate8000Hz,  EMMFSampleRate8000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   149
	{KEMMFSampleRate11025Hz, EMMFSampleRate11025Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   150
	{KEMMFSampleRate16000Hz, EMMFSampleRate16000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   151
	{KEMMFSampleRate22050Hz, EMMFSampleRate22050Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   152
	{KEMMFSampleRate32000Hz, EMMFSampleRate32000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   153
	{KEMMFSampleRate44100Hz, EMMFSampleRate44100Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   154
	{KEMMFSampleRate48000Hz, EMMFSampleRate48000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   155
	{KEMMFSampleRate88200Hz, EMMFSampleRate88200Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   156
	{KEMMFSampleRate96000Hz, EMMFSampleRate96000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   157
	{KEMMFSampleRate12000Hz, EMMFSampleRate12000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   158
	{KEMMFSampleRate24000Hz, EMMFSampleRate24000Hz},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   159
	{KEMMFSampleRate64000Hz, EMMFSampleRate64000Hz}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   160
	};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   161
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   162
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   163
//Literal for iEnumMode
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   164
_LIT(KEMMFStateIdle,             "EMMFStateIdle");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   165
_LIT(KEMMFStatePlaying,          "EMMFStatePlaying");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   166
_LIT(KEMMFStateTonePlaying,      "EMMFStateTonePlaying");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   167
_LIT(KEMMFStateRecording,        "EMMFStateRecording");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   168
_LIT(KEMMFStatePlayingRecording, "EMMFStatePlayingRecording");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   169
_LIT(KEMMFStateConverting,       "EMMFStateConverting");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   170
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   171
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   172
const CDataWrapperBase::TEnumEntryTable CT_CMMFDevSoundData::iEnumMode[] =
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   173
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   174
	{KEMMFStateIdle,             EMMFStateIdle},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   175
	{KEMMFStatePlaying,          EMMFStatePlaying},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   176
	{KEMMFStateRecording,        EMMFStateRecording},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   177
	{KEMMFStateTonePlaying,      EMMFStateTonePlaying},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   178
	{KEMMFStatePlayingRecording, EMMFStatePlayingRecording},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   179
	{KEMMFStateConverting,       EMMFStateConverting}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   180
	};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   181
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   182
/*@{*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   183
//Literals for iEnumInitializeLType
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   184
_LIT(KEInitializeState,          "EInitializeState");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   185
_LIT(KEInitializeHwDeviceMode,   "EInitializeHwDeviceMode");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   186
_LIT(KEInitializeFourCCMode,     "EInitializeFourCCMode");
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   187
/*@}*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   188
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   189
enum TMMFInitializeMode
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   190
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   191
	EInitializeState,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   192
	EInitializeHwDeviceMode,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   193
	EInitializeFourCCMode
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   194
	};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   195
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   196
const CDataWrapperBase::TEnumEntryTable CT_CMMFDevSoundData::iEnumInitializeLType[] =
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   197
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   198
	{KEInitializeState,        EInitializeState},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   199
	{KEInitializeHwDeviceMode, EInitializeHwDeviceMode},
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   200
	{KEInitializeFourCCMode,   EInitializeFourCCMode}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   201
	};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   202
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   203
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   204
 * Two phase constructor
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   205
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   206
 * @leave   system wide error
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   207
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   208
CT_CMMFDevSoundData* CT_CMMFDevSoundData::NewL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   209
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   210
	CT_CMMFDevSoundData* ret = new (ELeave) CT_CMMFDevSoundData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   211
	CleanupStack::PushL(ret);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   212
	ret->ConstructL();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   213
	CleanupStack::Pop(ret);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   214
	return ret;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   215
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   216
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   217
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   218
 * Private constructor. First phase construction
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   219
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   220
CT_CMMFDevSoundData::CT_CMMFDevSoundData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   221
	:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   222
	iDevSound(NULL),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   223
	iPrioritySettings(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   224
	iCapabilities(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   225
	iVolumeValue(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   226
	iGainValue(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   227
	iLeftPercentage(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   228
	iRightPercentage(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   229
	iFs(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   230
	iToneFile(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   231
	iAudiofile(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   232
	iBuffer(NULL),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   233
	iLastSample(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   234
	iPaused(EFalse),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   235
	iErrorConceal(EFalse),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   236
	iEndFile(EFalse),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   237
	iToneSequence(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   238
	iRecordErrorIndex(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   239
	iPlayErrorIndex(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   240
	iToneErrorIndex(0),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   241
    iInitializeErrorIndex(0)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   242
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   243
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   244
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   245
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   246
 * Second phase construction
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   247
 * @internalComponent
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   248
 * @return  N/A
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   249
 * @pre     None
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   250
 * @post    None
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   251
 * @leave   system wide error
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   252
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   253
void CT_CMMFDevSoundData::ConstructL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   254
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   255
	iFs.Connect();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   256
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   257
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   258
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   259
 * Public destructor
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   260
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   261
CT_CMMFDevSoundData::~CT_CMMFDevSoundData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   262
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   263
	iFs.Close();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   264
	DestroyData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   265
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   266
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   267
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   268
 * Helper Destructor
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   269
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   270
void CT_CMMFDevSoundData::DestroyData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   271
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   272
	if(iDevSound)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   273
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   274
		delete iDevSound;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   275
		iDevSound = NULL;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   276
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   277
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   278
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   279
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   280
 * Return a pointer to the object that the data wraps
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   281
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   282
 * @return  pointer to the object that the data wraps
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   283
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   284
TAny* CT_CMMFDevSoundData::GetObject()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   285
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   286
	return iDevSound;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   287
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   288
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   289
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   290
 * Process a command read from the Ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   291
 * @param aCommand          - The command to process
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   292
 * @param aSection          - The section get from the *.ini file of the project T_Wlan
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   293
 * @param aAsyncErrorIndex  - Command index dor async calls to returns errors to
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   294
 * @return TBool            - ETrue if the command is process
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   295
 * @leave                   - system wide error
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   296
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   297
TBool CT_CMMFDevSoundData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   298
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   299
	TBool ret = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   300
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   301
	if (aCommand == KCmdNewL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   302
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   303
		DoCmdNewL();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   304
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   305
	else if(aCommand == KCmdNewLLoopL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   306
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   307
		DoCmdNewLLoopL(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   308
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   309
	else if (aCommand == KCmdDestructor)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   310
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   311
		DoCmdDestructor();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   312
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   313
	else if (aCommand == KCmdUtilityReplaceFile)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   314
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   315
		DoCmdUtilityReplaceFile(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   316
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   317
	else if (aCommand == KCmdUtilityOpenFile)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   318
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   319
		DoCmdUtilityOpenFile(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   320
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   321
	else if (aCommand == KCmdUtilityCloseFile)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   322
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   323
		DoCmdUtilityCloseFile();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   324
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   325
	else if (aCommand == KCmdUtilityFileStartPosition)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   326
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   327
		DoCmdUtilityFileStartPosition();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   328
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   329
	else if (aCommand == KCmdCapabilities)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   330
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   331
		DoCmdCapabilities();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   332
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   333
	else if (aCommand == KCmdConfig)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   334
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   335
		DoCmdConfig();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   336
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   337
	else if (aCommand == KCmdMaxGain)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   338
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   339
		DoCmdMaxGain(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   340
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   341
	else if (aCommand == KCmdMaxVolume)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   342
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   343
		DoCmdMaxVolume(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   344
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   345
	else if (aCommand == KCmdGetPlayBalanceL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   346
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   347
		DoCmdGetPlayBalanceL(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   348
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   349
	else if (aCommand == KCmdGetRecordBalanceL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   350
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   351
		DoCmdGetRecordBalanceL(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   352
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   353
	else if (aCommand == KCmdGetSupportedInputDataTypesL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   354
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   355
		DoCmdGetSupportedInputDataTypesL();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   356
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   357
	else if (aCommand == KCmdGetSupportedOutputDataTypesL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   358
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   359
		DoCmdGetSupportedOutputDataTypesL();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   360
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   361
	else if (aCommand == KCmdSamplesPlayed)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   362
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   363
		DoCmdSamplesPlayed();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   364
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   365
	else if (aCommand == KCmdSamplesRecorded)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   366
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   367
		DoCmdSamplesRecorded();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   368
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   369
	else if (aCommand == KCmdVolume)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   370
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   371
		DoCmdVolume(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   372
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   373
	else if (aCommand == KCmdGain)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   374
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   375
		DoCmdGain(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   376
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   377
	else if (aCommand == KCmdFixedSequenceCount)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   378
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   379
		DoCmdFixedSequenceCount();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   380
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   381
	else if (aCommand == KCmdFixedSequenceName)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   382
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   383
		DoCmdFixedSequenceName(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   384
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   385
	else if (aCommand == KCmdSetConfigL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   386
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   387
		DoCmdSetConfigL(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   388
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   389
	else if (aCommand == KCmdSetDTMFLengths)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   390
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   391
		DoCmdSetDTMFLengths(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   392
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   393
	else if (aCommand == KCmdSetGain)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   394
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   395
		DoCmdSetGain(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   396
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   397
	else if (aCommand == KCmdSetPlayBalanceL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   398
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   399
		DoCmdSetPlayBalanceL(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   400
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   401
	else if (aCommand == KCmdSetPrioritySettings)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   402
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   403
		DoCmdSetPrioritySettings(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   404
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   405
	else if (aCommand == KCmdSetRecordBalanceL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   406
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   407
		DoCmdSetRecordBalanceL(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   408
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   409
	else if (aCommand == KCmdSetToneRepeats)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   410
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   411
		DoCmdSetToneRepeats(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   412
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   413
	else if (aCommand == KCmdSetVolume)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   414
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   415
		DoCmdSetVolume(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   416
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   417
	else if (aCommand == KCmdSetVolumeLoop)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   418
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   419
		DoCmdSetVolumeLoop(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   420
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   421
	else if (aCommand == KCmdSetVolumeRamp)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   422
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   423
		DoCmdSetVolumeRamp(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   424
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   425
	else if (aCommand == KCmdInitializeL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   426
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   427
		DoCmdInitializeL(aSection,aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   428
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   429
	else if (aCommand == KCmdPlayDTMFStringL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   430
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   431
		DoCmdPlayDTMFStringL(aSection, aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   432
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   433
	else if (aCommand == KCmdPlayData)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   434
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   435
		DoCmdPlayData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   436
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   437
	else if (aCommand == KCmdPlayDualToneL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   438
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   439
		DoCmdPlayDualToneL(aSection, aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   440
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   441
	else if (aCommand == KCmdPlayInitL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   442
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   443
		DoCmdPlayInitL(aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   444
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   445
	else if (aCommand == KCmdPlayToneL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   446
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   447
		DoCmdPlayToneL(aSection, aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   448
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   449
	else if (aCommand == KCmdPlayToneSequenceL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   450
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   451
		DoCmdPlayToneSequenceL(aSection,aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   452
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   453
	else if (aCommand == KCmdRecordData)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   454
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   455
		DoCmdRecordData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   456
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   457
	else if (aCommand == KCmdRecordInitL)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   458
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   459
		DoCmdRecordInitL(aAsyncErrorIndex);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   460
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   461
	else if (aCommand == KCmdStop)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   462
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   463
		DoCmdStop(aSection);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   464
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   465
	else if(aCommand == KCmdErrorConceal)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   466
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   467
		DoCmdUtilityErrorConceal();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   468
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   469
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   470
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   471
		ERR_PRINTF1(_L("Unknown command."));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   472
		ret=EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   473
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   474
	return ret;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   475
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   476
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   477
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   478
 * Handles initialization completion event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   479
 * CMMFDevSound object calls this function when its InitializeL() function
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   480
 * completes.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   481
 * @param  aError - Error code. KErrNone if successful. Other values are possible
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   482
 *                  indicating a problem initializing CMMFDevSound object.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   483
 * @return void
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   484
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   485
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   486
void CT_CMMFDevSoundData::InitializeComplete(TInt aError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   487
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   488
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::InitializeComplete"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   489
	if(KErrNone != aError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   490
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   491
		ERR_PRINTF2(_L("InitializeComplete callback failed with error %d"), aError);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   492
		SetAsyncError(iInitializeErrorIndex, aError);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   493
        iInitializeErrorIndex = 0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   494
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   495
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   496
    DecOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   497
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   498
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::InitializeComplete"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   499
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   500
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   501
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   502
 * It's needed for playing o converting
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   503
 * @param aBuffer - Buffer into which data should be read. The amount of data that is
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   504
 *                  needed is specified in CMMFBuffer::RequestSize().
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   505
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   506
void CT_CMMFDevSoundData::BufferToBeFilled(CMMFBuffer* aBuffer)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   507
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   508
	if (!aBuffer)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   509
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   510
		ERR_PRINTF1(_L("BufferToBeFilled callback received a NULL CMMFBuffer!"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   511
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   512
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   513
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   514
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   515
		TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   516
		iBuffer = aBuffer;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   517
		iBuffer->SetLastBuffer(EFalse);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   518
		CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   519
		if (iPaused)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   520
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   521
			iPaused=EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   522
			TInt error = iAudiofile.Read(iLastSample,buffer->Data());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   523
			if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   524
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   525
				ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   526
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   527
				dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   528
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   529
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   530
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   531
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   532
			TInt error = iAudiofile.Read(buffer->Data());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   533
			if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   534
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   535
				ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   536
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   537
				dataOk =EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   538
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   539
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   540
		if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   541
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   542
			if (buffer->Data().Length() != buffer->RequestSize())
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   543
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   544
				iBuffer->SetLastBuffer(ETrue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   545
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   546
			if (iErrorConceal)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   547
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   548
				iErrorConceal=EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   549
				buffer->Data().Zero();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   550
				INFO_PRINTF1(_L("buffer->Data().Zero()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   551
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   552
			PlayData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   553
			TInt pos=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   554
			iLastSample=iAudiofile.Seek(ESeekCurrent ,pos);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   555
			INFO_PRINTF2(_L("Number of samples played so far: %d"), pos);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   556
			iLastSample=pos;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   557
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   558
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   559
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   560
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   561
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   562
* Handles play completion or cancel event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   563
*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   564
* CMMFDevSound object calls this function when an attempt to play audio sample
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   565
* has completed, successfully or otherwise.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   566
*
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   567
*   @param  aError - Error code. The status of playback. KErrUnderflow playing of the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   568
*                    audio sample is complete. KErrAccessDenied the sound device is in
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   569
*                    use by another higher priority client.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   570
*/
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   571
void CT_CMMFDevSoundData::PlayError(TInt aError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   572
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   573
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::PlayError"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   574
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   575
    DecOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   576
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   577
	if(aError != KErrNone && aError != KErrUnderflow)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   578
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   579
   	ERR_PRINTF2(_L("Playback completed with error %d"), aError);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   580
		SetAsyncError(iPlayErrorIndex, aError);	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   581
		iPlayErrorIndex = 0; 
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   582
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   583
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::PlayError"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   584
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   585
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   586
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   587
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   588
 *  Handles tone play completion event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   589
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   590
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   591
 *  CMMFDevSound object calls this function when an attempt to play tone has
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   592
 *  completed, successfully or otherwise.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   593
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   594
 *  The following are the play tone functions; PlayToneL(), PlayDMTFStringL(),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   595
 *  PlayToneSequenceL(), and PlayFixedSequenceL().
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   596
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   597
 *  @param  aError -  Error code. The status of tone playback. KErrUnderflow playing of
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   598
 *                    the tone is complete. KErrAccessDenied the sound device is in use by
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   599
 *                    another higher priority client. KErrCancel playing of the audio
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   600
 *                    sample is stopped by DevSound client another higher priority client.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   601
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   602
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   603
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   604
void CT_CMMFDevSoundData::ToneFinished(TInt aError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   605
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   606
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::ToneFinished"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   607
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   608
    DecOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   609
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   610
	if(aError != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   611
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   612
   	ERR_PRINTF2(_L("Tone finished with error %d"), aError);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   613
		SetAsyncError(iToneErrorIndex, aError);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   614
	  iToneErrorIndex = 0;	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   615
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   616
	iToneFile.Close();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   617
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::ToneFinished"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   618
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   619
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   620
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   621
 * Handles CMMFDevSound object's data request event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   622
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   623
 * CMMFDevSound object calls this function when the buffer, aBuffer gets filled
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   624
 * while recording or converting. The observer should notify CMMFDevSound
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   625
 * object as quickly as possible after data in the buffer is processed by
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   626
 * calling RecordData(), otherwise the implementation might callback
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   627
 * the function RecordError() on derived class object with error code KErrOverflow.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   628
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   629
 * @param  aBuffer - Buffer containing processed (recorded or converted) data. The amount
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   630
 *                   of data that is available is specified in CMMFBuffer::RequestSize().
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   631
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   632
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   633
void CT_CMMFDevSoundData::BufferToBeEmptied(CMMFBuffer* aBuffer)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   634
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   635
	if (!aBuffer)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   636
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   637
		INFO_PRINTF1(_L("BufferToBeEmptied callback received a NULL CMMFBuffer"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   638
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   639
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   640
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   641
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   642
		iBuffer = aBuffer;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   643
		CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   644
		TInt error = iAudiofile.Write(buffer->Data());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   645
		if(error == KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   646
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   647
			if (!aBuffer->LastBuffer())
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   648
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   649
				RecordData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   650
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   651
			else{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   652
				Stop();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   653
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   654
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   655
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   656
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   657
			ERR_PRINTF2(_L("iFile.Write() returned the error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   658
			SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   659
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   660
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   661
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   662
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   663
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   664
 * Stops the ongoing operation (Play, Record, TonePlay, Convert).
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   665
 * This function should be synchronous and invoke no callbacks through MDevSoundObserver.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   666
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   667
void CT_CMMFDevSoundData::Stop()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   668
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   669
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::Stop()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   670
	iDevSound->Stop();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   671
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   672
	DecOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   673
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   674
    INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::Stop()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   675
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   676
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   677
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   678
 * Handles record completion or cancel event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   679
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   680
 * CMMFDevSound object calls this function when an attempt to record audio sample
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   681
 * has completed, successfully or otherwise.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   682
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   683
 * @param  aError - Error code. The status of recording. KErrOverflow audio devices
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   684
 *                  runs out of internal buffer. KErrAccessDenied the sound device is
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   685
 *                  in use by another higher priority client.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   686
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   687
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   688
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   689
void CT_CMMFDevSoundData::RecordError(TInt aError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   690
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   691
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::RecordError"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   692
	if(aError != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   693
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   694
   ERR_PRINTF2(_L("Record failed with error %d"), aError); 
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   695
   SetAsyncError(iRecordErrorIndex , aError);	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   696
	 iRecordErrorIndex = 0;	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   697
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   698
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::RecordError"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   699
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   700
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   701
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   702
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   703
 * Handles conversion completion or cancel event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   704
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   705
 * CMMFDevSound object calls this function when an attempt to convert data from
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   706
 * source format to destination format has completed, successfully or otherwise.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   707
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   708
 * @param  aError - Error code. KErrCancel conversion operation is cancelled. KErrNone
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   709
 *                  conversion is complete. Other values are possible indicating a
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   710
 *                  problem converting data.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   711
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   712
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   713
void CT_CMMFDevSoundData::ConvertError(TInt aError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   714
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   715
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::ConvertError"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   716
	ERR_PRINTF1(_L("Invalid Callback call"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   717
	if (aError == KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   718
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   719
		INFO_PRINTF1(_L("Data conversion completed successfully."));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   720
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   721
	if (aError == KErrCancel)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   722
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   723
		INFO_PRINTF1(_L("Data conversion operation was cancelled."));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   724
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   725
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::ConvertError"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   726
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   727
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   728
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   729
 * Handles device event.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   730
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   731
 * CMMFDevSound object calls this function when a message is received from the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   732
 * audio hardware device.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   733
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   734
 * @param   aMessageType - Defines the type of message. Used to determine how to
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   735
 *                         interpret the contents of aMsg.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   736
 * @param   aMsg         - Message that is packed in the Descriptor format.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   737
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   738
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   739
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   740
void CT_CMMFDevSoundData::DeviceMessage(TUid aMessageType, const TDesC8& aMsg)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   741
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   742
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DeviceMessage"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   743
	INFO_PRINTF2(_L("Message type: %d"), aMessageType.iUid);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   744
	INFO_PRINTF2(_L("Message type: %S"), &aMsg);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   745
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DeviceMessage"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   746
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   747
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   748
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   749
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   750
 * Create a new or Replace the existing file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   751
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   752
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   753
void CT_CMMFDevSoundData::DoCmdUtilityReplaceFile(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   754
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   755
	INFO_PRINTF1(_L("*START* CT_CMMFDevSoundData::DoCmdUtilityReplaceFile()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   756
	TPtrC fileName;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   757
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   758
	if (!GetStringFromConfig(aSection, KFilename, fileName))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   759
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   760
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFilename);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   761
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   762
		dataOk =EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   763
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   764
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   765
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   766
		TInt error = iAudiofile.Replace(iFs, fileName, EFileRead);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   767
		if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   768
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   769
			ERR_PRINTF2(_L("Could not open input file. Error = %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   770
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   771
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   772
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   773
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   774
	INFO_PRINTF1(_L("*END* CT_CMMFDevSoundData::DoCmdUtilityReplaceFile()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   775
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   776
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   777
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   778
 * Open a file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   779
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   780
void CT_CMMFDevSoundData::DoCmdUtilityOpenFile(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   781
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   782
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   783
	INFO_PRINTF1(_L("*START* CT_CMMFDevSoundData::DoCmdUtilityOpenFile()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   784
	TPtrC fileName;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   785
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   786
	if (!GetStringFromConfig(aSection, KFilename, fileName))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   787
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   788
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFilename);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   789
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   790
		dataOk =EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   791
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   792
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   793
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   794
		TInt error = iAudiofile.Open(iFs, fileName, EFileRead);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   795
		if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   796
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   797
			ERR_PRINTF2(_L("Could not open input file. Error = %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   798
			iFs.Close();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   799
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   800
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   801
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   802
	INFO_PRINTF1(_L("*END* CT_CMMFDevSoundData::DoCmdUtilityOpenFile()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   803
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   804
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   805
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   806
 * Close the opened file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   807
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   808
void CT_CMMFDevSoundData::DoCmdUtilityCloseFile()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   809
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   810
	INFO_PRINTF1(_L("*START* CT_CMMFDevSoundData::DoCmdUtilityCloseFile()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   811
	iAudiofile.Close();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   812
	INFO_PRINTF1(_L("*END* CT_CMMFDevSoundData::DoCmdUtilityCloseFile()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   813
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   814
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   815
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   816
 * Place the the pointer file at the begining
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   817
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   818
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   819
void CT_CMMFDevSoundData::DoCmdUtilityFileStartPosition()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   820
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   821
	INFO_PRINTF1(_L("*START* CT_CMMFDevSoundData::DoCmdUtilityFileStartPosition()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   822
	TInt filePosition = 0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   823
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   824
	TInt error = iAudiofile.Seek(ESeekStart, filePosition);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   825
	if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   826
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   827
		ERR_PRINTF2(_L("Could not set file to the start position. Error = %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   828
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   829
		dataOk =EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   830
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   831
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   832
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   833
		INFO_PRINTF2(_L("File Position: %d"), filePosition);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   834
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   835
	INFO_PRINTF1(_L("*END* CT_CMMFDevSoundData::DoCmdUtilityFileStartPosition()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   836
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   837
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   838
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   839
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   840
 * Creates "n" instance of CMMFDevSound
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   841
 * @param aSection - Section to read from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   842
 * @return void
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   843
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   844
void CT_CMMFDevSoundData::DoCmdNewLLoopL(const TTEFSectionName&aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   845
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   846
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdNewLLoopL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   847
	CMMFDevSound* devSound = NULL;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   848
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   849
	TInt loop= 0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   850
	if (!GetIntFromConfig(aSection, KLoop, loop))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   851
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   852
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KLoop);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   853
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   854
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   855
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   856
	TInt allowedError=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   857
	if ( !GetIntFromConfig(aSection, KAllowedError, allowedError) )
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   858
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   859
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KAllowedError);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   860
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   861
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   862
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   863
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   864
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   865
		for(TInt i=0; i<loop; i++)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   866
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   867
			TRAPD(error,devSound = CMMFDevSound::NewL());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   868
			if(error == KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   869
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   870
				INFO_PRINTF2(_L("Instance %d of DevSound was created"),i);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   871
				CleanupStack::PushL(devSound);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   872
				iObjectsDevSound.AppendL(devSound);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   873
				CleanupStack::Pop(devSound);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   874
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   875
			else if(error == allowedError)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   876
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   877
				INFO_PRINTF2(_L(" Allowing Error: %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   878
				ERR_PRINTF2(_L(" Could not create CMMFDevSound due to error: %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   879
				i = loop;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   880
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   881
			else if((error != KErrNone) && (error!=allowedError))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   882
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   883
				ERR_PRINTF2(_L("> Could not create CMMFDevSound: %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   884
				SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   885
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   886
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   887
		iObjectsDevSound.ResetAndDestroy();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   888
		INFO_PRINTF2(_L("%d DevSound instances were deleted"),loop);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   889
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   890
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdNewLLoopL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   891
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   892
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   893
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   894
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   895
 * Create an instance of CMMFDevSound
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   896
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   897
void CT_CMMFDevSoundData::DoCmdNewL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   898
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   899
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdNewL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   900
	DestroyData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   901
	TRAPD(error,iDevSound = CMMFDevSound::NewL());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   902
	if(error!= KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   903
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   904
		ERR_PRINTF2(_L("> Could not create CMMFDevSound: %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   905
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   906
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   907
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   908
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   909
		iPaused= EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   910
		iErrorConceal = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   911
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   912
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdNewL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   913
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   914
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   915
 * Destroy an instance of CMMFDevSound
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   916
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   917
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   918
void CT_CMMFDevSoundData::DoCmdDestructor()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   919
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   920
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdDestroyData"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   921
	DestroyData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   922
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdDestroyData"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   923
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   924
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   925
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   926
 * Show the supported Audio settings ie. encoding, sample rates, mono/stereo operation, buffer
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   927
 * size, etc.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   928
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   929
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   930
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   931
void CT_CMMFDevSoundData::DoCmdCapabilities()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   932
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   933
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdCapabilities"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   934
	iCapabilities = iDevSound->Capabilities();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   935
	INFO_PRINTF5(_L("Supported Audio settings: buffsize=%d, channels=0x%x, encoding=0x%x and rate=0x%x"),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   936
							iCapabilities.iBufferSize,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   937
							iCapabilities.iChannels,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   938
							iCapabilities.iEncoding,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   939
							iCapabilities.iRate);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   940
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdCapabilities"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   941
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   942
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   943
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   944
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   945
 * Shows the current device configuration.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   946
 * @params none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   947
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   948
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   949
void CT_CMMFDevSoundData::DoCmdConfig()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   950
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   951
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdConfig"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   952
	TMMFCapabilities currentConfiguration = iDevSound->Config();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   953
	INFO_PRINTF5(_L("Current device configuration: buffsize=%d, channels=0x%x, encoding=0x%x and rate=0x%x"),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   954
			currentConfiguration.iBufferSize,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   955
			currentConfiguration.iChannels,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   956
			currentConfiguration.iEncoding,
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   957
			currentConfiguration.iRate);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   958
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdConfig"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   959
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   960
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   961
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   962
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   963
 * Shows an integer representing the maximum gain the device supports.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   964
 * This is the maximum value which can be passed to CMMFDevSound::SetGain.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   965
 * @param aSection - The section to read the params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   966
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   967
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   968
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   969
void CT_CMMFDevSoundData::DoCmdMaxGain(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   970
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   971
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdMaxGain"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   972
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   973
	TInt expectedGainValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   974
	if (!GetIntFromConfig(aSection, KGainValue, expectedGainValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   975
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   976
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KGainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   977
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   978
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   979
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   980
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   981
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   982
		iGainValue = iDevSound->MaxGain();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   983
		INFO_PRINTF2(_L("Retrieved maximum gain value: %d"), iGainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   984
		if (expectedGainValue != iGainValue)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   985
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   986
			ERR_PRINTF3(_L("Expected gain value %d is different from retrieved gain value %d"), expectedGainValue, iGainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   987
			SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   988
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   989
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   990
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdMaxGain"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   991
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   992
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   993
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   994
 * Shows an integer representing the maximum volume device supports.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   995
 * This is the maximum value which can be passed to CMMFDevSound::SetVolume.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   996
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   997
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   998
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   999
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1000
void CT_CMMFDevSoundData::DoCmdMaxVolume(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1001
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1002
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdMaxVolume"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1003
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1004
	TInt expectedVolumeValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1005
	if(!GetIntFromConfig(aSection, KVolumeValue, expectedVolumeValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1006
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1007
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KVolumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1008
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1009
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1010
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1011
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1012
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1013
		iVolumeValue = iDevSound->MaxVolume();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1014
		INFO_PRINTF2(_L("Retrieved maximum volume value: %d"), iVolumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1015
		if(expectedVolumeValue != iVolumeValue)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1016
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1017
			ERR_PRINTF3(_L("Expected volume value %d is different from retrieved volume value %d"), expectedVolumeValue, iVolumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1018
			SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1019
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1020
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1021
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdMaxVolume"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1022
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1023
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1024
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1025
 * Shows the speaker balance set for playing.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1026
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1027
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1028
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1029
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1030
void CT_CMMFDevSoundData::DoCmdGetPlayBalanceL(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1031
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1032
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdGetPlayBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1033
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1034
	TInt expectedLeftPercentage=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1035
	if (!GetIntFromConfig(aSection, KLeftPercentage, expectedLeftPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1036
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1037
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KLeftPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1038
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1039
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1040
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1041
	TInt expectedRightPercentage=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1042
	if (!GetIntFromConfig(aSection, KRightPercentage, expectedRightPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1043
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1044
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KRightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1045
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1046
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1047
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1048
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1049
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1050
		TRAPD(error, iDevSound->GetPlayBalanceL(iLeftPercentage, iRightPercentage));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1051
		if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1052
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1053
			ERR_PRINTF2(_L("GetPlayBalanceL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1054
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1055
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1056
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1057
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1058
			INFO_PRINTF3(_L("> Retrieved play balance values are left: %d, right:%d"), iLeftPercentage, iRightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1059
			if (expectedLeftPercentage !=iLeftPercentage)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1060
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1061
				ERR_PRINTF3(_L("Expected left percentage value %d is different from retrieved value %d"), expectedLeftPercentage, iLeftPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1062
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1063
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1064
			if (expectedRightPercentage !=iRightPercentage)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1065
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1066
				ERR_PRINTF3(_L("Expected right percentage value %d is different from retrieved value %d"), expectedRightPercentage, iRightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1067
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1068
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1069
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1070
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1071
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1072
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdGetPlayBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1073
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1074
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1075
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1076
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1077
 * Shows the microphone gain balance set for recording.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1078
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1079
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1080
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1081
void CT_CMMFDevSoundData::DoCmdGetRecordBalanceL(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1082
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1083
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdGetRecordBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1084
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1085
	TInt expectedLeftPercentage=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1086
	if(!GetIntFromConfig(aSection, KLeftPercentage, expectedLeftPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1087
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1088
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KLeftPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1089
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1090
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1091
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1092
	TInt expectedRightPercentage=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1093
	if(!GetIntFromConfig(aSection, KRightPercentage, expectedRightPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1094
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1095
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KRightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1096
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1097
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1098
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1099
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1100
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1101
		TRAPD(error, iDevSound->GetRecordBalanceL(iLeftPercentage, iRightPercentage));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1102
		if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1103
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1104
			ERR_PRINTF2(_L("GetRecordBalanceL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1105
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1106
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1107
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1108
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1109
			INFO_PRINTF3(_L("> Retrieved record balance values are left: %d, right:%d"), iLeftPercentage, iRightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1110
			if(expectedLeftPercentage !=iLeftPercentage)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1111
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1112
				ERR_PRINTF3(_L("Expected left percentage value %d is different from retrieved value %d"), expectedLeftPercentage, iLeftPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1113
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1114
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1115
			if(expectedRightPercentage !=iRightPercentage)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1116
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1117
				ERR_PRINTF3(_L("Expected right ercentage value %d is different from retrieved value %d"), expectedRightPercentage, iRightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1118
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1119
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1120
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1121
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1122
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1123
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdGetRecordBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1124
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1125
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1126
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1127
 * Shows a list of the supported input datatypes that can be sent to DevSound for playing audio.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1128
 * The datatypes returned are those that the DevSound supports given the priority settings passed
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1129
 * in aPrioritySettings.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1130
 * @params none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1131
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1132
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1133
void CT_CMMFDevSoundData::DoCmdGetSupportedInputDataTypesL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1134
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1135
	TUid outputUid= {0x0};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1136
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdGetSupportedInputDataTypesL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1137
	RArray< TFourCC > supportedDataTypes;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1138
	TRAPD(error, iDevSound->GetSupportedInputDataTypesL(supportedDataTypes, iPrioritySettings));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1139
	if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1140
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1141
		ERR_PRINTF2(_L("GetSupportedInputDataTypesL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1142
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1143
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1144
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1145
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1146
		INFO_PRINTF1(_L("List of the supported input datatypes that can be sent to DevSound for playing audio."));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1147
		for (TInt i=0; i<supportedDataTypes.Count(); i++)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1148
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1149
			TFourCC fourCC = supportedDataTypes[i];
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1150
			TBuf<4> name;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1151
			for(TInt j=0; j<= KFourCCMaxBitDisplacement; j+=K8Bits)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1152
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1153
				name.Append((TUint8)(fourCC.FourCC() >> j));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1154
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1155
			INFO_PRINTF3(_L("Supported Input Data types: 0x%x  %S "), fourCC.FourCC(), &name);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1156
			UtilityFourCCToHwDeviceUidL(name,EDecoder, outputUid);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1157
			if(outputUid.iUid != 0)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1158
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1159
				INFO_PRINTF3(_L("\nHwDevice Uid=0x%08x for %S"),outputUid.iUid,&name);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1160
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1161
			else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1162
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1163
				INFO_PRINTF1(_L("Not Found"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1164
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1165
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1166
		supportedDataTypes.Reset();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1167
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1168
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdGetSupportedInputDataTypesL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1169
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1170
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1171
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1172
 * Shows a list of the supported output dataypes that can be received from DevSound for
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1173
 * recording audio.  The datatypes returned are those that the DevSound supports given the priority
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1174
 * settings passed in aPrioritySettings.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1175
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1176
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1177
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1178
void CT_CMMFDevSoundData::DoCmdGetSupportedOutputDataTypesL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1179
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1180
	TUid outputUid= {0x0};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1181
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdGetSupportedOutputDataTypesL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1182
	RArray< TFourCC > supportedDataTypes;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1183
	TRAPD(error, iDevSound->GetSupportedOutputDataTypesL(supportedDataTypes, iPrioritySettings));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1184
	if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1185
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1186
		ERR_PRINTF2(_L("GetSupportedOutputDataTypesL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1187
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1188
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1189
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1190
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1191
		INFO_PRINTF1(_L("List of the supported output dataypes that can be received from DevSound for recording audio."));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1192
		for (TInt i=0; i<supportedDataTypes.Count(); i++)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1193
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1194
			TFourCC fourCC = supportedDataTypes[i];
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1195
			TBuf<4> name;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1196
			for(TInt j=0; j<=KFourCCMaxBitDisplacement; j+=K8Bits)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1197
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1198
				name.Append((TUint8)(fourCC.FourCC() >> j));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1199
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1200
			INFO_PRINTF3(_L("Supported Output Data types: 0x%x  %S "), fourCC.FourCC(), &name);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1201
			UtilityFourCCToHwDeviceUidL(name, EEncoder, outputUid);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1202
			if(outputUid.iUid != 0)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1203
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1204
				INFO_PRINTF3(_L("\nHwDevice Uid=0x%08x for %S"),outputUid.iUid,&name);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1205
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1206
			else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1207
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1208
				INFO_PRINTF1(_L("Not Found"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1209
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1210
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1211
		supportedDataTypes.Reset();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1212
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1213
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdGetSupportedOutputDataTypesL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1214
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1215
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1216
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1217
 * Shows the number of samples played
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1218
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1219
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1220
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1221
void CT_CMMFDevSoundData::DoCmdSamplesPlayed()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1222
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1223
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSamplesPlayed"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1224
	INFO_PRINTF2(_L("Number of samples played so far: %d"),iDevSound->SamplesPlayed());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1225
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSamplesPlayed"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1226
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1227
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1228
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1229
 * Shows the number of samples recorded
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1230
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1231
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1232
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1233
void CT_CMMFDevSoundData::DoCmdSamplesRecorded()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1234
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1235
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSamplesRecorded"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1236
	INFO_PRINTF2(_L("Number of samples recorded so far: %d"), iDevSound->SamplesRecorded());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1237
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSamplesRecorded"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1238
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1239
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1240
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1241
 * Shows an integer representing the current volume.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1242
 * @param aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1243
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1244
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1245
void CT_CMMFDevSoundData::DoCmdVolume(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1246
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1247
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdVolume"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1248
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1249
	TInt expectedVolumeValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1250
	if(!GetIntFromConfig(aSection, KVolumeValue, expectedVolumeValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1251
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1252
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KVolumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1253
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1254
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1255
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1256
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1257
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1258
		iVolumeValue = iDevSound->Volume();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1259
		INFO_PRINTF2(_L("Retrieved volume value: %d"), iVolumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1260
		if(expectedVolumeValue != iVolumeValue)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1261
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1262
			ERR_PRINTF3(_L("Expected volume value %d is different from retrieved volume value %d"), expectedVolumeValue, iVolumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1263
			SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1264
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1265
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1266
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdVolume"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1267
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1268
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1269
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1270
 * Shows an integer representing the current gain.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1271
 * @param aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1272
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1273
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1274
void CT_CMMFDevSoundData::DoCmdGain(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1275
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1276
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdGain"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1277
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1278
	TInt expectedGainValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1279
	if(!GetIntFromConfig(aSection, KGainValue, expectedGainValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1280
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1281
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KGainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1282
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1283
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1284
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1285
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1286
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1287
		iGainValue = iDevSound->Gain();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1288
		INFO_PRINTF2(_L("Retrieved gain value: %d"), iGainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1289
		if(expectedGainValue != iGainValue)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1290
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1291
			ERR_PRINTF3(_L("Expected gain value %d is different from retrieved gain value %d"), expectedGainValue, iGainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1292
			SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1293
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1294
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1295
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdGain"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1296
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1297
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1298
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1299
 * Shows the number of available pre-defined tone sequences
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1300
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1301
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1302
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1303
void CT_CMMFDevSoundData::DoCmdFixedSequenceCount()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1304
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1305
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdFixedSequenceCount"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1306
	INFO_PRINTF2(_L("Number of available pre-defined tone sequences: %d"), iDevSound->FixedSequenceCount());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1307
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdFixedSequenceCount"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1308
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1309
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1310
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1311
 * Shows the name assigned to a specific pre-defined tone sequence.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1312
 * This is the number of the fixed sequence supported by DevSound by default.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1313
 * @param aSection -  Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1314
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1315
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1316
void CT_CMMFDevSoundData::DoCmdFixedSequenceName(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1317
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1318
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdFixedSequenceName"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1319
	TBool dataOk =ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1320
	TInt sequenceNumber=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1321
	if(!GetIntFromConfig(aSection, KSequenceNumber, sequenceNumber))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1322
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1323
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KSequenceNumber);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1324
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1325
		dataOk =EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1326
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1327
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1328
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1329
		INFO_PRINTF2(_L("Name assigned to a specific pre-defined tone sequence returned: %S"),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1330
					&iDevSound->FixedSequenceName(sequenceNumber));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1331
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1332
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdFixedSequenceName"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1333
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1334
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1335
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1336
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1337
 * Configure CMMFDevSound object with the settings in aConfig.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1338
 * Use this to set sampling rate, encoding and mono/stereo.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1339
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1340
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1341
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1342
void CT_CMMFDevSoundData::DoCmdSetConfigL(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1343
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1344
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetConfigL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1345
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1346
	TInt rate=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1347
	INFO_PRINTF1(_L("To use default values run Capabilities before SetConfigL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1348
	if (!GetEnumFromConfig(aSection, KRate, iEnumSampleRate, rate))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1349
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1350
		INFO_PRINTF2(_L("Rate value was not overwritten, using default value %d."), iCapabilities.iRate);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1351
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1352
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1353
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1354
		iCapabilities.iRate = rate;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1355
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1356
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1357
	TInt encoding=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1358
	if (!GetIntFromConfig(aSection, KEncoding, encoding))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1359
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1360
		INFO_PRINTF2(_L("Encoding value was not overwritten, using default value %d."), iCapabilities.iEncoding);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1361
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1362
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1363
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1364
		iCapabilities.iEncoding = encoding;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1365
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1366
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1367
	TInt channels=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1368
	if (!GetEnumFromConfig(aSection, KChannels, iEnumChannels, channels))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1369
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1370
		INFO_PRINTF2(_L("Channels value was not overwritten, using default value %d ."), iCapabilities.iChannels);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1371
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1372
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1373
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1374
		iCapabilities.iChannels = channels;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1375
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1376
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1377
	TInt bufferSize=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1378
	if (!GetIntFromConfig(aSection, KBufferSize, bufferSize))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1379
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1380
		INFO_PRINTF2(_L("BufferSize value was not overwritten, using default value %d"), iCapabilities.iBufferSize);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1381
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1382
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1383
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1384
		iCapabilities.iBufferSize = bufferSize;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1385
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1386
	TRAPD(error,iDevSound->SetConfigL(iCapabilities))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1387
	if(error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1388
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1389
		ERR_PRINTF2(_L("SetConfigL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1390
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1391
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1392
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetConfigL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1393
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1394
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1395
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1396
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1397
 * Defines the duration of tone on, tone off and tone pause to be used during the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1398
 * DTMF tone playback operation.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1399
 * Supported only during tone playing.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1400
 * @param aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1401
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1402
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1403
void CT_CMMFDevSoundData::DoCmdSetDTMFLengths(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1404
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1405
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetDTMFLengths"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1406
	TInt time=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1407
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1408
	if (!GetIntFromConfig(aSection, KToneOnLength, time))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1409
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1410
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KToneOnLength);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1411
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1412
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1413
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1414
	TTimeIntervalMicroSeconds32 toneOnLength(time);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1415
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1416
	if (!GetIntFromConfig(aSection, KToneOffLength, time))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1417
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1418
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KToneOffLength);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1419
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1420
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1421
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1422
	TTimeIntervalMicroSeconds32 toneOffLength(time);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1423
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1424
	if (!GetIntFromConfig(aSection, KPauseLength, time))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1425
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1426
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KPauseLength);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1427
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1428
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1429
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1430
	TTimeIntervalMicroSeconds32 pauseLength(time);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1431
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1432
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1433
		iDevSound->SetDTMFLengths(toneOnLength, toneOffLength, pauseLength);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1434
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1435
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetDTMFLengths"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1436
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1437
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1438
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1439
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1440
 * Changes the current recording gain to a specified value.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1441
 * The gain can be changed before or during recording and is effective
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1442
 * immediately.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1443
 * @params aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1444
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1445
void CT_CMMFDevSoundData::DoCmdSetGain(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1446
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1447
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetGain"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1448
	TInt gainValue = iGainValue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1449
	if(!GetIntFromConfig(aSection, KGainValue, gainValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1450
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1451
		INFO_PRINTF1(_L("The Gain value was not found in the ini file, using default value"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1452
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1453
	INFO_PRINTF2(_L("Setting gain value to %d"), gainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1454
	iDevSound->SetGain(gainValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1455
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetGain"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1456
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1457
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1458
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1459
 * Sets the speaker balance for playing.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1460
 * The speaker balance can be changed before or during playback and is
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1461
 * effective immediately.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1462
 * @param aSection - The section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1463
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1464
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1465
void CT_CMMFDevSoundData::DoCmdSetPlayBalanceL(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1466
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1467
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetPlayBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1468
	TInt leftPercentage = iLeftPercentage;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1469
	if(!GetIntFromConfig(aSection, KLeftPercentage, leftPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1470
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1471
		INFO_PRINTF1(_L("The Left percentage was not found in the ini file, using default value"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1472
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1473
	TInt rightPercentage = iRightPercentage;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1474
	if(!GetIntFromConfig(aSection, KRightPercentage, rightPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1475
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1476
		INFO_PRINTF1(_L("The Right percentage was not found in the ini file, using default value"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1477
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1478
	INFO_PRINTF3(_L("Setting play balance to left: %d, right: %d values"), leftPercentage, rightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1479
	TRAPD(error, iDevSound->SetPlayBalanceL(leftPercentage, rightPercentage));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1480
	if(error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1481
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1482
		ERR_PRINTF2(_L("SetPlayBalanceL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1483
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1484
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1485
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetPlayBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1486
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1487
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1488
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1489
 * Defines the priority settings that should be used for this instance.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1490
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1491
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1492
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1493
void CT_CMMFDevSoundData::DoCmdSetPrioritySettings(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1494
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1495
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetPrioritySettings"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1496
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1497
	if(!GetIntFromConfig(aSection, KPriority, iPrioritySettings.iPriority))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1498
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1499
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KPriority);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1500
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1501
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1502
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1503
	TInt preference=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1504
	if (!GetHexFromConfig(aSection, KPreference, preference))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1505
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1506
		ERR_PRINTF2(_L("%S parameter was not found in INI file"), &KPreference);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1507
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1508
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1509
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1510
	iPrioritySettings.iPref = (TMdaPriorityPreference)preference;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1511
	TInt state=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1512
	if (!GetEnumFromConfig(aSection, KPriorityState, iEnumMode, state))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1513
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1514
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KPriorityState);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1515
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1516
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1517
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1518
	iPrioritySettings.iState = (TMMFState)state;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1519
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1520
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1521
		iDevSound->SetPrioritySettings(iPrioritySettings);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1522
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1523
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetPrioritySettings"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1524
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1525
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1526
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1527
 * Sets the microphone gain balance for recording.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1528
 * The microphone gain balance can be changed before or during recording and
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1529
 * is effective immediately.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1530
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1531
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1532
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1533
void CT_CMMFDevSoundData::DoCmdSetRecordBalanceL(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1534
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1535
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetRecordBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1536
	TInt leftPercentage = iLeftPercentage;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1537
	if (!GetIntFromConfig(aSection, KLeftPercentage, leftPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1538
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1539
		INFO_PRINTF1(_L("The Left value was not found in the ini file, using default value"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1540
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1541
	TInt rightPercentage = iRightPercentage;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1542
	if (!GetIntFromConfig(aSection, KRightPercentage, rightPercentage))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1543
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1544
		INFO_PRINTF1(_L("The Right value was not found in the ini file, using default value"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1545
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1546
	INFO_PRINTF3(_L("Setting record balance to left: %d, right: %d values"), leftPercentage, rightPercentage);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1547
	TRAPD(error, iDevSound->SetRecordBalanceL(leftPercentage, rightPercentage));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1548
	if (KErrNone != error)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1549
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1550
		ERR_PRINTF2(_L("SetRecordBalanceL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1551
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1552
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1553
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetRecordBalanceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1554
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1555
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1556
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1557
 * Defines the number of times the audio is to be repeated during the tone
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1558
 * playback operation.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1559
 * A period of silence can follow each playing of a tone. The tone playing can
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1560
 * be repeated indefinitely.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1561
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1562
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1563
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1564
void CT_CMMFDevSoundData::DoCmdSetToneRepeats(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1565
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1566
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetToneRepeats"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1567
	TInt repeatCount=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1568
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1569
	if (!GetIntFromConfig(aSection, KRepeatCount, repeatCount))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1570
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1571
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KRepeatCount);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1572
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1573
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1574
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1575
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1576
	TInt tempValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1577
	if (!GetIntFromConfig(aSection, KRepeatTrailingSilence, tempValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1578
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1579
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KRepeatTrailingSilence);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1580
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1581
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1582
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1583
	TTimeIntervalMicroSeconds repeatTrailingSilence(tempValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1584
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1585
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1586
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1587
		iDevSound->SetToneRepeats(repeatCount, repeatTrailingSilence);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1588
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1589
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetToneRepeats"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1590
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1591
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1592
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1593
 * Defines the period over which the volume level is to rise smoothly from
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1594
 * nothing to the normal volume level.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1595
 * The function is only available while the tone is playing.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1596
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1597
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1598
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1599
void CT_CMMFDevSoundData::DoCmdSetVolume(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1600
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1601
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetVolume"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1602
	TInt volume = iVolumeValue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1603
	if(!GetIntFromConfig(aSection, KVolumeValue, volume))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1604
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1605
		INFO_PRINTF1(_L("The Volume value was not found in the ini file, using default value"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1606
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1607
	INFO_PRINTF2(_L("Setting volume value to %d"), volume);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1608
	iDevSound->SetVolume(volume);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1609
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetVolume"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1610
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1611
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1612
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1613
 * Defines the loop over which the volume level is to rise smoothly from
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1614
 * nothing to the normal volume level.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1615
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1616
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1617
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1618
void CT_CMMFDevSoundData::DoCmdSetVolumeLoop(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1619
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1620
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetVolumeLoop"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1621
	TInt volLoop=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1622
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1623
	if (!GetIntFromConfig(aSection, KVolumeLoop, volLoop))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1624
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1625
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KVolumeLoop);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1626
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1627
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1628
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1629
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1630
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1631
		TPtrC parVolume;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1632
		TInt volumeValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1633
		RPointerArray<HBufC> volumeList;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1634
		for (TInt i=0; i<volLoop; i++)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1635
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1636
			if (!GetArrayRectFromConfig(aSection, KVolumeList, volumeList))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1637
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1638
				ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KVolumeList);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1639
				volumeList.ResetAndDestroy();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1640
				SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1641
				dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1642
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1643
			if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1644
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1645
				for (TInt j=0; j<volumeList.Count(); j++)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1646
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1647
					parVolume.Set(*volumeList[j]);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1648
					TLex lex(parVolume);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1649
					TInt error = lex.Val(volumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1650
					if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1651
						{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1652
						ERR_PRINTF2(_L("Obtaining volume value failed with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1653
						SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1654
						volumeList.ResetAndDestroy();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1655
						}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1656
					else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1657
						{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1658
						INFO_PRINTF3(_L("Setting volume number %d in the iteration number %d"), j, i);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1659
						iDevSound->SetVolume(volumeValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1660
						}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1661
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1662
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1663
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1664
		volumeList.ResetAndDestroy();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1665
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1666
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetVolumeLoop"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1667
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1668
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1669
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1670
 * Defines the period over which the volume level is to rise smoothly from
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1671
 * nothing to the normal volume level.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1672
 * The function is only available while the tone is playing.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1673
 * @param aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1674
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1675
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1676
void CT_CMMFDevSoundData::DoCmdSetVolumeRamp(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1677
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1678
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdSetVolumeRamp"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1679
	TInt tempValue=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1680
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1681
	if (!GetIntFromConfig(aSection, KRampDuration, tempValue))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1682
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1683
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KRampDuration);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1684
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1685
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1686
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1687
	TTimeIntervalMicroSeconds rampDuration(tempValue);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1688
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1689
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1690
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1691
		iDevSound->SetVolumeRamp(rampDuration);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1692
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1693
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdSetVolumeRamp"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1694
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1695
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1696
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1697
 * Initializes DevSound object for the mode aMode for processing audio data
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1698
 * with hardware device aHWDev and supporting FourCC.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1699
 * Too Initializes CMMFDevSound object to play and record PCM16 raw audio data
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1700
 * with sampling rate of 8 KHz.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1701
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1702
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1703
void CT_CMMFDevSoundData::DoCmdInitializeL(const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1704
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1705
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdInitializeL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1706
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1707
	TInt mode=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1708
	if (!GetEnumFromConfig(aSection, KMode, iEnumMode, mode))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1709
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1710
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KMode);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1711
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1712
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1713
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1714
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1715
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1716
		TInt hwDeviceInt=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1717
		if (!GetHexFromConfig(aSection, KHwDevice, hwDeviceInt))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1718
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1719
			INFO_PRINTF2(_L("%S parameter was not found in INI file"), &KHwDevice);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1720
			TPtrC fourCCIniString;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1721
			if (!GetStringFromConfig(aSection, KFourCC, fourCCIniString))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1722
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1723
				INFO_PRINTF2(_L("%S parameter was not found in INI file"), &KFourCC);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1724
				if (dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1725
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1726
					INFO_PRINTF1(_L("Initializing DevSound with overload: void InitializeL(MDevSoundObserver &aDevSoundObserver, TMMFState aMode)"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1727
					TRAPD(error, iDevSound->InitializeL(*this, (TMMFState)mode));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1728
					if(KErrNone != error)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1729
						{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1730
						ERR_PRINTF2(_L("InitializeL(aMDevSoundObserver, mode) left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1731
						SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1732
						}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1733
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1734
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1735
			else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1736
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1737
				if (fourCCIniString.Length() > KTFourCC)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1738
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1739
					ERR_PRINTF2(_L("FourCC obtained from INI file exceeded the valid length in %d"), fourCCIniString.Length());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1740
					SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1741
					dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1742
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1743
				if (dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1744
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1745
					TBuf<256> fourCCString;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1746
					fourCCString.Copy(fourCCIniString);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1747
					while (fourCCString.Length() < KTFourCC)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1748
						{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1749
						fourCCString.Insert(0, _L(" "));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1750
						}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1751
					TFourCC fourCC;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1752
					fourCC = TFourCC(fourCCString[3] << 24 | fourCCString[2] << 16 | fourCCString[1] << 8 | fourCCString[0]);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1753
					INFO_PRINTF1(_L("Initializing DevSound with overload: void InitializeL(MDevSoundObserver &aDevSoundObserver, TFourCC aDesiredFourCC, TMMFState aMode)"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1754
					TRAPD(error, iDevSound->InitializeL(*this, fourCC, (TMMFState)mode));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1755
					if(KErrNone!=error)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1756
						{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1757
						ERR_PRINTF2(_L("InitializeL(aMDevSoundObserver, fourCC, mode) left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1758
						ERR_PRINTF2(_L(" %S Not supported in this device"), &fourCCString);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1759
						SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1760
						SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1761
						}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1762
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1763
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1764
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1765
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1766
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1767
			if (dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1768
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1769
				TUid hwDevice;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1770
				hwDevice.iUid = hwDeviceInt;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1771
				INFO_PRINTF1(_L("Initializing DevSound with overload: void InitializeL(MDevSoundObserver &aDevSoundObserver, TUid aHWDev, TMMFState aMode)"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1772
				TRAPD(error, iDevSound->InitializeL(*this, hwDevice, (TMMFState)mode));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1773
				if(KErrNone != error)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1774
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1775
					ERR_PRINTF2(_L("InitializeL(aMDevSoundObserver, hwDevice, mode) left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1776
					SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1777
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1778
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1779
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1780
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1781
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1782
	if (dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1783
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1784
		IncOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1785
        iInitializeErrorIndex = aAsyncErrorIndex;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1786
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1787
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdInitializeL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1788
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1789
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1790
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1791
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1792
 * Initializes the audio device and starts playing the DTMF string aDTMFString.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1793
 * @param aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1794
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1795
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1796
void CT_CMMFDevSoundData::DoCmdPlayDTMFStringL(const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1797
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1798
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdPlayDTMFStringL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1799
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1800
	TPtrC dtmfString;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1801
	if (!GetStringFromConfig(aSection, KDTMFString, dtmfString) )
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1802
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1803
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KDTMFString);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1804
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1805
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1806
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1807
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1808
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1809
		TRAPD( error, iDevSound->PlayDTMFStringL(dtmfString) );
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1810
		if(error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1811
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1812
			ERR_PRINTF2(_L("Play DTMF string failed with error: %d "), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1813
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1814
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1815
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1816
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1817
			iToneErrorIndex = aAsyncErrorIndex;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1818
			IncOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1819
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1820
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1821
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1822
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdPlayDTMFStringL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1823
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1824
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1825
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1826
 * Plays data in the buffer at the current volume.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1827
 * @param
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1828
 * @return
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1829
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1830
void CT_CMMFDevSoundData::DoCmdPlayData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1831
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1832
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdPlayData"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1833
	PlayData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1834
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdPlayData"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1835
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1836
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1837
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1838
 * Helper for the DoCmdPlayData command
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1839
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1840
void CT_CMMFDevSoundData::PlayData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1841
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1842
	INFO_PRINTF1(_L("CT_CMMFDevSoundData::PlayData()"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1843
	iDevSound->PlayData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1844
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1845
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1846
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1847
 * Initializes audio device and starts playing a dual tone.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1848
 * The generated tone consists of two sine waves of different frequencies summed together.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1849
 * Dual Tone is played with the specified frequencies and for the specified duration.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1850
 * @param aSection - Section to read params from the ini file.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1851
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1852
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1853
void CT_CMMFDevSoundData::DoCmdPlayDualToneL(const TTEFSectionName& aSection , const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1854
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1855
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdPlayDualToneL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1856
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1857
	TInt frequencyOne=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1858
	if (!GetIntFromConfig(aSection, KFrequencyOne, frequencyOne) )
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1859
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1860
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFrequencyOne);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1861
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1862
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1863
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1864
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1865
	TInt frequencyTwo=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1866
	if (!GetIntFromConfig(aSection, KFrequencyTwo, frequencyTwo) )
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1867
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1868
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFrequencyTwo);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1869
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1870
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1871
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1872
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1873
	TInt duration=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1874
	if (!GetIntFromConfig(aSection, KDuration, duration) )
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1875
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1876
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KDuration);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1877
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1878
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1879
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1880
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1881
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1882
		TRAPD( error, iDevSound->PlayDualToneL(frequencyOne, frequencyTwo, duration) );
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1883
		if(error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1884
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1885
			ERR_PRINTF2(_L("Play dual tone failed with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1886
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1887
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1888
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1889
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1890
			iToneErrorIndex =  aAsyncErrorIndex;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1891
			IncOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1892
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1893
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1894
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1895
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdPlayDualToneL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1896
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1897
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1898
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1899
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1900
 * Initializes the audio device and starts the play process.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1901
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1902
 * This function queries and acquires the audio policy before initializing audio device. If there was
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1903
 * an error during policy initialization, PlayError() function will be called on    the observer with
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1904
 * error code KErrAccessDenied, otherwise BufferToBeFilled() function will be called with a buffer
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1905
 * reference. After reading data into the buffer reference passed, the client should call PlayData() to play data.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1906
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1907
 * The amount of data that can be played is specified in CMMFBuffer::RequestSize(). Any data that is read into
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1908
 * buffer beyond this size will be ignored.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1909
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1910
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1911
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1912
void CT_CMMFDevSoundData::DoCmdPlayInitL(const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1913
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1914
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdPlayInitL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1915
	TRAPD(error, iDevSound->PlayInitL());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1916
	if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1917
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1918
		ERR_PRINTF2(_L("PlayInitL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1919
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1920
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1921
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1922
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1923
		iPlayErrorIndex =  aAsyncErrorIndex;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1924
		IncOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1925
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1926
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdPlayInitL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1927
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1928
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1929
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1930
 * Initializes the audio device and starts playing a tone. The tone is played with the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1931
 * frequency and duration specified.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1932
 * @param aSection - Section to read params from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1933
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1934
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1935
void CT_CMMFDevSoundData::DoCmdPlayToneL(const TTEFSectionName& aSection , const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1936
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1937
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdPlayToneL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1938
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1939
	TInt frequency=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1940
	if (!GetIntFromConfig(aSection, KFrequency, frequency))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1941
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1942
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFrequency);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1943
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1944
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1945
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1946
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1947
	TInt duration=0;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1948
	if (!GetIntFromConfig(aSection, KDuration, duration))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1949
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1950
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KDuration);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1951
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1952
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1953
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1954
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1955
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1956
		TRAPD(error, iDevSound->PlayToneL(frequency, duration));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1957
		if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1958
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1959
			ERR_PRINTF2(_L("Play tone failed with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1960
			SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1961
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1962
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1963
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1964
			iToneErrorIndex =  aAsyncErrorIndex;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1965
			IncOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1966
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1967
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1968
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdPlayToneL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1969
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1970
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1971
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1972
 * Initializes the audio device and starts playing a tone sequence.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1973
 * @param aSection - Section to read param from the ini file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1974
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1975
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1976
void CT_CMMFDevSoundData::DoCmdPlayToneSequenceL(const TTEFSectionName& aSection , const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1977
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1978
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdPlayToneSequenceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1979
	TBool dataOk = ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1980
	TPtrC toneFileParameter;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1981
	if (!GetStringFromConfig(aSection, KFilename, toneFileParameter))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1982
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1983
		ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFilename);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1984
		SetBlockResult(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1985
		dataOk = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1986
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1987
	if(dataOk)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1988
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1989
		TInt error = iToneFile.Open(iFs, toneFileParameter, EFileRead);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1990
		if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1991
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1992
			ERR_PRINTF2(_L("Open file failed with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1993
			SetError(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1994
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1995
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1996
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1997
			error = iToneFile.Read(iToneSequence);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1998
			if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  1999
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2000
				ERR_PRINTF2(_L("Read file failed with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2001
				SetError(EFail);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2002
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2003
			else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2004
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2005
				TRAP(error, iDevSound->PlayToneSequenceL(iToneSequence));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2006
				if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2007
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2008
					ERR_PRINTF2(_L("Play tone sequence failed with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2009
					SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2010
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2011
				else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2012
					{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2013
				  iToneErrorIndex =  aAsyncErrorIndex;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2014
					IncOutstanding();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2015
					}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2016
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2017
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2018
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2019
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdPlayToneSequenceL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2020
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2021
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2022
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2023
 * Contine the process of recording.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2024
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2025
 * Once the buffer is filled with recorded  data, the Observer gets a reference to the buffer along
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2026
 * with the callback function BufferToBeEmptied(). After processing the buffer (copying over to a
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2027
 * different buffer or writing to file) the client should call this function to continue the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2028
 * recording process.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2029
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2030
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2031
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2032
void CT_CMMFDevSoundData::DoCmdRecordData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2033
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2034
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdRecordData"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2035
	RecordData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2036
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdRecordData"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2037
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2038
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2039
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2040
 * Helper method to DoCmdRecordData command
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2041
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2042
void CT_CMMFDevSoundData::RecordData()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2043
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2044
	iDevSound->RecordData();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2045
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2046
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2047
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2048
 * Initializes audio device and starts the recording process.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2049
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2050
 * This command queries and acquires the audio policy before initializing audio device. If there
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2051
 * was an error during policy initialization, RecordError() function will be called on the observer
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2052
 * with error code KErrAccessDenied, otherwise BufferToBeEmptied()  function will be called with a
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2053
 * buffer reference. This buffer contains recorded  or encoded data. After processing data in the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2054
 * buffer reference passed, the client should call RecordData() to continue recording process.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2055
 *
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2056
 * The amount of data that is available is specified in CMMFBuffer::RequestSize().
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2057
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2058
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2059
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2060
void CT_CMMFDevSoundData::DoCmdRecordInitL(const TInt aAsyncErrorIndex)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2061
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2062
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdRecordInitL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2063
	iRecordErrorIndex = aAsyncErrorIndex;	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2064
	TRAPD(error, iDevSound->RecordInitL());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2065
	if (error != KErrNone)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2066
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2067
		ERR_PRINTF2(_L("RecordInitL left with error %d"), error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2068
		SetError(error);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2069
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2070
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdRecordInitL"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2071
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2072
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2073
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2074
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2075
 * Conceal an error
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2076
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2077
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2078
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2079
void CT_CMMFDevSoundData::DoCmdUtilityErrorConceal()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2080
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2081
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdErrorConceal"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2082
	iErrorConceal=ETrue;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2083
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdErrorConceal"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2084
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2085
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2086
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2087
 * Stop an audio file
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2088
 * @param none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2089
 * @return none
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2090
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2091
void CT_CMMFDevSoundData::DoCmdStop(const TTEFSectionName& aSection)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2092
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2093
	INFO_PRINTF1(_L("*START*CT_CMMFDevSoundData::DoCmdStop"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2094
	TBool pause;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2095
	if(!GetBoolFromConfig(aSection,KPause,pause))
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2096
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2097
		INFO_PRINTF1(_L("The DoCmdStop command will be execute"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2098
		pause = EFalse;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2099
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2100
	iPaused=pause;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2101
	if(iPaused)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2102
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2103
		INFO_PRINTF1(_L("a Pause was required"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2104
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2105
	Stop();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2106
	INFO_PRINTF1(_L("*END*CT_CMMFDevSoundData::DoCmdStop"));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2107
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2108
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2109
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2110
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2111
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2112
/**
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2113
 * Utility for get the HwDevice for play and recording
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2114
 */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2115
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2116
void CT_CMMFDevSoundData::UtilityFourCCToHwDeviceUidL(const TDesC& aFourCC, THwDeviceType aType, TUid& aHwDeviceUid)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2117
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2118
	TPtrC8 fourCCPtr(0,0);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2119
	TPtrC8 fourCCP16Ptr(0,0);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2120
	RImplInfoPtrArray impArray;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2121
	CleanupResetAndDestroyPushL(impArray);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2122
	REComSession::ListImplementationsL(TUid::Uid(KMmfUidPluginInterfaceHwDevice), impArray);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2123
	TBuf<KHwDeviceDefaultDataLength> datatype;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2124
	for(TInt i = 0; i < impArray.Count(); ++i)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2125
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2126
		CImplementationInformation& entry = *(impArray[i]);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2127
		// Validate lenght
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2128
		if (entry.DataType().Length() == KHwDeviceDefaultDataLength)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2129
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2130
			INFO_PRINTF2(_L("Implementation UID=0x%08x"),entry.ImplementationUid());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2131
			datatype.Copy(entry.DataType());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2132
			INFO_PRINTF2(_L("Default data (fourCCs)=%S"), &datatype);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2133
			// Extract FourCC
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2134
			if(aType == EDecoder)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2135
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2136
				fourCCPtr.Set(entry.DataType().Left(KFourCCLength));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2137
				fourCCP16Ptr.Set(entry.DataType().Right(KFourCCLength));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2138
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2139
			else if (aType == EEncoder)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2140
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2141
				fourCCPtr.Set(entry.DataType().Right(KFourCCLength));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2142
				fourCCP16Ptr.Set(entry.DataType().Left(KFourCCLength));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2143
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2144
			// Compare FourCC
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2145
			TBuf16<4> foundFourCC;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2146
			foundFourCC.Copy(fourCCPtr);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2147
			if(aFourCC.CompareF(foundFourCC) == 0)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2148
				{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2149
				aHwDeviceUid = entry.ImplementationUid();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2150
				break;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2151
				}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2152
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2153
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2154
	CleanupStack::PopAndDestroy(&impArray);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2155
	REComSession::FinalClose();
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
  2156
	}