亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? psl_data_bank.cpp

?? 這是DVD中伺服部分的核心代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*****************************************************************************
******************************************************************************
**                                                                          **
**  Copyright (c) 2002 Videon Central, Inc.                                 **
**  All rights reserved.                                                    **
**                                                                          **
**  The computer program contained herein contains proprietary information  **
**  which is the property of Videon Central, Inc.  The program may be used  **
**  and/or copied only with the written permission of Videon Central, Inc.  **
**  or in accordance with the terms and conditions stipulated in the        **
**  agreement/contract under which the programs have been supplied.         **
**                                                                          **
******************************************************************************
*****************************************************************************/
/**
 * @file psl_data_bank.cpp
 *
 * $Revision: 1.7 $ 
 *
 * Data Bank Module of the PSL.
 * 
 */

#include "vdvd_types.h"
#include "psl_data_bank.h"
#include "psl_interface.h"
#include "psl_external_interface.h"
#include "psl_types.h"
#include "nvs.h"
#include "dbgprint.h"

/* Debug macros */
#define DBG_PSL_DATABANK    DBG_ERROR
#define DBG_ON(x)           (DBG_PSL_DATABANK >= x)

/* Default Configuration Settings */
static const ULONG  DEF_DVD_MENU_LANGUAGE_SETTING   = 1;
static const ULONG  DEF_AUDIO_LANGUAGE_SETTING      = 1;
static const ULONG  DEF_SUBTITLE_LANGUAGE_SETTING   = 1;
static const ULONG  DEF_ASPECT_RATIO_SETTING        = VDVD_ASPECT_RATIO_16X9;
static const ULONG  DEF_VIDEO_FORMAT_SETTING        = VDVD_VIDEO_FORMAT_NTSC;
static const ULONG  DEF_SPDIF_SETTING               = VDVD_SPDIF_PCM;
static const ULONG  DEF_COUNTRY_SETTING             = 1;
static const ULONG  DEF_PARENTAL_LEVEL_SETTING      = 8;
static const ULONG  DEF_PARENTAL_PWD_SETTING        = 0Xff;

/* Handle to the nvs module */
static NVS_HANDLE   m_hNvs = NULL;

/**
 * Local functions.
 */
static void     SetDefaultConfigSettings(VDVD_USER_CONFIG &config);
static BOOLEAN  ReadChecksum(VDVD_USER_CONFIG *data);
static void     SetChecksum(VDVD_USER_CONFIG *data);

/**
 * PslDataInitialize -- Open storage device
 *
 * @param
 *      pPSL - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslDataInitialize(PSL_HANDLE *pPSL)
{
    /* Check for valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataInitialize: NULL handle!\n"));
        return (PSL_NULL_POINTER);
    }

    /* Create NVS handle for user configuration settings */
    m_hNvs = NVSOpen(0, sizeof(VDVD_USER_CONFIG) );
    if (m_hNvs == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataInitialize: Failure opening NVS!\n"));
        goto errout;
    }

    return (PSL_SUCCESS);

errout:
    
    if (m_hNvs != NULL)
    {
        NVSClose(m_hNvs);
        m_hNvs = NULL;
    }

    return (PSL_FAILURE);
}

/**
 * PslDataUninitialize -- Close storage device
 *
 * @param
 *      pPSL - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslDataUninitialize(PSL_HANDLE *pPSL)
{
    /* Check for valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataUninitialize: NULL handle!\n"));
        return (PSL_NULL_POINTER);
    }

    /* Close nvs */
    if (m_hNvs != NULL)
    {
        NVSClose(m_hNvs);
        m_hNvs = NULL;
    }

    return (PSL_SUCCESS);
}

/**
 * PslDataLoadConfigSettings -- Load configuration settings from nvs
 *
 * @param
 *      pPSL - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslDataLoadConfigSettings(PSL_HANDLE *pPSL)
{
    /* Check for valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataLoadConfigSettings: NULL handle!\n"));
        return (PSL_NULL_POINTER);
    }

    /* Load user config settings from nvs */
    if (NVSLoad(m_hNvs, (PVOID)&pPSL->user_config, sizeof(VDVD_USER_CONFIG) ) != NVS_SUCCESS)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataLoadConfigSettings: Failure loading data from NVS!\n"));
        goto errout;
    }

    /* 
     * Check for valid size and valid checksum.  If either are invalid,
     * then restore the default configuration settings.
     */
    if ( (pPSL->user_config.size != sizeof(VDVD_USER_CONFIG) ) ||
         (FALSE == ReadChecksum(&pPSL->user_config) ) )
    {
        DBGPRINT(DBG_ON(DBG_TRACE), ("PslDataLoadConfigSettings: Restoring defaults\n"));
        
        /* Set default configuration settings in user config struct */
        SetDefaultConfigSettings(pPSL->user_config);

        /* Set the checksum field */
        SetChecksum(&pPSL->user_config);

        /* Store default configuration settings to nvs */
        if (NVSStore(m_hNvs, (PVOID)&pPSL->user_config, sizeof(VDVD_USER_CONFIG) ) != NVS_SUCCESS)
        {
            DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataLoadConfigSettings: Failure storing defaults to NVS!\n"));
            goto errout;
        }
    }
    
    DBGPRINT(DBG_ON(DBG_TRACE), ("PslDataLoadConfigSettings: Config settings loaded successfully\n"));

    return (PSL_SUCCESS);
    
