hv_mw_OsdEvent.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. /*
  2. * @file hv_mw_OsdEvent.h
  3. * @brief Header file of osd event.
  4. *
  5. * @verbatim
  6. * ==============================================================================
  7. * ##### How to use #####
  8. * ==============================================================================
  9. * (+) Use Hv_Mw_OsdSetKeyState() to set a key's state.
  10. * (+) Use Hv_Mw_OsdGetKeyValue() to get current key value.
  11. * (+) Use Hv_Mw_OsdGetHoldKey() to get holding key value.
  12. * (+) Use Hv_Mw_OsdGetKeyIsRepeating() to get a key is repeating.
  13. * (+) Use Hv_Mw_OsdSetKeyRepeatPeriod() to set key repeat period.
  14. * (+) Use Hv_Mw_OsdSetKeyHoldPeriod() to set key hold period.
  15. * (+) Use Hv_Mw_OsdEventProc() to process osd event.
  16. * (+) Use Hv_Mw_OsdEventGetCloseSceneId() to get osd auto close scene id.
  17. * (+) Use Hv_Mw_OsdStartAutoCloseTimer() to start auto close timer.
  18. * (+) Use Hv_Mw_OsdStopAutoCloseTimer() to start auto close timer.
  19. * (+) Use Hv_Mw_OsdEventGetRefreshSceneId() to get osd auto refresh scene id.
  20. * (+) Use Hv_Mw_OsdStartAutoRefreshTimer() to start auto refresh timer.
  21. * (+) Use Hv_Mw_OsdStopAutoRefreshTimer() to stop auto refresh timer.
  22. * (+) Use Hv_Mw_OsdEventInit() to init osd event.
  23. * (+) Use Hv_Mw_OsdEventDeinit() to de-init osd event.
  24. *
  25. * @endverbatim
  26. * @author HiView SoC Software Team
  27. * @version 1.0.0
  28. * @date 2022-09-01
  29. */
  30. #ifndef _HV_MW_OSD_EVENT_H
  31. #define _HV_MW_OSD_EVENT_H
  32. #include "hv_comm_Event.h"
  33. #include "hv_comm_Timer.h"
  34. #include "KeyboardConfig.h"
  35. typedef enum {
  36. KEY_STATE_HOLDABLE,
  37. KEY_STATE_REPEATABLE,
  38. KEY_STATE_DISABLE,
  39. } OsdKeyState;
  40. /**
  41. * @brief 设置按键状态
  42. * @param[in] enId 消息序号
  43. * @param[in] CHAR8 * 名称字符串
  44. */
  45. const CHAR8 *Hv_Mw_OsdGetEventName(OsdEventId enId);
  46. /**
  47. * @brief 设置按键状态
  48. * @param[in] enId 按键键值
  49. * @param[in] CHAR8 * 名称字符串
  50. */
  51. const CHAR8 *Hv_Mw_OsdGetKeyName(OsdEvtKeyValue enId);
  52. /**
  53. * @brief 设置按键状态
  54. * @param[in] eKey 按键键值
  55. * @param[in] eState 按键状态:可重复、可长按、禁用
  56. * @param[in] bIsSet 是否是set,否则为clear
  57. */
  58. VOID Hv_Mw_OsdSetKeyState(OsdEvtKeyValue eKey, OsdKeyState eState, BOOL bIsSet);
  59. /**
  60. * @brief 启用/禁用所有按键
  61. * @param[in] bEnable 使能
  62. */
  63. VOID Hv_Mw_OsdSetAllKeyEnable(BOOL bEnable);
  64. /**
  65. * @brief 获取当前的键值
  66. * @return OSD内部事件类型
  67. */
  68. OsdEvtKeyValue Hv_Mw_OsdGetKeyValue(VOID);
  69. /**
  70. * @brief 获取长按键的键值
  71. * @return OSD内部事件类型
  72. */
  73. OsdEvtKeyValue Hv_Mw_OsdGetHoldKey(VOID);
  74. /**
  75. * @brief 判断按键当前是否正在repeating
  76. * @param[in] eKey 按键键值
  77. * @return 按键是否正在repeating
  78. */
  79. BOOL Hv_Mw_OsdGetKeyIsRepeating(OsdEvtKeyValue enKey);
  80. /**
  81. * @brief 设置重复按键timer的周期
  82. * @param[in] uiPeriodMS 重复按键timer的周期(ms)
  83. */
  84. VOID Hv_Mw_OsdSetKeyRepeatPeriod(UINT32 uiPeriodMS);
  85. /**
  86. * @brief 设置长按按键timer的时长
  87. * @param[in] uiHoldTimeMS 长按按键timer的时长(ms)
  88. */
  89. VOID Hv_Mw_OsdSetKeyHoldPeriod(UINT32 uiHoldTimeMS);
  90. /**
  91. * @brief 将来自外部EventHub的OSD事件类型转为OSD内部事件类型
  92. * @param[in] stEventMsg 来自外部EventHub的OSD事件类型
  93. */
  94. VOID Hv_Mw_OsdEventProc(OsdEvent *pstEventMsg);
  95. /**
  96. * @brief 启动自动关闭指定scene的timer
  97. * @param[in] ucSceneId 自动关闭的scene id
  98. * @param[in] uiMs 超时时间,单位:毫秒
  99. */
  100. VOID Hv_Mw_OsdStartAutoCloseTimerMs(UCHAR8 ucSceneId, UINT32 uiMs);
  101. /**
  102. * @brief 启动自动关闭指定scene的timer
  103. * @param[in] ucSceneId 自动关闭的scene id
  104. * @param[in] usSecond 超时时间,单位:秒
  105. */
  106. VOID Hv_Mw_OsdStartAutoCloseTimer(UCHAR8 ucSceneId, USHORT16 usSecond);
  107. /**
  108. * @brief 停止自动关闭指定scene的timer
  109. * @param[in] ucSceneId 自动关闭的scene id
  110. */
  111. VOID Hv_Mw_OsdStopAutoCloseTimer(UCHAR8 ucSceneId);
  112. /**
  113. * @brief 启动自动刷新指定scene的timer
  114. * @param[in] ucSceneId 自动刷新的scene id
  115. * @param[in] uiTimeoutMs 超时时间,单位:毫秒
  116. */
  117. VOID Hv_Mw_OsdStartAutoRefreshTimer(UCHAR8 ucSceneId, UINT32 uiTimeoutMs);
  118. /**
  119. * @brief 停止自动刷新指定scene的timer
  120. * @param[in] ucSceneId 自动刷新的scene id
  121. */
  122. VOID Hv_Mw_OsdStopAutoRefreshTimer(UCHAR8 ucSceneId);
  123. /**
  124. * @brief 开始Logo显示的timer
  125. * @param[in] uiMs 时间:毫秒
  126. */
  127. VOID Hv_Mw_OsdStartLogoTimerMs(UINT32 uiMs);
  128. /**
  129. * @brief 开始Logo显示的timer
  130. * @param[in] ucSceneId 自动刷新的scene id
  131. */
  132. VOID Hv_Mw_OsdStartLogoTimer(USHORT16 usSecond);
  133. /**
  134. * @brief 停止自动刷新指定scene的timer
  135. */
  136. VOID Hv_Mw_OsdStopLogoTimer(VOID);
  137. /**
  138. * @brief 开始定时提醒的timer
  139. * @param[in] ucRemindId 定时提醒的id
  140. * @param[in] uiTimeoutMs 超时时间,单位:毫秒
  141. * @param[in] bRepeat 是否重复
  142. */
  143. VOID Hv_Mw_OsdStartReminderTimer(UCHAR8 ucRemindId, UINT32 uiTimeoutMs, BOOL bRepeat);
  144. /**
  145. * @brief 停止定时提醒的timer
  146. * @param[in] ucRemindId 定时提醒的id
  147. */
  148. VOID Hv_Mw_OsdStopReminderTimer(UCHAR8 ucRemindId);
  149. /**
  150. * @brief Osd Event相关数据初始化
  151. */
  152. VOID Hv_Mw_OsdEventInit(VOID);
  153. /**
  154. * @brief Event deinit
  155. */
  156. VOID Hv_Mw_OsdEventDeinit(VOID);
  157. #ifdef HV_SCALER_DEBUG_VERSION
  158. VOID Hv_Mw_OsdSetAutoCloseTimerEnable(BOOL bEnable);
  159. BOOL Hv_Mw_OsdIsMonkeyRunning(VOID);
  160. VOID Hv_Mw_OsdMonkeyTest(BOOL bStart);
  161. VOID Hv_Mw_OsdStartAutoTestTimer(UINT32 uiTimeoutMs);
  162. VOID Hv_Mw_OsdStopAutoTestTimer(VOID);
  163. #endif
  164. #endif