25 /** |
25 /** |
26 * XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self) |
26 * XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self) |
27 * Description: Validated interface pointer and cast it to implementations pointer. |
27 * Description: Validated interface pointer and cast it to implementations pointer. |
28 **/ |
28 **/ |
29 static XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self) |
29 static XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self) |
30 { |
30 { |
31 if(self) |
31 if (self) |
32 { |
32 { |
33 XANokiaVolumeExtItfImpl* impl = (XANokiaVolumeExtItfImpl*)(*self); |
33 XANokiaVolumeExtItfImpl* impl = (XANokiaVolumeExtItfImpl*) (*self); |
34 if(impl && impl == impl->self) |
34 if (impl && impl == impl->self) |
35 { |
35 { |
36 return impl; |
36 return impl; |
37 } |
37 } |
38 } |
38 } |
39 return NULL; |
39 return NULL; |
40 } |
40 } |
41 |
41 |
42 /** |
42 /** |
43 * XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(XANokiaVolumeExtItf self, |
43 * XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(XANokiaVolumeExtItf self, |
44 * xaNokiaVolumeExtCallback callback, |
44 * xaNokiaVolumeExtCallback callback, |
45 * void * pContext) |
45 * void * pContext) |
46 * Description: Sets or clears the xaVolumeCallback. |
46 * Description: Sets or clears the xaVolumeCallback. |
47 **/ |
47 **/ |
48 XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(XANokiaVolumeExtItf self, |
48 XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback( |
49 xaNokiaVolumeExtCallback callback, |
49 XANokiaVolumeExtItf self, xaNokiaVolumeExtCallback callback, |
50 void * pContext) |
50 void * pContext) |
51 { |
51 { |
52 XAresult ret = XA_RESULT_SUCCESS; |
52 XAresult ret = XA_RESULT_SUCCESS; |
53 XANokiaVolumeExtItfImpl* impl = GetImpl(self); |
53 XANokiaVolumeExtItfImpl* impl = GetImpl(self); |
54 DEBUG_API("->XANokiaVolumeExtItfImpl_RegisterVolumeCallback"); |
54 DEBUG_API("->XANokiaVolumeExtItfImpl_RegisterVolumeCallback"); |
55 |
55 |
56 if(!impl) |
56 if (!impl) |
57 { |
57 { |
58 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
58 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
59 /* invalid parameter */ |
59 /* invalid parameter */ |
60 DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback"); |
60 DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback"); |
61 return XA_RESULT_PARAMETER_INVALID; |
61 return XA_RESULT_PARAMETER_INVALID; |
62 } |
62 } |
63 |
63 |
64 impl->callback = callback; |
64 impl->callback = callback; |
65 impl->context = pContext; |
65 impl->context = pContext; |
66 impl->cbPtrToSelf = self; |
66 impl->cbPtrToSelf = self; |
67 |
67 |
68 DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback"); |
68 DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback"); |
69 return ret; |
69 return ret; |
70 } |
70 } |
71 |
71 |
72 /** |
72 /** |
73 * Base interface XANokiaVolumeExtItf implementation |
73 * Base interface XANokiaVolumeExtItf implementation |
74 */ |
74 */ |
75 |
75 |
76 /** |
76 /** |
77 * XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel level) |
77 * XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel level) |
78 * Description: Sets the object's volume level. |
78 * Description: Sets the object's volume level. |
79 **/ |
79 **/ |
80 XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel level) |
80 XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, |
81 { |
81 XAmillibel level) |
82 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
82 { |
83 XAresult ret = XA_RESULT_SUCCESS; |
83 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
84 |
84 XAresult ret = XA_RESULT_SUCCESS; |
85 XAmillibel maximumLevel = 0; |
85 |
86 |
86 XAmillibel maximumLevel = 0; |
|
87 |
87 DEBUG_API("->XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
88 DEBUG_API("->XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
88 |
89 |
89 /* check maximum volume level */ |
90 /* check maximum volume level */ |
90 if(XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(self, &maximumLevel) != XA_RESULT_SUCCESS) |
91 if (XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(self, &maximumLevel) |
91 { |
92 != XA_RESULT_SUCCESS) |
92 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
93 { |
93 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
94 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
94 /* cannot solve maximum volume level */ |
95 /* cannot solve maximum volume level */ |
95 return XA_RESULT_PARAMETER_INVALID; |
96 return XA_RESULT_PARAMETER_INVALID; |
96 } |
97 } |
97 |
98 |
98 if(!impl || level > maximumLevel) |
99 if (!impl || level > maximumLevel) |
99 { |
100 { |
100 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
101 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
101 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
102 /* invalid parameter */ |
102 /* invalid parameter */ |
103 return XA_RESULT_PARAMETER_INVALID; |
103 return XA_RESULT_PARAMETER_INVALID; |
104 } |
104 } |
|
105 |
105 |
106 impl->volumeLevel = level; |
106 impl->volumeLevel = level; |
107 |
107 |
108 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
108 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel"); |
109 return ret ; |
109 return ret; |
110 } |
110 } |
111 |
111 |
112 /** |
112 /** |
113 * XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pLevel) |
113 * XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pLevel) |
114 * Description: Gets the object’s volume level. |
114 * Description: Gets the object’s volume level. |
115 **/ |
115 **/ |
116 XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pLevel) |
116 XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, |
117 { |
117 XAmillibel *pLevel) |
|
118 { |
118 XAresult ret = XA_RESULT_SUCCESS; |
119 XAresult ret = XA_RESULT_SUCCESS; |
119 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
120 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
120 DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
121 DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
121 |
122 |
122 if(!impl || !pLevel) |
123 if (!impl || !pLevel) |
123 { |
124 { |
124 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
125 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
125 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
126 /* invalid parameter */ |
126 /* invalid parameter */ |
127 return XA_RESULT_PARAMETER_INVALID; |
127 return XA_RESULT_PARAMETER_INVALID; |
128 } |
128 } |
|
129 |
129 |
130 *pLevel = impl->volumeLevel; |
130 *pLevel = impl->volumeLevel; |
131 |
131 |
132 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
132 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
133 return ret; |
133 return ret; |
134 } |
134 } |
135 |
135 |
136 /** |
136 /** |
137 * XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pMaxLevel) |
137 * XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pMaxLevel) |
138 * Description: Gets the maximum supported level. |
138 * Description: Gets the maximum supported level. |
139 **/ |
139 **/ |
140 XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pMaxLevel) |
140 XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf self, |
141 { |
141 XAmillibel *pMaxLevel) |
|
142 { |
142 XAresult ret = XA_RESULT_SUCCESS; |
143 XAresult ret = XA_RESULT_SUCCESS; |
143 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
144 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
144 DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
145 DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel"); |
145 |
146 |
146 if(!impl || !pMaxLevel) |
147 if (!impl || !pMaxLevel) |
147 { |
148 { |
148 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
149 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel"); |
149 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel"); |
150 /* invalid parameter */ |
150 /* invalid parameter */ |
151 return XA_RESULT_PARAMETER_INVALID; |
151 return XA_RESULT_PARAMETER_INVALID; |
152 } |
152 } |
|
153 |
153 |
154 *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL; |
154 *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL; |
155 |
155 |
156 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel"); |
156 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel"); |
157 return ret; |
157 return ret; |
158 } |
158 } |
159 |
159 |
160 /** |
160 /** |
161 * XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, XAboolean mute) |
161 * XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, XAboolean mute) |
162 * Description: Mutes or unmutes the object. |
162 * Description: Mutes or unmutes the object. |
163 **/ |
163 **/ |
164 XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, XAboolean mute) |
164 XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, |
165 { |
165 XAboolean mute) |
|
166 { |
166 XAresult ret = XA_RESULT_SUCCESS; |
167 XAresult ret = XA_RESULT_SUCCESS; |
167 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
168 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
168 DEBUG_API("->XANokiaVolumeExtItfImpl_SetMute"); |
169 DEBUG_API("->XANokiaVolumeExtItfImpl_SetMute"); |
169 |
170 |
170 if(!impl) |
171 if (!impl) |
171 { |
172 { |
172 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
173 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); |
173 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); |
174 /* invalid parameter */ |
174 /* invalid parameter */ |
175 return XA_RESULT_PARAMETER_INVALID; |
175 return XA_RESULT_PARAMETER_INVALID; |
176 } |
176 } |
|
177 |
177 |
178 ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); |
178 ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); |
179 if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) |
179 if (ret == XA_RESULT_SUCCESS) |
180 { |
180 { |
181 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); |
181 /* check is mute state changed */ |
182 return ret; |
182 if (mute != impl->mute) |
183 } |
183 { |
184 /* check is mute state changed */ |
184 if (impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWMMF) |
185 if(mute != impl->mute) |
185 { |
186 { |
186 ret = XANokiaVolumeExtItfAdapt_SetMute( |
187 if(impl->adapCtx->fwtype == FWMgrFWMMF) |
187 (XAAdaptationMMFCtx*) impl->adapCtx, mute); |
188 { |
188 if (ret == XA_RESULT_SUCCESS) |
189 ret = XANokiaVolumeExtItfAdapt_SetMute((XAAdaptationMMFCtx*)impl->adapCtx, mute); |
189 { |
190 } |
190 impl->mute = mute; |
191 |
191 } |
192 if(ret == XA_RESULT_SUCCESS) |
192 } |
193 { |
193 } |
194 impl->mute = mute; |
194 |
195 } |
195 XAAdaptationBase_ThreadExit(impl->adapCtx); |
196 } |
196 } |
197 |
|
198 XAAdaptationBase_ThreadExit(impl->adapCtx); |
|
199 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); |
197 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute"); |
200 return ret; |
198 return ret; |
201 } |
199 } |
202 |
200 |
203 /** |
201 /** |
204 * XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, XAboolean *pMute) |
202 * XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, XAboolean *pMute) |
205 * Description: Retrieves the object's state. |
203 * Description: Retrieves the object's state. |
206 **/ |
204 **/ |
207 XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, XAboolean *pMute) |
205 XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, |
208 { |
206 XAboolean *pMute) |
|
207 { |
209 XAresult ret = XA_RESULT_SUCCESS; |
208 XAresult ret = XA_RESULT_SUCCESS; |
210 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
209 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
211 DEBUG_API("->XANokiaVolumeExtItfImpl_GetMute"); |
210 DEBUG_API("->XANokiaVolumeExtItfImpl_GetMute"); |
212 |
211 |
213 if(!impl || !pMute) |
212 if (!impl || !pMute) |
214 { |
213 { |
215 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
214 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute"); |
216 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute"); |
215 /* invalid parameter */ |
217 /* invalid parameter */ |
216 return XA_RESULT_PARAMETER_INVALID; |
218 return XA_RESULT_PARAMETER_INVALID; |
217 } |
219 } |
|
220 |
218 |
221 *pMute = impl->mute; |
219 *pMute = impl->mute; |
222 |
220 |
223 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute"); |
221 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute"); |
224 return ret; |
222 return ret; |
225 } |
223 } |
226 |
224 |
227 /** |
225 /** |
228 * XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(XANokiaVolumeExtItf self, XAboolean enable) |
226 * XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(XANokiaVolumeExtItf self, XAboolean enable) |
229 * Description: Enables or disables the stereo positioning effect. |
227 * Description: Enables or disables the stereo positioning effect. |
230 **/ |
228 **/ |
231 XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(XANokiaVolumeExtItf self, XAboolean enable) |
229 XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition( |
232 { |
230 XANokiaVolumeExtItf self, XAboolean enable) |
|
231 { |
233 XAresult ret = XA_RESULT_SUCCESS; |
232 XAresult ret = XA_RESULT_SUCCESS; |
234 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
233 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
235 DEBUG_API("->XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
234 DEBUG_API("->XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
236 |
235 |
237 if(!impl) |
236 if (!impl) |
238 { |
237 { |
239 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
238 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
240 DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
239 /* invalid parameter */ |
241 /* invalid parameter */ |
240 return XA_RESULT_PARAMETER_INVALID; |
242 return XA_RESULT_PARAMETER_INVALID; |
241 } |
243 } |
|
244 |
242 |
245 ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); |
243 ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); |
246 if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) |
244 if (ret == XA_RESULT_PARAMETER_INVALID || ret |
247 { |
245 == XA_RESULT_PRECONDITIONS_VIOLATED) |
|
246 { |
248 DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
247 DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
249 return ret; |
248 return ret; |
250 } |
249 } |
251 /* Check is stereo position state changed */ |
250 /* Check is stereo position state changed */ |
252 if(enable != impl->enableStereoPos) |
251 if (enable != impl->enableStereoPos) |
253 { |
252 { |
254 if(impl->adapCtx->fwtype == FWMgrFWMMF) |
253 if (impl->adapCtx->fwtype == FWMgrFWMMF) |
255 { |
254 { |
256 ret = XANokiaVolumeExtItfAdapt_EnableStereoPosition((XAAdaptationMMFCtx*)impl->adapCtx, |
255 ret = XANokiaVolumeExtItfAdapt_EnableStereoPosition( |
257 enable); |
256 (XAAdaptationMMFCtx*) impl->adapCtx, enable); |
258 } |
257 } |
259 |
258 |
260 if(ret == XA_RESULT_SUCCESS) |
259 if (ret == XA_RESULT_SUCCESS) |
261 { |
260 { |
262 impl->enableStereoPos = enable; |
261 impl->enableStereoPos = enable; |
263 } |
262 } |
264 } |
263 } |
265 |
264 |
266 XAAdaptationBase_ThreadExit(impl->adapCtx); |
265 XAAdaptationBase_ThreadExit(impl->adapCtx); |
267 DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
266 DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition"); |
268 return ret; |
267 return ret; |
269 } |
268 } |
270 |
269 |
271 /** |
270 /** |
272 * XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(XANokiaVolumeExtItf self, |
271 * XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(XANokiaVolumeExtItf self, |
273 * XAboolean *pEnable) |
272 * XAboolean *pEnable) |
274 * Description: Returns the enabled state of the stereo positioning effect. |
273 * Description: Returns the enabled state of the stereo positioning effect. |
275 **/ |
274 **/ |
276 XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(XANokiaVolumeExtItf self, |
275 XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition( |
277 XAboolean *pEnable) |
276 XANokiaVolumeExtItf self, XAboolean *pEnable) |
278 { |
277 { |
279 XAresult ret = XA_RESULT_SUCCESS; |
278 XAresult ret = XA_RESULT_SUCCESS; |
280 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
279 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
281 DEBUG_API("->XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); |
280 DEBUG_API("->XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); |
282 |
281 |
283 if(!impl || !pEnable) |
282 if (!impl || !pEnable) |
284 { |
283 { |
285 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
284 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); |
286 DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); |
285 /* invalid parameter */ |
287 /* invalid parameter */ |
286 return XA_RESULT_PARAMETER_INVALID; |
288 return XA_RESULT_PARAMETER_INVALID; |
287 } |
289 } |
|
290 |
288 |
291 *pEnable = impl->enableStereoPos; |
289 *pEnable = impl->enableStereoPos; |
292 |
290 |
293 DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); |
291 DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition"); |
294 return ret; |
292 return ret; |
295 } |
293 } |
296 |
294 |
297 /** |
295 /** |
298 * XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self, |
296 * XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self, |
299 * XApermille stereoPosition) |
297 * XApermille stereoPosition) |
300 * Description: Sets the stereo position of the object. |
298 * Description: Sets the stereo position of the object. |
301 **/ |
299 **/ |
302 XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self, |
300 XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self, |
303 XApermille stereoPosition) |
301 XApermille stereoPosition) |
304 { |
302 { |
305 XAresult ret = XA_RESULT_SUCCESS; |
303 XAresult ret = XA_RESULT_SUCCESS; |
306 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
304 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
307 DEBUG_API("->XANokiaVolumeExtItfImpl_SetStereoPosition"); |
305 DEBUG_API("->XANokiaVolumeExtItfImpl_SetStereoPosition"); |
308 |
306 |
309 if(!impl || (stereoPosition < STEREO_POSITION_LEFT) || |
307 if (!impl || (stereoPosition < STEREO_POSITION_LEFT) || (stereoPosition |
310 (stereoPosition > STEREO_POSITION_RIGHT)) |
308 > STEREO_POSITION_RIGHT)) |
311 { |
309 { |
312 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
310 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); |
313 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); |
311 /* invalid parameter */ |
314 /* invalid parameter */ |
312 return XA_RESULT_PARAMETER_INVALID; |
315 return XA_RESULT_PARAMETER_INVALID; |
313 } |
316 } |
|
317 |
314 |
318 impl->stereoPosition = stereoPosition; |
315 impl->stereoPosition = stereoPosition; |
319 |
316 |
320 ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); |
317 ret = XAAdaptationBase_ThreadEntry(impl->adapCtx); |
321 if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED ) |
318 if (ret == XA_RESULT_PARAMETER_INVALID || ret |
322 { |
319 == XA_RESULT_PRECONDITIONS_VIOLATED) |
|
320 { |
323 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); |
321 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); |
324 return ret; |
322 return ret; |
325 } |
323 } |
326 /* check is stereo position effect enabled if is then handle effect */ |
324 /* check is stereo position effect enabled if is then handle effect */ |
327 if(impl->enableStereoPos) |
325 if (impl->enableStereoPos) |
328 { |
326 { |
329 if(impl->adapCtx->fwtype == FWMgrFWMMF) |
327 if (impl->adapCtx->fwtype == FWMgrFWMMF) |
330 { |
328 { |
331 ret = XANokiaVolumeExtItfAdapt_SetStereoPosition((XAAdaptationMMFCtx*)impl->adapCtx, |
329 ret = XANokiaVolumeExtItfAdapt_SetStereoPosition( |
332 stereoPosition); |
330 (XAAdaptationMMFCtx*) impl->adapCtx, stereoPosition); |
333 |
331 |
334 } |
332 } |
335 } |
333 } |
336 |
334 |
337 XAAdaptationBase_ThreadExit(impl->adapCtx); |
335 XAAdaptationBase_ThreadExit(impl->adapCtx); |
338 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); |
336 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition"); |
339 return ret; |
337 return ret; |
340 } |
338 } |
341 |
339 |
342 /** |
340 /** |
343 * XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self, |
341 * XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self, |
344 * XApermille *pStereoPosition) |
342 * XApermille *pStereoPosition) |
345 * Description: Gets the object’s stereo position setting. |
343 * Description: Gets the object’s stereo position setting. |
346 **/ |
344 **/ |
347 XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self, |
345 XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self, |
348 XApermille *pStereoPosition) |
346 XApermille *pStereoPosition) |
349 { |
347 { |
350 XAresult ret = XA_RESULT_SUCCESS; |
348 XAresult ret = XA_RESULT_SUCCESS; |
351 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
349 XANokiaVolumeExtItfImpl *impl = GetImpl(self); |
352 DEBUG_API("->XANokiaVolumeExtItfImpl_GetStereoPosition"); |
350 DEBUG_API("->XANokiaVolumeExtItfImpl_GetStereoPosition"); |
353 |
351 |
354 if(!impl || !pStereoPosition) |
352 if (!impl || !pStereoPosition) |
355 { |
353 { |
356 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
354 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition"); |
357 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition"); |
355 /* invalid parameter */ |
358 /* invalid parameter */ |
356 return XA_RESULT_PARAMETER_INVALID; |
359 return XA_RESULT_PARAMETER_INVALID; |
357 } |
360 } |
|
361 |
358 |
362 *pStereoPosition = impl->stereoPosition; |
359 *pStereoPosition = impl->stereoPosition; |
363 |
360 |
364 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition"); |
361 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition"); |
365 return ret; |
362 return ret; |
366 } |
363 } |
367 |
364 |
368 XAresult XANokiaVolumeExtItfImpl_SetCallbackEventsMask(XANokiaVolumeExtItf self, XAuint32 eventFlags ) |
365 XAresult XANokiaVolumeExtItfImpl_SetCallbackEventsMask( |
|
366 XANokiaVolumeExtItf self, XAuint32 eventFlags) |
369 { |
367 { |
370 XAresult ret = XA_RESULT_SUCCESS; |
368 XAresult ret = XA_RESULT_SUCCESS; |
371 XANokiaVolumeExtItfImpl* impl = GetImpl(self); |
369 XANokiaVolumeExtItfImpl* impl = GetImpl(self); |
372 DEBUG_API("->XANokiaVolumeExtItfImpl_SetCallbackEventsMask"); |
370 DEBUG_API("->XANokiaVolumeExtItfImpl_SetCallbackEventsMask"); |
373 |
371 |
374 if(!impl) |
372 if (!impl) |
375 { |
373 { |
376 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
374 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
377 /* invalid parameter */ |
375 /* invalid parameter */ |
378 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask"); |
376 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask"); |
379 return XA_RESULT_PARAMETER_INVALID; |
377 return XA_RESULT_PARAMETER_INVALID; |
380 } |
378 } |
381 |
379 |
382 impl->eventFlags = eventFlags; |
380 impl->eventFlags = eventFlags; |
383 |
381 |
384 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask"); |
382 DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask"); |
385 return ret; |
383 return ret; |
386 } |
384 } |
387 |
385 |
388 XAresult XANokiaVolumeExtItfImpl_GetCallbackEventsMask(XANokiaVolumeExtItf self, XAuint32 * pEventFlags) |
386 XAresult XANokiaVolumeExtItfImpl_GetCallbackEventsMask( |
|
387 XANokiaVolumeExtItf self, XAuint32 * pEventFlags) |
389 { |
388 { |
390 XAresult ret = XA_RESULT_SUCCESS; |
389 XAresult ret = XA_RESULT_SUCCESS; |
391 XANokiaVolumeExtItfImpl* impl = GetImpl(self); |
390 XANokiaVolumeExtItfImpl* impl = GetImpl(self); |
392 DEBUG_API("->XANokiaVolumeExtItfImpl_GetCallbackEventsMask"); |
391 DEBUG_API("->XANokiaVolumeExtItfImpl_GetCallbackEventsMask"); |
393 |
392 |
394 if(!impl || !pEventFlags) |
393 if (!impl || !pEventFlags) |
395 { |
394 { |
396 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
395 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
397 /* invalid parameter */ |
396 /* invalid parameter */ |
398 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask"); |
397 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask"); |
399 return XA_RESULT_PARAMETER_INVALID; |
398 return XA_RESULT_PARAMETER_INVALID; |
400 } |
399 } |
401 |
400 |
402 *pEventFlags = impl->eventFlags; |
401 *pEventFlags = impl->eventFlags; |
403 |
402 |
404 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask"); |
403 DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask"); |
405 return ret; |
404 return ret; |
406 } |
405 } |
407 |
|
408 |
406 |
409 /** |
407 /** |
410 * XANokiaVolumeExtItfImpl -specific methods |
408 * XANokiaVolumeExtItfImpl -specific methods |
411 **/ |
409 **/ |
412 |
410 |
413 /** |
411 /** |
414 * XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create() |
412 * XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create() |
415 * Description: Allocate and initialize VolumeItfImpl |
413 * Description: Allocate and initialize VolumeItfImpl |
416 **/ |
414 **/ |
417 XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create(XAAdaptationBaseCtx *adapCtx ) |
415 XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create( |
418 { |
416 XAAdaptationBaseCtx *adapCtx) |
419 XANokiaVolumeExtItfImpl *self = (XANokiaVolumeExtItfImpl*) |
417 { |
420 calloc(1,sizeof(XANokiaVolumeExtItfImpl)); |
418 XANokiaVolumeExtItfImpl *self = (XANokiaVolumeExtItfImpl*) calloc(1, |
|
419 sizeof(XANokiaVolumeExtItfImpl)); |
421 DEBUG_API("->XANokiaVolumeExtItfImpl_Create"); |
420 DEBUG_API("->XANokiaVolumeExtItfImpl_Create"); |
422 |
421 |
423 if(self) |
422 if (self) |
424 { |
423 { |
425 /* init itf default implementation */ |
424 /* init itf default implementation */ |
426 self->itf.EnableStereoPosition = XANokiaVolumeExtItfImpl_EnableStereoPosition; |
425 self->itf.EnableStereoPosition |
427 self->itf.GetMaxVolumeLevel = XANokiaVolumeExtItfImpl_GetMaxVolumeLevel; |
426 = XANokiaVolumeExtItfImpl_EnableStereoPosition; |
|
427 self->itf.GetMaxVolumeLevel |
|
428 = XANokiaVolumeExtItfImpl_GetMaxVolumeLevel; |
428 self->itf.GetMute = XANokiaVolumeExtItfImpl_GetMute; |
429 self->itf.GetMute = XANokiaVolumeExtItfImpl_GetMute; |
429 self->itf.GetStereoPosition = XANokiaVolumeExtItfImpl_GetStereoPosition; |
430 self->itf.GetStereoPosition |
|
431 = XANokiaVolumeExtItfImpl_GetStereoPosition; |
430 self->itf.GetVolumeLevel = XANokiaVolumeExtItfImpl_GetVolumeLevel; |
432 self->itf.GetVolumeLevel = XANokiaVolumeExtItfImpl_GetVolumeLevel; |
431 self->itf.IsEnabledStereoPosition = XANokiaVolumeExtItfImpl_IsEnabledStereoPosition; |
433 self->itf.IsEnabledStereoPosition |
|
434 = XANokiaVolumeExtItfImpl_IsEnabledStereoPosition; |
432 self->itf.SetMute = XANokiaVolumeExtItfImpl_SetMute; |
435 self->itf.SetMute = XANokiaVolumeExtItfImpl_SetMute; |
433 self->itf.SetStereoPosition = XANokiaVolumeExtItfImpl_SetStereoPosition; |
436 self->itf.SetStereoPosition |
|
437 = XANokiaVolumeExtItfImpl_SetStereoPosition; |
434 self->itf.SetVolumeLevel = XANokiaVolumeExtItfImpl_SetVolumeLevel; |
438 self->itf.SetVolumeLevel = XANokiaVolumeExtItfImpl_SetVolumeLevel; |
435 self->itf.RegisterVolumeCallback = XANokiaVolumeExtItfImpl_RegisterVolumeCallback; |
439 self->itf.RegisterVolumeCallback |
436 self->itf.SetCallbackEventsMask = XANokiaVolumeExtItfImpl_SetCallbackEventsMask; |
440 = XANokiaVolumeExtItfImpl_RegisterVolumeCallback; |
437 self->itf.GetCallbackEventsMask = XANokiaVolumeExtItfImpl_GetCallbackEventsMask; |
441 self->itf.SetCallbackEventsMask |
|
442 = XANokiaVolumeExtItfImpl_SetCallbackEventsMask; |
|
443 self->itf.GetCallbackEventsMask |
|
444 = XANokiaVolumeExtItfImpl_GetCallbackEventsMask; |
438 |
445 |
439 /* init variables */ |
446 /* init variables */ |
440 self->volumeLevel = 0; |
447 self->volumeLevel = 0; |
441 self->mute = XA_BOOLEAN_FALSE; |
448 self->mute = XA_BOOLEAN_FALSE; |
442 self->enableStereoPos = XA_BOOLEAN_FALSE; |
449 self->enableStereoPos = XA_BOOLEAN_FALSE; |
443 self->stereoPosition = STEREO_POSITION_CENTER; |
450 self->stereoPosition = STEREO_POSITION_CENTER; |
444 |
451 |
445 self->adapCtx = adapCtx; |
452 self->adapCtx = adapCtx; |
446 |
453 |
447 XAAdaptationBase_AddEventHandler(adapCtx, &XANokiaVolumeExtItfImpl_AdaptCb, XA_NOKIAEXTVOLITFEVENTS, self ); |
454 XAAdaptationBase_AddEventHandler(adapCtx, |
448 |
455 &XANokiaVolumeExtItfImpl_AdaptCb, XA_NOKIAEXTVOLITFEVENTS, |
|
456 self); |
|
457 |
449 self->self = self; |
458 self->self = self; |
450 } |
459 } |
451 |
460 |
452 DEBUG_API("<-XANokiaVolumeExtItfImpl_Create"); |
461 DEBUG_API("<-XANokiaVolumeExtItfImpl_Create"); |
453 return self; |
462 return self; |
454 } |
463 } |
455 |
464 |
456 /** |
465 /** |
457 * void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self) |
466 * void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self) |
458 * Description: Free all resources reserved at XANokiaVolumeExtItfImpl_Create |
467 * Description: Free all resources reserved at XANokiaVolumeExtItfImpl_Create |
459 **/ |
468 **/ |
460 void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self) |
469 void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self) |
461 { |
470 { |
462 DEBUG_API("->XANokiaVolumeExtItfImpl_Free"); |
471 DEBUG_API("->XANokiaVolumeExtItfImpl_Free"); |
463 assert(self==self->self); |
472 assert(self==self->self); |
464 free(self); |
473 free(self); |
465 DEBUG_API("<-XANokiaVolumeExtItfImpl_Free"); |
474 DEBUG_API("<-XANokiaVolumeExtItfImpl_Free"); |
466 } |
475 } |
467 |
476 |
468 /* void XANokiaVolumeExtItfimpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) |
477 /* void XANokiaVolumeExtItfimpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) |
469 * Description: Event handler for adaptation events |
478 * Description: Event handler for adaptation events |
470 */ |
479 */ |
471 void XANokiaVolumeExtItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) |
480 void XANokiaVolumeExtItfImpl_AdaptCb(void *pHandlerCtx, XAAdaptEvent *event) |
472 { |
481 { |
473 XANokiaVolumeExtItfImpl* impl =(XANokiaVolumeExtItfImpl*)pHandlerCtx; |
482 XANokiaVolumeExtItfImpl* impl = (XANokiaVolumeExtItfImpl*) pHandlerCtx; |
474 XAboolean eventBoolean = XA_BOOLEAN_FALSE; |
483 XAboolean eventBoolean = XA_BOOLEAN_FALSE; |
475 |
484 |
476 DEBUG_API("->XANokiaVolumeExtItfimpl_AdaptCb"); |
485 DEBUG_API("->XANokiaVolumeExtItfimpl_AdaptCb"); |
477 |
486 |
478 if(!impl) |
487 if (!impl) |
479 { |
488 { |
480 DEBUG_ERR("XANokiaVolumeExtItfImpl_AdaptCb, invalid context pointer!"); |
489 DEBUG_ERR("XANokiaVolumeExtItfImpl_AdaptCb, invalid context pointer!");DEBUG_API("<-XANokiaVolumeExtItfImpl_AdaptCb"); |
481 DEBUG_API("<-XANokiaVolumeExtItfImpl_AdaptCb"); |
|
482 return; |
490 return; |
483 } |
491 } |
484 assert(event); |
492 assert(event); |
485 |
493 |
486 if( event->eventid == XA_ADAPT_VOLUME_MUTE_CHANGED && impl->callback ) |
494 if (event->eventid == XA_ADAPT_VOLUME_MUTE_CHANGED && impl->callback) |
487 { |
495 { |
488 if(impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED) |
496 if (impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED) |
489 { |
497 { |
490 DEBUG_API("Mute Status changed in adaptation"); |
498 DEBUG_API("Mute Status changed in adaptation"); |
491 eventBoolean = *(XAboolean*)event->data; |
499 eventBoolean = *(XAboolean*) event->data; |
492 impl->callback( impl->cbPtrToSelf, impl->context, XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED, eventBoolean ); |
500 impl->callback(impl->cbPtrToSelf, impl->context, |
493 } |
501 XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED, eventBoolean); |
494 } |
502 } |
495 |
503 } |
|
504 |
496 else if (event->eventid == XA_ADAPT_VOLUME_VOLUME_CHANGED) |
505 else if (event->eventid == XA_ADAPT_VOLUME_VOLUME_CHANGED) |
497 { |
506 { |
498 if(impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED) |
507 if (impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED) |
499 { |
508 { |
500 DEBUG_API("Volume Status changed in adaptation"); |
509 DEBUG_API("Volume Status changed in adaptation"); |
501 eventBoolean = *(XAboolean*)event->data; |
510 eventBoolean = *(XAboolean*) event->data; |
502 impl->callback( impl->cbPtrToSelf, impl->context, XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED, eventBoolean ); |
511 impl->callback(impl->cbPtrToSelf, impl->context, |
503 } |
512 XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED, eventBoolean); |
504 } |
513 } |
|
514 } |
505 else if (event->eventid == XA_ADAPT_VULOME_STEREOPOSITION_CHANGED) |
515 else if (event->eventid == XA_ADAPT_VULOME_STEREOPOSITION_CHANGED) |
506 { |
516 { |
507 if(impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED) |
517 if (impl->eventFlags |
|
518 & XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED) |
508 { |
519 { |
509 DEBUG_API("StereoPosituin Status changed in adaptation"); |
520 DEBUG_API("StereoPosituin Status changed in adaptation"); |
510 eventBoolean = *(XAboolean*)event->data; |
521 eventBoolean = *(XAboolean*) event->data; |
511 impl->callback( impl->cbPtrToSelf, impl->context, XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED, eventBoolean ); |
522 impl->callback(impl->cbPtrToSelf, impl->context, |
512 } |
523 XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED, |
513 } |
524 eventBoolean); |
514 |
525 } |
|
526 } |
|
527 |
515 DEBUG_API("<-XANokiaVolumeExtItfimpl_AdaptCb"); |
528 DEBUG_API("<-XANokiaVolumeExtItfimpl_AdaptCb"); |
516 } |
529 } |