/**
 * @file hv_res_OsdUserdata.c
 * @brief Auto Generate by HiView OSD Designer, Do Not Edit Manually !
 * @author HiView SoC Software Team
 * @version 1.0.0
 * @date 2023-11-09
 * @copyright Copyright(c),2023-11, HiView Software. All rights reserved.
 * @par History:
 * <table>
 * <tr><th>Author         <th>Date        <th>Change Description
 * <tr><td>OSD Group      <td>2023-11-09<td>create
 * </table>
 */

#include "hv_comm_DataBase.h"
#include "hv_res_OsdUserdata.h"

/********************************** ATTENTION!!! **********************************
请手动在 hv_app_Function.c 的 Hv_App_SetFuncInterface 函数中添加对应 E_USERDATA_XXX 的Set接口调用
请手动在 hv_app_Function.c 的 Hv_App_GetRealValue 函数中添加对应 E_USERDATA_XXX 的Get接口调用及default值获取
*/

static OsdUserdataParam s_stOsdUserdata;

#define OSD_USERDATA_SET(param, value)   (s_stOsdUserdata.param = value)
#define OSD_USERDATA_GET(param)          (s_stOsdUserdata.param)

VOID Hv_App_OsdSetUserdata(UserdataId enWhichData, SHORT16 sValue)
{
    switch (enWhichData)
    {
        case E_USERDATA_DISPLAY_MODE:
        {
            OSD_USERDATA_SET(ucDisplayMode, sValue);
            break;
        }
        case E_USERDATA_BRIGHTNESS:
        {
            OSD_USERDATA_SET(ucBrightness, sValue);
            break;
        }
        case E_USERDATA_CONTRAST:
        {
            OSD_USERDATA_SET(ucContrast, sValue);
            break;
        }
        case E_USERDATA_HUE:
        {
            OSD_USERDATA_SET(ucHue, sValue);
            break;
        }
        case E_USERDATA_SATURATION:
        {
            OSD_USERDATA_SET(ucSaturation, sValue);
            break;
        }
        case E_USERDATA_SHARPNESS:
        {
            OSD_USERDATA_SET(ucSharpness, sValue);
            break;
        }
        case E_USERDATA_DARKSTABILIZER:
        {
            OSD_USERDATA_SET(ucDarkStabilizer, sValue);
            break;
        }
        case E_USERDATA_COLOR_TEMP:
        {
            OSD_USERDATA_SET(ucColorTemperature, sValue);
            break;
        }
        case E_USERDATA_LOW_BLUE_LIGHT:
        {
            OSD_USERDATA_SET(ucLowBlueLight, sValue);
            break;
        }
        case E_USERDATA_COLOR_SPACE:
        {
            OSD_USERDATA_SET(ucColorSpace, sValue);
            break;
        }
        case E_USERDATA_RED:
        {
            OSD_USERDATA_SET(ucRed, sValue);
            break;
        }
        case E_USERDATA_GREEN:
        {
            OSD_USERDATA_SET(ucGreen, sValue);
            break;
        }
        case E_USERDATA_BLUE:
        {
            OSD_USERDATA_SET(ucBlue, sValue);
            break;
        }
        case E_USERDATA_GAMMA:
        {
            OSD_USERDATA_SET(ucGamma, sValue);
            break;
        }
        case E_USERDATA_LOCALDIMMING:
        {
            OSD_USERDATA_SET(ucLocaldimming, sValue);
            break;
        }
        case E_USERDATA_COLOR_FILTER:
        {
            OSD_USERDATA_SET(ucColorFilter, sValue);
            break;
        }
        case E_USERDATA_VIDEOSOURCE:
        {
            OSD_USERDATA_SET(ucVideoSource, sValue);
            break;
        }
        case E_USERDATA_AUTOSOURCE:
        {
            OSD_USERDATA_SET(bAutoVideoSrcSelSw, sValue);
            break;
        }
        case E_USERDATA_HDMI_FORMAT:
        {
            OSD_USERDATA_SET(ucHdmiFormat, sValue);
            break;
        }
        case E_USERDATA_HDMI_ALLM:
        {
            OSD_USERDATA_SET(bHdmiAllmEn, sValue);
            break;
        }
        case E_USERDATA_QMS:
        {
            OSD_USERDATA_SET(bQms, sValue);
            break;
        }
        case E_USERDATA_DP_VERSION:
        {
            OSD_USERDATA_SET(ucDpVersion, sValue);
            break;
        }
        case E_USERDATA_PROPORTION:
        {
            OSD_USERDATA_SET(ucProportion, sValue);
            break;
        }
        case E_USERDATA_RESPONSETIME:
        {
            OSD_USERDATA_SET(ucResponseTime, sValue);
            break;
        }
        case E_USERDATA_MPRT:
        {
            OSD_USERDATA_SET(ucMprt, sValue);
            break;
        }
        case E_USERDATA_FREESYNC:
        {
            OSD_USERDATA_SET(ucFreeSync, sValue);
            break;
        }
        case E_USERDATA_HDR:
        {
            OSD_USERDATA_SET(ucHdrSwitch, sValue);
            break;
        }
        case E_USERDATA_LDR:
        {
            OSD_USERDATA_SET(ucLdr, sValue);
            break;
        }
        case E_USERDATA_DCR:
        {
            OSD_USERDATA_SET(ucDcr, sValue);
            break;
        }
        case E_USERDATA_CROSSHAIR:
        {
            OSD_USERDATA_SET(ucCrosshair, sValue);
            break;
        }
        case E_USERDATA_DYN_CROSSHAIR:
        {
            OSD_USERDATA_SET(bDynCrosshair, sValue);
            break;
        }
        case E_USERDATA_MAGNIFY_GLASS:
        {
            OSD_USERDATA_SET(bMagnifyGlassSw, sValue);
            break;
        }
        case E_USERDATA_REFRESH_RATE:
        {
            OSD_USERDATA_SET(ucRefreshRate, sValue);
            break;
        }
        case E_USERDATA_TIME_COUNTER:
        {
            OSD_USERDATA_SET(ucTimeCounter, sValue);
            break;
        }
        case E_USERDATA_LANGUAGE:
        {
            OSD_USERDATA_SET(ucLanguage, sValue);
            break;
        }
        case E_USERDATA_MENUX:
        {
            OSD_USERDATA_SET(ucMenuX, sValue);
            break;
        }
        case E_USERDATA_MENUY:
        {
            OSD_USERDATA_SET(ucMenuY, sValue);
            break;
        }
        case E_USERDATA_MENUTIMER:
        {
            OSD_USERDATA_SET(ucMenuTimer, sValue);
            break;
        }
        case E_USERDATA_MENUTRANSPARENCY:
        {
            OSD_USERDATA_SET(ucMenuTrans, sValue);
            break;
        }
        case E_USERDATA_MENULOCK:
        {
            OSD_USERDATA_SET(bMenuLock, sValue);
            break;
        }
        case E_USERDATA_CUSTOM_KEY1:
        {
            OSD_USERDATA_SET(ucCustomKey1, sValue);
            break;
        }
        case E_USERDATA_CUSTOM_KEY2:
        {
            OSD_USERDATA_SET(ucCustomKey2, sValue);
            break;
        }
        case E_USERDATA_CUSTOM_KEY3:
        {
            OSD_USERDATA_SET(ucCustomKey3, sValue);
            break;
        }
        case E_USERDATA_LIGHT_EFFECT:
        {
            OSD_USERDATA_SET(ucLightEffect, sValue);
            break;
        }
        case E_USERDATA_AMBIENTLIGHT:
        {
            OSD_USERDATA_SET(ucAmbientLight, sValue);
            break;
        }
        case E_USERDATA_MONOLIGHT:
        {
            OSD_USERDATA_SET(ucMonoLight, sValue);
            break;
        }
        case E_USERDATA_VARIABLEBACKLIGHT:
        {
            OSD_USERDATA_SET(ucVariableBackLight, sValue);
            break;
        }
        case E_USERDATA_ROTATION:
        {
            OSD_USERDATA_SET(ucRotation, sValue);
            break;
        }
        case E_USERDATA_VOLUME:
        {
            OSD_USERDATA_SET(ucVolume, sValue);
            break;
        }
        case E_USERDATA_MUTE:
        {
            OSD_USERDATA_SET(bMute, sValue);
            break;
        }
        case E_USERDATA_AUDIO_SOURCE:
        {
            OSD_USERDATA_SET(ucAudioSource, sValue);
            break;
        }
        case E_USERDATA_TIME_DELAY:
        {
            OSD_USERDATA_SET(uiSoundDelayTime, sValue);
            break;
        }
        case E_USERDATA_PXPMODE:
        {
            OSD_USERDATA_SET(ucPxPMode, sValue);
            break;
        }
        case E_USERDATA_PXPVIDEOSOURCE:
        {
            OSD_USERDATA_SET(ucPxPVideoSource, sValue);
            break;
        }
        case E_USERDATA_PXP_SWITCH:
        {
            OSD_USERDATA_SET(bPxPSwitch, sValue);
            break;
        }
        case E_USERDATA_PIP_POSITION:
        {
            OSD_USERDATA_SET(ucPipPosition, sValue);
            break;
        }
        case E_USERDATA_PIP_SIZE:
        {
            OSD_USERDATA_SET(ucPipSize, sValue);
            break;
        }
        case E_USERDATA_BRIGHT_FRAME:
        {
            OSD_USERDATA_SET(bBrightFrame, sValue);
            break;
        }
        case E_USERDATA_FRAME_SIZE:
        {
            OSD_USERDATA_SET(ucFrameSize, sValue);
            break;
        }
        case E_USERDATA_BF_BRIGHTNESS:
        {
            OSD_USERDATA_SET(ucBFBrightness, sValue);
            break;
        }
        case E_USERDATA_BF_CONTRAST:
        {
            OSD_USERDATA_SET(ucBFContrast, sValue);
            break;
        }
        case E_USERDATA_BF_HPOS:
        {
            OSD_USERDATA_SET(ucBFHPos, sValue);
            break;
        }
        case E_USERDATA_BF_VPOS:
        {
            OSD_USERDATA_SET(ucBFVPos, sValue);
            break;
        }
        case E_USERDATA_VRR_GAMMA:
        {
            OSD_USERDATA_SET(bVrrGamma, sValue);
            break;
        }
        default:
        {
            break;
        }
    }
}

