14 * Description: Telephony Multimedia Service |
14 * Description: Telephony Multimedia Service |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 // INCLUDE FILES |
18 // INCLUDE FILES |
19 #include <mdaaudiotoneplayer.h> |
|
20 #include <AudioPreference.h> |
|
21 #include "tmsutility.h" |
19 #include "tmsutility.h" |
22 #include "tmsdtmftoneplayer.h" |
20 #include "tmsdtmftoneplayer.h" |
23 |
21 |
24 // CONSTANTS |
22 // CONSTANTS |
25 const gint KBufSize = 10; |
23 const gint KBufSize = 10; |
38 // TMSAudioDtmfTonePlayer::NewL |
36 // TMSAudioDtmfTonePlayer::NewL |
39 // Two-phased constructor. |
37 // Two-phased constructor. |
40 // ----------------------------------------------------------------------------- |
38 // ----------------------------------------------------------------------------- |
41 // |
39 // |
42 TMSAudioDtmfTonePlayer* TMSAudioDtmfTonePlayer::NewL( |
40 TMSAudioDtmfTonePlayer* TMSAudioDtmfTonePlayer::NewL( |
43 TMSDTMFTonePlayerObserver& obsrvr, guint aAudioPreference, |
41 TMSDTMFTonePlayerObserver& obsrvr, guint audioPreference, |
44 guint aAudioPriority) |
42 guint audioPriority) |
45 { |
43 { |
46 //iObserver = obsrvr; |
44 TMSAudioDtmfTonePlayer* self = new (ELeave) TMSAudioDtmfTonePlayer(obsrvr, |
47 TMSAudioDtmfTonePlayer* self = new (ELeave) TMSAudioDtmfTonePlayer( |
45 audioPreference, audioPriority); |
48 obsrvr, aAudioPreference, aAudioPriority); |
|
49 |
46 |
50 CleanupStack::PushL(self); |
47 CleanupStack::PushL(self); |
51 self->ConstructL(); |
48 self->ConstructL(); |
52 CleanupStack::Pop(self); |
49 CleanupStack::Pop(self); |
53 return self; |
50 return self; |
67 // C++ default constructor can NOT contain any code, that |
64 // C++ default constructor can NOT contain any code, that |
68 // might leave. |
65 // might leave. |
69 // ----------------------------------------------------------------------------- |
66 // ----------------------------------------------------------------------------- |
70 // |
67 // |
71 TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer( |
68 TMSAudioDtmfTonePlayer::TMSAudioDtmfTonePlayer( |
72 TMSDTMFTonePlayerObserver& obsrvr, guint aAudioPreference, |
69 TMSDTMFTonePlayerObserver& obsrvr, guint audioPreference, |
73 guint aAudioPriority) : |
70 guint audioPriority) : |
74 iObserver(obsrvr), |
71 iObserver(obsrvr), |
75 iPref(aAudioPreference), |
72 iPref(audioPreference), |
76 iPrior(aAudioPriority) |
73 iPrior(audioPriority) |
77 { |
74 { |
78 TRACE_PRN_FN_ENT; |
75 TRACE_PRN_FN_ENT; |
79 TRACE_PRN_FN_EXT; |
76 TRACE_PRN_FN_EXT; |
80 } |
77 } |
81 |
78 |
98 // ----------------------------------------------------------------------------- |
95 // ----------------------------------------------------------------------------- |
99 // TMSAudioDtmfTonePlayer::SetVolume |
96 // TMSAudioDtmfTonePlayer::SetVolume |
100 // Sets the volume level that is used when the dtmf tone is played. |
97 // Sets the volume level that is used when the dtmf tone is played. |
101 // ----------------------------------------------------------------------------- |
98 // ----------------------------------------------------------------------------- |
102 // |
99 // |
103 void TMSAudioDtmfTonePlayer::SetVolume(gint aVolume) |
100 void TMSAudioDtmfTonePlayer::SetVolume(gint volume) |
104 { |
101 { |
105 TRACE_PRN_FN_ENT; |
102 TRACE_PRN_FN_ENT; |
106 gint vol = ConvertVolume(aVolume); |
103 gint vol = ConvertVolumeLevel(volume); |
107 |
104 |
108 if (vol != iVolume) |
105 if (vol != iVolume) |
109 { |
106 { |
110 iVolume = vol; |
107 iVolume = vol; |
111 iDTMFPlayer->SetVolume(iVolume); |
108 iDTMFPlayer->SetVolume(iVolume); |
117 // TMSAudioDtmfTonePlayer::PlayDtmfTone |
114 // TMSAudioDtmfTonePlayer::PlayDtmfTone |
118 // Searches the given DTMF tone from iToneArray and calls PlayCurrentTone |
115 // Searches the given DTMF tone from iToneArray and calls PlayCurrentTone |
119 // member function. |
116 // member function. |
120 // ----------------------------------------------------------------------------- |
117 // ----------------------------------------------------------------------------- |
121 // |
118 // |
122 void TMSAudioDtmfTonePlayer::PlayDtmfTone(TDes& aTone) |
119 void TMSAudioDtmfTonePlayer::PlayDtmfTone(TDes& tone) |
123 { |
120 { |
124 TRACE_PRN_FN_ENT; |
121 TRACE_PRN_FN_ENT; |
125 Cancel(); |
122 Cancel(); |
126 |
123 |
127 // DTMF signalling. |
124 // DTMF signaling. |
128 if (iDTMFPlayer) |
125 if (iDTMFPlayer) |
129 { |
126 { |
130 TBuf<KBufSize> key; |
127 TBuf<KBufSize> key; |
131 key.Append(aTone); |
128 key.Append(tone); |
132 TRAP_IGNORE(iDTMFPlayer->PlayDTMFStringL(aTone)); |
129 TRAP_IGNORE(iDTMFPlayer->PlayDTMFStringL(tone)); |
133 } |
130 } |
134 TRACE_PRN_FN_EXT; |
131 TRACE_PRN_FN_EXT; |
135 } |
132 } |
136 |
133 |
137 // ----------------------------------------------------------------------------- |
134 // ----------------------------------------------------------------------------- |
150 // TMSAudioDtmfTonePlayer::Normalize |
147 // TMSAudioDtmfTonePlayer::Normalize |
151 // Lowers case for chars and if its '*','+', or 'w' sets it to asterisk |
148 // Lowers case for chars and if its '*','+', or 'w' sets it to asterisk |
152 // char ('*'). |
149 // char ('*'). |
153 // ----------------------------------------------------------------------------- |
150 // ----------------------------------------------------------------------------- |
154 // |
151 // |
155 void TMSAudioDtmfTonePlayer::Normalize(TChar& aTone) |
152 void TMSAudioDtmfTonePlayer::Normalize(TChar& tone) |
156 { |
153 { |
157 TRACE_PRN_FN_ENT; |
154 TRACE_PRN_FN_ENT; |
158 aTone.LowerCase(); |
155 tone.LowerCase(); |
159 |
|
160 TPtrC ast(KPhoneTone_Asterisk); |
156 TPtrC ast(KPhoneTone_Asterisk); |
161 |
157 |
162 if (ast.Locate(aTone) != KErrNotFound) |
158 if (ast.Locate(tone) != KErrNotFound) |
163 { |
159 { |
164 aTone = ast[0]; |
160 tone = ast[0]; |
165 } |
161 } |
166 TRACE_PRN_FN_EXT; |
162 TRACE_PRN_FN_EXT; |
167 } |
163 } |
168 |
164 |
169 // ----------------------------------------------------------------------------- |
165 // ----------------------------------------------------------------------------- |
175 TRACE_PRN_FN_ENT; |
171 TRACE_PRN_FN_ENT; |
176 |
172 |
177 if (aError == KErrNone) |
173 if (aError == KErrNone) |
178 { |
174 { |
179 TMMFPrioritySettings dtmfPlayerSettings; |
175 TMMFPrioritySettings dtmfPlayerSettings; |
180 dtmfPlayerSettings.iPref = (TMdaPriorityPreference) iPref; |
176 dtmfPlayerSettings.iPref = iPref; |
181 dtmfPlayerSettings.iPriority = iPrior; |
177 dtmfPlayerSettings.iPriority = iPrior; |
182 dtmfPlayerSettings.iState = EMMFStateTonePlaying; |
178 dtmfPlayerSettings.iState = EMMFStateTonePlaying; |
183 iDTMFPlayer->SetPrioritySettings(dtmfPlayerSettings); |
179 iDTMFPlayer->SetPrioritySettings(dtmfPlayerSettings); |
184 |
180 |
185 TTimeIntervalMicroSeconds32 length(KDTMFToneLengthOn); |
181 TTimeIntervalMicroSeconds32 length(KDTMFToneLengthOn); |
204 iObserver.DTMFToneFinished(aError); |
200 iObserver.DTMFToneFinished(aError); |
205 TRACE_PRN_FN_EXT; |
201 TRACE_PRN_FN_EXT; |
206 } |
202 } |
207 |
203 |
208 // ----------------------------------------------------------------------------- |
204 // ----------------------------------------------------------------------------- |
209 // TMSAudioDtmfTonePlayer::BufferToBeFilled |
205 // TMSAudioDtmfTonePlayer::ConvertVolumeLevel |
210 // ----------------------------------------------------------------------------- |
206 // ----------------------------------------------------------------------------- |
211 // |
207 // |
212 void TMSAudioDtmfTonePlayer::BufferToBeFilled(CMMFBuffer* /*aBuffer*/) |
208 gint TMSAudioDtmfTonePlayer::ConvertVolumeLevel(gint volume) |
213 { |
209 { |
214 TRACE_PRN_FN_ENT; |
210 TRACE_PRN_FN_ENT; |
215 TRACE_PRN_FN_EXT; |
211 gint result = iDTMFPlayer->MaxVolume() * volume / KMaxVolumeLevel; |
216 } |
|
217 |
|
218 // ----------------------------------------------------------------------------- |
|
219 // TMSAudioDtmfTonePlayer::PlayError |
|
220 // ----------------------------------------------------------------------------- |
|
221 // |
|
222 void TMSAudioDtmfTonePlayer::PlayError(TInt /*aError*/) |
|
223 { |
|
224 TRACE_PRN_FN_ENT; |
|
225 TRACE_PRN_FN_EXT; |
|
226 } |
|
227 |
|
228 // ----------------------------------------------------------------------------- |
|
229 // TMSAudioDtmfTonePlayer::BufferToBeEmptied |
|
230 // ----------------------------------------------------------------------------- |
|
231 // |
|
232 void TMSAudioDtmfTonePlayer::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/) |
|
233 { |
|
234 TRACE_PRN_FN_ENT; |
|
235 TRACE_PRN_FN_EXT; |
|
236 } |
|
237 |
|
238 // ----------------------------------------------------------------------------- |
|
239 // TMSAudioDtmfTonePlayer::RecordError |
|
240 // ----------------------------------------------------------------------------- |
|
241 // |
|
242 void TMSAudioDtmfTonePlayer::RecordError(TInt /*aError*/) |
|
243 { |
|
244 TRACE_PRN_FN_ENT; |
|
245 TRACE_PRN_FN_EXT; |
|
246 } |
|
247 |
|
248 // ----------------------------------------------------------------------------- |
|
249 // TMSAudioDtmfTonePlayer::ConvertError |
|
250 // ----------------------------------------------------------------------------- |
|
251 // |
|
252 void TMSAudioDtmfTonePlayer::ConvertError(TInt /*aError*/) |
|
253 { |
|
254 TRACE_PRN_FN_ENT; |
|
255 TRACE_PRN_FN_EXT; |
|
256 } |
|
257 |
|
258 // ----------------------------------------------------------------------------- |
|
259 // TMSAudioDtmfTonePlayer::DeviceMessage |
|
260 // ----------------------------------------------------------------------------- |
|
261 // |
|
262 void TMSAudioDtmfTonePlayer::DeviceMessage(TUid /*aMessageType*/, |
|
263 const TDesC8& /*aMsg*/) |
|
264 { |
|
265 TRACE_PRN_FN_ENT; |
|
266 TRACE_PRN_FN_EXT; |
|
267 } |
|
268 |
|
269 // ----------------------------------------------------------------------------- |
|
270 // TMSAudioDtmfTonePlayer::ConvertVolume |
|
271 // ----------------------------------------------------------------------------- |
|
272 // |
|
273 gint TMSAudioDtmfTonePlayer::ConvertVolume(gint aVolume) |
|
274 { |
|
275 TRACE_PRN_FN_ENT; |
|
276 gint result = iDTMFPlayer->MaxVolume() * aVolume / KMaxVolumeLevel; |
|
277 TRACE_PRN_FN_EXT; |
212 TRACE_PRN_FN_EXT; |
278 return result; |
213 return result; |
279 } |
214 } |
280 |
215 |
281 // End of File |
216 // End of File |