/* * @file hv_mw_OsdEvent.h * @brief Header file of osd event. * * @verbatim * ============================================================================== * ##### How to use ##### * ============================================================================== * (+) Use Hv_Mw_OsdSetKeyState() to set a key's state. * (+) Use Hv_Mw_OsdGetKeyValue() to get current key value. * (+) Use Hv_Mw_OsdGetHoldKey() to get holding key value. * (+) Use Hv_Mw_OsdGetKeyIsRepeating() to get a key is repeating. * (+) Use Hv_Mw_OsdSetKeyRepeatPeriod() to set key repeat period. * (+) Use Hv_Mw_OsdSetKeyHoldPeriod() to set key hold period. * (+) Use Hv_Mw_OsdEventProc() to process osd event. * (+) Use Hv_Mw_OsdEventGetCloseSceneId() to get osd auto close scene id. * (+) Use Hv_Mw_OsdStartAutoCloseTimer() to start auto close timer. * (+) Use Hv_Mw_OsdStopAutoCloseTimer() to start auto close timer. * (+) Use Hv_Mw_OsdEventGetRefreshSceneId() to get osd auto refresh scene id. * (+) Use Hv_Mw_OsdStartAutoRefreshTimer() to start auto refresh timer. * (+) Use Hv_Mw_OsdStopAutoRefreshTimer() to stop auto refresh timer. * (+) Use Hv_Mw_OsdEventInit() to init osd event. * (+) Use Hv_Mw_OsdEventDeinit() to de-init osd event. * * @endverbatim * @author HiView SoC Software Team * @version 1.0.0 * @date 2022-09-01 */ #ifndef _HV_MW_OSD_EVENT_H #define _HV_MW_OSD_EVENT_H #include "hv_comm_Event.h" #include "hv_comm_Timer.h" #include "KeyboardConfig.h" typedef enum { KEY_STATE_HOLDABLE, KEY_STATE_REPEATABLE, KEY_STATE_DISABLE, } OsdKeyState; /** * @brief 设置按键状态 * @param[in] enId 消息序号 * @param[in] CHAR8 * 名称字符串 */ const CHAR8 *Hv_Mw_OsdGetEventName(OsdEventId enId); /** * @brief 设置按键状态 * @param[in] enId 按键键值 * @param[in] CHAR8 * 名称字符串 */ const CHAR8 *Hv_Mw_OsdGetKeyName(OsdEvtKeyValue enId); /** * @brief 设置按键状态 * @param[in] eKey 按键键值 * @param[in] eState 按键状态:可重复、可长按、禁用 * @param[in] bIsSet 是否是set,否则为clear */ VOID Hv_Mw_OsdSetKeyState(OsdEvtKeyValue eKey, OsdKeyState eState, BOOL bIsSet); /** * @brief 启用/禁用所有按键 * @param[in] bEnable 使能 */ VOID Hv_Mw_OsdSetAllKeyEnable(BOOL bEnable); /** * @brief 获取当前的键值 * @return OSD内部事件类型 */ OsdEvtKeyValue Hv_Mw_OsdGetKeyValue(VOID); /** * @brief 获取长按键的键值 * @return OSD内部事件类型 */ OsdEvtKeyValue Hv_Mw_OsdGetHoldKey(VOID); /** * @brief 判断按键当前是否正在repeating * @param[in] eKey 按键键值 * @return 按键是否正在repeating */ BOOL Hv_Mw_OsdGetKeyIsRepeating(OsdEvtKeyValue enKey); /** * @brief 设置重复按键timer的周期 * @param[in] uiPeriodMS 重复按键timer的周期(ms) */ VOID Hv_Mw_OsdSetKeyRepeatPeriod(UINT32 uiPeriodMS); /** * @brief 设置长按按键timer的时长 * @param[in] uiHoldTimeMS 长按按键timer的时长(ms) */ VOID Hv_Mw_OsdSetKeyHoldPeriod(UINT32 uiHoldTimeMS); /** * @brief 将来自外部EventHub的OSD事件类型转为OSD内部事件类型 * @param[in] stEventMsg 来自外部EventHub的OSD事件类型 */ VOID Hv_Mw_OsdEventProc(OsdEvent *pstEventMsg); /** * @brief 启动自动关闭指定scene的timer * @param[in] ucSceneId 自动关闭的scene id * @param[in] uiMs 超时时间,单位:毫秒 */ VOID Hv_Mw_OsdStartAutoCloseTimerMs(UCHAR8 ucSceneId, UINT32 uiMs); /** * @brief 启动自动关闭指定scene的timer * @param[in] ucSceneId 自动关闭的scene id * @param[in] usSecond 超时时间,单位:秒 */ VOID Hv_Mw_OsdStartAutoCloseTimer(UCHAR8 ucSceneId, USHORT16 usSecond); /** * @brief 停止自动关闭指定scene的timer * @param[in] ucSceneId 自动关闭的scene id */ VOID Hv_Mw_OsdStopAutoCloseTimer(UCHAR8 ucSceneId); /** * @brief 启动自动刷新指定scene的timer * @param[in] ucSceneId 自动刷新的scene id * @param[in] uiTimeoutMs 超时时间,单位:毫秒 */ VOID Hv_Mw_OsdStartAutoRefreshTimer(UCHAR8 ucSceneId, UINT32 uiTimeoutMs); /** * @brief 停止自动刷新指定scene的timer * @param[in] ucSceneId 自动刷新的scene id */ VOID Hv_Mw_OsdStopAutoRefreshTimer(UCHAR8 ucSceneId); /** * @brief 开始Logo显示的timer * @param[in] uiMs 时间:毫秒 */ VOID Hv_Mw_OsdStartLogoTimerMs(UINT32 uiMs); /** * @brief 开始Logo显示的timer * @param[in] ucSceneId 自动刷新的scene id */ VOID Hv_Mw_OsdStartLogoTimer(USHORT16 usSecond); /** * @brief 停止自动刷新指定scene的timer */ VOID Hv_Mw_OsdStopLogoTimer(VOID); /** * @brief 开始定时提醒的timer * @param[in] ucRemindId 定时提醒的id * @param[in] uiTimeoutMs 超时时间,单位:毫秒 * @param[in] bRepeat 是否重复 */ VOID Hv_Mw_OsdStartReminderTimer(UCHAR8 ucRemindId, UINT32 uiTimeoutMs, BOOL bRepeat); /** * @brief 停止定时提醒的timer * @param[in] ucRemindId 定时提醒的id */ VOID Hv_Mw_OsdStopReminderTimer(UCHAR8 ucRemindId); /** * @brief Osd Event相关数据初始化 */ VOID Hv_Mw_OsdEventInit(VOID); /** * @brief Event deinit */ VOID Hv_Mw_OsdEventDeinit(VOID); #ifdef HV_SCALER_DEBUG_VERSION VOID Hv_Mw_OsdSetAutoCloseTimerEnable(BOOL bEnable); BOOL Hv_Mw_OsdIsMonkeyRunning(VOID); VOID Hv_Mw_OsdMonkeyTest(BOOL bStart); VOID Hv_Mw_OsdStartAutoTestTimer(UINT32 uiTimeoutMs); VOID Hv_Mw_OsdStopAutoTestTimer(VOID); #endif #endif