/**
 * @file hv_res_OsdUserdata.h
 * @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>
 */

#ifndef __HV_RES_OSDUSERDATA_H__
#define __HV_RES_OSDUSERDATA_H__

#include "hv_comm_DataType.h"
#include "hv_comm_Define.h"

typedef struct _OsdUserdataParam
{
    UCHAR8 ucVideoSource;
    UCHAR8 ucBrightness;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_BLACK_LEVEL)
    UCHAR8 ucBlackLevel;
#endif
    UCHAR8 ucContrast;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_VARIABLEBACKLIGHT)
    BOOL bVariableBackLight;
#endif
    UCHAR8 ucGamma;
    UCHAR8 ucDisplayMode;
    UCHAR8 ucColorTemp;
    UCHAR8 ucRed;
    UCHAR8 ucGreen;
    UCHAR8 ucBlue;
    UCHAR8 ucLowBlueLight;
    UCHAR8 ucHue;
    UCHAR8 ucSaturation;
    UCHAR8 ucColorSpace;
    UCHAR8 ucSharpness;
    UCHAR8 ucResponseTime;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_MPRT)
    UCHAR8 ucMprt;
#endif
    UCHAR8 ucDisplaySize;
    UCHAR8 ucMute;
    UCHAR8 ucVolume;
    UCHAR8 ucLanguage;
    UCHAR8 ucMenuHPos;
    UCHAR8 ucMenuVPos;
    UCHAR8 ucOsdTrans;
    UCHAR8 ucOsdTime;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_OSD_ROTATION)
    UCHAR8 ucRotation;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_FREESYNC)
    UCHAR8 ucFreesync;
#endif
    UCHAR8 ucCrosshair;
    UCHAR8 ucRefreshRate;
    UCHAR8 ucTimerCounter;
    UCHAR8 ucPowerLed;
    UCHAR8 ucCustomKey1;
    UCHAR8 ucCustomKey2;
    UCHAR8 ucCustomKey3;
    UCHAR8 ucLightMode;
    UCHAR8 ucSteadyColor;
    UCHAR8 ucBreatheColor;
    UCHAR8 ucMarqueeInColor;
    UCHAR8 ucMarqueeOutColor;
    UCHAR8 ucR_Hue;
    UCHAR8 ucG_Hue;
    UCHAR8 ucB_Hue;
    UCHAR8 ucY_Hue;
    UCHAR8 ucM_Hue;
    UCHAR8 ucC_Hue;
    UCHAR8 ucR_Saturate;
    UCHAR8 ucG_Saturate;
    UCHAR8 ucB_Saturate;
    UCHAR8 ucY_Saturate;
    UCHAR8 ucM_Saturate;
    UCHAR8 ucC_Saturate;
} OsdUserdataParam;

/********* Userdata enum define *********/
typedef enum
{
    E_USERDATA_NONE,
    E_USERDATA_VIDEO_SOURCE,
    E_USERDATA_BRIGHTNESS,
    E_USERDATA_BLACK_LEVEL,
    E_USERDATA_CONTRAST,
    E_USERDATA_VARIABLE_BACK_LIGHT,
    E_USERDATA_GAMMA,
    E_USERDATA_DISPLAY_MODE,
    E_USERDATA_COLOR_TEMP,
    E_USERDATA_RED,
    E_USERDATA_GREEN,
    E_USERDATA_BLUE,
    E_USERDATA_LOW_BLUE_LIGHT,
    E_USERDATA_HUE,
    E_USERDATA_SATURATION,
    E_USERDATA_COLOR_SPACE,
    E_USERDATA_SHARPNESS,
    E_USERDATA_RESPONSE_TIME,
    E_USERDATA_MPRT,
    E_USERDATA_DISPLAY_SIZE,
    E_USERDATA_MUTE,
    E_USERDATA_VOLUME,
    E_USERDATA_LANGUAGE,
    E_USERDATA_MENU_HPOS,
    E_USERDATA_MENU_VPOS,
    E_USERDATA_OSD_TRANS,
    E_USERDATA_OSD_TIME,
    E_USERDATA_ROTATION,
    E_USERDATA_FREESYNC,
    E_USERDATA_CROSSHAIR,
    E_USERDATA_REFRESH_RATE,
    E_USERDATA_TIMER_COUNTER,
    E_USERDATA_POWER_LED,
    E_USERDATA_CUSTOM_KEY1,
    E_USERDATA_CUSTOM_KEY2,
    E_USERDATA_CUSTOM_KEY3,
    E_USERDATA_LIGHT_MODE,
    E_USERDATA_STEADY_COLOR,
    E_USERDATA_BREATHE_COLOR,
    E_USERDATA_MARQUEEIN_COLOR,
    E_USERDATA_MARQUEEOUT_COLOR,
    E_USERDATA_R_HUE,
    E_USERDATA_G_HUE,
    E_USERDATA_B_HUE,
    E_USERDATA_Y_HUE,
    E_USERDATA_M_HUE,
    E_USERDATA_C_HUE,
    E_USERDATA_R_SATURATE,
    E_USERDATA_G_SATURATE,
    E_USERDATA_B_SATURATE,
    E_USERDATA_Y_SATURATE,
    E_USERDATA_M_SATURATE,
    E_USERDATA_C_SATURATE,
    E_USERDATA_MAX,
}UserdataId;