#ifdef OSD_DEBUG_PRINT_NAME
static const CHAR8* s_apcUserdataNameTbl[E_USERDATA_MAX] = {
    [E_USERDATA_NONE] = "None",
    [E_USERDATA_DISPLAY_MODE] = "ucDisplayMode",
    [E_USERDATA_BRIGHTNESS] = "ucBrightness",
    [E_USERDATA_CONTRAST] = "ucContrast",
    [E_USERDATA_HUE] = "ucHue",
    [E_USERDATA_SATURATION] = "ucSaturation",
    [E_USERDATA_SHARPNESS] = "ucSharpness",
    [E_USERDATA_DARKSTABILIZER] = "ucDarkStabilizer",
    [E_USERDATA_COLOR_TEMP] = "ucColorTemperature",
    [E_USERDATA_LOW_BLUE_LIGHT] = "ucLowBlueLight",
    [E_USERDATA_COLOR_SPACE] = "ucColorSpace",
    [E_USERDATA_RED] = "ucRed",
    [E_USERDATA_GREEN] = "ucGreen",
    [E_USERDATA_BLUE] = "ucBlue",
    [E_USERDATA_GAMMA] = "ucGamma",
    [E_USERDATA_LOCALDIMMING] = "ucLocaldimming",
    [E_USERDATA_COLOR_FILTER] = "ucColorFilter",
    [E_USERDATA_VIDEOSOURCE] = "ucVideoSource",
    [E_USERDATA_AUTOSOURCE] = "bAutoVideoSrcSelSw",
    [E_USERDATA_HDMI_FORMAT] = "ucHdmiFormat",
    [E_USERDATA_HDMI_ALLM] = "bHdmiAllmEn",
    [E_USERDATA_QMS] = "bQms",
    [E_USERDATA_DP_VERSION] = "ucDpVersion",
    [E_USERDATA_PROPORTION] = "ucProportion",
    [E_USERDATA_RESPONSETIME] = "ucResponseTime",
    [E_USERDATA_MPRT] = "ucMprt",
    [E_USERDATA_FREESYNC] = "ucFreeSync",
    [E_USERDATA_HDR] = "ucHdrSwitch",
    [E_USERDATA_LDR] = "ucLdr",
    [E_USERDATA_DCR] = "ucDcr",
    [E_USERDATA_CROSSHAIR] = "ucCrosshair",
    [E_USERDATA_DYN_CROSSHAIR] = "bDynCrosshair",
    [E_USERDATA_MAGNIFY_GLASS] = "bMagnifyGlassSw",
    [E_USERDATA_REFRESH_RATE] = "ucRefreshRate",
    [E_USERDATA_TIME_COUNTER] = "ucTimeCounter",
    [E_USERDATA_LANGUAGE] = "ucLanguage",
    [E_USERDATA_MENUX] = "ucMenuX",
    [E_USERDATA_MENUY] = "ucMenuY",
    [E_USERDATA_MENUTIMER] = "ucMenuTimer",
    [E_USERDATA_MENUTRANSPARENCY] = "ucMenuTrans",
    [E_USERDATA_MENULOCK] = "bMenuLock",
    [E_USERDATA_CUSTOM_KEY1] = "ucCustomKey1",
    [E_USERDATA_CUSTOM_KEY2] = "ucCustomKey2",
    [E_USERDATA_CUSTOM_KEY3] = "ucCustomKey3",
    [E_USERDATA_LIGHT_EFFECT] = "ucLightEffect",
    [E_USERDATA_AMBIENTLIGHT] = "ucAmbientLight",
    [E_USERDATA_MONOLIGHT] = "ucMonoLight",
    [E_USERDATA_VARIABLEBACKLIGHT] = "ucVariableBackLight",
    [E_USERDATA_ROTATION] = "ucRotation",
    [E_USERDATA_VOLUME] = "ucVolume",
    [E_USERDATA_MUTE] = "bMute",
    [E_USERDATA_AUDIO_SOURCE] = "ucAudioSource",
    [E_USERDATA_TIME_DELAY] = "uiSoundDelayTime",
    [E_USERDATA_PXPMODE] = "ucPxPMode",
    [E_USERDATA_PXPVIDEOSOURCE] = "ucPxPVideoSource",
    [E_USERDATA_PXP_SWITCH] = "bPxPSwitch",
    [E_USERDATA_PIP_POSITION] = "ucPipPosition",
    [E_USERDATA_PIP_SIZE] = "ucPipSize",
    [E_USERDATA_BRIGHT_FRAME] = "bBrightFrame",
    [E_USERDATA_FRAME_SIZE] = "ucFrameSize",
    [E_USERDATA_BF_BRIGHTNESS] = "ucBFBrightness",
    [E_USERDATA_BF_CONTRAST] = "ucBFContrast",
    [E_USERDATA_BF_HPOS] = "ucBFHPos",
    [E_USERDATA_BF_VPOS] = "ucBFVPos",
    [E_USERDATA_VRR_GAMMA] = "bVrrGamma",
};
#else
static CHAR8 s_acDefaultName[16];
#endif