errout:
    
    return (PSL_FAILURE);
}

/**
 * PslDataStoreConfigSettings -- Store configuration settings to nvs
 *
 * @param
 *      pPSL - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslDataStoreConfigSettings(PSL_HANDLE *pPSL)
{
    /* Check for valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataStoreConfigSettings: NULL handle!\n"));
        return (PSL_NULL_POINTER);
    }

    /* Check for valid nvs handle */
    if (m_hNvs == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataStoreConfigSettings: NVS handle not created!\n"));
        return (PSL_FAILURE);
    }
    
    /* Set the checksum field */
    SetChecksum(&pPSL->user_config);

    /* Store default configuration settings to nvs */
    if (NVSStore(m_hNvs, (PVOID)&pPSL->user_config, sizeof(VDVD_USER_CONFIG) ) != NVS_SUCCESS)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataStoreConfigSettings: Failure storing config settings to NVS!\n"));
        return (PSL_FAILURE);
    }

    DBGPRINT(DBG_ON(DBG_TRACE), ("PslDataStoreConfigSettings: Config settings stored successfully\n"));

    return (PSL_SUCCESS);
}

/**
 * PslDataRestoreDefaultSettings -- Restore default configuration settings
 *
 * @param
 *      pPSL - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslDataRestoreDefaultSettings(PSL_HANDLE *pPSL)
{
    /* Check for valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataRestoreDefaultSettings: NULL handle!\n"));
        return (PSL_NULL_POINTER);
    }

    /* Check for valid nvs handle */
    if (m_hNvs == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataRestoreDefaultSettings: NVS handle not created!\n"));
        return (PSL_FAILURE);
    }
        
    /* Set default configuration settings in user config struct */
    SetDefaultConfigSettings(pPSL->user_config);
    
    /* Set the checksum field */
    SetChecksum(&pPSL->user_config);

    /* Store default configuration settings to nvs */
    if (NVSStore(m_hNvs, (PVOID)&pPSL->user_config, sizeof(VDVD_USER_CONFIG) ) != NVS_SUCCESS)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataRestoreDefaultSettings: Failure storing defaults to NVS!\n"));
        return (PSL_FAILURE);
    }

    return (PSL_SUCCESS);
}

/**
 * PslDataSetMenuLanguage -- set the default menu language configuration setting
 *
 * @param
 *      pPSL        - handle to internal PSL data
 *      ulLangCode  - language code
 *
 * @retval
 *    none.
 */
void  PslDataSetMenuLanguage(PSL_HANDLE *pPSL, ULONG ulLangCode)
{
    if (pPSL != NULL)
    {
        pPSL->user_config.dvd_menu_language = (UCHAR)(ulLangCode);

        /* update navigator with new configuration setting */
        PslExternalUpdateLanguageMenu(pPSL);
    }
    else
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataSetMenuLanguage: NULL handle!\n"));
    }
}

/**
 * PslDataSetSubtitleLanguage -- set the default subtitle language configuration setting
 *
 * @param
 *      pPSL        - handle to internal PSL data
 *      ulLangCode  - language code
 *
 * @retval
 *    none.
 */
void  PslDataSetSubtitleLanguage(PSL_HANDLE *pPSL, ULONG ulLangCode)
{
    if (pPSL != NULL)
    {
        pPSL->user_config.subtitle_language = (UCHAR)(ulLangCode);

        /* update navigator with new configuration setting */
        PslExternalUpdateLanguageSubtitle(pPSL);
    }
    else
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataSetSubtitleLanguage: NULL handle!\n"));
    }
}

