/**
 * @file hv_app_OsdFactory.c
 * @brief osd app menu c file.
 * @details This file provides the following functions: \n
 *          (1) Osd menu operation functions \n
 *          (2) Osd event operation functions \n
 *
 * @author HiView SoC Software Team
 * @version 1.0.0
 * @date 2022-09-01
 * @copyright Copyright(c),2022-8, Hiview Software. All rights reserved.
 * @par History:
 * <table>
 * <tr><th>Author       <th>Date            <th>Change Description
 * <tr><td>shanpeng     <td>2022-09-01      <td>create
 * </table>
 */

#include "hv_comm_DataBase.h"
#include "hv_mw_AppInterface.h"
#include "hv_mw_Factory.h"
#include "hv_mw_OsdComm.h"
#include "hv_mw_OsdLog.h"
#include "hv_mw_OsdDraw.h"
#include "hv_mw_OsdOperation.h"
#include "hv_app_OsdDynamicUpdate.h"
#include "hv_app_Osd.h"
#include "hv_app_OsdFactory.h"
#include "hv_app_PQ.h"

VOID Hv_App_OsdFactoryAgingRefresh(VOID)
{
    OsdBox stScreen = {0};
    OsdBox stSceneBox = {0};
    OsdScene *pstScene = OSD_GET_SCENE(SCENE_FACTORY_AGING);
    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;
    USHORT16 usHour = 0;
    USHORT16 usMinus = 0;

    Hv_Mw_OsdGetDisplaySize(&stScreen.usW, &stScreen.usH);
    stSceneBox.usX = pstScene->usX;
    stSceneBox.usY = pstScene->usY;
    stSceneBox.usW = pstScene->usWidth;
    stSceneBox.usH = pstScene->usHeight;
    Hv_Mw_OsdCalculateCollisionBox(stScreen, &stSceneBox, 123, 101);
    Hv_Mw_OsdSceneSetPosition(SCENE_FACTORY_AGING, stSceneBox.usX, stSceneBox.usY);

    Hv_Mw_Factory_GetPanelOnTime(&usHour, &usMinus);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dHour %dMin", usHour, usMinus);
    Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_BL_TIME_SCENE_FACTORY_AGING_NORMAL));
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BL_TIME_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
}