const CHAR8* Hv_App_GetUserdataName(UserdataId enWhichData)
{
#ifdef OSD_DEBUG_PRINT_NAME
    return enWhichData < E_USERDATA_MAX ? s_apcUserdataNameTbl[enWhichData] : s_apcUserdataNameTbl[E_USERDATA_NONE];
#else
    if (enWhichData < E_USERDATA_MAX)
    {
        HV_SNPRINTF(s_acDefaultName, 16, "Userdata_%d", enWhichData);
    }
    else
    {
        HV_SNPRINTF(s_acDefaultName, 16, "Userdata_NONE");
    }
    return s_acDefaultName;
#endif
}

const static SHORT16 s_asRealValueMapColorTemperature[UD_COLOR_TEMP_V_NUM] =
{
    /* UD_COLOR_TEMP_V_COOL */
    PQ_COLOR_TEMP_COOL,
    /* UD_COLOR_TEMP_V_STANDARD */
    PQ_COLOR_TEMP_STANDARD,
    /* UD_COLOR_TEMP_V_WARM */
    PQ_COLOR_TEMP_WARM,
    /* UD_COLOR_TEMP_V_CUSTOM */
    PQ_COLOR_TEMP_CUSTOM,
};

const static SHORT16 s_asRealValueMapColorSpace[UD_COLOR_SPACE_V_NUM] =
{
    /* UD_COLOR_SPACE_V_SRGB */
    PQ_GAMUT_SRGB,
    /* UD_COLOR_SPACE_V_BT709 */
    PQ_GAMUT_709,
    /* UD_COLOR_SPACE_V_DCIP3 */
    PQ_GAMUT_P3,
    /* UD_COLOR_SPACE_V_NATIVE */
    PQ_GAMUT_NATIVE,
    /* UD_COLOR_SPACE_V_ADOBERGB */
    PQ_GAMUT_ADOBE,
};