/********* Userdata prop & value define *********/
/********* E_USERDATA_VIDEO_SOURCE *********/
typedef enum
{
    UD_VIDEO_SOURCE_V_HDMI1,
    UD_VIDEO_SOURCE_V_HDMI2,
    UD_VIDEO_SOURCE_V_DP1,
    UD_VIDEO_SOURCE_V_DP2,
    UD_VIDEO_SOURCE_V_NUM,
}UserdataValueVideoSource;
#define USERDATA_VIDEO_SOURCE_MIN        (UD_VIDEO_SOURCE_V_HDMI1)
#define USERDATA_VIDEO_SOURCE_MAX        (UD_VIDEO_SOURCE_V_DP2)
#define USERDATA_VIDEO_SOURCE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_BRIGHTNESS *********/
#define USERDATA_BRIGHTNESS_MIN        (0)
#define USERDATA_BRIGHTNESS_MAX        (100)
#define USERDATA_BRIGHTNESS_CIRCLE     (HV_FALSE)

/********* E_USERDATA_BLACK_LEVEL *********/
#define USERDATA_BLACK_LEVEL_MIN        (0)
#define USERDATA_BLACK_LEVEL_MAX        (100)
#define USERDATA_BLACK_LEVEL_CIRCLE     (HV_FALSE)

/********* E_USERDATA_CONTRAST *********/
#define USERDATA_CONTRAST_MIN        (0)
#define USERDATA_CONTRAST_MAX        (100)
#define USERDATA_CONTRAST_CIRCLE     (HV_FALSE)

/********* E_USERDATA_VARIABLE_BACK_LIGHT *********/
typedef enum
{
    UD_VARIABLE_BACK_LIGHT_V_OFF,
    UD_VARIABLE_BACK_LIGHT_V_ON,
    UD_VARIABLE_BACK_LIGHT_V_NUM,
}UserdataValueVariableBackLight;
#define USERDATA_VARIABLE_BACK_LIGHT_MIN        (UD_VARIABLE_BACK_LIGHT_V_OFF)
#define USERDATA_VARIABLE_BACK_LIGHT_MAX        (UD_VARIABLE_BACK_LIGHT_V_ON)
#define USERDATA_VARIABLE_BACK_LIGHT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_GAMMA *********/
typedef enum
{
    UD_GAMMA_V_1_6,
    UD_GAMMA_V_1_8,
    UD_GAMMA_V_2_0,
    UD_GAMMA_V_2_2,
    UD_GAMMA_V_2_4,
    UD_GAMMA_V_2_6,
    UD_GAMMA_V_NUM,
}UserdataValueGamma;
#define USERDATA_GAMMA_MIN        (UD_GAMMA_V_1_6)
#define USERDATA_GAMMA_MAX        (UD_GAMMA_V_2_6)
#define USERDATA_GAMMA_CIRCLE     (HV_TRUE)

