khronosfws/openmax_al/src/radio/xaradioitf.c
changeset 21 2ed61feeead6
parent 19 4a629bc82c5e
child 25 6f7ceef7b1d1
--- a/khronosfws/openmax_al/src/radio/xaradioitf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/radio/xaradioitf.c	Fri May 28 19:26:28 2010 -0500
@@ -19,11 +19,12 @@
 #include <stdlib.h>
 #include <assert.h>
 #include <string.h>
+#include <xaradioitfext.h>
 #include "xaradioitf.h"
-
 #include "xaradioitfadaptation.h"
+#include "xathreadsafety.h"
 
-#include "xathreadsafety.h"
+#define FREQINTERVAL 20
 
 /**
  * XARadioItfImpl* GetImpl(XARadioItf self)
@@ -54,9 +55,7 @@
 XAresult XARadioItfImpl_SetFreqRange(XARadioItf self, XAuint8 range)
 {
     XAresult ret = XA_RESULT_SUCCESS;
-
     XAboolean isSupported = XA_BOOLEAN_FALSE;
-
     XARadioItfImpl* impl = GetImpl(self);
 
     DEBUG_API("->XARadioItfImpl_SetFreqRange");
@@ -72,15 +71,13 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_IsFreqRangeSupported((XAAdaptationGstCtx*)impl->adapCtx, range, &isSupported);
+    ret = XARadioItfAdapt_IsFreqRangeSupported(range, &isSupported);
 
     if ( ret == XA_RESULT_SUCCESS && isSupported == XA_BOOLEAN_TRUE )
     {
-        ret = XARadioItfAdapt_SetFreqRange((XAAdaptationGstCtx*)impl->adapCtx, range);
+        ret = XARadioItfAdapt_SetFreqRange((XAAdaptationMMFCtx*)impl->adapCtx, range);
     }
 
-    
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetFreqRange");
     return ret;
@@ -106,8 +103,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_GetFreqRange( (XAAdaptationGstCtx*)impl->adapCtx, pRange);
+    ret = XARadioItfAdapt_GetFreqRange(pRange);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFreqRange");
@@ -138,8 +134,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_IsFreqRangeSupported( (XAAdaptationGstCtx*)impl->adapCtx, range, pSupported );
+    ret = XARadioItfAdapt_IsFreqRangeSupported( range, pSupported );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_IsFreqRangeSupported");
@@ -165,6 +160,9 @@
     XAresult ret = XA_RESULT_SUCCESS;
     XAboolean isSupported = XA_BOOLEAN_FALSE;
     XARadioItfImpl* impl = GetImpl(self);
+
+   *pFreqInterval = FREQINTERVAL;   
+		    
     DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties");
     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
 
@@ -176,8 +174,7 @@
         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
         return XA_RESULT_PARAMETER_INVALID;
     }
-
-    ret = XARadioItfAdapt_IsFreqRangeSupported( (XAAdaptationGstCtx*)impl->adapCtx, range, &isSupported );
+    ret = XARadioItfAdapt_IsFreqRangeSupported( range, &isSupported );
 
     if (isSupported != XA_BOOLEAN_TRUE || ret != XA_RESULT_SUCCESS)
     {
@@ -187,10 +184,9 @@
         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
         return XA_RESULT_PARAMETER_INVALID;
     }
-
-
-    ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationGstCtx*)impl->adapCtx,
-            range, pMinFreq, pMaxFreq, pFreqInterval );
+		
+    ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx,
+            range, pMinFreq, pMaxFreq );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
@@ -220,8 +216,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_SetFrequency( (XAAdaptationGstCtx*)impl->adapCtx, freq );
+    ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetFrequency");
@@ -251,8 +246,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_CancelSetFrequency( (XAAdaptationGstCtx*)impl->adapCtx );
+    ret = XARadioItfAdapt_CancelSetFrequency();
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_CancelSetFrequency");
@@ -279,8 +273,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_GetFrequency( (XAAdaptationGstCtx*)impl->adapCtx, pFreq);
+    ret = XARadioItfAdapt_GetFrequency(pFreq);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFrequency");
@@ -309,9 +302,7 @@
 
     if (impl->squelch != squelch)
     {
-
-        ret = XARadioItfAdapt_SetSquelch( (XAAdaptationGstCtx*)impl->adapCtx, squelch );
-
+        ret = XARadioItfAdapt_SetSquelch( squelch );
         if ( ret == XA_RESULT_SUCCESS )
         {
             impl->squelch = squelch;
@@ -340,7 +331,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-    *pSquelch = impl->squelch;
+  	ret = XARadioItfAdapt_GetSquelch( pSquelch );
 
     DEBUG_API("<-XARadioItfImpl_GetSquelch");
     return ret;
@@ -357,7 +348,7 @@
     DEBUG_API("->XARadioItfImpl_SetStereoMode");
     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
 
-    if(!impl || mode > XA_STEREOMODE_AUTO )
+    if( !impl || mode > XA_STEREOMODE_AUTO )
     {
         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
         /* invalid parameter */