const static SHORT16 s_asRealValueMapGamma[UD_GAMMA_V_NUM] =
{
    /* UD_GAMMA_V_1_6 */
    PQ_GAMMA1_6,
    /* UD_GAMMA_V_1_8 */
    PQ_GAMMA1_8,
    /* UD_GAMMA_V_2_0 */
    PQ_GAMMA2_0,
    /* UD_GAMMA_V_2_2 */
    PQ_GAMMA2_2,
    /* UD_GAMMA_V_2_4 */
    PQ_GAMMA2_4,
    /* UD_GAMMA_V_2_6 */
    PQ_GAMMA2_6,
};

const static SHORT16 s_asRealValueMapLocaldimming[UD_LOCALDIMMING_V_NUM] =
{
    /* UD_LOCALDIMMING_V_OFF */
    PQ_LDCMODE_OFF,
    /* UD_LOCALDIMMING_V_LOW */
    PQ_LDCMODE_LOW,
    /* UD_LOCALDIMMING_V_MIDDLE */
    PQ_LDCMODE_MEDIUM,
    /* UD_LOCALDIMMING_V_HIGH */
    PQ_LDCMODE_HIGH,
};

const static SHORT16 s_asRealValueMapVideoSource[UD_VIDEOSOURCE_V_NUM] =
{
    /* UD_VIDEOSOURCE_V_HDMI1 */
    LINK_PORT_INDEX_HDMI_RX0,
    /* UD_VIDEOSOURCE_V_HDMI2 */
    LINK_PORT_INDEX_HDMI_RX1,
    /* UD_VIDEOSOURCE_V_USB_C */
    LINK_PORT_INDEX_DP_RX0,
    /* UD_VIDEOSOURCE_V_DP */
    LINK_PORT_INDEX_DP_RX1,
};

const static SHORT16 s_asRealValueMapDpVersion[UD_DP_VERSION_V_NUM] =
{
    /* UD_DP_VERSION_V_1_1 */
    HV_DP_VER11,
    /* UD_DP_VERSION_V_1_2 */
    HV_DP_VER12,
    /* UD_DP_VERSION_V_1_4 */
    HV_DP_VER14,
};

const static SHORT16 s_asRealValueMapProportion[UD_PROPORTION_V_NUM] =
{
    /* UD_PROPORTION_V_AUTO */
    OUTPUTRATIO_AUTO,
    /* UD_PROPORTION_V_16_9 */
    OUTPUTRATIO_16TO9,
    /* UD_PROPORTION_V_4_3 */
    OUTPUTRATIO_4TO3,
};

const static SHORT16 s_asRealValueMapResponseTime[UD_RESPONSETIME_V_NUM] =
{
    /* UD_RESPONSETIME_V_NORMAL */
    PQ_OD_OFF,
    /* UD_RESPONSETIME_V_FAST */
    PQ_OD_FAST,
    /* UD_RESPONSETIME_V_VERY_FAST */
    PQ_OD_FASTER,
};

const static SHORT16 s_asRealValueMapMprt[UD_MPRT_V_NUM] =
{
    /* UD_MPRT_V_OFF */
    MPRT_PWM_CLOSE,
    /* UD_MPRT_V_ON */
    MPRT_PWM_ENABLE,
};

const static SHORT16 s_asRealValueMapHdrSwitch[UD_HDR_V_NUM] =
{
    /* UD_HDR_V_OFF */
    PQ_HDR_OFF,
    /* UD_HDR_V_AUTO */
    PQ_HDR_ON,
};

const static SHORT16 s_asRealValueMapLdr[UD_LDR_V_NUM] =
{
    /* UD_LDR_V_AUTO */
    PQ_BRIGHT_RANGE_AUTO,
    /* UD_LDR_V_FULL */
    PQ_BRIGHT_RANGE_FULL,
    /* UD_LDR_V_LIMIT */
    PQ_BRIGHT_RANGE_LIMIT,
};

const static SHORT16 s_asRealValueMapMenuTimer[UD_MENUTIMER_V_NUM] =
{
    /* UD_MENUTIMER_V_5 */
    5,
    /* UD_MENUTIMER_V_10 */
    10,
    /* UD_MENUTIMER_V_20 */
    20,
    /* UD_MENUTIMER_V_30 */
    30,
    /* UD_MENUTIMER_V_60 */
    60,
    /* UD_MENUTIMER_V_PSISTENT */
    0,
};

const static SHORT16 s_asRealValueMapRotation[UD_ROTATION_V_NUM] =
{
    /* UD_ROTATION_V_OFF */
    OSD_ROTATION_NONE,
    /* UD_ROTATION_V_90 */
    OSD_ROTATION_90,
    /* UD_ROTATION_V_180 */
    OSD_ROTATION_180,
    /* UD_ROTATION_V_270 */
    OSD_ROTATION_270,
};

const static SHORT16 s_asRealValueMapAudioSource[UD_AUDIO_SOURCE_V_NUM] =
{
    /* UD_AUDIO_SOURCE_V_MAIN */
    CHANNEL_TYPE_MAIN,
    /* UD_AUDIO_SOURCE_V_SUB */
    CHANNEL_TYPE_SUB,
};

const static SHORT16 s_asRealValueMapPxPMode[UD_PXPMODE_V_NUM] =
{
    /* UD_PXPMODE_V_OFF */
    PXP_MODE_CLOSE,
    /* UD_PXPMODE_V_PIP */
    PXP_MODE_PIP_ENABLE,
    /* UD_PXPMODE_V_PBP */
    PXP_MODE_PBP_ENABLE,
};