/**
 * PslDataSetAudioLanguage -- set the default audio language configuration setting
 *
 * @param
 *      pPSL        - handle to internal PSL data
 *      ulLangCode  - language code
 *
 * @retval
 *    none.
 */
void  PslDataSetAudioLanguage(PSL_HANDLE *pPSL, ULONG ulLangCode)
{
    if (pPSL != NULL)
    {
        pPSL->user_config.audio_language = (UCHAR)(ulLangCode);

        /* update navigator with new configuration setting */
        PslExternalUpdateLanguageAudio(pPSL);
    }
    else
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataSetAudioLanguage: NULL handle!\n"));
    }
}

/**
 * PslDataSetParentalLevel -- set the parental level configuration setting
 *
 * @param
 *      pPSL        - handle to internal PSL data
 *      ulParLevel  - parental level 
 *
 * @retval
 *    none.
 */
void  PslDataSetParentalLevel(PSL_HANDLE *pPSL, ULONG ulParLevel)
{
    if (pPSL != NULL)
    {
        pPSL->user_config.parental = (UCHAR)(ulParLevel);

        /* update navigator with new configuration setting */
        PslExternalUpdateParentalLevel(pPSL);
    }
    else
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataSetParentalLevel: NULL handle!\n"));
    }
}

/**
 * PslDataSetParentalPassword -- set the parental password configuration setting
 *
 * @param
 *      pPSL            - handle to internal PSL data
 *      ulParPassword   - parental password
 *
 * @retval
 *    none.
 */
void  PslDataSetParentalPassword(PSL_HANDLE *pPSL, ULONG ulParPassword)
{
    if (pPSL != NULL)
    {
        pPSL->user_config.parental_password[0] = (UCHAR)((ulParPassword & 0xff000000) >> 24);
        pPSL->user_config.parental_password[1] = (UCHAR)((ulParPassword & 0x00ff0000) >> 16);
        pPSL->user_config.parental_password[2] = (UCHAR)((ulParPassword & 0x0000ff00) >> 8);
        pPSL->user_config.parental_password[3] = (UCHAR)(ulParPassword & 0x000000ff);
    }
    else
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslDataSetParentalPassword: NULL handle!\n"));
    }
}

/**
 * PslDataSetCountryStandard -- set the country standard configuration setting
 *
 * @param
 *      pPSL         - handle to internal PSL data
 *      ulStandard   - country standard
 *
 * @retval
 *    none.
 */