/********* E_USERDATA_DISPLAY_MODE *********/
typedef enum
{
    UD_DISPLAY_MODE_V_NORMAL,
    UD_DISPLAY_MODE_V_PICTURE,
    UD_DISPLAY_MODE_V_CINEMA,
    UD_DISPLAY_MODE_V_GAME,
    UD_DISPLAY_MODE_V_FPS,
    UD_DISPLAY_MODE_V_RTS,
    UD_DISPLAY_MODE_V_NUM,
}UserdataValueDisplayMode;
#define USERDATA_DISPLAY_MODE_MIN        (UD_DISPLAY_MODE_V_NORMAL)
#define USERDATA_DISPLAY_MODE_MAX        (UD_DISPLAY_MODE_V_RTS)
#define USERDATA_DISPLAY_MODE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_COLOR_TEMP *********/
typedef enum
{
    UD_COLOR_TEMP_V_WARM,
    UD_COLOR_TEMP_V_COOL,
    UD_COLOR_TEMP_V_USER,
    UD_COLOR_TEMP_V_NUM,
}UserdataValueColorTemp;
#define USERDATA_COLOR_TEMP_MIN        (UD_COLOR_TEMP_V_WARM)
#define USERDATA_COLOR_TEMP_MAX        (UD_COLOR_TEMP_V_USER)
#define USERDATA_COLOR_TEMP_CIRCLE     (HV_TRUE)

/********* E_USERDATA_RED *********/
#define USERDATA_RED_MIN        (0)
#define USERDATA_RED_MAX        (100)
#define USERDATA_RED_CIRCLE     (HV_FALSE)

/********* E_USERDATA_GREEN *********/
#define USERDATA_GREEN_MIN        (0)
#define USERDATA_GREEN_MAX        (100)
#define USERDATA_GREEN_CIRCLE     (HV_FALSE)

/********* E_USERDATA_BLUE *********/
#define USERDATA_BLUE_MIN        (0)
#define USERDATA_BLUE_MAX        (100)
#define USERDATA_BLUE_CIRCLE     (HV_FALSE)

/********* E_USERDATA_LOW_BLUE_LIGHT *********/
#define USERDATA_LOW_BLUE_LIGHT_MIN        (0)
#define USERDATA_LOW_BLUE_LIGHT_MAX        (5)
#define USERDATA_LOW_BLUE_LIGHT_CIRCLE     (HV_FALSE)

/********* E_USERDATA_HUE *********/
#define USERDATA_HUE_MIN        (0)
#define USERDATA_HUE_MAX        (100)
#define USERDATA_HUE_CIRCLE     (HV_FALSE)

/********* E_USERDATA_SATURATION *********/
#define USERDATA_SATURATION_MIN        (0)
#define USERDATA_SATURATION_MAX        (100)
#define USERDATA_SATURATION_CIRCLE     (HV_FALSE)

/********* E_USERDATA_COLOR_SPACE *********/
typedef enum
{
    UD_COLOR_SPACE_V_NATIVE,
    UD_COLOR_SPACE_V_SRGB,
    UD_COLOR_SPACE_V_BT709,
    UD_COLOR_SPACE_V_DCIP3,
    UD_COLOR_SPACE_V_ADOBERGB,
    UD_COLOR_SPACE_V_NUM,
}UserdataValueColorSpace;
#define USERDATA_COLOR_SPACE_MIN        (UD_COLOR_SPACE_V_NATIVE)
#define USERDATA_COLOR_SPACE_MAX        (UD_COLOR_SPACE_V_ADOBERGB)
#define USERDATA_COLOR_SPACE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_SHARPNESS *********/
#define USERDATA_SHARPNESS_MIN        (0)
#define USERDATA_SHARPNESS_MAX        (20)
#define USERDATA_SHARPNESS_CIRCLE     (HV_FALSE)