const static SHORT16 s_asRealValueMapPxPVideoSource[UD_PXPVIDEOSOURCE_V_NUM] =
{
    /* UD_PXPVIDEOSOURCE_V_HDMI1 */
    LINK_PORT_INDEX_HDMI_RX0,
    /* UD_PXPVIDEOSOURCE_V_HDMI2 */
    LINK_PORT_INDEX_HDMI_RX1,
    /* UD_PXPVIDEOSOURCE_V_USB_C */
    LINK_PORT_INDEX_DP_RX0,
    /* UD_PXPVIDEOSOURCE_V_DP */
    LINK_PORT_INDEX_DP_RX1,
};

const static SHORT16 s_asRealValueMapPipPosition[UD_PIP_POSITION_V_NUM] =
{
    /* UD_PIP_POSITION_V_LEFTTOP */
    PIP_POS_LEFT_TOP,
    /* UD_PIP_POSITION_V_LEFTBOTTOM */
    PIP_POS_LEFT_BOTTOM,
    /* UD_PIP_POSITION_V_RIGHTTOP */
    PIP_POS_RIGHT_TOP,
    /* UD_PIP_POSITION_V_RIGHTBOTTOM */
    PIP_POS_RIGHT_BOTTOM,
};

const static SHORT16 s_asRealValueMapPipSize[UD_PIP_SIZE_V_NUM] =
{
    /* UD_PIP_SIZE_V_SMALL */
    PIP_SIZE_SMALL,
    /* UD_PIP_SIZE_V_BIG */
    PIP_SIZE_BIG,
};

