/** ****************************************************************************** * @file usb_bot.h * @author MCD Application Team * @version V4.0.0 * @date 21-January-2013 * @brief BOT State Machine management ****************************************************************************** * @attention * *

© COPYRIGHT 2013 STMicroelectronics

* * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.st.com/software_license_agreement_liberty_v2 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_BOT_H #define __USB_BOT_H /* Includes ------------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/ /* Bulk-only Command Block Wrapper */ typedef struct _Bulk_Only_CBW { uint32_t dSignature; uint32_t dTag; uint32_t dDataLength; uint8_t bmFlags; uint8_t bLUN; uint8_t bCBLength; uint8_t CB[16]; } Bulk_Only_CBW; /* Bulk-only Command Status Wrapper */ typedef struct _Bulk_Only_CSW { uint32_t dSignature; uint32_t dTag; uint32_t dDataResidue; uint8_t bStatus; } Bulk_Only_CSW; /* Exported constants --------------------------------------------------------*/ /*****************************************************************************/ /*********************** Bulk-Only Transfer State machine ********************/ /*****************************************************************************/ #define BOT_IDLE 0 /* Idle state */ #define BOT_DATA_OUT 1 /* Data Out state */ #define BOT_DATA_IN 2 /* Data In state */ #define BOT_DATA_IN_LAST 3 /* Last Data In Last */ #define BOT_CSW_Send 4 /* Command Status Wrapper */ #define BOT_ERROR 5 /* error state */ #define BOT_CBW_SIGNATURE 0x43425355 #define BOT_CSW_SIGNATURE 0x53425355 #define BOT_CBW_PACKET_LENGTH 31 #define CSW_DATA_LENGTH 0x000D /* CSW Status Definitions */ #define CSW_CMD_PASSED 0x00 #define CSW_CMD_FAILED 0x01 #define CSW_PHASE_ERROR 0x02 #define SEND_CSW_DISABLE 0 #define SEND_CSW_ENABLE 1 #define DIR_IN 0 #define DIR_OUT 1 #define BOTH_DIR 2 /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ void Mass_Storage_In (void); void Mass_Storage_Out (void); void CBW_Decode(void); void Transfer_Data_Request(uint8_t* Data_Pointer, uint16_t Data_Len); void Set_CSW (uint8_t CSW_Status, uint8_t Send_Permission); void Bot_Abort(uint8_t Direction); #endif /* __USB_BOT_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/