/********* E_USERDATA_RESPONSE_TIME *********/
typedef enum
{
    UD_RESPONSE_TIME_V_OFF,
    UD_RESPONSE_TIME_V_LOW,
    UD_RESPONSE_TIME_V_MIDDLE,
    UD_RESPONSE_TIME_V_HIGH,
    UD_RESPONSE_TIME_V_NUM,
}UserdataValueResponseTime;
#define USERDATA_RESPONSE_TIME_MIN        (UD_RESPONSE_TIME_V_OFF)
#define USERDATA_RESPONSE_TIME_MAX        (UD_RESPONSE_TIME_V_HIGH)
#define USERDATA_RESPONSE_TIME_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MPRT *********/
typedef enum
{
    UD_MPRT_V_OFF,
    UD_MPRT_V_ON,
    UD_MPRT_V_VRR,
    UD_MPRT_V_NUM,
}UserdataValueMprt;
#define USERDATA_MPRT_MIN        (UD_MPRT_V_OFF)
#define USERDATA_MPRT_MAX        (UD_MPRT_V_VRR)
#define USERDATA_MPRT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_DISPLAY_SIZE *********/
typedef enum
{
    UD_DISPLAY_SIZE_V_AUTO,
    UD_DISPLAY_SIZE_V_16_9,
    UD_DISPLAY_SIZE_V_4_3,
    UD_DISPLAY_SIZE_V_NUM,
}UserdataValueDisplaySize;
#define USERDATA_DISPLAY_SIZE_MIN        (UD_DISPLAY_SIZE_V_AUTO)
#define USERDATA_DISPLAY_SIZE_MAX        (UD_DISPLAY_SIZE_V_4_3)
#define USERDATA_DISPLAY_SIZE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MUTE *********/
typedef enum
{
    UD_MUTE_V_OFF,
    UD_MUTE_V_ON,
    UD_MUTE_V_NUM,
}UserdataValueMute;
#define USERDATA_MUTE_MIN        (UD_MUTE_V_OFF)
#define USERDATA_MUTE_MAX        (UD_MUTE_V_ON)
#define USERDATA_MUTE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_VOLUME *********/
#define USERDATA_VOLUME_MIN        (0)
#define USERDATA_VOLUME_MAX        (100)
#define USERDATA_VOLUME_CIRCLE     (HV_FALSE)

/********* E_USERDATA_LANGUAGE *********/
typedef enum
{
    UD_LANGUAGE_V_CN,
    UD_LANGUAGE_V_EN,
    UD_LANGUAGE_V_NUM,
}UserdataValueLanguage;
#define USERDATA_LANGUAGE_MIN        (UD_LANGUAGE_V_CN)
#define USERDATA_LANGUAGE_MAX        (UD_LANGUAGE_V_EN)
#define USERDATA_LANGUAGE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MENU_HPOS *********/
#define USERDATA_MENU_HPOS_MIN        (0)
#define USERDATA_MENU_HPOS_MAX        (100)
#define USERDATA_MENU_HPOS_CIRCLE     (HV_FALSE)

/********* E_USERDATA_MENU_VPOS *********/
#define USERDATA_MENU_VPOS_MIN        (0)
#define USERDATA_MENU_VPOS_MAX        (100)
#define USERDATA_MENU_VPOS_CIRCLE     (HV_FALSE)

/********* E_USERDATA_OSD_TRANS *********/
#define USERDATA_OSD_TRANS_MIN        (0)
#define USERDATA_OSD_TRANS_MAX        (10)
#define USERDATA_OSD_TRANS_CIRCLE     (HV_FALSE)
#define USERDATA_OSD_TRANS_REAL_MIN   (128)
#define USERDATA_OSD_TRANS_REAL_MAX   (255)

/********* E_USERDATA_OSD_TIME *********/
#define USERDATA_OSD_TIME_MIN        (5)
#define USERDATA_OSD_TIME_MAX        (120)
#define USERDATA_OSD_TIME_CIRCLE     (HV_FALSE)

/********* E_USERDATA_ROTATION *********/
typedef enum
{
    UD_ROTATION_V_OFF,
    UD_ROTATION_V_90,
    UD_ROTATION_V_180,
    UD_ROTATION_V_270,
    UD_ROTATION_V_NUM,
}UserdataValueRotation;
#define USERDATA_ROTATION_MIN        (UD_ROTATION_V_OFF)
#define USERDATA_ROTATION_MAX        (UD_ROTATION_V_270)
#define USERDATA_ROTATION_CIRCLE     (HV_TRUE)