VOID Hv_App_OsdFactoryAgingEnter(USHORT16 usValue)
{
    if (Hv_Mw_OsdSceneIsShowing(SCENE_FACTORY_AGING))
    {
        Hv_App_OsdFactoryAgingRefresh();
        return;
    }
    Hv_Mw_OsdSetAllKeyEnable(HV_FALSE);
    /* 关闭动态背光 */
    Hv_App_PQ_DynamicContrastEnable(0);
    Hv_App_SetDefaultStandardDisplayMode(HV_FALSE, SET_INTERFACE);
    /* 亮度设为默认 */
    Hv_App_PQ_SetBrightness(HV_COMMON_DATABASE_GET(FactoryData, ucFactoryBrightness));
    /* 关闭菜单透明度 */
    Hv_Mw_OsdAdjustFunction(E_USERDATA_MENUTRANSPARENCY, ACT_SET, 0, SET_INTERFACE);
    /* 关闭旋转 */
#if (HV_PROJECT_CONFIG_OSD_ROTATION == HV_CONFIG_ON)
    Hv_Mw_OsdAdjustFunction(E_USERDATA_ROTATION, ACT_SET, UD_ROTATION_V_OFF, SET_OSDDATA | SET_INTERFACE);
#endif
    if (UD_LIGHT_EFFECT_V_OFF != Hv_App_GetOsdDataValue(E_USERDATA_LIGHT_EFFECT))
    {
        /* 橙灯常亮 */
        Hv_Mw_Led_SetRedLed(HV_TRUE);
        /* 绿灯灭 */
        Hv_Mw_Led_SetBlueLed(HV_FALSE);
    }

    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;
    USHORT16 usHour = 0;
    USHORT16 usMinus = 0;
    HvFactoryEdidInfo stFactEdidDetail = {0};
    UINT32 uiCheckSum = Hv_Comm_GetCodeVersion();

    Hv_App_OsdHideAll();
    Hv_Mw_OsdSceneInit(SCENE_FACTORY_AGING);
    Hv_Mw_OsdSceneShow(SCENE_FACTORY_AGING);

    Hv_Mw_OsdSceneSetPositionRatio(SCENE_FACTORY_AGING, HV_TRUE, rand() % 101, 0, INVALID_PARAM_USHORT16);
    Hv_Mw_OsdSceneSetPositionRatio(SCENE_FACTORY_AGING, HV_FALSE, rand() % 101, 0, INVALID_PARAM_USHORT16);

    UCHAR8 aucStringSW[OSD_ASCII_STRING_LENGTH_MAX] = { 0 };
    USHORT16 usStringLength = 0;
    usStringLength = Hv_App_OsdSetFirmwareVersionString(aucStringSW);   //HV_PROJECT_CONFIG_FACTORY_FW_VERSION
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_FW_SCENE_FACTORY_AGING_NORMAL, aucStringSW, usStringLength);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_MST_SCENE_FACTORY_AGING_NORMAL, HV_PROJECT_CONFIG_FACTORY_SCALER_MODE, strlen(HV_PROJECT_CONFIG_FACTORY_SCALER_MODE));
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DATE_SCENE_FACTORY_AGING_NORMAL, HV_PROJECT_CONFIG_FACTORY_FW_CHANGE_DATE, strlen(HV_PROJECT_CONFIG_FACTORY_FW_CHANGE_DATE));
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PANEL_SCENE_FACTORY_AGING_NORMAL, HV_PROJECT_CONFIG_FACTORY_PANEL_TYPE, strlen(HV_PROJECT_CONFIG_FACTORY_PANEL_TYPE));

    Hv_Mw_Factory_GetEdidInfo(LINK_PORT_INDEX_HDMI_RX0, &stFactEdidDetail);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_NAME_SCENE_FACTORY_AGING_NORMAL, stFactEdidDetail.acFactName, stFactEdidDetail.ucFactNameLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dX%d", stFactEdidDetail.usHActive, stFactEdidDetail.usVActive);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_TIMING_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d %d", stFactEdidDetail.usYear, stFactEdidDetail.ucWeek);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_DATE_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
    //Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_SN_SCENE_FACTORY_AGING_NORMAL, stFactEdidDetail.acDescSn, stFactEdidDetail.ucDescSnCount);
    usLen = strlen(Hv_Common_Db_GetFactoryDataDBRegionPtr()->acProductSn);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_SN_SCENE_FACTORY_AGING_NORMAL, Hv_Common_Db_GetFactoryDataDBRegionPtr()->acProductSn, usLen);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_SIZE_SCENE_FACTORY_AGING_NORMAL, HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE, strlen(HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE));
#if 0
    if (stFactEdidDetail.ucCheckSumCount == 1)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x",
                            stFactEdidDetail.aucCheckSumValue[0]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 2)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 3)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1],
                            stFactEdidDetail.aucCheckSumValue[2]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 4)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x %02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1],
                            stFactEdidDetail.aucCheckSumValue[2],
                            stFactEdidDetail.aucCheckSumValue[3]);
    }
    else
    {
        usLen = 0;
    }