@@ -365,18 +356,14 @@
         DEBUG_API("<-XARadioItfImpl_SetStereoMode");
         return XA_RESULT_PARAMETER_INVALID;
     }
-
     if ( impl->stereoMode != mode)
     {
-
-        ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationGstCtx*)impl->adapCtx, mode );
-
-        if ( ret == XA_RESULT_SUCCESS )
+        ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationMMFCtx*)impl->adapCtx, mode );
+       	if ( ret == XA_RESULT_SUCCESS )
         {
-            impl->stereoMode = mode;
+         	  impl->stereoMode = mode;
         }
-    }
-
+    }    
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetStereoMode");
     return ret;
@@ -400,7 +387,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-    *pMode = impl->stereoMode;
+    ret = XARadioItfAdapt_GetStereoMode( pMode );
 
     DEBUG_API("<-XARadioItfImpl_GetStereoMode");
     return ret;
@@ -426,8 +413,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_GetSignalStrength( (XAAdaptationGstCtx*)impl->adapCtx, pStrength );
+    ret = XARadioItfAdapt_GetSignalStrength( pStrength );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetSignalStrength");
@@ -458,8 +444,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_Seek( (XAAdaptationGstCtx*)impl->adapCtx, upwards );
+    ret = XARadioItfAdapt_Seek( (XAAdaptationMMFCtx*)impl->adapCtx, upwards );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_Seek");
@@ -488,8 +473,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_StopSeeking( (XAAdaptationGstCtx*)impl->adapCtx );
+    XARadioItfAdapt_StopSeeking( (XAAdaptationMMFCtx*)impl->adapCtx );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_StopSeeking");
@@ -497,165 +481,6 @@
 }
 
 /**
- * XAresult XARadioItfImpl_GetNumberOfPresets(XARadioItf self, XAuint32 * pNumPresets)
- * Description: Returns the number of preset slots the device has for storing the presets.
- **/
-XAresult XARadioItfImpl_GetNumberOfPresets(XARadioItf self, XAuint32 * pNumPresets)
-{
-    XAresult ret = XA_RESULT_SUCCESS;
-    XARadioItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XARadioItfImpl_GetNumberOfPresets");
-
-    if(!impl || !pNumPresets)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XARadioItfImpl_GetNumberOfPresets");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-
-    *pNumPresets = impl->numOfPresets;
-
-    DEBUG_API("<-XARadioItfImpl_GetNumberOfPresets");
-    return ret;
-}
-
-/**
- * XAresult XARadioItfImpl_SetPreset(XARadioItf self,
- *                                   XAuint32 preset,
- *                                   XAuint32 freq,
- *                                   XAuint8 range,
- *                                   XAuint32 mode,
- *                                   const XAchar * name)
- * Description: Sets the preset.
- **/
-XAresult XARadioItfImpl_SetPreset(XARadioItf self,
-                                  XAuint32 preset,
-                                  XAuint32 freq,
-                                  XAuint8 range,
-                                  XAuint32 mode,
-                                  const XAchar * name)
-{
-    XAresult ret = XA_RESULT_SUCCESS;
-    XAboolean supported = XA_BOOLEAN_FALSE;
-    XAuint32 minFreq = 0;
-    XAuint32 maxFreq = 0;
-    XAuint32 freqInterval = 0;
-
-    XARadioItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XARadioItfImpl_SetPreset");
-
-    if(!impl || !name)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    ret = (*self)->IsFreqRangeSupported(self, range, &supported);
-    if(supported != XA_BOOLEAN_TRUE || ret != XA_RESULT_SUCCESS)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid range */
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    ret = (*self)->GetFreqRangeProperties(self, range, &minFreq, &maxFreq, &freqInterval);
-    if (freq < minFreq || freq > maxFreq || ((freq-minFreq)%freqInterval != 0) ||
-            ret != XA_RESULT_SUCCESS)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid freq */
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    if (preset < 1 || preset >= impl->numOfPresets ||
-             mode > XA_STEREOMODE_AUTO ||
-            strlen((char*)name) > RADIO_PRESET_NAME_MAX_LENGTH)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid preset, name or mode*/
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-
-
-    
-    free(impl->presets[preset].name);
-
-    impl->presets[preset].freq = freq;
-    impl->presets[preset].range = range;
-    impl->presets[preset].stereoMode = mode;
-    impl->presets[preset].name = calloc(1, RADIO_PRESET_NAME_MAX_LENGTH+1);
-    strncpy( impl->presets[preset].name, (char*)name, RADIO_PRESET_NAME_MAX_LENGTH );
-
-    DEBUG_API("<-XARadioItfImpl_SetPreset");
-    return ret;
-}
-
-/**
- * XAresult XARadioItfImpl_GetPreset(XARadioItf self,
- *                                   XAuint32 preset,
- *                                   XAuint32 * pFreq,
- *                                   XAuint8 * pRange,
- *                                   XAuint32 * pMode,
- *                                   XAchar * pName,
- *                                   XAuint16 * pNameLength)
- * Description: Gets the settings stored into a preset.
- **/
-XAresult XARadioItfImpl_GetPreset(XARadioItf self,
-                                  XAuint32 preset,
-                                  XAuint32 * pFreq,
-                                  XAuint8 * pRange,
-                                  XAuint32 * pMode,
-                                  XAchar * pName,
-                                  XAuint16 * pNameLength)
-{
-    /* Supporting CT tester the API signature is newer, but API functionality reflects required spec version.
-       Implement newer specification in terms of handling pName and pNameLength*/
-    XAresult ret = XA_RESULT_SUCCESS;
-    XARadioItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XARadioItfImpl_GetPreset");
-
-    if(!impl || !pFreq || !pRange || !pMode || !pNameLength)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XARadioItfImpl_GetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    if (pName)
-    {
-        if(preset < 1 || preset > impl->numOfPresets)
-        {
-            DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-            /* invalid parameter */
-            DEBUG_API("<-XARadioItfImpl_GetPreset");
-            return XA_RESULT_PARAMETER_INVALID;
-        }
-
-        *pFreq = impl->presets[preset].freq;
-        *pRange = impl->presets[preset].range;
-        *pMode = impl->presets[preset].stereoMode;
-        if(*pNameLength<RADIO_PRESET_NAME_MAX_LENGTH)
-        {
-            strncpy( (char*)pName, impl->presets[preset].name, *pNameLength );
-            ret = XA_RESULT_BUFFER_INSUFFICIENT;
-        }
-        else
-        {
-            strncpy( (char*)pName, impl->presets[preset].name, RADIO_PRESET_NAME_MAX_LENGTH );
-        }
-        
-    }
-    /*Just adding some meaninful value, when supporting new spec this must be fetch the system*/
-    *pNameLength = RADIO_PRESET_NAME_MAX_LENGTH;
-
-    DEBUG_API("<-XARadioItfImpl_GetPreset");
-    return ret;
-}
-
-/**
  * XAresult XARadioItfImpl_RegisterRadioCallback(XARadioItf self,
  *                                               xaRadioCallback callback,
  *                                               void * pContext)
@@ -695,7 +520,6 @@
  **/
 XARadioItfImpl* XARadioItfImpl_Create(XAAdaptationBaseCtx *adapCtx)
 {
-    XAuint16 index = 0;
 
     XARadioItfImpl *self = (XARadioItfImpl*)
         calloc(1,sizeof(XARadioItfImpl));
@@ -719,32 +543,15 @@
         self->itf.GetSignalStrength = XARadioItfImpl_GetSignalStrength;
         self->itf.Seek = XARadioItfImpl_Seek;
         self->itf.StopSeeking = XARadioItfImpl_StopSeeking;
-        self->itf.GetNumberOfPresets = XARadioItfImpl_GetNumberOfPresets;
-        self->itf.SetPreset = XARadioItfImpl_SetPreset;
-        self->itf.GetPreset = XARadioItfImpl_GetPreset;
         self->itf.RegisterRadioCallback = XARadioItfImpl_RegisterRadioCallback;
 
         /* init variables */
 
         self->squelch = XA_BOOLEAN_FALSE;
         self->stereoMode = RADIO_DEFAULT_STEREO_MODE;
-
-        self->preset = 0;
-        self->numOfPresets = RADIO_NUM_OF_PRESETS;
-
-        for (index = 0; index < self->numOfPresets; index++)
-        {
-            self->presets[index].freq = RADIO_DEFAULT_FREQ;
-            self->presets[index].range = RADIO_DEFAULT_FREQ_RANGE;
-            self->presets[index].stereoMode = RADIO_DEFAULT_STEREO_MODE;
-            self->presets[index].name = calloc(1, RADIO_PRESET_NAME_MAX_LENGTH+1);
-            strncpy( self->presets[index].name, RadioPresetDefaultName, RADIO_PRESET_NAME_MAX_LENGTH );
-        }
-
         self->callback = NULL;
         self->context = NULL;
         self->cbPtrToSelf = NULL;
-
         self->adapCtx = adapCtx;
 
         XAAdaptationBase_AddEventHandler( adapCtx, &XARadioItfImpl_AdaptCb, XA_RADIOITFEVENTS, self );
@@ -762,20 +569,11 @@
  **/
 void XARadioItfImpl_Free(XARadioItfImpl* self)
 {
-    XAuint16 index = 0;
     DEBUG_API("->XARadioItfImpl_Free");
     XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio);
-
-    
     XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XARadioItfImpl_AdaptCb );
 