/********* E_USERDATA_FREESYNC *********/
typedef enum
{
    UD_FREESYNC_V_OFF,
    UD_FREESYNC_V_ON,
    UD_FREESYNC_V_NUM,
}UserdataValueFreesync;
#define USERDATA_FREESYNC_MIN        (UD_FREESYNC_V_OFF)
#define USERDATA_FREESYNC_MAX        (UD_FREESYNC_V_ON)
#define USERDATA_FREESYNC_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CROSSHAIR *********/
typedef enum
{
    UD_CROSSHAIR_V_STYLE1,
    UD_CROSSHAIR_V_STYLE2,
    UD_CROSSHAIR_V_STYLE3,
    UD_CROSSHAIR_V_NONE,
    UD_CROSSHAIR_V_NUM,
}UserdataValueCrosshair;
#define USERDATA_CROSSHAIR_MIN        (UD_CROSSHAIR_V_STYLE1)
#define USERDATA_CROSSHAIR_MAX        (UD_CROSSHAIR_V_NONE)
#define USERDATA_CROSSHAIR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_REFRESH_RATE *********/
typedef enum
{
    UD_REFRESH_RATE_V_OFF,
    UD_REFRESH_RATE_V_ON,
    UD_REFRESH_RATE_V_NUM,
}UserdataValueRefreshRate;
#define USERDATA_REFRESH_RATE_MIN        (UD_REFRESH_RATE_V_OFF)
#define USERDATA_REFRESH_RATE_MAX        (UD_REFRESH_RATE_V_ON)
#define USERDATA_REFRESH_RATE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_TIMER_COUNTER *********/
typedef enum
{
    UD_TIMER_COUNTER_V_OFF,
    UD_TIMER_COUNTER_V_5,
    UD_TIMER_COUNTER_V_10,
    UD_TIMER_COUNTER_V_20,
    UD_TIMER_COUNTER_V_40,
    UD_TIMER_COUNTER_V_60,
    UD_TIMER_COUNTER_V_NUM,
}UserdataValueTimerCounter;
#define USERDATA_TIMER_COUNTER_MIN        (UD_TIMER_COUNTER_V_OFF)
#define USERDATA_TIMER_COUNTER_MAX        (UD_TIMER_COUNTER_V_60)
#define USERDATA_TIMER_COUNTER_CIRCLE     (HV_TRUE)

/********* E_USERDATA_POWER_LED *********/
typedef enum
{
    UD_POWER_LED_V_OFF,
    UD_POWER_LED_V_ON,
    UD_POWER_LED_V_NUM,
}UserdataValuePowerLed;
#define USERDATA_POWER_LED_MIN        (UD_POWER_LED_V_OFF)
#define USERDATA_POWER_LED_MAX        (UD_POWER_LED_V_ON)
#define USERDATA_POWER_LED_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CUSTOM_KEY1 *********/
typedef enum
{
    UD_CUSTOM_KEY1_V_INPUT,
    UD_CUSTOM_KEY1_V_MODE,
    UD_CUSTOM_KEY1_V_BRIGHTNESS,
    UD_CUSTOM_KEY1_V_CONTRAST,
    UD_CUSTOM_KEY1_V_VOLUME,
    UD_CUSTOM_KEY1_V_NUM,
}UserdataValueCustomKey1;
#define USERDATA_CUSTOM_KEY1_MIN        (UD_CUSTOM_KEY1_V_INPUT)
#define USERDATA_CUSTOM_KEY1_MAX        (UD_CUSTOM_KEY1_V_VOLUME)
#define USERDATA_CUSTOM_KEY1_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CUSTOM_KEY2 *********/
typedef enum
{
    UD_CUSTOM_KEY2_V_INPUT,
    UD_CUSTOM_KEY2_V_MODE,
    UD_CUSTOM_KEY2_V_BRIGHTNESS,
    UD_CUSTOM_KEY2_V_CONTRAST,
    UD_CUSTOM_KEY2_V_VOLUME,
    UD_CUSTOM_KEY2_V_NUM,
}UserdataValueCustomKey2;
#define USERDATA_CUSTOM_KEY2_MIN        (UD_CUSTOM_KEY2_V_INPUT)
#define USERDATA_CUSTOM_KEY2_MAX        (UD_CUSTOM_KEY2_V_VOLUME)
#define USERDATA_CUSTOM_KEY2_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CUSTOM_KEY3 *********/
typedef enum
{
    UD_CUSTOM_KEY3_V_INPUT,
    UD_CUSTOM_KEY3_V_MODE,
    UD_CUSTOM_KEY3_V_BRIGHTNESS,
    UD_CUSTOM_KEY3_V_CONTRAST,
    UD_CUSTOM_KEY3_V_VOLUME,
    UD_CUSTOM_KEY3_V_NUM,
}UserdataValueCustomKey3;
#define USERDATA_CUSTOM_KEY3_MIN        (UD_CUSTOM_KEY3_V_INPUT)
#define USERDATA_CUSTOM_KEY3_MAX        (UD_CUSTOM_KEY3_V_VOLUME)
#define USERDATA_CUSTOM_KEY3_CIRCLE     (HV_TRUE)