#else
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "0x%x", uiCheckSum);
#endif
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI1_CHECKSUM_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);

    Hv_Mw_Factory_GetEdidInfo(LINK_PORT_INDEX_HDMI_RX1, &stFactEdidDetail);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_NAME_SCENE_FACTORY_AGING_NORMAL, stFactEdidDetail.acFactName, stFactEdidDetail.ucFactNameLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dX%d", stFactEdidDetail.usHActive, stFactEdidDetail.usVActive);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_TIMING_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d %d", stFactEdidDetail.usYear, stFactEdidDetail.ucWeek);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_DATE_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
    //Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_SN_SCENE_FACTORY_AGING_NORMAL, stFactEdidDetail.acDescSn, stFactEdidDetail.ucDescSnCount);
    usLen = strlen(Hv_Common_Db_GetFactoryDataDBRegionPtr()->acProductSn);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_SN_SCENE_FACTORY_AGING_NORMAL, Hv_Common_Db_GetFactoryDataDBRegionPtr()->acProductSn, usLen);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_SIZE_SCENE_FACTORY_AGING_NORMAL, HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE, strlen(HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE));
#if 0
    if (stFactEdidDetail.ucCheckSumCount == 1)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x",
                            stFactEdidDetail.aucCheckSumValue[0]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 2)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 3)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1],
                            stFactEdidDetail.aucCheckSumValue[2]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 4)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x %02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1],
                            stFactEdidDetail.aucCheckSumValue[2],
                            stFactEdidDetail.aucCheckSumValue[3]);
    }
    else
    {
        usLen = 0;
    }
#else
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "0x%x", uiCheckSum);
#endif
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_HDMI2_CHECKSUM_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);

    Hv_Mw_Factory_GetEdidInfo(LINK_PORT_INDEX_DP_RX1, &stFactEdidDetail);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_NAME_SCENE_FACTORY_AGING_NORMAL, stFactEdidDetail.acFactName, stFactEdidDetail.ucFactNameLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dX%d", stFactEdidDetail.usHActive, stFactEdidDetail.usVActive);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_TIMING_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d %d", stFactEdidDetail.usYear, stFactEdidDetail.ucWeek);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_DATE_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);
    //Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_SN_SCENE_FACTORY_AGING_NORMAL, stFactEdidDetail.acDescSn, stFactEdidDetail.ucDescSnCount);
    usLen = strlen(Hv_Common_Db_GetFactoryDataDBRegionPtr()->acProductSn);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_SN_SCENE_FACTORY_AGING_NORMAL, Hv_Common_Db_GetFactoryDataDBRegionPtr()->acProductSn, usLen);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_SIZE_SCENE_FACTORY_AGING_NORMAL, HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE, strlen(HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE));
#if 0
    if (stFactEdidDetail.ucCheckSumCount == 1)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x",
                            stFactEdidDetail.aucCheckSumValue[0]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 2)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 3)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1],
                            stFactEdidDetail.aucCheckSumValue[2]);
    }
    else if (stFactEdidDetail.ucCheckSumCount == 4)
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%02x %02x %02x %02x",
                            stFactEdidDetail.aucCheckSumValue[0],
                            stFactEdidDetail.aucCheckSumValue[1],
                            stFactEdidDetail.aucCheckSumValue[2],
                            stFactEdidDetail.aucCheckSumValue[3]);
    }
    else
    {
        usLen = 0;
    }
#else
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "0x%x", uiCheckSum);
#endif
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_CHECKSUM_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);

    Hv_Mw_Factory_GetPanelOnTime(&usHour, &usMinus);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dHour %dMin", usHour, usMinus);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BL_TIME_SCENE_FACTORY_AGING_NORMAL, aucString, usLen);

    OSD_LOG_INFO("Show factory aging");
}

VOID Hv_App_OsdFactoryAgingExit(USHORT16 usValue)
{
    Hv_Mw_OsdSceneHide(SCENE_FACTORY_AGING);
    Hv_Mw_OsdSceneClear(SCENE_FACTORY_AGING);
    Hv_Mw_SetFromOsdUserdata(E_USERDATA_MENUTRANSPARENCY);
    if (UD_LIGHT_EFFECT_V_OFF != Hv_App_GetOsdDataValue(E_USERDATA_LIGHT_EFFECT))
    {
        Hv_Mw_SetFromOsdUserdata(E_USERDATA_LIGHT_EFFECT);
    }
    Hv_Mw_OsdSetAllKeyEnable(HV_TRUE);
}

