📄 ms_bot.h
字号:
// ----------------------------------------------------------------------------
// ATMEL Microcontroller Software Support - ROUSSET -
// ----------------------------------------------------------------------------
// DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
// DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ----------------------------------------------------------------------------
// File Name : ms_bot.h
// Object : bot commandes (usbmassbulk_10.pdf)
// Creation : JCB 15/apr/2005
// Modif :
// ----------------------------------------------------------------------------
#ifndef _USBMS_BOT_H_
#define _USBMS_BOT_H_
/* Table 5.1 - Command Block Wrapper */
// The CBW shall start on a packet boundary and shall end as a
// short packet with exactly 31 (1Fh) bytes transferred.
#define CBW_SIZE 31
#define CBW_SIGNATURE 0x43425355
typedef struct
{
UCHAR dCBWSignature_0; /* 0x55 'U' Must be 0x43425355 */
UCHAR dCBWSignature_1; /* 0x53 'S' */
UCHAR dCBWSignature_2; /* 0x42 'B' */
UCHAR dCBWSignature_3; /* 0x43 'C' */
UCHAR dCBWTag_0; /* Must be the same as dCSWTag */
UCHAR dCBWTag_1;
UCHAR dCBWTag_2;
UCHAR dCBWTag_3;
UCHAR dCBWDataTransferLength_0; /* Number of bytes transfer */
UCHAR dCBWDataTransferLength_1;
UCHAR dCBWDataTransferLength_2;
UCHAR dCBWDataTransferLength_3;
UCHAR bmCBWFlags; /* indicates the directin of the transfer :
* 0x80 : IN (device to host)
* 0x00 : OUT (host to device) */
UCHAR bCBWLUN; /* bits 0->3: bCBWLUN */
UCHAR bCBWCBLength; /* bits 0->4: bCBWCBLength */
UCHAR CBWCB[16]; /* the command bmock to be executed by the device */
}USBMS_CBW;
/* Table 5.2 Command Status Wrapper (CSW) */
#define CSW_SIGNATURE 0x53425355
typedef struct
{
UCHAR dCSWSignature_0; /* 0x55 'U' Must be 0x53425355 */
UCHAR dCSWSignature_1; /* 0x53 'S' */
UCHAR dCSWSignature_2; /* 0x42 'B' */
UCHAR dCSWSignature_3; /* 0x53 'S' */
UCHAR dCSWTag_0; /* Must be the same as dCBWTag */
UCHAR dCSWTag_1;
UCHAR dCSWTag_2;
UCHAR dCSWTag_3;
UCHAR dCSWDataResidue_0; /* set to the difference between the amount of data expected */
UCHAR dCSWDataResidue_1; /* to be processed and the amount of data actually processed */
UCHAR dCSWDataResidue_2;
UCHAR dCSWDataResidue_3;
UCHAR bCSWStatus; /* Status odf the the operation, defined by thje COMMAND_BLOCK_STATUS enum */
}USBMS_CSW;
/* Table 5.3 - Command Block Status Values */
typedef enum
{
GOOD_STATUS, /* 00h Command Passed ("good status") */
COMMAND_FAILED, /* 01h Command Failed */
PHASE_ERROR /* 01h Command Failed */
}COMMAND_BLOCK_STATUS;
#ifdef ADS_COMPIL
extern void ms_usbEvent( UCHAR eventMask );
#else
extern __ramfunc void ms_usbEvent( UCHAR eventMask );
#endif
extern void ms_sendComplete( void );
extern void ms_dataReceived( void );
extern void ms_stallPipe( EPx ep );
extern void ms_sendTx( void );
extern void ms_computeCSW( COMMAND_BLOCK_STATUS command_block_status, ULONG data_residue );
extern void ms_send_bot_status( COMMAND_BLOCK_STATUS command_block_status, ULONG data_residue );
extern void ms_plugInit( void );
extern void ms_initAutomat( void );
extern USBMS_RETURN ms_classRequest( FW_DEVICE_REQUEST commandBuff, UCHAR *databuff, UCHAR *datasize);
#endif /* _USBMS_BOT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -