usb_bot.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /******************** (C) COPYRIGHT 2009 STMicroelectronics ********************
  2. * File Name : usb_bot.h
  3. * Author : MCD Application Team
  4. * Version : V3.1.0
  5. * Date : 10/30/2009
  6. * Description : BOT State Machine management
  7. ********************************************************************************
  8. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  9. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  10. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  11. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  12. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  13. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  14. *******************************************************************************/
  15. /* Define to prevent recursive inclusion -------------------------------------*/
  16. #ifndef __USB_BOT_H
  17. #define __USB_BOT_H
  18. /* Includes ------------------------------------------------------------------*/
  19. /* Exported types ------------------------------------------------------------*/
  20. /* Bulk-only Command Block Wrapper */
  21. typedef struct _Bulk_Only_CBW
  22. {
  23. uint32_t dSignature;
  24. uint32_t dTag;
  25. uint32_t dDataLength;
  26. uint8_t bmFlags;
  27. uint8_t bLUN;
  28. uint8_t bCBLength;
  29. uint8_t CB[16];
  30. }
  31. Bulk_Only_CBW;
  32. /* Bulk-only Command Status Wrapper */
  33. typedef struct _Bulk_Only_CSW
  34. {
  35. uint32_t dSignature;
  36. uint32_t dTag;
  37. uint32_t dDataResidue;
  38. uint8_t bStatus;
  39. }
  40. Bulk_Only_CSW;
  41. /* Exported constants --------------------------------------------------------*/
  42. /*****************************************************************************/
  43. /*********************** Bulk-Only Transfer State machine ********************/
  44. /*****************************************************************************/
  45. #define BOT_IDLE 0 /* Idle state */
  46. #define BOT_DATA_OUT 1 /* Data Out state */
  47. #define BOT_DATA_IN 2 /* Data In state */
  48. #define BOT_DATA_IN_LAST 3 /* Last Data In Last */
  49. #define BOT_CSW_Send 4 /* Command Status Wrapper */
  50. #define BOT_ERROR 5 /* error state */
  51. #define BOT_CBW_SIGNATURE 0x43425355
  52. #define BOT_CSW_SIGNATURE 0x53425355
  53. #define BOT_CBW_PACKET_LENGTH 31
  54. #define CSW_DATA_LENGTH 0x000D
  55. /* CSW Status Definitions */
  56. #define CSW_CMD_PASSED 0x00
  57. #define CSW_CMD_FAILED 0x01
  58. #define CSW_PHASE_ERROR 0x02
  59. #define SEND_CSW_DISABLE 0
  60. #define SEND_CSW_ENABLE 1
  61. #define DIR_IN 0
  62. #define DIR_OUT 1
  63. #define BOTH_DIR 2
  64. /* Exported macro ------------------------------------------------------------*/
  65. /* Exported functions ------------------------------------------------------- */
  66. void Mass_Storage_In (void);
  67. void Mass_Storage_Out (void);
  68. void CBW_Decode(void);
  69. void Transfer_Data_Request(uint8_t* Data_Pointer, uint16_t Data_Len);
  70. void Set_CSW (uint8_t CSW_Status, uint8_t Send_Permission);
  71. void Bot_Abort(uint8_t Direction);
  72. #endif /* __USB_BOT_H */
  73. /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/