123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- /**
- * @file hv_mw_OsdUserdata.c
- * @brief osd userdata c file.
- * @details This file provides the following functions: \n
- * (1) Osd userdata 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>
- */
- #ifdef OSD_ITEM_BIND_USERDATA_BY_TOOL
- #include "hv_mw_OsdLog.h"
- #include "hv_mw_OsdUserdata.h"
- #include "hv_app_Function.h"
- #include "hv_drv_Gpio.h"
- VOID Hv_Mw_SetFromOsdUserdata(UserdataId enUserdata)
- {
- HV_ASSERT_TRUE_VOID((E_USERDATA_NONE != enUserdata) && (enUserdata < E_USERDATA_MAX));
- SHORT16 sValue = Hv_App_GetOsdDataValue(enUserdata);
- Hv_Mw_OsdAdjustFunction(enUserdata, ACT_SET, sValue, SET_INTERFACE);
- }
- VOID Hv_Mw_OsdUserdataUpdate(UserdataId enWhichData)
- {
- UserdataProp stOsdDataProp = { 0 };
- Hv_App_OsdGetUserdata(enWhichData, &stOsdDataProp);
- SHORT16 sOsdValue = 0;
- OSD_LOG_DEBUG("Update userdata: %s", Hv_App_GetUserdataName(enWhichData));
- if (E_NO_MAP == stOsdDataProp.enMappingType)
- {
- sOsdValue = stOsdDataProp.sRealValue;
- OSD_LOG_DEBUG("Get no mapped value = %d", sOsdValue);
- }
- else if (E_ENUM_MAP == stOsdDataProp.enMappingType)
- {
- UCHAR8 ucValueId = 0;
- for (; ucValueId < stOsdDataProp.stEnumMap.usCount; ucValueId++)
- {
- if (stOsdDataProp.sRealValue == stOsdDataProp.stEnumMap.asRealValueMapTable[ucValueId])
- {
- break;
- }
- }
- sOsdValue = ucValueId;
- if (sOsdValue >= stOsdDataProp.stEnumMap.usCount)
- {
- OSD_LOG_ERROR("Userdata-%d, real value = %d not found!", enWhichData, stOsdDataProp.sRealValue);
- sOsdValue = 0;
- }
- else
- {
- OSD_LOG_DEBUG("Get enum map value = %d (real value=%d)", sOsdValue, stOsdDataProp.sRealValue);
- }
- }
- else if (E_LINEAR_MAP == stOsdDataProp.enMappingType)
- {
- sOsdValue = LINEAR_MAPPING_VALUE(stOsdDataProp.sRealValue, stOsdDataProp.stLinerMap.sRealMinValue, stOsdDataProp.stLinerMap.sRealMaxValue,
- stOsdDataProp.sMinValue, stOsdDataProp.sMaxValue);
- OSD_LOG_DEBUG("Get linear map value = %d (real value=%d)", sOsdValue, stOsdDataProp.sRealValue);
- }
- else if (E_LINEAR_REVERT_MAP == stOsdDataProp.enMappingType)
- {
- sOsdValue = LINEAR_REVERT_MAPPING_VALUE(stOsdDataProp.sRealValue, stOsdDataProp.stLinerMap.sRealMinValue, stOsdDataProp.stLinerMap.sRealMaxValue,
- stOsdDataProp.sMinValue, stOsdDataProp.sMaxValue);
- OSD_LOG_DEBUG("Get linear revert map value = %d (real value=%d)", sOsdValue, stOsdDataProp.sRealValue);
- }
- else
- {
- OSD_LOG_ERROR("Userdata-%d mapping type error!", enWhichData);
- return;
- }
- if (sOsdValue != stOsdDataProp.sOsdValue)
- {
- OSD_LOG_DEBUG("Update OsdUserdata-%d value: %d to %d", enWhichData, stOsdDataProp.sOsdValue, sOsdValue);
- Hv_App_OsdSetUserdata(enWhichData, sOsdValue);
- }
- }
- VOID Hv_Mw_OsdUserdataUpdateAll(VOID)
- {
- OSD_LOG_DEBUG("Osd userdata sync, num = %d", E_USERDATA_MAX);
- for (USHORT16 usId = 1; usId < E_USERDATA_MAX; usId++)
- {
- Hv_Mw_OsdUserdataUpdate(usId);
- }
- }
- SHORT16 Hv_Mw_OsdGetMappedOsdValue(UserdataId enWhichData, SHORT16 sRealValue)
- {
- UserdataProp stOsdDataProp = { 0 };
- Hv_App_OsdGetUserdata(enWhichData, &stOsdDataProp);
- SHORT16 sOsdValue = 0;
- OSD_LOG_DEBUG("Update userdata: %s", Hv_App_GetUserdataName(enWhichData));
- if (E_NO_MAP == stOsdDataProp.enMappingType)
- {
- sOsdValue = sRealValue;
- OSD_LOG_DEBUG("Get no mapped value = %d", sOsdValue);
- }
- else if (E_ENUM_MAP == stOsdDataProp.enMappingType)
- {
- UCHAR8 ucValueId = 0;
- for (; ucValueId < stOsdDataProp.stEnumMap.usCount; ucValueId++)
- {
- if (sRealValue == stOsdDataProp.stEnumMap.asRealValueMapTable[ucValueId])
- {
- break;
- }
- }
- sOsdValue = ucValueId;
- if (sOsdValue >= stOsdDataProp.stEnumMap.usCount)
- {
- OSD_LOG_ERROR("Userdata-%d, real value = %d not found!", enWhichData, sRealValue);
- sOsdValue = 0;
- }
- else
- {
- OSD_LOG_DEBUG("Get enum map value = %d (real value=%d)", sOsdValue, sRealValue);
- }
- }
- else if (E_LINEAR_MAP == stOsdDataProp.enMappingType)
- {
- sOsdValue = LINEAR_MAPPING_VALUE(sRealValue, stOsdDataProp.stLinerMap.sRealMinValue, stOsdDataProp.stLinerMap.sRealMaxValue,
- stOsdDataProp.sMinValue, stOsdDataProp.sMaxValue);
- OSD_LOG_DEBUG("Get linear map value = %d (real value=%d)", sOsdValue, sRealValue);
- }
- else if (E_LINEAR_REVERT_MAP == stOsdDataProp.enMappingType)
- {
- sOsdValue = LINEAR_REVERT_MAPPING_VALUE(sRealValue, stOsdDataProp.stLinerMap.sRealMinValue, stOsdDataProp.stLinerMap.sRealMaxValue,
- stOsdDataProp.sMinValue, stOsdDataProp.sMaxValue);
- OSD_LOG_DEBUG("Get linear revert map value = %d (real value=%d)", sOsdValue, sRealValue);
- }
- else
- {
- HV_ASSERT_TRUE_RET(stOsdDataProp.enMappingType <= E_LINEAR_REVERT_MAP, 0);
- }
- return sOsdValue;
- }
- SHORT16 Hv_Mw_OsdGetMappedRealValue(UserdataId enWhichData, SHORT16 sOsdValue)
- {
- UserdataProp stOsdDataProp = { 0 };
- Hv_App_OsdGetUserdata(enWhichData, &stOsdDataProp);
- SHORT16 sCurRealValue = 0;
- OSD_LOG_DEBUG("Get %s's real value:", Hv_App_GetUserdataName(enWhichData));
- if (E_NO_MAP == stOsdDataProp.enMappingType)
- {
- sCurRealValue = sOsdValue;
- OSD_LOG_DEBUG("OsdUserdata-%d OsdValue: %d no map to real = %d", enWhichData, sOsdValue, sCurRealValue);
- }
- else if (E_ENUM_MAP == stOsdDataProp.enMappingType)
- {
- HV_ASSERT_TRUE_RET(sOsdValue < stOsdDataProp.stEnumMap.usCount, 0);
- sCurRealValue = stOsdDataProp.stEnumMap.asRealValueMapTable[sOsdValue];
- OSD_LOG_DEBUG("OsdUserdata-%d OsdValue: %d enum map to real = %d", enWhichData, sOsdValue, sCurRealValue);
- }
- else if (E_LINEAR_MAP == stOsdDataProp.enMappingType)
- {
- sCurRealValue = LINEAR_MAPPING_VALUE(sOsdValue, stOsdDataProp.sMinValue, stOsdDataProp.sMaxValue,
- stOsdDataProp.stLinerMap.sRealMinValue, stOsdDataProp.stLinerMap.sRealMaxValue);
- OSD_LOG_DEBUG("OsdUserdata-%d OsdValue: %d linear map to real = %d", enWhichData, sOsdValue, sCurRealValue);
- }
- else if (E_LINEAR_REVERT_MAP == stOsdDataProp.enMappingType)
- {
- sCurRealValue = LINEAR_REVERT_MAPPING_VALUE(sOsdValue, stOsdDataProp.sMinValue, stOsdDataProp.sMaxValue,
- stOsdDataProp.stLinerMap.sRealMinValue, stOsdDataProp.stLinerMap.sRealMaxValue);
- OSD_LOG_DEBUG("OsdUserdata-%d OsdValue: %d linear revert map to real = %d", enWhichData, sOsdValue, sCurRealValue);
- }
- else
- {
- HV_ASSERT_TRUE_RET(stOsdDataProp.enMappingType <= E_LINEAR_REVERT_MAP, 0);
- }
- return sCurRealValue;
- }
- SHORT16 Hv_Mw_OsdAdjustFunction(UserdataId enWhichData, AdjustAct enAdjustAct, SHORT16 sAdjustValue, UCHAR8 ucFlag)
- {
- HV_ASSERT_TRUE_RET((E_USERDATA_NONE != enWhichData) && (enWhichData < E_USERDATA_MAX), 0);
- UserdataProp stProp = { 0 };
- SHORT16 sValue = 0;
- Hv_App_GetOsdUserdataProp(enWhichData, &stProp);
- switch (enAdjustAct)
- {
- case ACT_SET:
- {
- sValue = sAdjustValue;
- if (sValue > stProp.sMaxValue)
- {
- OSD_LOG_WARN("Userdata-%d: set value = %d, limit to max = %d", enWhichData, sValue, stProp.sMaxValue);
- sValue = stProp.sMaxValue;
- }
- else if (sValue < stProp.sMinValue)
- {
- OSD_LOG_WARN("Userdata-%d: set value = %d, limit to min = %d", enWhichData, sValue, stProp.sMinValue);
- sValue = stProp.sMinValue;
- }
- if (enWhichData == E_USERDATA_VIDEOSOURCE)
- {
- switch (sAdjustValue)
- {
- case UD_VIDEOSOURCE_V_HDMI1:
- {
- Hv_Drv_Gpio_SetPinLevel(HV_BOARD_CONFIG_GPIO_CH444G_YA, GPIO_LEVEL_HIGH);
- Hv_Drv_Gpio_SetPinLevel(HV_BOARD_CONFIG_GPIO_CH444G_YB, GPIO_LEVEL_LOW);
- break;
- }
- case UD_VIDEOSOURCE_V_HDMI2:
- {
- Hv_Drv_Gpio_SetPinLevel(HV_BOARD_CONFIG_GPIO_CH444G_YA, GPIO_LEVEL_LOW);
- Hv_Drv_Gpio_SetPinLevel(HV_BOARD_CONFIG_GPIO_CH444G_YB, GPIO_LEVEL_LOW);
- break;
- }
- case UD_VIDEOSOURCE_V_USB_C:
- {
- break;
- }
- case UD_VIDEOSOURCE_V_DP:
- {
- break;
- }
- default:
- {
- Hv_Drv_Gpio_SetPinLevel(HV_BOARD_CONFIG_GPIO_CH444G_YA, GPIO_LEVEL_HIGH);
- Hv_Drv_Gpio_SetPinLevel(HV_BOARD_CONFIG_GPIO_CH444G_YB, GPIO_LEVEL_LOW);
- break;
- }
- }
- }
- break;
- }
- case ACT_SET_DEFAULT:
- {
- sValue = GET_OSD_MAP_VALUE(enWhichData, stProp.sRealDefaultValue);
- break;
- }
- case ACT_INCREASE:
- {
- sValue = stProp.sOsdValue;
- sValue += sAdjustValue;
- if (sValue > stProp.sMaxValue)
- {
- if (stProp.bCircle)
- {
- sValue = stProp.sMinValue;
- }
- else
- {
- sValue = stProp.sMaxValue;
- }
- }
- break;
- }
- case ACT_DECREASE:
- {
- sValue = stProp.sOsdValue;
- sValue -= sAdjustValue;
- if (sValue < stProp.sMinValue)
- {
- if (stProp.bCircle)
- {
- sValue = stProp.sMaxValue;
- }
- else
- {
- sValue = stProp.sMinValue;
- }
- }
- break;
- }
- default:
- {
- return sValue;
- }
- }
- /* If just set interface, do not check userdata if equal */
- if ((0 == (ucFlag & SET_OSDDATA)) || (ucFlag & SET_FORCE))
- {
- OSD_LOG_DEBUG("Set %s = %d -> %d", Hv_App_GetUserdataName(enWhichData), stProp.sOsdValue, sValue);
- Hv_App_SetFuncInterface(enWhichData, sValue, ucFlag);
- }
- else if (stProp.sOsdValue != sValue)
- {
- OSD_LOG_DEBUG("Update %s = %d -> %d", Hv_App_GetUserdataName(enWhichData), stProp.sOsdValue, sValue);
- Hv_App_SetFuncInterface(enWhichData, sValue, ucFlag);
- }
- else
- {
- OSD_LOG_DEBUG("No need update %s = %d", Hv_App_GetUserdataName(enWhichData), stProp.sOsdValue);
- }
- return sValue;
- }
- #endif
|