/********* E_USERDATA_LIGHT_MODE *********/
typedef enum
{
    UD_LIGHT_MODE_V_OFF,
    UD_LIGHT_MODE_V_STEADY,
    UD_LIGHT_MODE_V_BREATHE,
    UD_LIGHT_MODE_V_MARQUEEIN,
    UD_LIGHT_MODE_V_MARQUEEOUT,
    UD_LIGHT_MODE_V_NUM,
}UserdataValueLightMode;
#define USERDATA_LIGHT_MODE_MIN        (UD_LIGHT_MODE_V_OFF)
#define USERDATA_LIGHT_MODE_MAX        (UD_LIGHT_MODE_V_MARQUEEOUT)
#define USERDATA_LIGHT_MODE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_STEADY_COLOR *********/
typedef enum
{
    UD_STEADY_COLOR_V_SPECTRUM,
    UD_STEADY_COLOR_V_RED,
    UD_STEADY_COLOR_V_GREEN,
    UD_STEADY_COLOR_V_BLUE,
    UD_STEADY_COLOR_V_CYAN,
    UD_STEADY_COLOR_V_PURPLE,
    UD_STEADY_COLOR_V_YELLOW,
    UD_STEADY_COLOR_V_NUM,
}UserdataValueSteadyColor;
#define USERDATA_STEADY_COLOR_MIN        (UD_STEADY_COLOR_V_SPECTRUM)
#define USERDATA_STEADY_COLOR_MAX        (UD_STEADY_COLOR_V_YELLOW)
#define USERDATA_STEADY_COLOR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_BREATHE_COLOR *********/
typedef enum
{
    UD_BREATHE_COLOR_V_SPECTRUM,
    UD_BREATHE_COLOR_V_RED,
    UD_BREATHE_COLOR_V_GREEN,
    UD_BREATHE_COLOR_V_BLUE,
    UD_BREATHE_COLOR_V_CYAN,
    UD_BREATHE_COLOR_V_PURPLE,
    UD_BREATHE_COLOR_V_YELLOW,
    UD_BREATHE_COLOR_V_NUM,
}UserdataValueBreatheColor;
#define USERDATA_BREATHE_COLOR_MIN        (UD_BREATHE_COLOR_V_SPECTRUM)
#define USERDATA_BREATHE_COLOR_MAX        (UD_BREATHE_COLOR_V_YELLOW)
#define USERDATA_BREATHE_COLOR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MARQUEEIN_COLOR *********/
typedef enum
{
    UD_MARQUEEIN_COLOR_V_SPECTRUM1,
    UD_MARQUEEIN_COLOR_V_SPECTRUM2,
    UD_MARQUEEIN_COLOR_V_SPECTRUM3,
    UD_MARQUEEIN_COLOR_V_RED,
    UD_MARQUEEIN_COLOR_V_GREEN,
    UD_MARQUEEIN_COLOR_V_BLUE,
    UD_MARQUEEIN_COLOR_V_CYAN,
    UD_MARQUEEIN_COLOR_V_PURPLE,
    UD_MARQUEEIN_COLOR_V_YELLOW,
    UD_MARQUEEIN_COLOR_V_NUM,
}UserdataValueMarqueeInColor;
#define USERDATA_MARQUEEIN_COLOR_MIN        (UD_MARQUEEIN_COLOR_V_SPECTRUM1)
#define USERDATA_MARQUEEIN_COLOR_MAX        (UD_MARQUEEIN_COLOR_V_YELLOW)
#define USERDATA_MARQUEEIN_COLOR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MARQUEEOUT_COLOR *********/
typedef enum
{
    UD_MARQUEEOUT_COLOR_V_SPECTRUM1,
    UD_MARQUEEOUT_COLOR_V_SPECTRUM2,
    UD_MARQUEEOUT_COLOR_V_SPECTRUM3,
    UD_MARQUEEOUT_COLOR_V_RED,
    UD_MARQUEEOUT_COLOR_V_GREEN,
    UD_MARQUEEOUT_COLOR_V_BLUE,
    UD_MARQUEEOUT_COLOR_V_CYAN,
    UD_MARQUEEOUT_COLOR_V_PURPLE,
    UD_MARQUEEOUT_COLOR_V_YELLOW,
    UD_MARQUEEOUT_COLOR_V_NUM,
}UserdataValueMarqueeOutColor;
#define USERDATA_MARQUEEOUT_COLOR_MIN        (UD_MARQUEEOUT_COLOR_V_SPECTRUM1)
#define USERDATA_MARQUEEOUT_COLOR_MAX        (UD_MARQUEEOUT_COLOR_V_YELLOW)
#define USERDATA_MARQUEEOUT_COLOR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_R_HUE *********/
#define USERDATA_R_HUE_MIN        (0)
#define USERDATA_R_HUE_MAX        (100)
#define USERDATA_R_HUE_CIRCLE     (HV_FALSE)
#define USERDATA_R_HUE_REAL_MIN   (0)
#define USERDATA_R_HUE_REAL_MAX   (255)

