khronosfws/openmax_al/src/common/xanokiavolumeextitf.c
changeset 16 43d09473c595
child 25 6f7ceef7b1d1
equal deleted inserted replaced
14:80975da52420 16:43d09473c595
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 #include <stdio.h>
       
    19 #include <stdlib.h>
       
    20 #include <assert.h>
       
    21 
       
    22 #include "xanvolumeextitf.h"
       
    23 #include "xanokiavolumeextitfadaptationmmf.h"
       
    24 
       
    25 /**
       
    26  * XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self)
       
    27  * Description: Validated interface pointer and cast it to implementations pointer.
       
    28  **/
       
    29 static XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self)
       
    30 {
       
    31     if(self)
       
    32     {
       
    33         XANokiaVolumeExtItfImpl* impl = (XANokiaVolumeExtItfImpl*)(*self);
       
    34         if(impl && impl == impl->self)
       
    35         {
       
    36             return impl;
       
    37         }
       
    38     }
       
    39     return NULL;
       
    40 }
       
    41 
       
    42 /**
       
    43  * XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(XANokiaVolumeExtItf self,
       
    44  *                                               xaNokiaVolumeExtCallback callback,
       
    45  *                                               void * pContext)
       
    46  * Description: Sets or clears the xaVolumeCallback.
       
    47  **/
       
    48 XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(XANokiaVolumeExtItf self,
       
    49                                               xaNokiaVolumeExtCallback callback,
       
    50                                               void * pContext)
       
    51 {
       
    52     XAresult ret = XA_RESULT_SUCCESS;
       
    53     XANokiaVolumeExtItfImpl* impl = GetImpl(self);
       
    54     DEBUG_API("->XANokiaVolumeExtItfImpl_RegisterVolumeCallback");
       
    55 
       
    56     if(!impl)
       
    57     {
       
    58         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
    59         /* invalid parameter */
       
    60         DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback");
       
    61         return XA_RESULT_PARAMETER_INVALID;
       
    62     }
       
    63 
       
    64     impl->callback = callback;
       
    65     impl->context = pContext;
       
    66     impl->cbPtrToSelf = self;
       
    67 
       
    68     DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback");
       
    69     return ret;
       
    70 }
       
    71 
       
    72 /**
       
    73  * Base interface XANokiaVolumeExtItf implementation
       
    74  */
       
    75 
       
    76 /**
       
    77  * XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel level)
       
    78  * Description: Sets the object's volume level.
       
    79  **/
       
    80 XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel level)
       
    81 {
       
    82     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
    83     XAresult ret = XA_RESULT_SUCCESS;
       
    84 
       
    85     XAmillibel maximumLevel = 0; 
       
    86  
       
    87     DEBUG_API("->XANokiaVolumeExtItfImpl_SetVolumeLevel");
       
    88 
       
    89     /* check maximum volume level */
       
    90   	if(XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(self, &maximumLevel) != XA_RESULT_SUCCESS)
       
    91    	{
       
    92         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
    93         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel");
       
    94         /* cannot solve maximum volume level */
       
    95         return XA_RESULT_PARAMETER_INVALID;
       
    96    	}
       
    97     
       
    98     if(!impl || level > maximumLevel)
       
    99     {
       
   100         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   101         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel");
       
   102         /* invalid parameter */
       
   103         return XA_RESULT_PARAMETER_INVALID;
       
   104     }
       
   105 
       
   106     impl->volumeLevel = level;
       
   107 
       
   108     DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel");
       
   109     return ret ;
       
   110 }
       
   111 
       
   112 /**
       
   113  * XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pLevel)
       
   114  * Description: Gets the object’s volume level.
       
   115  **/
       
   116 XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pLevel)
       
   117 {
       
   118     XAresult ret = XA_RESULT_SUCCESS;
       
   119     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   120     DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel");
       
   121 
       
   122     if(!impl || !pLevel)
       
   123     {
       
   124         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   125         DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel");
       
   126         /* invalid parameter */
       
   127         return XA_RESULT_PARAMETER_INVALID;
       
   128     }
       
   129 
       
   130     *pLevel = impl->volumeLevel;
       
   131 
       
   132     DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel");
       
   133     return ret;
       
   134 }
       
   135 
       
   136 /**
       
   137  * XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf  self, XAmillibel *pMaxLevel)
       
   138  * Description: Gets the maximum supported level.
       
   139  **/
       
   140 XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf  self, XAmillibel *pMaxLevel)
       
   141 {
       
   142     XAresult ret = XA_RESULT_SUCCESS;
       
   143     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   144     DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel");
       
   145 
       
   146     if(!impl || !pMaxLevel)
       
   147     {
       
   148         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   149         DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel");
       
   150         /* invalid parameter */
       
   151         return XA_RESULT_PARAMETER_INVALID;
       
   152     }
       
   153 
       
   154     *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL;
       
   155     
       
   156     DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel");
       
   157     return ret;
       
   158 }
       
   159 
       
   160 /**
       
   161  * XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, XAboolean mute)
       
   162  * Description: Mutes or unmutes the object.
       
   163  **/
       
   164 XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, XAboolean mute)
       
   165 {
       
   166     XAresult ret = XA_RESULT_SUCCESS;
       
   167     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   168     DEBUG_API("->XANokiaVolumeExtItfImpl_SetMute");
       
   169 
       
   170     if(!impl)
       
   171     {
       
   172         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   173         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute");
       
   174         /* invalid parameter */
       
   175         return XA_RESULT_PARAMETER_INVALID;
       
   176     }
       
   177 
       
   178     ret = XAAdaptationBase_ThreadEntry(impl->adapCtx);
       
   179     if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED )
       
   180     {
       
   181         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute");
       
   182         return ret;
       
   183     }
       
   184     /* check is mute state changed */
       
   185     if(mute != impl->mute)
       
   186     {
       
   187         if(impl->adapCtx->fwtype == FWMgrFWMMF)
       
   188         {
       
   189         ret = XANokiaVolumeExtItfAdapt_SetMute((XAAdaptationMMFCtx*)impl->adapCtx,  mute);
       
   190         }
       
   191 
       
   192         if(ret == XA_RESULT_SUCCESS)
       
   193         {
       
   194             impl->mute = mute;
       
   195         }
       
   196     }
       
   197 
       
   198     XAAdaptationBase_ThreadExit(impl->adapCtx);
       
   199     DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute");
       
   200     return ret;
       
   201 }
       
   202 
       
   203 /**
       
   204  * XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, XAboolean *pMute)
       
   205  * Description: Retrieves the object's state.
       
   206  **/
       
   207 XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, XAboolean *pMute)
       
   208 {
       
   209     XAresult ret = XA_RESULT_SUCCESS;
       
   210     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   211     DEBUG_API("->XANokiaVolumeExtItfImpl_GetMute");
       
   212 
       
   213     if(!impl || !pMute)
       
   214     {
       
   215         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   216         DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute");
       
   217         /* invalid parameter */
       
   218         return XA_RESULT_PARAMETER_INVALID;
       
   219     }
       
   220 
       
   221     *pMute = impl->mute;
       
   222 
       
   223     DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute");
       
   224     return ret;
       
   225 }
       
   226 
       
   227 /**
       
   228  * XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(XANokiaVolumeExtItf self, XAboolean enable)
       
   229  * Description: Enables or disables the stereo positioning effect.
       
   230  **/
       
   231 XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(XANokiaVolumeExtItf self, XAboolean enable)
       
   232 {
       
   233     XAresult ret = XA_RESULT_SUCCESS;
       
   234     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   235     DEBUG_API("->XANokiaVolumeExtItfImpl_EnableStereoPosition");
       
   236 
       
   237     if(!impl)
       
   238     {
       
   239         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   240         DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition");
       
   241         /* invalid parameter */
       
   242         return XA_RESULT_PARAMETER_INVALID;
       
   243     }
       
   244 
       
   245     ret = XAAdaptationBase_ThreadEntry(impl->adapCtx);
       
   246     if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED )
       
   247     {
       
   248         DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition");
       
   249         return ret;
       
   250     }
       
   251     /* Check is stereo position state changed */
       
   252     if(enable != impl->enableStereoPos)
       
   253     {
       
   254         if(impl->adapCtx->fwtype == FWMgrFWMMF)
       
   255         {
       
   256         ret = XANokiaVolumeExtItfAdapt_EnableStereoPosition((XAAdaptationMMFCtx*)impl->adapCtx,
       
   257                                                     enable);
       
   258         }
       
   259 
       
   260         if(ret == XA_RESULT_SUCCESS)
       
   261         {
       
   262             impl->enableStereoPos = enable;
       
   263         }
       
   264     }
       
   265 
       
   266     XAAdaptationBase_ThreadExit(impl->adapCtx);
       
   267     DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition");
       
   268     return ret;
       
   269 }
       
   270 
       
   271 /**
       
   272  * XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(XANokiaVolumeExtItf self,
       
   273  *                                                  XAboolean *pEnable)
       
   274  * Description: Returns the enabled state of the stereo positioning effect.
       
   275  **/
       
   276 XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(XANokiaVolumeExtItf self,
       
   277                                                  XAboolean *pEnable)
       
   278 {
       
   279     XAresult ret = XA_RESULT_SUCCESS;
       
   280     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   281     DEBUG_API("->XANokiaVolumeExtItfImpl_IsEnabledStereoPosition");
       
   282 
       
   283     if(!impl || !pEnable)
       
   284     {
       
   285         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   286         DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition");
       
   287         /* invalid parameter */
       
   288         return XA_RESULT_PARAMETER_INVALID;
       
   289     }
       
   290 
       
   291     *pEnable = impl->enableStereoPos;
       
   292 
       
   293     DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition");
       
   294     return ret;
       
   295 }
       
   296 
       
   297 /**
       
   298  * XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self,
       
   299  *                                            XApermille stereoPosition)
       
   300  * Description: Sets the stereo position of the object.
       
   301  **/
       
   302 XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self,
       
   303                                            XApermille stereoPosition)
       
   304 {
       
   305     XAresult ret = XA_RESULT_SUCCESS;
       
   306     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   307     DEBUG_API("->XANokiaVolumeExtItfImpl_SetStereoPosition");
       
   308 
       
   309     if(!impl || (stereoPosition < STEREO_POSITION_LEFT) ||
       
   310         (stereoPosition > STEREO_POSITION_RIGHT))
       
   311     {
       
   312         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   313         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition");
       
   314         /* invalid parameter */
       
   315         return XA_RESULT_PARAMETER_INVALID;
       
   316     }
       
   317 
       
   318     impl->stereoPosition = stereoPosition;
       
   319 
       
   320     ret = XAAdaptationBase_ThreadEntry(impl->adapCtx);
       
   321     if( ret == XA_RESULT_PARAMETER_INVALID || ret == XA_RESULT_PRECONDITIONS_VIOLATED )
       
   322     {
       
   323         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition");
       
   324         return ret;
       
   325     }
       
   326     /* check is stereo position effect enabled if is then handle effect */
       
   327     if(impl->enableStereoPos)
       
   328     {
       
   329     if(impl->adapCtx->fwtype == FWMgrFWMMF)
       
   330         {
       
   331         ret = XANokiaVolumeExtItfAdapt_SetStereoPosition((XAAdaptationMMFCtx*)impl->adapCtx,
       
   332                                                  stereoPosition);
       
   333         
       
   334         }
       
   335     }
       
   336 
       
   337     XAAdaptationBase_ThreadExit(impl->adapCtx);
       
   338     DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition");
       
   339     return ret;
       
   340 }
       
   341 
       
   342 /**
       
   343  * XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self,
       
   344  *                                            XApermille *pStereoPosition)
       
   345  * Description: Gets the object’s stereo position setting.
       
   346  **/
       
   347 XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self,
       
   348                                            XApermille *pStereoPosition)
       
   349 {
       
   350     XAresult ret = XA_RESULT_SUCCESS;
       
   351     XANokiaVolumeExtItfImpl *impl = GetImpl(self);
       
   352     DEBUG_API("->XANokiaVolumeExtItfImpl_GetStereoPosition");
       
   353 
       
   354     if(!impl || !pStereoPosition)
       
   355     {
       
   356         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   357         DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition");
       
   358         /* invalid parameter */
       
   359         return XA_RESULT_PARAMETER_INVALID;
       
   360     }
       
   361 
       
   362     *pStereoPosition = impl->stereoPosition;
       
   363 
       
   364     DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition");
       
   365     return ret;
       
   366 }
       
   367 
       
   368 XAresult XANokiaVolumeExtItfImpl_SetCallbackEventsMask(XANokiaVolumeExtItf self, XAuint32 eventFlags )
       
   369     {
       
   370     XAresult ret = XA_RESULT_SUCCESS;
       
   371     XANokiaVolumeExtItfImpl* impl = GetImpl(self);
       
   372     DEBUG_API("->XANokiaVolumeExtItfImpl_SetCallbackEventsMask");
       
   373 
       
   374     if(!impl)
       
   375     {
       
   376         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   377         /* invalid parameter */
       
   378         DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask");
       
   379         return XA_RESULT_PARAMETER_INVALID;
       
   380     }
       
   381 
       
   382     impl->eventFlags = eventFlags;
       
   383 
       
   384     DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask");
       
   385     return ret;    
       
   386     }
       
   387 
       
   388 XAresult XANokiaVolumeExtItfImpl_GetCallbackEventsMask(XANokiaVolumeExtItf self, XAuint32 * pEventFlags)
       
   389     {
       
   390     XAresult ret = XA_RESULT_SUCCESS;
       
   391     XANokiaVolumeExtItfImpl* impl = GetImpl(self);
       
   392     DEBUG_API("->XANokiaVolumeExtItfImpl_GetCallbackEventsMask");
       
   393 
       
   394     if(!impl || !pEventFlags)
       
   395     {
       
   396         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
       
   397         /* invalid parameter */
       
   398         DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask");
       
   399         return XA_RESULT_PARAMETER_INVALID;
       
   400     }
       
   401 
       
   402     *pEventFlags = impl->eventFlags;
       
   403 
       
   404     DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask");
       
   405     return ret;    
       
   406     }
       
   407 
       
   408 
       
   409 /**
       
   410  * XANokiaVolumeExtItfImpl -specific methods
       
   411  **/
       
   412 
       
   413 /**
       
   414  * XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create()
       
   415  * Description: Allocate and initialize VolumeItfImpl
       
   416  **/
       
   417 XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create(XAAdaptationBaseCtx *adapCtx )
       
   418 {
       
   419     XANokiaVolumeExtItfImpl *self = (XANokiaVolumeExtItfImpl*)
       
   420         calloc(1,sizeof(XANokiaVolumeExtItfImpl));
       
   421     DEBUG_API("->XANokiaVolumeExtItfImpl_Create");
       
   422 
       
   423     if(self)
       
   424     {
       
   425         /* init itf default implementation */
       
   426         self->itf.EnableStereoPosition = XANokiaVolumeExtItfImpl_EnableStereoPosition;
       
   427         self->itf.GetMaxVolumeLevel = XANokiaVolumeExtItfImpl_GetMaxVolumeLevel;
       
   428         self->itf.GetMute = XANokiaVolumeExtItfImpl_GetMute;
       
   429         self->itf.GetStereoPosition = XANokiaVolumeExtItfImpl_GetStereoPosition;
       
   430         self->itf.GetVolumeLevel = XANokiaVolumeExtItfImpl_GetVolumeLevel;
       
   431         self->itf.IsEnabledStereoPosition = XANokiaVolumeExtItfImpl_IsEnabledStereoPosition;
       
   432         self->itf.SetMute = XANokiaVolumeExtItfImpl_SetMute;
       
   433         self->itf.SetStereoPosition = XANokiaVolumeExtItfImpl_SetStereoPosition;
       
   434         self->itf.SetVolumeLevel = XANokiaVolumeExtItfImpl_SetVolumeLevel;
       
   435        	self->itf.RegisterVolumeCallback = XANokiaVolumeExtItfImpl_RegisterVolumeCallback;
       
   436        	self->itf.SetCallbackEventsMask = XANokiaVolumeExtItfImpl_SetCallbackEventsMask;
       
   437        	self->itf.GetCallbackEventsMask = XANokiaVolumeExtItfImpl_GetCallbackEventsMask;
       
   438 
       
   439         /* init variables */
       
   440         self->volumeLevel = 0;
       
   441         self->mute = XA_BOOLEAN_FALSE;
       
   442         self->enableStereoPos = XA_BOOLEAN_FALSE;
       
   443         self->stereoPosition = STEREO_POSITION_CENTER;
       
   444 
       
   445         self->adapCtx = adapCtx;
       
   446 
       
   447         XAAdaptationBase_AddEventHandler(adapCtx, &XANokiaVolumeExtItfImpl_AdaptCb, XA_NOKIAEXTVOLITFEVENTS, self );
       
   448         
       
   449         self->self = self;
       
   450     }
       
   451 
       
   452     DEBUG_API("<-XANokiaVolumeExtItfImpl_Create");
       
   453     return self;
       
   454 }
       
   455 
       
   456 /**
       
   457  * void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self)
       
   458  * Description: Free all resources reserved at XANokiaVolumeExtItfImpl_Create
       
   459  **/
       
   460 void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self)
       
   461 {
       
   462     DEBUG_API("->XANokiaVolumeExtItfImpl_Free");
       
   463     assert(self==self->self);
       
   464     free(self);
       
   465     DEBUG_API("<-XANokiaVolumeExtItfImpl_Free");
       
   466 }
       
   467 
       
   468 /* void XANokiaVolumeExtItfimpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
       
   469  * Description: Event handler for adaptation events
       
   470  */
       
   471 void XANokiaVolumeExtItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
       
   472 {
       
   473     XANokiaVolumeExtItfImpl* impl =(XANokiaVolumeExtItfImpl*)pHandlerCtx;
       
   474     XAboolean eventBoolean = XA_BOOLEAN_FALSE;
       
   475     
       
   476     DEBUG_API("->XANokiaVolumeExtItfimpl_AdaptCb");
       
   477 
       
   478     if(!impl)
       
   479     {
       
   480         DEBUG_ERR("XANokiaVolumeExtItfImpl_AdaptCb, invalid context pointer!");
       
   481         DEBUG_API("<-XANokiaVolumeExtItfImpl_AdaptCb");
       
   482         return;
       
   483     }
       
   484     assert(event);
       
   485     
       
   486     if( event->eventid == XA_ADAPT_VOLUME_MUTE_CHANGED && impl->callback )
       
   487     {
       
   488         if(impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED)
       
   489             {
       
   490             DEBUG_API("Mute Status  changed in adaptation");
       
   491             eventBoolean = *(XAboolean*)event->data;    
       
   492             impl->callback( impl->cbPtrToSelf, impl->context, XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED, eventBoolean  );
       
   493             }
       
   494     }
       
   495        
       
   496     else if (event->eventid == XA_ADAPT_VOLUME_VOLUME_CHANGED)
       
   497     {
       
   498         if(impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED)
       
   499             {
       
   500             DEBUG_API("Volume Status  changed in adaptation");
       
   501             eventBoolean = *(XAboolean*)event->data;    
       
   502             impl->callback( impl->cbPtrToSelf, impl->context, XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED, eventBoolean  );
       
   503             }
       
   504     }
       
   505     else if (event->eventid == XA_ADAPT_VULOME_STEREOPOSITION_CHANGED)
       
   506     {
       
   507         if(impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED)
       
   508             {
       
   509             DEBUG_API("StereoPosituin Status  changed in adaptation");
       
   510             eventBoolean = *(XAboolean*)event->data;    
       
   511             impl->callback( impl->cbPtrToSelf, impl->context, XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED, eventBoolean  );
       
   512             }
       
   513     }
       
   514     
       
   515     DEBUG_API("<-XANokiaVolumeExtItfimpl_AdaptCb");
       
   516 }