VOID Hv_App_OsdFactoryMenuEnter(VOID)
{
    const OsdSceneProp *pstSceneProp = OSD_GET_SCENE_PROP(SCENE_FACTORY);
    HV_ASSERT_VALID_PTR_VOID(pstSceneProp);
    ColorTemperature stColTemp = {0};

    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;
    UCHAR8 ucValue = 0;
    USHORT16 usHour = 0;
    USHORT16 usMinus = 0;

    Hv_Mw_OsdAdjustFunction(E_USERDATA_MENUTRANSPARENCY, ACT_SET, 0, SET_INTERFACE);
    if (UD_LIGHT_EFFECT_V_OFF != Hv_App_GetOsdDataValue(E_USERDATA_LIGHT_EFFECT))
    {
        /* 橙灯常亮 */
        Hv_Mw_Led_SetRedLed(HV_TRUE);
        /* 绿灯灭 */
        Hv_Mw_Led_SetBlueLed(HV_FALSE);
    }

    Hv_Mw_OsdSceneClearAll();

    Hv_Mw_OsdSceneInit(SCENE_FACTORY);
    Hv_Mw_OsdSceneShow(SCENE_FACTORY);
    Hv_Mw_OsdItemFocus(ITEM_WARM_SCENE_FACTORY);

    for (USHORT16 usId = ITEM_WARM_SCENE_FACTORY; usId < ITEM_WARM_SCENE_FACTORY + pstSceneProp->usItemNum; usId++)
    {
        Hv_Mw_OsdItemShow(usId);
    }

    UCHAR8 aucStringSW[OSD_ASCII_STRING_LENGTH_MAX] = { 0 };
    USHORT16 usStringLength = 0;
    usStringLength = Hv_App_OsdSetFirmwareVersionString(aucStringSW);   //HV_PROJECT_CONFIG_FACTORY_FW_VERSION
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_FW_SCENE_FACTORY_NORMAL, aucStringSW, usStringLength);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_MST_SCENE_FACTORY_NORMAL, HV_PROJECT_CONFIG_FACTORY_SCALER_MODE, strlen(HV_PROJECT_CONFIG_FACTORY_SCALER_MODE));
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DATE_SCENE_FACTORY_NORMAL, HV_PROJECT_CONFIG_FACTORY_FW_CHANGE_DATE, strlen(HV_PROJECT_CONFIG_FACTORY_FW_CHANGE_DATE));
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PANEL_SCENE_FACTORY_NORMAL, HV_PROJECT_CONFIG_FACTORY_PANEL_TYPE, strlen(HV_PROJECT_CONFIG_FACTORY_PANEL_TYPE));
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_SIZE_SCENE_FACTORY_NORMAL, HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE, strlen(HV_PROJECT_CONFIG_FACTORY_PANEL_SIZE));

    stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WR_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WG_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WB_SCENE_FACTORY_NORMAL, aucString, usLen);

    stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CR_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CG_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CB_SCENE_FACTORY_NORMAL, aucString, usLen);

    stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NR_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d",     stColTemp.ucColorTempGGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NG_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d",     stColTemp.ucColorTempBGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NB_SCENE_FACTORY_NORMAL, aucString, usLen);
#if 0
    stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_ER_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d",     stColTemp.ucColorTempGGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EG_SCENE_FACTORY_NORMAL, aucString, usLen);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d",     stColTemp.ucColorTempBGain);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EB_SCENE_FACTORY_NORMAL, aucString, usLen);
#endif
    if (HV_COMMON_DATABASE_GET(SystemData, bBurnInEnable))
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
    }
    else
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
    }
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BURNLN_SCENE_FACTORY_NORMAL, aucString, usLen);

    if (HV_COMMON_DATABASE_GET(SystemData, bEdidWp))
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
    }
    else
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
    }
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EDIDWP_SCENE_FACTORY_NORMAL, aucString, usLen);

    if (HV_COMMON_DATABASE_GET(SystemData, bShowLogoFlag))
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
    }
    else
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
    }
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_LOGO_SCENE_FACTORY_NORMAL, aucString, usLen);

    ucValue = Hv_Mw_Factory_GetPanelSscFreq();
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucValue);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PF_SCENE_FACTORY_NORMAL, aucString, usLen);

    ucValue = Hv_Mw_Factory_GetPanelSscSetp();
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucValue);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PP_SCENE_FACTORY_NORMAL, aucString, usLen);

    ucValue = Hv_Mw_Factory_GetDdrSscFreq();
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucValue);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DF_SCENE_FACTORY_NORMAL, aucString, usLen);

    ucValue = Hv_Mw_Factory_GetDdrSscSetp();
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucValue);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_SCENE_FACTORY_NORMAL, aucString, usLen);

    Hv_Mw_Factory_GetPanelOnTime(&usHour, &usMinus);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dHour %dMin", usHour, usMinus);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_TIME_SCENE_FACTORY_NORMAL, aucString, usLen);

    ucValue = HV_COMMON_DATABASE_GET(FactoryData, ucFactoryBrightness);
    usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucValue);
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BL_SCENE_FACTORY_NORMAL, aucString, usLen);

    if (HV_COMMON_DATABASE_GET(SystemData, bDeveloperMode))
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
    }
    else
    {
        usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
    }
    Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DM_V_SCENE_FACTORY_NORMAL, aucString, usLen);

    Hv_Mw_OsdSetKeyRepeatPeriod(OSD_DEFAULT_KEY_REPEAT_PERIOD_MS);
    Hv_Mw_OsdSetKeyState(OSDEVT_KEY_UP, KEY_STATE_REPEATABLE, HV_TRUE);
    Hv_Mw_OsdSetKeyState(OSDEVT_KEY_DOWN, KEY_STATE_REPEATABLE, HV_TRUE);

    Hv_Mw_Factory_SetPanelSscEable(HV_TRUE);
    Hv_Mw_Factory_SetDdrSscEable(HV_TRUE);

    OSD_LOG_INFO("Show factory menu");
}

VOID Hv_App_OsdFactoryMenuExit(VOID)
{
    Hv_Mw_OsdSetKeyState(OSDEVT_KEY_UP, KEY_STATE_REPEATABLE, HV_FALSE);
    Hv_Mw_OsdSetKeyState(OSDEVT_KEY_DOWN, KEY_STATE_REPEATABLE, HV_FALSE);

    Hv_Mw_OsdItemFocusClear();
    Hv_Mw_OsdSceneHide(SCENE_FACTORY);
    Hv_Mw_OsdSceneClear(SCENE_FACTORY);
    Hv_Mw_SetFromOsdUserdata(E_USERDATA_MENUTRANSPARENCY);
    if (UD_LIGHT_EFFECT_V_OFF != Hv_App_GetOsdDataValue(E_USERDATA_LIGHT_EFFECT))
    {
        Hv_Mw_SetFromOsdUserdata(E_USERDATA_LIGHT_EFFECT);
    }
}

VOID Hv_App_OsdItemWarm_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemNatural_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemCool_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}
#if 0
VOID Hv_App_OsdItemEyeshield_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}
#endif
VOID Hv_App_OsdItemBurnln_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemEdidwp_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemLogo_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemPf_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemPp_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemDf_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemDp_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemResetbl_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
            USHORT16 usHour = 0;
            USHORT16 usMinus = 0;
            Hv_Mw_Factory_ResetPanelOnCountTime();
            Hv_Mw_Factory_GetPanelOnTime(&usHour, &usMinus);
            USHORT16 usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%dHour %dMin", usHour, usMinus);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_TIME_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_TIME_SCENE_FACTORY_NORMAL, aucString, usLen);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemBl_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            /* Preview factory default backlight */
            UCHAR8 ucBackLight = HV_COMMON_DATABASE_GET(FactoryData, ucFactoryBrightness);
            Hv_Mw_Factory_SetFactoryDefaultBacklight(ucBackLight);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemDm_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemExit_Menu_1_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_App_OsdFactoryMenuExit();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemCoolr_MenuCool_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemCoolg_MenuCool_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemCoolb_MenuCool_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemNaturalr_MenuNatural_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemNaturalg_MenuNatural_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemNaturalb_MenuNatural_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemWarmr_MenuWarm_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemWarmg_MenuWarm_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemWarmb_MenuWarm_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}