/********* E_USERDATA_G_HUE *********/
#define USERDATA_G_HUE_MIN        (0)
#define USERDATA_G_HUE_MAX        (100)
#define USERDATA_G_HUE_CIRCLE     (HV_FALSE)
#define USERDATA_G_HUE_REAL_MIN   (0)
#define USERDATA_G_HUE_REAL_MAX   (255)

/********* E_USERDATA_B_HUE *********/
#define USERDATA_B_HUE_MIN        (0)
#define USERDATA_B_HUE_MAX        (100)
#define USERDATA_B_HUE_CIRCLE     (HV_FALSE)
#define USERDATA_B_HUE_REAL_MIN   (0)
#define USERDATA_B_HUE_REAL_MAX   (255)

/********* E_USERDATA_Y_HUE *********/
#define USERDATA_Y_HUE_MIN        (0)
#define USERDATA_Y_HUE_MAX        (100)
#define USERDATA_Y_HUE_CIRCLE     (HV_FALSE)
#define USERDATA_Y_HUE_REAL_MIN   (0)
#define USERDATA_Y_HUE_REAL_MAX   (255)

/********* E_USERDATA_M_HUE *********/
#define USERDATA_M_HUE_MIN        (0)
#define USERDATA_M_HUE_MAX        (100)
#define USERDATA_M_HUE_CIRCLE     (HV_FALSE)
#define USERDATA_M_HUE_REAL_MIN   (0)
#define USERDATA_M_HUE_REAL_MAX   (255)

/********* E_USERDATA_C_HUE *********/
#define USERDATA_C_HUE_MIN        (0)
#define USERDATA_C_HUE_MAX        (100)
#define USERDATA_C_HUE_CIRCLE     (HV_FALSE)
#define USERDATA_C_HUE_REAL_MIN   (0)
#define USERDATA_C_HUE_REAL_MAX   (255)

