hv_mw_UsbTask.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /**
  2. * @file hv_mw_UsbTask.h
  3. * @brief Header file of USB task module.
  4. *
  5. * @verbatim
  6. * ==============================================================================
  7. * ##### How to use #####
  8. * ==============================================================================
  9. * (+) Use Hv_Mw_UsbTaskHandle(...) s a task function handle.
  10. *
  11. * @endverbatim
  12. *
  13. * @author HiView SoC Software Team
  14. * @version 1.0.0
  15. * @date 2022-08-10
  16. */
  17. #ifndef __SDK_MIDDLEWARE_RUNTIME_USBTASK_INC_USBTASK_H__
  18. #define __SDK_MIDDLEWARE_RUNTIME_USBTASK_INC_USBTASK_H__
  19. #include "hv_comm_DataType.h"
  20. #include "hv_comm_Event.h"
  21. #include "hv_vos_Comm.h"
  22. #include "FreeRTOS.h"
  23. #include "semphr.h"
  24. #include "task.h"
  25. /**
  26. * @brief Defines the state of USB, which can be used for state machine operation and also for event notification with other modules.
  27. */
  28. typedef enum _UsbState
  29. {
  30. USB_STATE_IDLE = 0x01, /*!< 空闲态,无实际作用 */
  31. USB_STATE_NO_UDISK_IN = 0x02, /*!< 端口检查结果:无设备接入 */
  32. USB_STATE_PLUGGED_IN = 0x03, /*!< 端口检查结果:有设备接入 */
  33. USB_STATE_NO_OTA_FILE = 0x04, /*!< OTA目标文件查找结果:未找到文件 */
  34. USB_STATE_FOUND_OTA_FILE = 0x05, /*!< OTA目标文件查找结果:命中 */
  35. USB_STATE_OTA_IN_PROCESSING = 0x08, /*!< OTA运行中 */
  36. USB_STATE_OTA_SUCCESS = 0x09, /*!< OTA结果:成功 */
  37. USB_STATE_OTA_FAIL = 0x0A, /*!< OTA结果:失败 */
  38. USB_STATE_ANY = 0xFF, /*!< 任意态,用于不限制状态机触发的初始状态时 */
  39. } UsbState;
  40. typedef enum _UsbWorkMode
  41. {
  42. USB_MODE_HOST,
  43. USB_MODE_DEVICE,
  44. USB_MODE_MAX,
  45. } UsbWorkMode;
  46. /**
  47. * @brief OTA State Machine
  48. */
  49. typedef struct _UsbStateMachine
  50. {
  51. USHORT16 usAcceptStates;
  52. UsbEventId enEventId;
  53. Status (*pfActionHandle)(UsbEvent *pstEvent);
  54. }UsbStateMachine;
  55. #define USB_NORMAL_TASK_PRIORITY 2
  56. #define USB_URGENT_TASK_PRIORITY 8
  57. /**
  58. * @brief Set USB state.
  59. * @param[in] enState enum value of UsbOtaState
  60. * @return none
  61. */
  62. VOID Hv_Mw_USB_SetUsbState(UsbState enState);
  63. /**
  64. * @brief Get USB state.
  65. * @return enum value of UsbState.
  66. */
  67. UsbState Hv_Mw_USB_GetUsbState(VOID);
  68. /**
  69. * @brief Send event to usb module.
  70. * @return VOID
  71. */
  72. VOID Hv_Mw_SendEvtToUsb(UsbEventId enEvtID, USHORT16 usValue);
  73. /**
  74. * @brief USB task function handle.
  75. * @param[in] arg unused.
  76. * @return VOID
  77. */
  78. VOID Hv_Mw_UsbTaskHandle( VOID *arg );
  79. VOID Hv_Mw_UsbSetWorkMode(UsbWorkMode enMode);
  80. UsbWorkMode Hv_Mw_UsbGetWorkMode(VOID);
  81. VOID Hv_Drv_USB_SetPriority(UCHAR8 ucPriority);
  82. VOID Hv_Drv_USB_SetTaskHandler(TaskHandle_t stTaskHdl);
  83. #ifdef CONFIG_USER_USB_OTA_ON
  84. #include "hv_drv_UsbFatfs.h"
  85. #include "hv_drv_UsbFatfsDiskIo.h"
  86. typedef enum _UsbOtaMode
  87. {
  88. OTA_MODE_NORMAL = 0x01,
  89. OTA_MODE_FORCE = 0x02,
  90. } UsbOtaMode;
  91. /**
  92. * @brief Usb Host task init.
  93. * @return VOID
  94. */
  95. VOID Hv_Mw_UsbHost_TaskStartInit(VOID);
  96. /**
  97. * @brief Stop Usb Host task.
  98. * @return VOID
  99. */
  100. VOID Hv_Mw_UsbHost_TaskStop(VOID);
  101. Status Hv_Mw_USB_StartOta(UCHAR8 ucArgC, UCHAR8* cArgV[], UsbOtaMode enMode);
  102. #endif
  103. #ifdef CONFIG_USER_USB_BILLBOARD_ON
  104. VOID Hv_Mw_UsbBillboard_TaskStartInit(VOID);
  105. VOID Hv_Mw_UsbBillboard_TaskStop(VOID);
  106. #endif
  107. #endif