khronosfws/openmax_al/src/radio/xaradioitf.c
changeset 38 9e9fc5ab059f
parent 33 5e8b14bae8c3
child 43 9894ed580e4a
--- a/khronosfws/openmax_al/src/radio/xaradioitf.c	Fri Jul 23 17:29:03 2010 -0500
+++ b/khronosfws/openmax_al/src/radio/xaradioitf.c	Fri Aug 06 16:55:00 2010 -0500
@@ -95,7 +95,6 @@
     XAresult ret = XA_RESULT_SUCCESS;
     XARadioItfImpl* impl = GetImpl(self);
     DEBUG_API("->XARadioItfImpl_GetFreqRange");
-    XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
 
     if(!impl || !pRange)
     {
@@ -108,7 +107,6 @@
 
     ret = XARadioItfAdapt_GetFreqRange(pRange);
 
-    XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFreqRange");
     return ret;
 }
@@ -147,7 +145,7 @@
 
 /**
  * XAresult XARadioItfImpl_GetFreqRangeProperties(XARadioItf self,
- *                                                XAuint8 range,
+ *                                                XAuint8  range,
  *                                                XAuint32 * pMinFreq,
  *                                                XAuint32 * pMaxFreq,
  *                                                XAuint32 * pFreqInterval)
@@ -155,7 +153,7 @@
  *              modulation of the given frequency range.
  **/
 XAresult XARadioItfImpl_GetFreqRangeProperties(XARadioItf self,
-                                               XAuint8 range,
+                                               XAuint8  range,
                                                XAuint32 * pMinFreq,
                                                XAuint32 * pMaxFreq,
                                                XAuint32 * pFreqInterval)
@@ -167,21 +165,9 @@
    *pFreqInterval = FREQINTERVAL;   
 		    
     DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties");
-    XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
 
     if(!impl || !pMinFreq || !pMaxFreq || !pFreqInterval)
     {
-        XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
-        /* invalid parameter */
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    ret = XARadioItfAdapt_IsFreqRangeSupported( range, &isSupported );
-
-    if (isSupported != XA_BOOLEAN_TRUE || ret != XA_RESULT_SUCCESS)
-    {
-        XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
         /* invalid parameter */
         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
@@ -191,7 +177,6 @@
     ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx,
             range, pMinFreq, pMaxFreq );
 
-    XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
     return ret;
 }
@@ -207,6 +192,10 @@
 XAresult XARadioItfImpl_SetFrequency(XARadioItf self, XAuint32 freq)
 {
     XAresult ret = XA_RESULT_SUCCESS;
+    XAuint8 range = 1; // Default to EuroAmerica
+    XAuint32 minFreq;
+    XAuint32 maxFreq;
+   	XAuint32 freqInterval;
         
     XARadioItfImpl* impl = GetImpl(self);
     DEBUG_API("->XARadioItfImpl_SetFrequency");
@@ -220,9 +209,23 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
     
- 
-
-    ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq );
+    // Check for valid entries: 
+ 		ret = XARadioItfImpl_GetFreqRangeProperties(self, range, &minFreq, &maxFreq, &freqInterval);   
+    if (ret != XA_RESULT_SUCCESS)
+    {
+    	XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
+    	DEBUG_API("<-XARadioItfImpl_SetFrequency");    	
+    	return ret;
+    }		
+    
+    if ( (freq < minFreq) || (freq > maxFreq) )
+    {
+    	XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
+    	DEBUG_API("<-XARadioItfImpl_SetFrequency");    	
+    	return XA_RESULT_PARAMETER_INVALID;
+    }	  
+           
+   	ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetFrequency");