psl_process_user_input.cpp

来自「这是DVD中伺服部分的核心代码」· C++ 代码 · 共 1,798 行 · 第 1/5 页

CPP
1,798
字号
        else if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
        {
            /* Send command to status display to be processed */
            if (PslProcessKeyStatusDisplayLeft(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputLeft: Failure sending command to status display\n"));
                return (PSL_FAILURE);
            }
        }
        else
        {
            /* Send command to the nav to be processed */
            if (PslExternalSendNavCommand(PSL_USER_CMD_LEFT, ulInfo) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputLeft: Failure sending command to nav\n"));
                return (PSL_FAILURE);
            }
        }
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessUserInputRight -- Process the right command
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ulInfo  - info param with the command
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS PslProcessUserInputRight(PSL_HANDLE *pPSL, ULONG ulInfo)
{
    DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputRight: ENTER\n"));

    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRight: Invalid psl handle\n"));
        return (PSL_NULL_POINTER);
    }

    /* If standby is on, do not process the user input */
    if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
    {
        /* 
         * If an OSD menu is active, send command to process key module.
         * Otherwise send it to the navigator.
         */
        if (PslScreenLayoutIsParentalControlActive(pPSL) == TRUE)
        {
            /* Send command to parental control to be processed */
            if (PslProcessKeyParentalControlRight(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputDigit: Failure sending command to parental control\n"));
                return (PSL_FAILURE);
            }
        }
        else if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
        {
            /* Send command to setup menu to be processed */
            if (PslProcessKeySetupMenuRight(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRight: Failure sending command to setup menu\n"));
                return (PSL_FAILURE);
            }
        }
        else if (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE)
        {
            /* Send command to status display to be processed */
            if (PslProcessKeyStatusMenuRight(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRight: Failure sending command to status menu\n"));
                return (PSL_FAILURE);
            }
        }
        else if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
        {
            /* Send command to status display to be processed */
            if (PslProcessKeyStatusDisplayRight(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRight: Failure sending command to status display\n"));
                return (PSL_FAILURE);
            }
        }
        else
        {
            /* Send command to the nav to be processed */
            if (PslExternalSendNavCommand(PSL_USER_CMD_RIGHT, ulInfo) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRight: Failure sending command to nav\n"));
                return (PSL_FAILURE);
            }
        }
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessUserInputSelect -- Process the select command
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ulInfo  - info param with the command
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS PslProcessUserInputSelect(PSL_HANDLE *pPSL, ULONG ulInfo)
{
    DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputSelect: ENTER\n"));

    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSelect: Invalid psl handle\n"));
        return (PSL_NULL_POINTER);
    }

    /* If standby is on, do not process the user input */
    if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
    {
        /* 
         * If an OSD menu is active, send command to process key module.
         * Otherwise send it to the navigator.
         */
        if (PslScreenLayoutIsParentalControlActive(pPSL) == TRUE)
        {
            /* Send command to parental control to be processed */
            if (PslProcessKeyParentalControlSelect(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputDigit: Failure sending command to parental control\n"));
                return (PSL_FAILURE);
            }
        }
        else if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
        {
            /* Send command to setup menu to be processed */
            if (PslProcessKeySetupMenuSelect(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSelect: Failure sending command to setup menu\n"));
                return (PSL_FAILURE);
            }
        }
        else if (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE)
        {
            /* Send command to status display to be processed */
            if (PslProcessKeyStatusMenuSelect(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSelect: Failure sending command to status menu\n"));
                return (PSL_FAILURE);
            }
        }
        else if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
        {
            /* Send command to status display to be processed */
            if (PslProcessKeyStatusDisplaySelect(pPSL) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSelect: Failure sending command to status display\n"));
                return (PSL_FAILURE);
            }
        }
        else
        {
            /* Send command to the nav to be processed */
            if (PslExternalSendNavCommand(PSL_USER_CMD_SELECT, ulInfo) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSelect: Failure sending command to nav\n"));
                return (PSL_FAILURE);
            }
        }
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessUserInputSkipFwd -- Process the next chapter command
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ulInfo  - info param with the command
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS PslProcessUserInputSkipFwd(PSL_HANDLE *pPSL, ULONG ulInfo)
{
    DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputSkipFwd: ENTER\n"));

    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSkipFwd: Invalid psl handle\n"));
        return (PSL_NULL_POINTER);
    }

    /* If standby is on, do not process the user input */
    if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
    {
        /* If parental control is active, do not process command */
        if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
        {
            /* If setup menu is active, do not process the command */
            if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
            {
                /* Send command to the nav to be processed */
                if (PslExternalSendNavCommand(PSL_USER_CMD_SKIP_NEXT, ulInfo) != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSkipFwd: Failure sending command to nav\n"));
                    return (PSL_FAILURE);
                }
            }
        }
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessUserInputSkipBwd -- Process the previous chapter command
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ulInfo  - info param with the command
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS PslProcessUserInputSkipBwd(PSL_HANDLE *pPSL, ULONG ulInfo)
{
    DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputSkipBwd: ENTER\n"));

    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSkipBwd: Invalid psl handle\n"));
        return (PSL_NULL_POINTER);
    }

    /* If standby is on, do not process the user input */
    if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
    {
        /* If parental control is active, do not process command */
        if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
        {
            /* If setup menu is active, do not process the command */
            if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
            {
                /* Send command to the nav to be processed */
                if (PslExternalSendNavCommand(PSL_USER_CMD_SKIP_PREV, ulInfo) != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSkipBwd: Failure sending command to nav\n"));
                    return (PSL_FAILURE);
                }
            }
        }
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessUserInputFastFwd -- Process the fast forward command
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ulInfo  - info param with the command
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS PslProcessUserInputFastFwd(PSL_HANDLE *pPSL, ULONG ulInfo)
{
    ULONG   ulRate;

    DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputFastFwd: ENTER\n"));

    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputFastFwd: Invalid psl handle\n"));
        return (PSL_NULL_POINTER);
    }

    /* If standby is on, do not process the user input */
    if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
    {
        /* If parental control is active, do not process command */
        if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
        {
            /* If setup menu is active, do not process the command */
            if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
            {
                /* Get the current play rate */
                ulRate = PslExternalGetPlayRate();

                if (ulRate == (1000 * 2) )
                {
                    /* Change rate from 2x to 4x */
                    ulRate = 1000 * 4;
                }
                else if (ulRate == (1000 * 4) )
                {
                    /* Change rate from 4x to 16x */
                    ulRate = 1000 * 16;
                }
                else
                {
                    /* Set rate to 2x */
                    ulRate = 1000 * 2;
                }

                /* Send command to the nav to be processed */
                if (PslExternalSendNavCommand(PSL_USER_CMD_FWD_PLAY, ulRate) != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputFastFwd: Failure sending command to nav\n"));
                    return (PSL_FAILURE);
                }
            }
        }
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessUserInputFastRwd -- Process the fast rewind command
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ulInfo  - info param with the command
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS PslProcessUserInputFastRwd(PSL_HANDLE *pPSL, ULONG ulInfo)
{
    ULONG   ulRate;

    DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputFastRwd: ENTER\n"));

    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputFastRwd: Invalid psl handle\n"));
        return (PSL_NULL_POINTER);
    }

    /* If standby is on, do not process the user input */
    if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
    {
        /* If parental control is active, do not process command */
        if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
        {
            /* If setup menu is active, do not process the command */
            if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?