/********* E_USERDATA_R_SATURATE *********/
#define USERDATA_R_SATURATE_MIN        (0)
#define USERDATA_R_SATURATE_MAX        (100)
#define USERDATA_R_SATURATE_CIRCLE     (HV_FALSE)
#define USERDATA_R_SATURATE_REAL_MIN   (0)
#define USERDATA_R_SATURATE_REAL_MAX   (255)

/********* E_USERDATA_G_SATURATE *********/
#define USERDATA_G_SATURATE_MIN        (0)
#define USERDATA_G_SATURATE_MAX        (100)
#define USERDATA_G_SATURATE_CIRCLE     (HV_FALSE)
#define USERDATA_G_SATURATE_REAL_MIN   (0)
#define USERDATA_G_SATURATE_REAL_MAX   (255)

/********* E_USERDATA_B_SATURATE *********/
#define USERDATA_B_SATURATE_MIN        (0)
#define USERDATA_B_SATURATE_MAX        (100)
#define USERDATA_B_SATURATE_CIRCLE     (HV_FALSE)
#define USERDATA_B_SATURATE_REAL_MIN   (0)
#define USERDATA_B_SATURATE_REAL_MAX   (255)

/********* E_USERDATA_Y_SATURATE *********/
#define USERDATA_Y_SATURATE_MIN        (0)
#define USERDATA_Y_SATURATE_MAX        (100)
#define USERDATA_Y_SATURATE_CIRCLE     (HV_FALSE)
#define USERDATA_Y_SATURATE_REAL_MIN   (0)
#define USERDATA_Y_SATURATE_REAL_MAX   (255)

/********* E_USERDATA_M_SATURATE *********/
#define USERDATA_M_SATURATE_MIN        (0)
#define USERDATA_M_SATURATE_MAX        (100)
#define USERDATA_M_SATURATE_CIRCLE     (HV_FALSE)
#define USERDATA_M_SATURATE_REAL_MIN   (0)
#define USERDATA_M_SATURATE_REAL_MAX   (255)

/********* E_USERDATA_C_SATURATE *********/
#define USERDATA_C_SATURATE_MIN        (0)
#define USERDATA_C_SATURATE_MAX        (100)
#define USERDATA_C_SATURATE_CIRCLE     (HV_FALSE)
#define USERDATA_C_SATURATE_REAL_MIN   (0)
#define USERDATA_C_SATURATE_REAL_MAX   (255)

/* Userdata prop struct define */
typedef enum _UserdataMapType
{
    E_NO_MAP,
    E_ENUM_MAP,
    E_LINEAR_MAP,
    E_LINEAR_REVERT_MAP,
} UserdataMapType;

typedef struct _UserdataLinerMap
{
    SHORT16 sRealMinValue;
    SHORT16 sRealMaxValue;
} UserdataLinerMap;

typedef struct _UserdataEnumMap
{
    const SHORT16 *asRealValueMapTable;
    USHORT16 usCount;
} UserdataEnumMap;

typedef struct _UserdataProp
{
    UserdataId enUserdata;
    SHORT16 sOsdValue;
    SHORT16 sMinValue;
    SHORT16 sMaxValue;
    BOOL bCircle;

    /* for real value mapping */
    UserdataMapType enMappingType;
    UserdataLinerMap stLinerMap;
    UserdataEnumMap stEnumMap;
    SHORT16 sRealValue;
    SHORT16 sRealDefaultValue;
} UserdataProp;

/**
 * @brief 获取userdata的名称
 * @param[in] enWhichData userdata的id
 * @UCHAR8* userdata的名称
 */
const CHAR8* Hv_App_GetUserdataName(UserdataId enWhichData);

/**
 * @brief 设置userdata的值
 * @param[in] enWhichData userdata的id
 * @param[in] sValue 要设置的值
 */
VOID Hv_App_OsdSetUserdata(UserdataId enWhichData, SHORT16 sValue);

/**
 * @brief 获取userdata的属性
 * @param[in] enWhichData userdata的id
 * @param[in] pstProp userdata的属性数据
 */
VOID Hv_App_OsdGetUserdata(UserdataId enWhichData, UserdataProp* pstProp);

#endif