VOID Hv_App_OsdGetUserdata(UserdataId enWhichData, UserdataProp* pstProp)
{
    if (NULL == pstProp)
    {
        return;
    }

    pstProp->enUserdata = enWhichData;
    switch (enWhichData)
    {
        case E_USERDATA_DISPLAY_MODE:
        {
            pstProp->sMinValue = USERDATA_DISPLAY_MODE_MIN;
            pstProp->sMaxValue = USERDATA_DISPLAY_MODE_MAX;
            pstProp->bCircle = USERDATA_DISPLAY_MODE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucDisplayMode);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_BRIGHTNESS:
        {
            pstProp->sMinValue = USERDATA_BRIGHTNESS_MIN;
            pstProp->sMaxValue = USERDATA_BRIGHTNESS_MAX;
            pstProp->bCircle = USERDATA_BRIGHTNESS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucBrightness);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_CONTRAST:
        {
            pstProp->sMinValue = USERDATA_CONTRAST_MIN;
            pstProp->sMaxValue = USERDATA_CONTRAST_MAX;
            pstProp->bCircle = USERDATA_CONTRAST_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucContrast);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_HUE:
        {
            pstProp->sMinValue = USERDATA_HUE_MIN;
            pstProp->sMaxValue = USERDATA_HUE_MAX;
            pstProp->bCircle = USERDATA_HUE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucHue);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_SATURATION:
        {
            pstProp->sMinValue = USERDATA_SATURATION_MIN;
            pstProp->sMaxValue = USERDATA_SATURATION_MAX;
            pstProp->bCircle = USERDATA_SATURATION_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucSaturation);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_SHARPNESS:
        {
            pstProp->sMinValue = USERDATA_SHARPNESS_MIN;
            pstProp->sMaxValue = USERDATA_SHARPNESS_MAX;
            pstProp->bCircle = USERDATA_SHARPNESS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucSharpness);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_DARKSTABILIZER:
        {
            pstProp->sMinValue = USERDATA_DARKSTABILIZER_MIN;
            pstProp->sMaxValue = USERDATA_DARKSTABILIZER_MAX;
            pstProp->bCircle = USERDATA_DARKSTABILIZER_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucDarkStabilizer);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_COLOR_TEMP:
        {
            pstProp->sMinValue = USERDATA_COLOR_TEMP_MIN;
            pstProp->sMaxValue = USERDATA_COLOR_TEMP_MAX;
            pstProp->bCircle = USERDATA_COLOR_TEMP_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucColorTemperature);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapColorTemperature;
            pstProp->stEnumMap.usCount = UD_COLOR_TEMP_V_NUM;
            break;
        }
        case E_USERDATA_LOW_BLUE_LIGHT:
        {
            pstProp->sMinValue = USERDATA_LOW_BLUE_LIGHT_MIN;
            pstProp->sMaxValue = USERDATA_LOW_BLUE_LIGHT_MAX;
            pstProp->bCircle = USERDATA_LOW_BLUE_LIGHT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucLowBlueLight);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_COLOR_SPACE:
        {
            pstProp->sMinValue = USERDATA_COLOR_SPACE_MIN;
            pstProp->sMaxValue = USERDATA_COLOR_SPACE_MAX;
            pstProp->bCircle = USERDATA_COLOR_SPACE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucColorSpace);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapColorSpace;
            pstProp->stEnumMap.usCount = UD_COLOR_SPACE_V_NUM;
            break;
        }
        case E_USERDATA_RED:
        {
            pstProp->sMinValue = USERDATA_RED_MIN;
            pstProp->sMaxValue = USERDATA_RED_MAX;
            pstProp->bCircle = USERDATA_RED_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucRed);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_GREEN:
        {
            pstProp->sMinValue = USERDATA_GREEN_MIN;
            pstProp->sMaxValue = USERDATA_GREEN_MAX;
            pstProp->bCircle = USERDATA_GREEN_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucGreen);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_BLUE:
        {
            pstProp->sMinValue = USERDATA_BLUE_MIN;
            pstProp->sMaxValue = USERDATA_BLUE_MAX;
            pstProp->bCircle = USERDATA_BLUE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucBlue);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_GAMMA:
        {
            pstProp->sMinValue = USERDATA_GAMMA_MIN;
            pstProp->sMaxValue = USERDATA_GAMMA_MAX;
            pstProp->bCircle = USERDATA_GAMMA_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucGamma);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapGamma;
            pstProp->stEnumMap.usCount = UD_GAMMA_V_NUM;
            break;
        }
        case E_USERDATA_LOCALDIMMING:
        {
            pstProp->sMinValue = USERDATA_LOCALDIMMING_MIN;
            pstProp->sMaxValue = USERDATA_LOCALDIMMING_MAX;
            pstProp->bCircle = USERDATA_LOCALDIMMING_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucLocaldimming);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapLocaldimming;
            pstProp->stEnumMap.usCount = UD_LOCALDIMMING_V_NUM;
            break;
        }
        case E_USERDATA_COLOR_FILTER:
        {
            pstProp->sMinValue = USERDATA_COLOR_FILTER_MIN;
            pstProp->sMaxValue = USERDATA_COLOR_FILTER_MAX;
            pstProp->bCircle = USERDATA_COLOR_FILTER_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucColorFilter);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_VIDEOSOURCE:
        {
            pstProp->sMinValue = USERDATA_VIDEOSOURCE_MIN;
            pstProp->sMaxValue = USERDATA_VIDEOSOURCE_MAX;
            pstProp->bCircle = USERDATA_VIDEOSOURCE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucVideoSource);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapVideoSource;
            pstProp->stEnumMap.usCount = UD_VIDEOSOURCE_V_NUM;
            break;
        }
        case E_USERDATA_AUTOSOURCE:
        {
            pstProp->sMinValue = USERDATA_AUTOSOURCE_MIN;
            pstProp->sMaxValue = USERDATA_AUTOSOURCE_MAX;
            pstProp->bCircle = USERDATA_AUTOSOURCE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bAutoVideoSrcSelSw);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_HDMI_FORMAT:
        {
            pstProp->sMinValue = USERDATA_HDMI_FORMAT_MIN;
            pstProp->sMaxValue = USERDATA_HDMI_FORMAT_MAX;
            pstProp->bCircle = USERDATA_HDMI_FORMAT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucHdmiFormat);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_HDMI_ALLM:
        {
            pstProp->sMinValue = USERDATA_HDMI_ALLM_MIN;
            pstProp->sMaxValue = USERDATA_HDMI_ALLM_MAX;
            pstProp->bCircle = USERDATA_HDMI_ALLM_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bHdmiAllmEn);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_QMS:
        {
            pstProp->sMinValue = USERDATA_QMS_MIN;
            pstProp->sMaxValue = USERDATA_QMS_MAX;
            pstProp->bCircle = USERDATA_QMS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bQms);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_DP_VERSION:
        {
            pstProp->sMinValue = USERDATA_DP_VERSION_MIN;
            pstProp->sMaxValue = USERDATA_DP_VERSION_MAX;
            pstProp->bCircle = USERDATA_DP_VERSION_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucDpVersion);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapDpVersion;
            pstProp->stEnumMap.usCount = UD_DP_VERSION_V_NUM;
            break;
        }
        case E_USERDATA_PROPORTION:
        {
            pstProp->sMinValue = USERDATA_PROPORTION_MIN;
            pstProp->sMaxValue = USERDATA_PROPORTION_MAX;
            pstProp->bCircle = USERDATA_PROPORTION_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucProportion);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapProportion;
            pstProp->stEnumMap.usCount = UD_PROPORTION_V_NUM;
            break;
        }
        case E_USERDATA_RESPONSETIME:
        {
            pstProp->sMinValue = USERDATA_RESPONSETIME_MIN;
            pstProp->sMaxValue = USERDATA_RESPONSETIME_MAX;
            pstProp->bCircle = USERDATA_RESPONSETIME_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucResponseTime);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapResponseTime;
            pstProp->stEnumMap.usCount = UD_RESPONSETIME_V_NUM;
            break;
        }
        case E_USERDATA_MPRT:
        {
            pstProp->sMinValue = USERDATA_MPRT_MIN;
            pstProp->sMaxValue = USERDATA_MPRT_MAX;
            pstProp->bCircle = USERDATA_MPRT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucMprt);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapMprt;
            pstProp->stEnumMap.usCount = UD_MPRT_V_NUM;
            break;
        }
        case E_USERDATA_FREESYNC:
        {
            pstProp->sMinValue = USERDATA_FREESYNC_MIN;
            pstProp->sMaxValue = USERDATA_FREESYNC_MAX;
            pstProp->bCircle = USERDATA_FREESYNC_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucFreeSync);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_HDR:
        {
            pstProp->sMinValue = USERDATA_HDR_MIN;
            pstProp->sMaxValue = USERDATA_HDR_MAX;
            pstProp->bCircle = USERDATA_HDR_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucHdrSwitch);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapHdrSwitch;
            pstProp->stEnumMap.usCount = UD_HDR_V_NUM;
            break;
        }
        case E_USERDATA_LDR:
        {
            pstProp->sMinValue = USERDATA_LDR_MIN;
            pstProp->sMaxValue = USERDATA_LDR_MAX;
            pstProp->bCircle = USERDATA_LDR_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucLdr);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapLdr;
            pstProp->stEnumMap.usCount = UD_LDR_V_NUM;
            break;
        }
        case E_USERDATA_DCR:
        {
            pstProp->sMinValue = USERDATA_DCR_MIN;
            pstProp->sMaxValue = USERDATA_DCR_MAX;
            pstProp->bCircle = USERDATA_DCR_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucDcr);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_CROSSHAIR:
        {
            pstProp->sMinValue = USERDATA_CROSSHAIR_MIN;
            pstProp->sMaxValue = USERDATA_CROSSHAIR_MAX;
            pstProp->bCircle = USERDATA_CROSSHAIR_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucCrosshair);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_DYN_CROSSHAIR:
        {
            pstProp->sMinValue = USERDATA_DYN_CROSSHAIR_MIN;
            pstProp->sMaxValue = USERDATA_DYN_CROSSHAIR_MAX;
            pstProp->bCircle = USERDATA_DYN_CROSSHAIR_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bDynCrosshair);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_MAGNIFY_GLASS:
        {
            pstProp->sMinValue = USERDATA_MAGNIFY_GLASS_MIN;
            pstProp->sMaxValue = USERDATA_MAGNIFY_GLASS_MAX;
            pstProp->bCircle = USERDATA_MAGNIFY_GLASS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bMagnifyGlassSw);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_REFRESH_RATE:
        {
            pstProp->sMinValue = USERDATA_REFRESH_RATE_MIN;
            pstProp->sMaxValue = USERDATA_REFRESH_RATE_MAX;
            pstProp->bCircle = USERDATA_REFRESH_RATE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucRefreshRate);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_TIME_COUNTER:
        {
            pstProp->sMinValue = USERDATA_TIME_COUNTER_MIN;
            pstProp->sMaxValue = USERDATA_TIME_COUNTER_MAX;
            pstProp->bCircle = USERDATA_TIME_COUNTER_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucTimeCounter);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_LANGUAGE:
        {
            pstProp->sMinValue = USERDATA_LANGUAGE_MIN;
            pstProp->sMaxValue = USERDATA_LANGUAGE_MAX;
            pstProp->bCircle = USERDATA_LANGUAGE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucLanguage);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_MENUX:
        {
            pstProp->sMinValue = USERDATA_MENUX_MIN;
            pstProp->sMaxValue = USERDATA_MENUX_MAX;
            pstProp->bCircle = USERDATA_MENUX_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucMenuX);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_MENUY:
        {
            pstProp->sMinValue = USERDATA_MENUY_MIN;
            pstProp->sMaxValue = USERDATA_MENUY_MAX;
            pstProp->bCircle = USERDATA_MENUY_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucMenuY);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_MENUTIMER:
        {
            pstProp->sMinValue = USERDATA_MENUTIMER_MIN;
            pstProp->sMaxValue = USERDATA_MENUTIMER_MAX;
            pstProp->bCircle = USERDATA_MENUTIMER_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucMenuTimer);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapMenuTimer;
            pstProp->stEnumMap.usCount = UD_MENUTIMER_V_NUM;
            break;
        }
        case E_USERDATA_MENUTRANSPARENCY:
        {
            pstProp->sMinValue = USERDATA_MENUTRANSPARENCY_MIN;
            pstProp->sMaxValue = USERDATA_MENUTRANSPARENCY_MAX;
            pstProp->bCircle = USERDATA_MENUTRANSPARENCY_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucMenuTrans);
            pstProp->enMappingType = E_LINEAR_REVERT_MAP;
            pstProp->stLinerMap.sRealMinValue = USERDATA_MENUTRANSPARENCY_REAL_MIN;
            pstProp->stLinerMap.sRealMaxValue = USERDATA_MENUTRANSPARENCY_REAL_MAX;
            break;
        }
        case E_USERDATA_MENULOCK:
        {
            pstProp->sMinValue = USERDATA_MENULOCK_MIN;
            pstProp->sMaxValue = USERDATA_MENULOCK_MAX;
            pstProp->bCircle = USERDATA_MENULOCK_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bMenuLock);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_CUSTOM_KEY1:
        {
            pstProp->sMinValue = USERDATA_CUSTOM_KEY1_MIN;
            pstProp->sMaxValue = USERDATA_CUSTOM_KEY1_MAX;
            pstProp->bCircle = USERDATA_CUSTOM_KEY1_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucCustomKey1);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_CUSTOM_KEY2:
        {
            pstProp->sMinValue = USERDATA_CUSTOM_KEY2_MIN;
            pstProp->sMaxValue = USERDATA_CUSTOM_KEY2_MAX;
            pstProp->bCircle = USERDATA_CUSTOM_KEY2_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucCustomKey2);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_CUSTOM_KEY3:
        {
            pstProp->sMinValue = USERDATA_CUSTOM_KEY3_MIN;
            pstProp->sMaxValue = USERDATA_CUSTOM_KEY3_MAX;
            pstProp->bCircle = USERDATA_CUSTOM_KEY3_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucCustomKey3);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_LIGHT_EFFECT:
        {
            pstProp->sMinValue = USERDATA_LIGHT_EFFECT_MIN;
            pstProp->sMaxValue = USERDATA_LIGHT_EFFECT_MAX;
            pstProp->bCircle = USERDATA_LIGHT_EFFECT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucLightEffect);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_AMBIENTLIGHT:
        {
            pstProp->sMinValue = USERDATA_AMBIENTLIGHT_MIN;
            pstProp->sMaxValue = USERDATA_AMBIENTLIGHT_MAX;
            pstProp->bCircle = USERDATA_AMBIENTLIGHT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucAmbientLight);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_MONOLIGHT:
        {
            pstProp->sMinValue = USERDATA_MONOLIGHT_MIN;
            pstProp->sMaxValue = USERDATA_MONOLIGHT_MAX;
            pstProp->bCircle = USERDATA_MONOLIGHT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucMonoLight);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_VARIABLEBACKLIGHT:
        {
            pstProp->sMinValue = USERDATA_VARIABLEBACKLIGHT_MIN;
            pstProp->sMaxValue = USERDATA_VARIABLEBACKLIGHT_MAX;
            pstProp->bCircle = USERDATA_VARIABLEBACKLIGHT_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucVariableBackLight);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_ROTATION:
        {
            pstProp->sMinValue = USERDATA_ROTATION_MIN;
            pstProp->sMaxValue = USERDATA_ROTATION_MAX;
            pstProp->bCircle = USERDATA_ROTATION_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucRotation);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapRotation;
            pstProp->stEnumMap.usCount = UD_ROTATION_V_NUM;
            break;
        }
        case E_USERDATA_VOLUME:
        {
            pstProp->sMinValue = USERDATA_VOLUME_MIN;
            pstProp->sMaxValue = USERDATA_VOLUME_MAX;
            pstProp->bCircle = USERDATA_VOLUME_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucVolume);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_MUTE:
        {
            pstProp->sMinValue = USERDATA_MUTE_MIN;
            pstProp->sMaxValue = USERDATA_MUTE_MAX;
            pstProp->bCircle = USERDATA_MUTE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bMute);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_AUDIO_SOURCE:
        {
            pstProp->sMinValue = USERDATA_AUDIO_SOURCE_MIN;
            pstProp->sMaxValue = USERDATA_AUDIO_SOURCE_MAX;
            pstProp->bCircle = USERDATA_AUDIO_SOURCE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucAudioSource);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapAudioSource;
            pstProp->stEnumMap.usCount = UD_AUDIO_SOURCE_V_NUM;
            break;
        }
        case E_USERDATA_TIME_DELAY:
        {
            pstProp->sMinValue = USERDATA_TIME_DELAY_MIN;
            pstProp->sMaxValue = USERDATA_TIME_DELAY_MAX;
            pstProp->bCircle = USERDATA_TIME_DELAY_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(uiSoundDelayTime);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_PXPMODE:
        {
            pstProp->sMinValue = USERDATA_PXPMODE_MIN;
            pstProp->sMaxValue = USERDATA_PXPMODE_MAX;
            pstProp->bCircle = USERDATA_PXPMODE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucPxPMode);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapPxPMode;
            pstProp->stEnumMap.usCount = UD_PXPMODE_V_NUM;
            break;
        }
        case E_USERDATA_PXPVIDEOSOURCE:
        {
            pstProp->sMinValue = USERDATA_PXPVIDEOSOURCE_MIN;
            pstProp->sMaxValue = USERDATA_PXPVIDEOSOURCE_MAX;
            pstProp->bCircle = USERDATA_PXPVIDEOSOURCE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucPxPVideoSource);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapPxPVideoSource;
            pstProp->stEnumMap.usCount = UD_PXPVIDEOSOURCE_V_NUM;
            break;
        }
        case E_USERDATA_PXP_SWITCH:
        {
            pstProp->sMinValue = USERDATA_PXP_SWITCH_MIN;
            pstProp->sMaxValue = USERDATA_PXP_SWITCH_MAX;
            pstProp->bCircle = USERDATA_PXP_SWITCH_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bPxPSwitch);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_PIP_POSITION:
        {
            pstProp->sMinValue = USERDATA_PIP_POSITION_MIN;
            pstProp->sMaxValue = USERDATA_PIP_POSITION_MAX;
            pstProp->bCircle = USERDATA_PIP_POSITION_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucPipPosition);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapPipPosition;
            pstProp->stEnumMap.usCount = UD_PIP_POSITION_V_NUM;
            break;
        }
        case E_USERDATA_PIP_SIZE:
        {
            pstProp->sMinValue = USERDATA_PIP_SIZE_MIN;
            pstProp->sMaxValue = USERDATA_PIP_SIZE_MAX;
            pstProp->bCircle = USERDATA_PIP_SIZE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucPipSize);
            pstProp->enMappingType = E_ENUM_MAP;
            pstProp->stEnumMap.asRealValueMapTable = s_asRealValueMapPipSize;
            pstProp->stEnumMap.usCount = UD_PIP_SIZE_V_NUM;
            break;
        }
        case E_USERDATA_BRIGHT_FRAME:
        {
            pstProp->sMinValue = USERDATA_BRIGHT_FRAME_MIN;
            pstProp->sMaxValue = USERDATA_BRIGHT_FRAME_MAX;
            pstProp->bCircle = USERDATA_BRIGHT_FRAME_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bBrightFrame);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_FRAME_SIZE:
        {
            pstProp->sMinValue = USERDATA_FRAME_SIZE_MIN;
            pstProp->sMaxValue = USERDATA_FRAME_SIZE_MAX;
            pstProp->bCircle = USERDATA_FRAME_SIZE_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucFrameSize);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_BF_BRIGHTNESS:
        {
            pstProp->sMinValue = USERDATA_BF_BRIGHTNESS_MIN;
            pstProp->sMaxValue = USERDATA_BF_BRIGHTNESS_MAX;
            pstProp->bCircle = USERDATA_BF_BRIGHTNESS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucBFBrightness);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_BF_CONTRAST:
        {
            pstProp->sMinValue = USERDATA_BF_CONTRAST_MIN;
            pstProp->sMaxValue = USERDATA_BF_CONTRAST_MAX;
            pstProp->bCircle = USERDATA_BF_CONTRAST_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucBFContrast);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_BF_HPOS:
        {
            pstProp->sMinValue = USERDATA_BF_HPOS_MIN;
            pstProp->sMaxValue = USERDATA_BF_HPOS_MAX;
            pstProp->bCircle = USERDATA_BF_HPOS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucBFHPos);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_BF_VPOS:
        {
            pstProp->sMinValue = USERDATA_BF_VPOS_MIN;
            pstProp->sMaxValue = USERDATA_BF_VPOS_MAX;
            pstProp->bCircle = USERDATA_BF_VPOS_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(ucBFVPos);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        case E_USERDATA_VRR_GAMMA:
        {
            pstProp->sMinValue = USERDATA_VRR_GAMMA_MIN;
            pstProp->sMaxValue = USERDATA_VRR_GAMMA_MAX;
            pstProp->bCircle = USERDATA_VRR_GAMMA_CIRCLE;
            pstProp->sOsdValue = OSD_USERDATA_GET(bVrrGamma);
            pstProp->enMappingType = E_NO_MAP;
            break;
        }
        default:
        {
            return;
        }
    }
    Hv_App_GetRealValue(enWhichData, &pstProp->sRealValue, &pstProp->sRealDefaultValue);
}