-    XARadioItfAdapt_Free(self->adapCtx);
-
-    for (index = 0; index < self->numOfPresets; index++)
-    {
-        free(self->presets[index].name);
-    }
-
+    XARadioItfAdapt_Free();
     assert(self==self->self);
     free(self);
 
@@ -789,6 +587,9 @@
 void XARadioItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
 {
     XARadioItfImpl* impl =(XARadioItfImpl*)pHandlerCtx;
+    XAuint32 eventData = 0;
+    XAboolean eventBoolean = XA_BOOLEAN_FALSE;
+    
     DEBUG_API("->XARadioItfimpl_AdaptCb");
 
     if(!impl)
@@ -801,19 +602,37 @@
 
     if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_CHANGED && impl->callback )
     {
-        DEBUG_API("Frequency changed in adaptation");
-        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_CHANGED, 0, XA_BOOLEAN_FALSE );
+        DEBUG_API("Frequency changed in adaptation"); 
+        eventData = *(XAuint32*)event->data;
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_CHANGED, eventData, eventBoolean );
     }
+    
     else if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED && impl->callback )
     {
         DEBUG_API("Frequency range changed in adaptation");
-        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED, 0, XA_BOOLEAN_FALSE  );
+
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED, eventData, eventBoolean  );
     }
+    
     else if( event->eventid == XA_ADAPT_RADIO_SEEK_COMPLETE && impl->callback )
     {
         DEBUG_API("Seek complete in adaptation");
-        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SEEK_COMPLETED, 0, XA_BOOLEAN_FALSE  );
+       	eventBoolean = *(XAboolean*)event->data;        
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SEEK_COMPLETED, eventData, eventBoolean  );     
     }
+    
+    else if( event->eventid == XA_ADAPT_RADIO_STEREO_STATUS_CHANGED && impl->callback )
+    {
+        DEBUG_API("Stereo status change in adaptation");
+      	eventBoolean = *(XAboolean*)event->data;          
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_STEREO_STATUS_CHANGED, eventData, eventBoolean  );
+    } 
+        
+    else if( event->eventid == XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED && impl->callback )
+    {
+        DEBUG_API("Signal Strength Change in adaptation");
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SIGNAL_STRENGTH_CHANGED, eventData, eventBoolean  );
+    }      
     else
     {
         /* do nothing */
@@ -821,4 +640,3 @@
     DEBUG_API("<-XARadioItfimpl_AdaptCb");
 }
 
-