📄 psl_process_status.cpp
字号:
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusLoadComplete(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusLoadComplete: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusLoadComplete: NULL pointer!\n"));
return (PSL_NULL_POINTER);
}
/* If generic message is active, then clear it */
if (PslScreenLayoutIsGenericActive(pPSL) == TRUE)
{
/* Clear generic osd */
if (PslScreenLayoutClearGeneric(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusLoadComplete: failed to draw message!\n"));
return (PSL_FAILURE);
}
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusAngleChange -- Process the angle change status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusAngleChange(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
ULONG ulTimeout = 3000;
char cTmp[5];
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusAngleChange: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAngleChange: NULL handle!\n"));
return (PSL_NULL_POINTER);
}
/* check that status menu data is valid */
if (pPSL->pStatusMenu == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAngleChange: status menu not created!\n"));
return (PSL_FAILURE);
}
/* Set the angle number string */
if (ulData1 < 10)
{
cTmp[0] = (char)(ulData1 + '0');
cTmp[1] = '\0';
}
else
{
cTmp[0] = (char)((ulData1 / 10) + '0');
cTmp[1] = (char)((ulData1 % 10) + '0');
cTmp[2] = '\0';
}
/* set angle setting text */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[3][1], cTmp) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAngleChange: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* set the status menu mode to angle */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_ANGLE;
/* Set the status menu timer */
if (OS_TimerSetMsec(pPSL->pStatusMenu->Timer, ulTimeout) != OS_OK)
{
DbgPrint(("PslProcessStatusAngleChange: Timer set FAILED\n"));
return (PSL_FAILURE);
}
/* draw the status menu */
if (PslScreenLayoutDrawStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAngleChange: failure drawing status menu!\n"));
return (PSL_FAILURE);
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusAudioChange -- Process the audio change status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusAudioChange(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
ULONG ulTimeout = 3000;
char cTmp[50];
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusAudioChange: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioChange: NULL pointer!\n"));
return (PSL_NULL_POINTER);
}
/* check that status menu data is valid */
if (pPSL->pStatusMenu == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioChange: status menu not created!\n"));
return (PSL_FAILURE);
}
/* check that buffer is valid */
if ( (pvBuffer == NULL) || (ulBufferSize < (sizeof(ULONG) * 2) ) )
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioChange: invalid buffer!\n"));
return (PSL_FAILURE);
}
/* Set the Audio number string */
cTmp[0] = '0' + ( (UBYTE)ulData1 / 10);
cTmp[1] = '0' + ( (UBYTE)ulData1 % 10);
cTmp[2] = '\0';
/* Set the Audio decode type string */
switch ( ( (ULONG *)pvBuffer)[0] )
{
case VDVD_INFO_AUDIOTYPE_DOLBY:
/* Look at number of audio channels */
switch ( ( (ULONG *)pvBuffer)[1] )
{
case 1:
strcat(cTmp, " DOLBY DIGITAL MONO " );
break;
case 2:
strcat(cTmp, " DOLBY DIGITAL 2/0 " );
break;
case 3:
strcat(cTmp, " AC3 3 CHANNEL " );
break;
case 4:
strcat(cTmp, " AC3 4 CHANNEL " );
break;
case 5:
strcat(cTmp, " AC3 5 CHANNEL " );
break;
case 6:
strcat(cTmp, " DOLBY DIGITAL 5.1 " );
break;
case 7:
strcat(cTmp, " AC3 7 CHANNEL " );
break;
case 8:
strcat(cTmp, " AC3 8 CHANNEL " );
break;
default:
strcpy(cTmp, "");
break;
}
break;
case VDVD_INFO_AUDIOTYPE_MPEG:
strcat(cTmp, " MPEG " );
break;
case VDVD_INFO_AUDIOTYPE_LPCM:
strcat(cTmp, " LPCM " );
break;
case VDVD_INFO_AUDIOTYPE_DTS:
strcat(cTmp, " DTS " );
break;
default:
strcpy(cTmp, "");
break;
}
/* Set the audio language string */
strcat(cTmp, LANGUAGE_CONST[ulData2 - 1]);
/* set audio setting text */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[2][1], cTmp) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioChange: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* set the status menu mode to audio */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_AUDIO;
/* Set the status menu timer */
if (OS_TimerSetMsec(pPSL->pStatusMenu->Timer, ulTimeout) != OS_OK)
{
DbgPrint(("PslProcessStatusAudioChange: Timer set FAILED\n"));
return (PSL_FAILURE);
}
/* draw the status menu */
if (PslScreenLayoutDrawStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioChange: failure drawing status menu!\n"));
return (PSL_FAILURE);
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusAudioNotSupported -- Process the audio not supported status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusAudioNotSupported(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
ULONG ulTimeout = 3000;
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusAudioNotSupported: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioNotSupported: NULL pointer!\n"));
return (PSL_NULL_POINTER);
}
/* Set the osd timer */
if (OS_TimerSetMsec(pPSL->Timer, ulTimeout) != OS_OK)
{
DbgPrint(("PslProcessStatusAudioNotSupported: Timer set FAILED\n"));
return (PSL_FAILURE);
}
/* Draw message on generic osd */
if (PslScreenLayoutDrawGeneric(pPSL, PSL_STATUS_AUDIO_NOT_SUPPORTED, ulData1) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusAudioNotSupported: failed to draw message!\n"));
return (PSL_FAILURE);
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusInvalidRegion -- Process the invalid region status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusInvalidRegion(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
ULONG ulTimeout = 3000;
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusInvalidRegion: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusInvalidRegion: NULL pointer!\n"));
return (PSL_NULL_POINTER);
}
/* Set the osd timer */
if (OS_TimerSetMsec(pPSL->Timer, ulTimeout) != OS_OK)
{
DbgPrint(("PslProcessStatusInvalidRegion: Timer set FAILED\n"));
return (PSL_FAILURE);
}
/* Draw message on generic osd */
if (PslScreenLayoutDrawGeneric(pPSL, PSL_STATUS_INVALID_REGION, ulData1) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusInvalidRegion: failed to draw message!\n"));
return (PSL_FAILURE);
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusStandby -- Process the standby status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusStandby(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusStandby: no functionality\n"));
return (PSL_SUCCESS);
}
/**
* PslProcessStatusSetTmpParental -- Process the set temp parental level status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusSetTmpParental(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusSetTmpParental: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: NULL pointer!\n"));
return (PSL_NULL_POINTER);
}
if (pPSL->pParentalControl == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: parental control data not created!\n"));
return (PSL_FAILURE);
}
/* If generic osd is active, clear it */
if (PslScreenLayoutIsGenericActive(pPSL) == TRUE)
{
if (PslScreenLayoutClearGeneric(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: failed to clear generic osd!\n"));
return (PSL_FAILURE);
}
}
/* If setup menu is active, clear it */
if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
{
/* clear setup menu */
if (PslScreenLayoutClearSetupMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: Failure clearing setup menu!\n"));
return (PSL_FAILURE);
}
}
/* If status display is active, clear it */
if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
{
/* clear status display */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -