diff -r 095bea5f582e -r 0ac9a5310753 khronosfws/openmax_al/src/radio/xaradioitf.c --- a/khronosfws/openmax_al/src/radio/xaradioitf.c Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,711 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include "xaradioitf.h" -#include "xaradioitfadaptation.h" -#include "xathreadsafety.h" - -#define FREQINTERVAL 200000 - -/** - * XARadioItfImpl* GetImpl(XARadioItf self) - * Description: Validated interface pointer and cast it to implementations pointer. - **/ -static XARadioItfImpl* GetImpl(XARadioItf self) -{ - if(self) - { - XARadioItfImpl *impl = (XARadioItfImpl*)(*self); - if(impl && impl == impl->self) - { - return impl; - } - } - return NULL; -} - -/** - * Base interface XARadioItf implementation - */ - -/** - * XAresult XARadioItfImpl_SetFreqRange(XARadioItf self, XAuint8 range) - * Description: Sets the frequency range. Asynchronous – xaRadioCallback() callback with - * XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED event is used for notifying of the result. - **/ -XAresult XARadioItfImpl_SetFreqRange(XARadioItf self, XAuint8 range) -{ - XAresult ret = XA_RESULT_PARAMETER_INVALID; - XAboolean isSupported = XA_BOOLEAN_FALSE; - XARadioItfImpl* impl = GetImpl(self); - - DEBUG_API("->XARadioItfImpl_SetFreqRange"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_SetFreqRange"); - - return ret; - } - - ret = XARadioItfAdapt_IsFreqRangeSupported(range, &isSupported); - - if ( ret == XA_RESULT_SUCCESS && isSupported == XA_BOOLEAN_TRUE ) - { - ret = XARadioItfAdapt_SetFreqRange((XAAdaptationMMFCtx*)impl->adapCtx, range); - } - else if (!isSupported) - { - ret = XA_RESULT_PARAMETER_INVALID; - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_SetFreqRange"); - return ret; -} - -/** - * XAresult XARadioItfImpl_GetFreqRange(XARadioItf self, XAuint8 * pRange) - * Description: Gets the current frequency range. - **/ -XAresult XARadioItfImpl_GetFreqRange(XARadioItf self, XAuint8 * pRange) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_GetFreqRange"); - - if(!impl || !pRange) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_GetFreqRange"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_GetFreqRange(pRange); - - DEBUG_API("<-XARadioItfImpl_GetFreqRange"); - return ret; -} - -/** - * XAresult XARadioItfImpl_IsFreqRangeSupported(XARadioItf self, - * XAuint8 range, - * XAboolean * pSupported) - * Description: Queries if the given frequency range is supported. - **/ -XAresult XARadioItfImpl_IsFreqRangeSupported(XARadioItf self, - XAuint8 range, - XAboolean * pSupported) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_IsFreqRangeSupported"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !pSupported) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_IsFreqRangeSupported"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_IsFreqRangeSupported( range, pSupported ); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_IsFreqRangeSupported"); - return ret; -} - - -/** - * XAresult XARadioItfImpl_GetFreqRangeProperties(XARadioItf self, - * XAuint8 range, - * XAuint32 * pMinFreq, - * XAuint32 * pMaxFreq, - * XAuint32 * pFreqInterval) - * Description: Returns the minimum and maximum supported frequencies and the - * modulation of the given frequency range. - **/ -XAresult XARadioItfImpl_GetFreqRangeProperties(XARadioItf self, - XAuint8 range, - XAuint32 * pMinFreq, - XAuint32 * pMaxFreq, - XAuint32 * pFreqInterval) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - - DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties"); - - if(!impl || !pMinFreq || !pMaxFreq || !pFreqInterval) - { - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx, - range, pMinFreq, pMaxFreq ); - if (ret == XA_RESULT_SUCCESS) - { - *pFreqInterval = FREQINTERVAL; - } - - DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties"); - return ret; -} - -/** - * XAresult XARadioItfImpl_SetFrequency(XARadioItf self, XAuint32 freq) - * Description: Sets the frequency asynchronously – xaRadioCallback() callback - * with XA_RADIO_EVENT_FREQUENCY_CHANGED event is used for notifying - * of the result. The implementation rounds the given value to the - * nearest supported one. See pFreqInterval parameter of - * GetFreqRangeProperties() method. - **/ -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"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_SetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - // 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"); - return ret; -} - -/** - * XAresult XARadioItfImpl_CancelSetFrequency(XARadioItf self) - * Description: Cancels an outstanding SetFrequency() request. The method - * blocks while canceling the outstanding request. Has not effect - * if no set frequency operation is ongoing. - **/ -XAresult XARadioItfImpl_CancelSetFrequency(XARadioItf self) - -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_CancelSetFrequency"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_CancelSetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_CancelSetFrequency(); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_CancelSetFrequency"); - return ret; -} - -/** - * XAresult XARadioItfImpl_GetFrequency(XARadioItf self, XAuint32 * pFreq) - * Description: Gets the current frequency. - **/ -XAresult XARadioItfImpl_GetFrequency(XARadioItf self, XAuint32 * pFreq) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_GetFrequency"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !pFreq) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_GetFrequency"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_GetFrequency(pFreq); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_GetFrequency"); - return ret; -} - -/** - * XAresult XARadioItfImpl_SetSquelch(XARadioItf self, XAboolean squelch) - * Description: Toggles the squelch (muting in frequencies without broadcast). - **/ -XAresult XARadioItfImpl_SetSquelch(XARadioItf self, XAboolean squelch) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_SetSquelch"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_SetSquelch"); - return XA_RESULT_PARAMETER_INVALID; - } - - if (impl->squelch != squelch) - { - ret = XARadioItfAdapt_SetSquelch( squelch ); - if ( ret == XA_RESULT_SUCCESS ) - { - impl->squelch = squelch; - } - } - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_SetSquelch"); - return ret; -} - -/** - * XAresult XARadioItfImpl_GetSquelch(XARadioItf self, XAboolean * pSquelch) - * Description: Queries the squelch setting (muting in frequencies without broadcast). - **/ -XAresult XARadioItfImpl_GetSquelch(XARadioItf self, XAboolean * pSquelch) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_GetSquelch"); - if(!impl || !pSquelch) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARadioItfImpl_GetSquelch"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_GetSquelch( pSquelch ); - - DEBUG_API("<-XARadioItfImpl_GetSquelch"); - return ret; -} - -/** - * XAresult XARadioItfImpl_SetStereoMode(XARadioItf self, XAuint32 mode) - * Description: Sets the current stereo mode. - **/ -XAresult XARadioItfImpl_SetStereoMode(XARadioItf self, XAuint32 mode) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_SetStereoMode"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if( !impl || mode > XA_STEREOMODE_AUTO ) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_SetStereoMode"); - return XA_RESULT_PARAMETER_INVALID; - } - if ( impl->stereoMode != mode) - { - ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationMMFCtx*)impl->adapCtx, mode ); - if ( ret == XA_RESULT_SUCCESS ) - { - impl->stereoMode = mode; - } - } - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_SetStereoMode"); - return ret; -} - -/** - * XAresult XARadioItfImpl_GetStereoMode(XARadioItf self, XAuint32 * pMode) - * Description: Queries the current stereo mode. - **/ -XAresult XARadioItfImpl_GetStereoMode(XARadioItf self, XAuint32 * pMode) -{ - - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_GetStereoMode"); - if(!impl || !pMode) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARadioItfImpl_GetStereoMode"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_GetStereoMode( pMode ); - - DEBUG_API("<-XARadioItfImpl_GetStereoMode"); - return ret; -} - -/** - * XAresult XARadioItfImpl_GetSignalStrength(XARadioItf self, XAuint32 * pStrength) - * Description: Returns the signal strength in per cents. - **/ -XAresult XARadioItfImpl_GetSignalStrength(XARadioItf self, XAuint32 * pStrength) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_GetSignalStrength"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl || !pStrength) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_GetSignalStrength"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_GetSignalStrength( pStrength ); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_GetSignalStrength"); - return ret; -} - -/** - * XAresult XARadioItfImpl_Seek(XARadioItf self, XAboolean upwards) - * Description: Starts the seek from the current frequency to the given direction. - * Asynchronous – xaRadioCallback() callback with XA_RADIO_EVENT_SEEK_COMPLETED - * event is used for notifying of the result. If the end of the tuner’s - * frequency band is reached before a signal was found, the scan continues - * from the other end until a signal is found or the original frequency is reached. - **/ -XAresult XARadioItfImpl_Seek(XARadioItf self, XAboolean upwards) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_Seek"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - /* invalid parameter */ - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_Seek"); - return XA_RESULT_PARAMETER_INVALID; - } - - ret = XARadioItfAdapt_Seek( (XAAdaptationMMFCtx*)impl->adapCtx, upwards ); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_Seek"); - return ret; -} - -/** - * XAresult XARadioItfImpl_StopSeeking(XARadioItf self) - * Description: Cancels an outstanding seek request. The method blocks while canceling - * the outstanding request. After cancellation, the frequency is the one - * where seeking stopped. Has not effect if no seek operation is ongoing. - **/ -XAresult XARadioItfImpl_StopSeeking(XARadioItf self) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_StopSeeking"); - XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio); - - if(!impl) - { - /* invalid parameter */ - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - DEBUG_API("<-XARadioItfImpl_StopSeeking"); - return XA_RESULT_PARAMETER_INVALID; - } - - XARadioItfAdapt_StopSeeking( (XAAdaptationMMFCtx*)impl->adapCtx ); - - XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio); - DEBUG_API("<-XARadioItfImpl_StopSeeking"); - return ret; -} - -/** - * 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_FEATURE_UNSUPPORTED; - - 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_FEATURE_UNSUPPORTED; - - 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) -{ - - XAresult ret = XA_RESULT_FEATURE_UNSUPPORTED; - - DEBUG_API("<-XARadioItfImpl_GetPreset"); - return ret; -} - -/** - * XAresult XARadioItfImpl_RegisterRadioCallback(XARadioItf self, - * xaRadioCallback callback, - * void * pContext) - * Description: Sets or clears the xaRadioCallback. - **/ -XAresult XARadioItfImpl_RegisterRadioCallback(XARadioItf self, - xaRadioCallback callback, - void * pContext) -{ - XAresult ret = XA_RESULT_SUCCESS; - XARadioItfImpl* impl = GetImpl(self); - DEBUG_API("->XARadioItfImpl_RegisterRadioCallback"); - - if(!impl) - { - DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); - /* invalid parameter */ - DEBUG_API("<-XARadioItfImpl_RegisterRadioCallback"); - return XA_RESULT_PARAMETER_INVALID; - } - - impl->callback = callback; - impl->context = pContext; - impl->cbPtrToSelf = self; - - DEBUG_API("<-XARadioItfImpl_RegisterRadioCallback"); - return ret; -} - -/** - * XARadioItfImpl -specific methods - **/ - -/** - * XARadioItfImplImpl* XARadioItfImpl_Create() - * Description: Allocate and initialize RadioItfImpl - **/ -XARadioItfImpl* XARadioItfImpl_Create(XAAdaptationBaseCtx *adapCtx) -{ - - XARadioItfImpl *self = (XARadioItfImpl*) - calloc(1,sizeof(XARadioItfImpl)); - - DEBUG_API("->XARadioItfImpl_Create"); - - if(self) - { - /* init itf default implementation */ - self->itf.SetFreqRange = XARadioItfImpl_SetFreqRange; - self->itf.GetFreqRange = XARadioItfImpl_GetFreqRange; - self->itf.IsFreqRangeSupported = XARadioItfImpl_IsFreqRangeSupported; - self->itf.GetFreqRangeProperties = XARadioItfImpl_GetFreqRangeProperties; - self->itf.SetFrequency = XARadioItfImpl_SetFrequency; - self->itf.CancelSetFrequency = XARadioItfImpl_CancelSetFrequency; - self->itf.GetFrequency = XARadioItfImpl_GetFrequency; - self->itf.SetSquelch = XARadioItfImpl_SetSquelch; - self->itf.GetSquelch = XARadioItfImpl_GetSquelch; - self->itf.SetStereoMode = XARadioItfImpl_SetStereoMode; - self->itf.GetStereoMode = XARadioItfImpl_GetStereoMode; - self->itf.GetSignalStrength = XARadioItfImpl_GetSignalStrength; - self->itf.Seek = XARadioItfImpl_Seek; - self->itf.StopSeeking = XARadioItfImpl_StopSeeking; - self->itf.RegisterRadioCallback = XARadioItfImpl_RegisterRadioCallback; - - /* init variables */ - - self->squelch = XA_BOOLEAN_FALSE; - self->stereoMode = XA_STEREOMODE_STEREO; - self->callback = NULL; - self->context = NULL; - self->cbPtrToSelf = NULL; - self->adapCtx = adapCtx; - - XAAdaptationBase_AddEventHandler( adapCtx, &XARadioItfImpl_AdaptCb, XA_RADIOITFEVENTS, self ); - - self->self = self; - } - - DEBUG_API("<-XARadioItfImpl_Create"); - return self; -} - -/** - * void XARadioItfImpl_Free(XARadioItfImpl* self) - * Description: Free all resources reserved at XARadioItfImpl_Create - **/ -void XARadioItfImpl_Free(XARadioItfImpl* self) -{ - DEBUG_API("->XARadioItfImpl_Free"); - XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio); - XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XARadioItfImpl_AdaptCb ); - - XARadioItfAdapt_Free(); - assert(self==self->self); - free(self); - - XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSRadio); - DEBUG_API("<-XARadioItfImpl_Free"); -} - -/* void XARadioItfimpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event ) - * Description: Event handler for adaptation events - */ -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) - { - DEBUG_ERR("XARadioItfImpl_AdaptCb, invalid context pointer!"); - DEBUG_API("<-XARadioItfImpl_AdaptCb"); - return; - } - assert(event); - - if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_CHANGED && impl->callback ) - { - 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, eventData, eventBoolean ); - } - - else if( event->eventid == XA_ADAPT_RADIO_SEEK_COMPLETE && impl->callback ) - { - DEBUG_API("Seek complete in adaptation"); - 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 */ - } - DEBUG_API("<-XARadioItfimpl_AdaptCb"); -} -