22 #include "xaradioitf.h" |
22 #include "xaradioitf.h" |
23 #include "xaconfigextensionsitf.h" |
23 #include "xaconfigextensionsitf.h" |
24 #include "xadynintmgmtitf.h" |
24 #include "xadynintmgmtitf.h" |
25 #include "xardsitf.h" |
25 #include "xardsitf.h" |
26 #include "xathreadsafety.h" |
26 #include "xathreadsafety.h" |
27 |
27 #include "xaradioadaptctx.h" |
28 /* Static mapping of enumeration XARadioDeviceInterfaces to interface iids */ |
28 /* Static mapping of enumeration XARadioDeviceInterfaces to interface iids */ |
29 static const XAInterfaceID* XARadioDeviceItfIIDs[RADIO_ITFCOUNT]= |
29 static const XAInterfaceID* XARadioDeviceItfIIDs[RADIO_ITFCOUNT]= |
30 { |
30 { |
31 &XA_IID_OBJECT, |
31 &XA_IID_OBJECT, |
32 &XA_IID_RADIO, |
32 &XA_IID_RADIO, |
40 *****************************************************************************/ |
40 *****************************************************************************/ |
41 |
41 |
42 /* XAResult XARadioDeviceImpl_Create |
42 /* XAResult XARadioDeviceImpl_Create |
43 * Description: Create object |
43 * Description: Create object |
44 */ |
44 */ |
45 XAresult XARadioDeviceImpl_CreateRadioDevice(XAObjectItf* pDevice, |
45 XAresult XARadioDeviceImpl_CreateRadioDevice(FrameworkMap* mapper, |
|
46 XAObjectItf* pDevice, |
46 XAuint32 numInterfaces, |
47 XAuint32 numInterfaces, |
47 const XAInterfaceID * pInterfaceIds, |
48 const XAInterfaceID * pInterfaceIds, |
48 const XAboolean * pInterfaceRequired) |
49 const XAboolean * pInterfaceRequired) |
49 { |
50 { |
50 XARadioDeviceImpl* pImpl = NULL; |
51 XARadioDeviceImpl* pImpl = NULL; |
51 XAObjectItfImpl* pBaseObj = NULL; |
52 XAObjectItfImpl* pBaseObj = NULL; |
52 XAuint8 itfIndex = 0; |
53 XAuint8 itfIndex = 0; |
53 |
54 |
54 DEBUG_API("->XARadioDeviceImpl_Create"); |
55 DEBUG_API("->XARadioDeviceImpl_Create"); |
55 XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); |
56 XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); |
|
57 |
56 if( !pDevice ) |
58 if( !pDevice ) |
57 { |
59 { |
58 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
60 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
59 /* invalid parameter */ |
61 /* invalid parameter */ |
60 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
62 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
116 { |
118 { |
117 entry->required = XA_BOOLEAN_TRUE; |
119 entry->required = XA_BOOLEAN_TRUE; |
118 } |
120 } |
119 } |
121 } |
120 } |
122 } |
121 #ifdef _GSTREAMER_BACKEND_ |
|
122 /* Initialize XARadioDeviceImpl variables */ |
|
123 pImpl->adaptationCtx = XARadioAdapt_Create(); |
|
124 #endif |
|
125 |
123 |
126 /* This code is put here to return Feature Not Supported since adaptation is not present*/ |
124 /* This code is put here to return Feature Not Supported since adaptation is not present*/ |
127 /*************************************************/ |
125 /*************************************************/ |
|
126 DEBUG_ERR("Required interface not found - abort creation!"); |
128 XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); |
127 XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); |
129 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
128 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
130 DEBUG_ERR("Required interface not found - abort creation!"); |
|
131 DEBUG_API("<-XARadioDeviceImpl_CreateRadioDevice"); |
129 DEBUG_API("<-XARadioDeviceImpl_CreateRadioDevice"); |
132 return XA_RESULT_FEATURE_UNSUPPORTED; |
130 return XA_RESULT_FEATURE_UNSUPPORTED; |
133 /*************************************************/ |
131 /*************************************************/ |
134 |
132 |
135 |
133 /* // Initialize XARadioDeviceImpl variables |
136 /* Set ObjectItf to point to newly created object */ |
134 pImpl->adaptationCtx = XARadioAdapt_Create(); |
137 /* *pDevice = (XAObjectItf)&(pBaseObj->self); |
135 |
|
136 //Set ObjectItf to point to newly created object |
|
137 *pDevice = (XAObjectItf)&(pBaseObj->self); |
138 |
138 |
139 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
139 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
140 DEBUG_API("<-XARadioDeviceImpl_Create"); |
140 DEBUG_API("<-XARadioDeviceImpl_Create"); |
141 return XA_RESULT_SUCCESS;*/ |
141 return XA_RESULT_SUCCESS;*/ |
142 } |
142 } |
213 DEBUG_API("<-XARadioDeviceImpl_DoRealize"); |
213 DEBUG_API("<-XARadioDeviceImpl_DoRealize"); |
214 |
214 |
215 return XA_RESULT_PARAMETER_INVALID; |
215 return XA_RESULT_PARAMETER_INVALID; |
216 } |
216 } |
217 |
217 |
218 #ifdef _GSTREAMER_BACKEND_ |
218 |
219 ret = XARadioAdapt_PostInit( pObjImpl->adaptationCtx ); |
219 ret = XARadioAdapt_PostInit( pObjImpl->adaptationCtx ); |
220 #endif |
220 |
221 if( ret != XA_RESULT_SUCCESS ) |
221 if( ret != XA_RESULT_SUCCESS ) |
222 { |
222 { |
223 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
223 XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); |
224 DEBUG_API("<-XARadioDeviceImpl_DoRealize"); |
224 DEBUG_API("<-XARadioDeviceImpl_DoRealize"); |
225 return ret; |
225 return ret; |
233 { |
233 { |
234 void *pItf = NULL; |
234 void *pItf = NULL; |
235 switch( itfIdx ) |
235 switch( itfIdx ) |
236 { |
236 { |
237 case RADIO_RADIOITF: |
237 case RADIO_RADIOITF: |
238 #ifdef _GSTREAMER_BACKEND_ |
238 |
239 pItf = XARadioItfImpl_Create( pObjImpl->adaptationCtx ); |
239 pItf = XARadioItfImpl_Create( pObjImpl->adaptationCtx ); |
240 #endif |
240 |
241 break; |
241 break; |
242 case RADIO_CONFIGEXTENSIONITF: |
242 case RADIO_CONFIGEXTENSIONITF: |
243 pItf = XAConfigExtensionsItfImpl_Create(); |
243 pItf = XAConfigExtensionsItfImpl_Create(); |
244 break; |
244 break; |
245 case RADIO_DIMITF: |
245 case RADIO_DIMITF: |
246 pItf = XADIMItfImpl_Create(); |
246 pItf = XADIMItfImpl_Create(); |
247 break; |
247 break; |
248 case RADIO_RDSITF: |
248 case RADIO_RDSITF: |
249 #ifdef _GSTREAMER_BACKEND_ |
249 |
250 pItf = XARDSItfImpl_Create( pObjImpl->adaptationCtx ); |
250 pItf = XARDSItfImpl_Create( pObjImpl->adaptationCtx ); |
251 #endif |
251 |
252 break; |
252 break; |
253 default: |
253 default: |
254 break; |
254 break; |
255 } |
255 } |
256 if( !pItf ) |
256 if( !pItf ) |
289 * Description: Free all resources reserved at XARadioDeviceImpl_DoRealize() |
289 * Description: Free all resources reserved at XARadioDeviceImpl_DoRealize() |
290 */ |
290 */ |
291 void XARadioDeviceImpl_FreeResources(XAObjectItf self) |
291 void XARadioDeviceImpl_FreeResources(XAObjectItf self) |
292 { |
292 { |
293 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
293 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
294 |
294 XARadioDeviceImpl* pImpl = (XARadioDeviceImpl*)(*self); |
295 XAuint8 itfIdx = 0; |
295 XAuint8 itfIdx = 0; |
296 DEBUG_API("->XARadioDeviceImpl_FreeResources"); |
296 DEBUG_API("->XARadioDeviceImpl_FreeResources"); |
297 XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio); |
297 XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio); |
298 #ifdef _GSTREAMER_BACKEND_ |
298 |
299 XARadioDeviceImpl* pImpl = (XARadioDeviceImpl*)(*self); |
299 |
300 assert( pObj && pImpl && pObj == pObj->self ); |
300 assert( pObj && pImpl && pObj == pObj->self ); |
301 #endif |
301 |
302 |
302 |
303 /* free all allocated interfaces */ |
303 /* free all allocated interfaces */ |
304 for(itfIdx = 0; itfIdx < RADIO_ITFCOUNT; itfIdx++) |
304 for(itfIdx = 0; itfIdx < RADIO_ITFCOUNT; itfIdx++) |
305 { |
305 { |
306 void *pItf = pObj->interfaceMap[itfIdx].pItf; |
306 void *pItf = pObj->interfaceMap[itfIdx].pItf; |
325 } |
325 } |
326 pObj->interfaceMap[itfIdx].pItf = NULL; |
326 pObj->interfaceMap[itfIdx].pItf = NULL; |
327 } |
327 } |
328 } |
328 } |
329 |
329 |
330 #ifdef _GSTREAMER_BACKEND_ |
330 |
331 if ( pImpl->adaptationCtx != NULL ) |
331 if ( pImpl->adaptationCtx != NULL ) |
332 { |
332 { |
333 XARadioAdapt_Destroy( pImpl->adaptationCtx ); |
333 XARadioAdapt_Destroy( pImpl->adaptationCtx ); |
334 pImpl->adaptationCtx = NULL; |
334 pImpl->adaptationCtx = NULL; |
335 } |
335 } |
336 #endif |
336 |
337 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSRadio); |
337 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSRadio); |
338 DEBUG_API("<-XARadioDeviceImpl_FreeResources"); |
338 DEBUG_API("<-XARadioDeviceImpl_FreeResources"); |
339 return; |
339 return; |
340 } |
340 } |
341 |
341 |