khronosfws/openmax_al/src/radio/xaradioitf.c
changeset 47 c2e43643db4c
parent 42 1fa3fb47b1e3
child 52 4ce423f34688
equal deleted inserted replaced
42:1fa3fb47b1e3 47:c2e43643db4c
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description: 
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <stdio.h>
    18 #include <stdio.h>
    19 #include <stdlib.h>
    19 #include <stdlib.h>
   157                                                XAuint32 * pMinFreq,
   157                                                XAuint32 * pMinFreq,
   158                                                XAuint32 * pMaxFreq,
   158                                                XAuint32 * pMaxFreq,
   159                                                XAuint32 * pFreqInterval)
   159                                                XAuint32 * pFreqInterval)
   160 {
   160 {
   161     XAresult ret = XA_RESULT_SUCCESS;
   161     XAresult ret = XA_RESULT_SUCCESS;
   162     XAboolean isSupported = XA_BOOLEAN_FALSE;
   162     XARadioItfImpl* impl = GetImpl(self);
   163     XARadioItfImpl* impl = GetImpl(self);
   163 
   164 
       
   165    *pFreqInterval = FREQINTERVAL;   
       
   166 		    
       
   167     DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties");
   164     DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties");
   168 
   165 
   169     if(!impl || !pMinFreq || !pMaxFreq || !pFreqInterval)
   166     if(!impl || !pMinFreq || !pMaxFreq || !pFreqInterval)
   170     {
   167     {
   171         /* invalid parameter */
   168         /* invalid parameter */
   172         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   169         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   173         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
   170         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
   174         return XA_RESULT_PARAMETER_INVALID;
   171         return XA_RESULT_PARAMETER_INVALID;
   175     }
   172     }
   176 		
   173 
   177     ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx,
   174     ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx,
   178             range, pMinFreq, pMaxFreq );
   175             range, pMinFreq, pMaxFreq );
       
   176     if (ret == XA_RESULT_SUCCESS)
       
   177     {
       
   178         *pFreqInterval = FREQINTERVAL;
       
   179     }
   179 
   180 
   180     DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
   181     DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
   181     return ret;
   182     return ret;
   182 }
   183 }
   183 
   184 
   194     XAresult ret = XA_RESULT_SUCCESS;
   195     XAresult ret = XA_RESULT_SUCCESS;
   195     XAuint8 range = 1; // Default to EuroAmerica
   196     XAuint8 range = 1; // Default to EuroAmerica
   196     XAuint32 minFreq;
   197     XAuint32 minFreq;
   197     XAuint32 maxFreq;
   198     XAuint32 maxFreq;
   198    	XAuint32 freqInterval;
   199    	XAuint32 freqInterval;
   199         
   200 
   200     XARadioItfImpl* impl = GetImpl(self);
   201     XARadioItfImpl* impl = GetImpl(self);
   201     DEBUG_API("->XARadioItfImpl_SetFrequency");
   202     DEBUG_API("->XARadioItfImpl_SetFrequency");
   202     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
   203     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
   203 
   204 
   204     if(!impl)
   205     if(!impl)
   206         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   207         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   207         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   208         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   208         DEBUG_API("<-XARadioItfImpl_SetFrequency");
   209         DEBUG_API("<-XARadioItfImpl_SetFrequency");
   209         return XA_RESULT_PARAMETER_INVALID;
   210         return XA_RESULT_PARAMETER_INVALID;
   210     }
   211     }
   211     
   212 
   212     // Check for valid entries: 
   213     // Check for valid entries:
   213  		ret = XARadioItfImpl_GetFreqRangeProperties(self, range, &minFreq, &maxFreq, &freqInterval);   
   214  		ret = XARadioItfImpl_GetFreqRangeProperties(self, range, &minFreq, &maxFreq, &freqInterval);
   214     if (ret != XA_RESULT_SUCCESS)
   215     if (ret != XA_RESULT_SUCCESS)
   215     {
   216     {
   216     	XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   217     	XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   217     	DEBUG_API("<-XARadioItfImpl_SetFrequency");    	
   218     	DEBUG_API("<-XARadioItfImpl_SetFrequency");
   218     	return ret;
   219     	return ret;
   219     }		
   220     }
   220     
   221 
   221     if ( (freq < minFreq) || (freq > maxFreq) )
   222     if ( (freq < minFreq) || (freq > maxFreq) )
   222     {
   223     {
   223     	XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   224     	XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   224     	DEBUG_API("<-XARadioItfImpl_SetFrequency");    	
   225     	DEBUG_API("<-XARadioItfImpl_SetFrequency");
   225     	return XA_RESULT_PARAMETER_INVALID;
   226     	return XA_RESULT_PARAMETER_INVALID;
   226     }	  
   227     }
   227            
   228 
   228    	ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq );
   229    	ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq );
   229 
   230 
   230     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   231     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   231     DEBUG_API("<-XARadioItfImpl_SetFrequency");
   232     DEBUG_API("<-XARadioItfImpl_SetFrequency");
   232     return ret;
   233     return ret;
   370         ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationMMFCtx*)impl->adapCtx, mode );
   371         ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationMMFCtx*)impl->adapCtx, mode );
   371        	if ( ret == XA_RESULT_SUCCESS )
   372        	if ( ret == XA_RESULT_SUCCESS )
   372         {
   373         {
   373          	  impl->stereoMode = mode;
   374          	  impl->stereoMode = mode;
   374         }
   375         }
   375     }    
   376     }
   376     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   377     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
   377     DEBUG_API("<-XARadioItfImpl_SetStereoMode");
   378     DEBUG_API("<-XARadioItfImpl_SetStereoMode");
   378     return ret;
   379     return ret;
   379 }
   380 }
   380 
   381 
   539                                   XAuint8 * pRange,
   540                                   XAuint8 * pRange,
   540                                   XAuint32 * pMode,
   541                                   XAuint32 * pMode,
   541                                   XAchar * pName,
   542                                   XAchar * pName,
   542                                   XAuint16 * pNameLength)
   543                                   XAuint16 * pNameLength)
   543 {
   544 {
   544  
   545 
   545     XAresult ret = XA_RESULT_FEATURE_UNSUPPORTED;
   546     XAresult ret = XA_RESULT_FEATURE_UNSUPPORTED;
   546 
   547 
   547     DEBUG_API("<-XARadioItfImpl_GetPreset");
   548     DEBUG_API("<-XARadioItfImpl_GetPreset");
   548     return ret;
   549     return ret;
   549 }
   550 }
   655 void XARadioItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
   656 void XARadioItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
   656 {
   657 {
   657     XARadioItfImpl* impl =(XARadioItfImpl*)pHandlerCtx;
   658     XARadioItfImpl* impl =(XARadioItfImpl*)pHandlerCtx;
   658     XAuint32 eventData = 0;
   659     XAuint32 eventData = 0;
   659     XAboolean eventBoolean = XA_BOOLEAN_FALSE;
   660     XAboolean eventBoolean = XA_BOOLEAN_FALSE;
   660     
   661 
   661     DEBUG_API("->XARadioItfimpl_AdaptCb");
   662     DEBUG_API("->XARadioItfimpl_AdaptCb");
   662 
   663 
   663     if(!impl)
   664     if(!impl)
   664     {
   665     {
   665         DEBUG_ERR("XARadioItfImpl_AdaptCb, invalid context pointer!");
   666         DEBUG_ERR("XARadioItfImpl_AdaptCb, invalid context pointer!");
   668     }
   669     }
   669     assert(event);
   670     assert(event);
   670 
   671 
   671     if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_CHANGED && impl->callback )
   672     if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_CHANGED && impl->callback )
   672     {
   673     {
   673         DEBUG_API("Frequency changed in adaptation"); 
   674         DEBUG_API("Frequency changed in adaptation");
   674         eventData = *(XAuint32*)event->data;
   675         eventData = *(XAuint32*)event->data;
   675         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_CHANGED, eventData, eventBoolean );
   676         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_CHANGED, eventData, eventBoolean );
   676     }
   677     }
   677     
   678 
   678     else if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED && impl->callback )
   679     else if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED && impl->callback )
   679     {
   680     {
   680         DEBUG_API("Frequency range changed in adaptation");
   681         DEBUG_API("Frequency range changed in adaptation");
   681 
   682 
   682         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED, eventData, eventBoolean  );
   683         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED, eventData, eventBoolean  );
   683     }
   684     }
   684     
   685 
   685     else if( event->eventid == XA_ADAPT_RADIO_SEEK_COMPLETE && impl->callback )
   686     else if( event->eventid == XA_ADAPT_RADIO_SEEK_COMPLETE && impl->callback )
   686     {
   687     {
   687         DEBUG_API("Seek complete in adaptation");
   688         DEBUG_API("Seek complete in adaptation");
   688        	eventBoolean = *(XAboolean*)event->data;        
   689        	eventBoolean = *(XAboolean*)event->data;
   689         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SEEK_COMPLETED, eventData, eventBoolean  );     
   690         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SEEK_COMPLETED, eventData, eventBoolean  );
   690     }
   691     }
   691     
   692 
   692     else if( event->eventid == XA_ADAPT_RADIO_STEREO_STATUS_CHANGED && impl->callback )
   693     else if( event->eventid == XA_ADAPT_RADIO_STEREO_STATUS_CHANGED && impl->callback )
   693     {
   694     {
   694         DEBUG_API("Stereo status change in adaptation");
   695         DEBUG_API("Stereo status change in adaptation");
   695       	eventBoolean = *(XAboolean*)event->data;          
   696       	eventBoolean = *(XAboolean*)event->data;
   696         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_STEREO_STATUS_CHANGED, eventData, eventBoolean  );
   697         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_STEREO_STATUS_CHANGED, eventData, eventBoolean  );
   697     } 
   698     }
   698         
   699 
   699     else if( event->eventid == XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED && impl->callback )
   700     else if( event->eventid == XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED && impl->callback )
   700     {
   701     {
   701         DEBUG_API("Signal Strength Change in adaptation");
   702         DEBUG_API("Signal Strength Change in adaptation");
   702         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SIGNAL_STRENGTH_CHANGED, eventData, eventBoolean  );
   703         impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SIGNAL_STRENGTH_CHANGED, eventData, eventBoolean  );
   703     }      
   704     }
   704     else
   705     else
   705     {
   706     {
   706         /* do nothing */
   707         /* do nothing */
   707     }
   708     }
   708     DEBUG_API("<-XARadioItfimpl_AdaptCb");
   709     DEBUG_API("<-XARadioItfimpl_AdaptCb");