#if 0
VOID Hv_App_OsdItemEyeshieldR_MenuEyeshield_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemEyeshieldG_MenuEyeshield_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemEyeshieldB_MenuEyeshield_SceneFactory(VOID)
{
    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        {
            Hv_Mw_OsdItemFocusChild();
            break;
        }
        case OSDEVT_KEY_UP:
        {
            Hv_Mw_OsdItemFocusPrev();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            Hv_Mw_OsdItemFocusNext();
            break;
        }
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        default:
        {
            break;
        }
    }
}
#endif
VOID Hv_App_OsdItemNaturalRv_MenuNaturalR_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            if (stColTemp.ucColorTempRGain > 0)
            {
                stColTemp.ucColorTempRGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_NR_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NR_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            if (stColTemp.ucColorTempRGain < 255)
            {
                stColTemp.ucColorTempRGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_NR_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NR_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemCoolRv_MenuCoolR_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            if (stColTemp.ucColorTempRGain > 0)
            {
                stColTemp.ucColorTempRGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_CR_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CR_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            if (stColTemp.ucColorTempRGain < 255)
            {
                stColTemp.ucColorTempRGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_CR_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CR_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemWarmRv_MenuWarmR_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            if (stColTemp.ucColorTempRGain > 0)
            {
                stColTemp.ucColorTempRGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_WR_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WR_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            if (stColTemp.ucColorTempRGain < 255)
            {
                stColTemp.ucColorTempRGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_WR_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WR_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

#if 0
VOID Hv_App_OsdItemEyeshieldRv_MenuEyeshieldR_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            if (stColTemp.ucColorTempRGain > 0)
            {
                stColTemp.ucColorTempRGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_ER_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_ER_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            if (stColTemp.ucColorTempRGain < 255)
            {
                stColTemp.ucColorTempRGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempRGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_ER_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_ER_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemEyeshieldGv_MenuEyeshieldG_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            if (stColTemp.ucColorTempGGain > 0)
            {
                stColTemp.ucColorTempGGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_EG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            if (stColTemp.ucColorTempGGain < 255)
            {
                stColTemp.ucColorTempGGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_EG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemEyeshieldBv_MenuEyeshieldB_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            if (stColTemp.ucColorTempBGain > 0)
            {
                stColTemp.ucColorTempBGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_EB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD);
            if (stColTemp.ucColorTempBGain < 255)
            {
                stColTemp.ucColorTempBGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_EB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_EYESHIELD, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}
#endif

VOID Hv_App_OsdItemCoolGv_MenuCoolG_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            if (stColTemp.ucColorTempGGain > 0)
            {
                stColTemp.ucColorTempGGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_CG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            if (stColTemp.ucColorTempGGain < 255)
            {
                stColTemp.ucColorTempGGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_CG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemPpV_MenuPp_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            UCHAR8 ucPanelSetp = Hv_Mw_Factory_GetPanelSscSetp();
            if (ucPanelSetp > 0)
            {
                ucPanelSetp--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucPanelSetp);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_PP_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PP_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetPanelSscStep(ucPanelSetp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            UCHAR8 ucPanelSetp = Hv_Mw_Factory_GetPanelSscSetp();
            if (ucPanelSetp < 100)
            {
                ucPanelSetp++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucPanelSetp);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_PP_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PP_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetPanelSscStep(ucPanelSetp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemBurnlnV_MenuBurnln_SceneFactory(VOID)
{
    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_UP:
        case OSDEVT_KEY_DOWN:
        {
            if (HV_COMMON_DATABASE_GET(SystemData, bBurnInEnable))
            {
                HV_COMMON_DATABASE_SET(SystemData, bBurnInEnable, HV_FALSE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
            }
            else
            {
                HV_COMMON_DATABASE_SET(SystemData, bBurnInEnable, HV_TRUE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
            }
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_BURNLN_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BURNLN_SCENE_FACTORY_NORMAL, aucString, usLen);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemDpV_MenuDp_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            UCHAR8 ucDdrSetp = Hv_Mw_Factory_GetDdrSscSetp();
            if (ucDdrSetp > 0)
            {
                ucDdrSetp--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucDdrSetp);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_DP_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetDdrSscStep(ucDdrSetp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            UCHAR8 ucDdrSetp = Hv_Mw_Factory_GetDdrSscSetp();
            if (ucDdrSetp < 100)
            {
                ucDdrSetp++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucDdrSetp);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_DP_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DP_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetDdrSscStep(ucDdrSetp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemWarmGv_MenuWarnG_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            if (stColTemp.ucColorTempGGain > 0)
            {
                stColTemp.ucColorTempGGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_WG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            if (stColTemp.ucColorTempGGain < 255)
            {
                stColTemp.ucColorTempGGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_WG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemPfV_MenuPf_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            UCHAR8 ucPanelFreq = Hv_Mw_Factory_GetPanelSscFreq();
            if (ucPanelFreq > 0)
            {
                ucPanelFreq--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucPanelFreq);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_PF_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PF_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetPanelSscFreq(ucPanelFreq);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            UCHAR8 ucPanelFreq = Hv_Mw_Factory_GetPanelSscFreq();
            if (ucPanelFreq < 100)
            {
                ucPanelFreq++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucPanelFreq);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_PF_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_PF_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetPanelSscFreq(ucPanelFreq);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemBlV_MenuBl_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            /* Recovery to user setting */
            UCHAR8 ucBackLight = HV_COMMON_DATABASE_GET(UserData, ucBrightness);
            Hv_App_PQ_SetBrightness(ucBackLight);
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            UCHAR8 ucBackLight = HV_COMMON_DATABASE_GET(FactoryData, ucFactoryBrightness);
            if (ucBackLight > 0)
            {
                ucBackLight--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucBackLight);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_BL_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BL_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetFactoryDefaultBacklight(ucBackLight);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            UCHAR8 ucBackLight = HV_COMMON_DATABASE_GET(FactoryData, ucFactoryBrightness);
            if (ucBackLight < 100)
            {
                ucBackLight++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucBackLight);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_BL_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_BL_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetFactoryDefaultBacklight(ucBackLight);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemNaturalGv_MenuNaturalG_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            if (stColTemp.ucColorTempGGain > 0)
            {
                stColTemp.ucColorTempGGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_NG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            if (stColTemp.ucColorTempGGain < 255)
            {
                stColTemp.ucColorTempGGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempGGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_NG_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NG_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemDfV_MenuDf_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            UCHAR8 ucDdrFreq = Hv_Mw_Factory_GetDdrSscFreq();
            if (ucDdrFreq > 0)
            {
                ucDdrFreq--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucDdrFreq);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_DF_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DF_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetDdrSscFreq(ucDdrFreq);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            UCHAR8 ucDdrFreq = Hv_Mw_Factory_GetDdrSscFreq();
            if (ucDdrFreq < 100)
            {
                ucDdrFreq++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", ucDdrFreq);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_DF_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DF_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetDdrSscFreq(ucDdrFreq);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemEdidwpV_MenuEdidwp_SceneFactory(VOID)
{
    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_UP:
        case OSDEVT_KEY_DOWN:
        {
            if (HV_COMMON_DATABASE_GET(SystemData, bEdidWp))
            {
                HV_COMMON_DATABASE_SET(SystemData, bEdidWp, HV_FALSE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
            }
            else
            {
                HV_COMMON_DATABASE_SET(SystemData, bEdidWp, HV_TRUE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
            }
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_EDIDWP_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_EDIDWP_SCENE_FACTORY_NORMAL, aucString, usLen);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemDmV_MenuDm_SceneFactory(VOID)
{
    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_UP:
        case OSDEVT_KEY_DOWN:
        {
            if (HV_COMMON_DATABASE_GET(SystemData, bDeveloperMode))
            {
                HV_COMMON_DATABASE_SET(SystemData, bDeveloperMode, HV_FALSE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
            }
            else
            {
                HV_COMMON_DATABASE_SET(SystemData, bDeveloperMode, HV_TRUE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
            }
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_DM_V_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_DM_V_SCENE_FACTORY_NORMAL, aucString, usLen);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemLogoV_MenuLogo_SceneFactory(VOID)
{
    UCHAR8 aucString[OSD_ASCII_STRING_LENGTH_MAX] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_UP:
        case OSDEVT_KEY_DOWN:
        {
            if (HV_COMMON_DATABASE_GET(SystemData, bShowLogoFlag))
            {
                HV_COMMON_DATABASE_SET(SystemData, bShowLogoFlag, HV_FALSE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "Off");
            }
            else
            {
                HV_COMMON_DATABASE_SET(SystemData, bShowLogoFlag, HV_TRUE);
                usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "On");
            }
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_LOGO_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_LOGO_SCENE_FACTORY_NORMAL, aucString, usLen);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemCoolBv_MenuCoolB_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            if (stColTemp.ucColorTempBGain > 0)
            {
                stColTemp.ucColorTempBGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_CB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_COOL);
            if (stColTemp.ucColorTempBGain < 255)
            {
                stColTemp.ucColorTempBGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_CB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_CB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_COOL, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemNaturalBv_MenuNaturalB_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            if (stColTemp.ucColorTempBGain > 0)
            {
                stColTemp.ucColorTempBGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_NB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD);
            if (stColTemp.ucColorTempBGain < 255)
            {
                stColTemp.ucColorTempBGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_NB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_NB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_STANDARD, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}

VOID Hv_App_OsdItemWarmBv_MenuWarmB_SceneFactory(VOID)
{
    UCHAR8 aucString[5] = {0};
    USHORT16 usLen = 0;

    switch (Hv_Mw_OsdGetKeyValue())
    {
        case OSDEVT_KEY_ENTER:
        case OSDEVT_KEY_EXIT:
        {
            Hv_Mw_OsdItemFocusParent();
            break;
        }
        case OSDEVT_KEY_DOWN:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            if (stColTemp.ucColorTempBGain > 0)
            {
                stColTemp.ucColorTempBGain--;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_WB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            break;
        }
        case OSDEVT_KEY_UP:
        {
            ColorTemperature stColTemp = Hv_Mw_Factory_GetColorTemperature(FACTORY_COLOR_TEMPER_WARM);
            if (stColTemp.ucColorTempBGain < 255)
            {
                stColTemp.ucColorTempBGain++;
            }
            usLen = HV_SNPRINTF(aucString, OSD_ASCII_STRING_LENGTH_MAX, "%d", stColTemp.ucColorTempBGain);
            Hv_Mw_OsdComponentShow(COMPONENT(OSD_CP_TYPE_ASCII_STRING, CUSTOMSTRING_WB_SCENE_FACTORY_NORMAL));
            Hv_Mw_OsdDynamicAsciiStringUpdate(CUSTOMSTRING_WB_SCENE_FACTORY_NORMAL, aucString, usLen);
            Hv_Mw_Factory_SetColorTemperature(FACTORY_COLOR_TEMPER_WARM, stColTemp);
            break;
        }
        default:
        {
            break;
        }
    }
}