void  PslDataSetCountryStandard(PSL_HANDLE *pPSL, ULONG ulStandard)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合av一区二区国产馆| 国产福利精品一区| 色香蕉成人二区免费| 国产精品久久久久久妇女6080 | 一区二区三区中文免费| 99久久精品情趣| 亚洲欧洲美洲综合色网| 一本久久a久久精品亚洲| 亚洲第一福利视频在线| 日韩一区二区三区免费看| 麻豆一区二区99久久久久| 精品国产乱码久久| 成人免费av网站| 一区二区三区在线观看欧美| 91精品国产综合久久精品性色| 蜜桃视频在线一区| 中文字幕欧美三区| 成人av在线网站| 亚洲在线免费播放| 欧美大胆人体bbbb| 不卡av在线免费观看| 亚洲成av人片观看| 久久亚洲欧美国产精品乐播| 成人国产精品免费网站| 亚洲精品一二三区| 精品美女一区二区三区| 国产精品丝袜黑色高跟| 欧美日韩中字一区| 久久99精品国产.久久久久| 国产精品美日韩| 91麻豆精品国产| fc2成人免费人成在线观看播放| 亚洲成人第一页| 国产情人综合久久777777| 91国偷自产一区二区开放时间| 免费不卡在线视频| 一区二区在线免费观看| 日韩欧美在线网站| 91视频你懂的| 国产综合色视频| 亚洲h动漫在线| 一区在线观看免费| 精品剧情在线观看| 欧美综合在线视频| 国产精品中文字幕日韩精品| 亚洲香肠在线观看| 中文字幕乱码一区二区免费| 日韩一区二区中文字幕| 欧美三区在线观看| 成人av在线电影| 国产在线精品一区二区| 午夜视黄欧洲亚洲| 中文字幕欧美激情一区| 欧美videossexotv100| 欧美综合在线视频| 91美女片黄在线观看91美女| 国产福利精品一区| 九色综合狠狠综合久久| 视频一区视频二区中文字幕| 最新不卡av在线| 国产无人区一区二区三区| 欧美日韩精品欧美日韩精品| 日本高清不卡aⅴ免费网站| 中文字幕日韩欧美一区二区三区| 久久久久国产精品厨房| 成人h版在线观看| 国产精品一品视频| 久久99日本精品| 日韩av一级片| 日韩精品一级中文字幕精品视频免费观看| 亚洲天堂av一区| 国产欧美精品区一区二区三区 | 一区二区在线观看免费视频播放| 国产午夜精品久久久久久免费视| 91精品国产一区二区三区香蕉 | 五月激情综合色| 亚洲国产日韩a在线播放性色| 亚洲老妇xxxxxx| 一区二区三区在线观看视频| 一区二区三区高清不卡| 国产精品区一区二区三| 国产精品丝袜黑色高跟| 国产精品网站在线观看| 国产精品久久精品日日| 日韩伦理免费电影| 最新中文字幕一区二区三区 | 国产美女在线观看一区| 国产乱对白刺激视频不卡| 国产一区91精品张津瑜| 不卡的av在线| 欧美天堂亚洲电影院在线播放| 在线一区二区三区做爰视频网站| 色播五月激情综合网| 欧美美女一区二区三区| 欧美一级久久久| 欧美v日韩v国产v| 国产精品伦理在线| 亚洲一区二区黄色| 国产成a人无v码亚洲福利| av网站免费线看精品| 欧美午夜电影网| 精品女同一区二区| 国产精品福利影院| 夜夜嗨av一区二区三区网页 | 色天使色偷偷av一区二区| 成人深夜在线观看| 91极品美女在线| 7777精品伊人久久久大香线蕉| 91精品国产一区二区三区香蕉| 国产亚洲精品超碰| 亚洲影院在线观看| 国产一区二区三区在线看麻豆| 成人免费毛片片v| 欧美日韩精品二区第二页| www成人在线观看| 亚洲色图丝袜美腿| 麻豆国产精品777777在线| 丰满少妇在线播放bd日韩电影| 欧美主播一区二区三区| 欧美成人激情免费网| 国产精品久久久99| 毛片不卡一区二区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美日韩一区二区三区在线看 | 午夜精品福利在线| 丰满放荡岳乱妇91ww| 91精品国产91久久久久久一区二区| 国产日韩欧美综合在线| 亚洲五码中文字幕| 国产99久久精品| 欧美久久久久免费| 国产日韩欧美电影| 日韩vs国产vs欧美| 99久久99久久精品免费看蜜桃| 91精品国产福利| 亚洲免费色视频| 国产美女精品人人做人人爽 | 99久久精品国产精品久久| 欧美一区二区久久久| 精品福利在线导航| 亚洲乱码国产乱码精品精98午夜| 精品一二三四在线| 欧美日韩亚洲另类| 国产精品乱人伦| 国产福利91精品| 日韩三级精品电影久久久| 亚洲精品国产视频| 成人三级在线视频| 26uuu欧美日本| 美女免费视频一区二区| 欧美视频第二页| 亚洲精品日韩专区silk| 成人丝袜18视频在线观看| 精品成a人在线观看| 免费成人结看片| 欧美日韩国产在线观看| 曰韩精品一区二区| 色综合色综合色综合色综合色综合 | 久久久www免费人成精品| 蜜臀av国产精品久久久久| 欧美无砖专区一中文字| 一区二区三区在线观看国产| 91麻豆精品秘密| 亚洲乱码中文字幕综合| 一本色道久久综合亚洲91| 中文字幕一区二区三区四区| 成人中文字幕在线| 国产日韩亚洲欧美综合| 丁香亚洲综合激情啪啪综合| 亚洲国产精品99久久久久久久久| 国产精品一区二区果冻传媒| 7777精品伊人久久久大香线蕉经典版下载| 综合亚洲深深色噜噜狠狠网站| 成a人片亚洲日本久久| 中文字幕在线免费不卡| 波多野结衣在线一区| 中文字幕在线一区| 91视频一区二区三区| 亚洲欧美日韩在线不卡| 在线观看视频91| 亚洲mv在线观看| 日韩天堂在线观看| 久久精品国产精品亚洲综合| 91视频观看免费| 一区二区三区四区国产精品| 在线观看日韩av先锋影音电影院| 一区二区三区在线观看视频| 欧美日韩中文精品| 蜜臀国产一区二区三区在线播放 | 国内成人精品2018免费看| 日韩三级免费观看| 国产成人高清视频| 亚洲精品国久久99热| 色伊人久久综合中文字幕| 偷窥少妇高潮呻吟av久久免费| 日韩一级大片在线观看| 国产不卡在线视频| 亚洲一区二区三区激情| 欧美成人vps| 99久久99久久久精品齐齐|