IMedia中的事件处理,SetMediaParm,GetMediaParm
static boolean CMedia_HandleEvent(CMedia* pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_KEY:
switch(wParam)
{
case AVK_UP:
CMedia_GetVolume(pMe);
break;
case AVK_DOWN:
CMedia_SetVolume(pMe);
break;
}
return(TRUE);
}
...
}
uint16 CMedia_GetVolume(CMedia *pMe)
{
char s[40] = {0};
int a = IMEDIA_GetVolume(pMe->m_pMedia, &pMe->m_curVolume);
SPRINTF(s, "IMEDIA_GetVolume return %d", a);
CMedia_TakeLog(s);
return pMe->m_curVolume;
}
void CMedia_SetVolume(CMedia *pMe)
{
char s[40] = {0};
int a = IMedia_SetVolume(pMe->m_pMedia, 10);
SPRINTF(s, "IMedia_SetVolume return %d", a);
CMedia_TakeLog(s);
}
static void CMedia_Notify(void * pUser, AEEMediaCmdNotify * pCmdNotify)
{
CMedia *pMe = (CMedia *)pUser;
switch(pCmdNotify->nCmd)
{
case MM_CMD_SETMEDIAPARM:
switch(pCmdNotify->nSubCmd)
{
case MM_PARM_VOLUME:
{
CMedia_TakeLog("set volume");
}
break;
}
break;
case MM_CMD_GETMEDIAPARM:
switch(pCmdNotify->nSubCmd)
{
case MM_PARM_VOLUME:
{
char s[100] = {0};
CMedia_TakeLog("get volume");
SPRINTF(s, "%d", pMe->m_curVolume);
CMedia_TakeLog(s);
}
break;
}
break;
}
pMe->m_curVolume初始值为20
日记中的数据:
IMedia_SetVolume return -2
set volume
IMEDIA_GetVolume return -2
IMedia_SetVolume return -2
get volume
20
set volume
本人的意图:通过按向下键设置音量,通过按向上键获取当前音量。
操作:按向下键一次,按向上键一次。
结果:CMedia_SetVolume()走了两次,CMedia_GetVolume()走一次。而且都返回错误的结果,请问如何做才能返回SUCCESS,正确地设置和获取。IMedia的事件处理到底是怎么样的?CMedia_SetVolume()后等待回调,回调完后呢?