⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obj_dfudesc.h

📁 基于K9 AT91RM9200 学习板的loader源码
💻 H
字号:
//*----------------------------------------------------------------------------//*         ATMEL Microcontroller Software Support  -  ROUSSET  -//*----------------------------------------------------------------------------//* The software is delivered "AS IS" without warranty or condition of any//* kind, either express, implied or statutory. This includes without//* limitation any warranty or condition with respect to merchantability or//* fitness for any particular purpose, or against the infringements of//* intellectual property rights of others.//*----------------------------------------------------------------------------//* File Name           : obj_dfudesc.h//* Object              : DFU filter.//*//* 1.0 07/24/01 ODi    : Creation//*----------------------------------------------------------------------------#ifndef obj_dfudesc_h#define obj_dfudesc_h#include "services/obj_usbdesc.h"#include "services/obj_svctempo.h"#include "services/obj_svcudp.h"/* ====================================================================== *//* DFU definitions extracted from the USB Device Firmware Upgrade         *//* Specification, revision 1.0                                            *//* ====================================================================== *//* Run-Time DFU Functional Descriptor *//* This descriptor is identical for both run-time and the DFU mode *//* descriptor set */typedef __packed struct _AT91S_DfuFDesc {	volatile char  bLength;	volatile char  bDescriptorType;	volatile char  bmAttributes;	volatile unsigned short wDetachTimeout;	volatile unsigned short wTransferSize;} AT91S_DfuFDesc, *AT91PS_DfuFDesc;/* Device status structure as defined in *//* USB Device Firmware Upgrade Specification, rev 1.1 */typedef __packed struct _AT91S_DfuStatus {	volatile char bStatus;	volatile char bwPollTimeout[3];	volatile char bState;	char iString;} AT91S_DfuStatus, *AT91PS_DfuStatus;__inline char bmAttributes(AT91S_DfuFDesc const *pUSBDfuFDesc){	char const *pChar = (char *) pUSBDfuFDesc;	return pChar[2];}__inline unsigned short wDetachTimeOut(AT91S_DfuFDesc const *pUSBDfuFDesc){	char const *pChar = (char *) pUSBDfuFDesc;	return (((pChar[4]) << 8) | pChar[3]);}__inline unsigned short wTransferSize(AT91S_DfuFDesc const *pUSBDfuFDesc){	char const *pChar = (char *) pUSBDfuFDesc;	return ((pChar[6] << 8) | pChar[5]);}__inline unsigned int bwPollTimeout(AT91S_DfuStatus const *pStatus){	char const *pChar = (char *) pStatus;	return ((pChar[3] << 16) | (pChar[2] << 8) | pChar[1]);}/* DFU class-Specific Request Values */#define AT91C_DFU_DETACH    0#define AT91C_DFU_DNLOAD    1#define AT91C_DFU_UPLOAD    2#define AT91C_DFU_GETSTATUS 3#define AT91C_DFU_CLRSTATUS 4#define AT91C_DFU_GETSTATE  5#define AT91C_DFU_ABORT     6/* DFU state values, as defined in *//* USB Device Firmware Upgrade Specification, rev 1.1 */#define AT91C_DFU_appIDLE                0#define AT91C_DFU_appDETACH              1#define AT91C_DFU_dfuIDLE                2#define AT91C_DFU_dfuDNLOAD_SYNC         3#define AT91C_DFU_dfuDNBUSY              4#define AT91C_DFU_dfuDNLOAD_IDLE         5#define AT91C_DFU_dfuMANIFEST_SYNC       6#define AT91C_DFU_dfuMANIFEST            7#define AT91C_DFU_dfuMANIFEST_WAIT_RESET 8#define AT91C_DFU_dfuUPLOAD_IDLE         9#define AT91C_DFU_dfuERROR               10/* DFU status values, as defined in *//* USB Device Firmware Upgrade Specification, rev 1.1 */#define AT91C_DFU_OK              0x00#define AT91C_DFU_errTARGET       0x01#define AT91C_DFU_errFILE         0x02#define AT91C_DFU_errWRITE        0x03#define AT91C_DFU_errERASE        0x04#define AT91C_DFU_errCHECK_ERASED 0x05#define AT91C_DFU_errPROG         0x06#define AT91C_DFU_errVERIFY       0x07#define AT91C_DFU_errADDRESS      0x08#define AT91C_DFU_errNOTDONE      0x09#define AT91C_DFU_errFIRMWARE     0x0A#define AT91C_DFU_errVENDOR       0x0B#define AT91C_DFU_errUSBR         0x0C#define AT91C_DFU_errPOR          0x0D#define AT91C_DFU_errUNKNOWN      0x0E#define AT91C_DFU_errSTALLPKT     0x0F/* ====================================================================== *//* DFU definitions used in lib_dfu.c                                      *//* ====================================================================== */typedef struct _AT91S_DfuDesc {	AT91PS_Pipe  pPipe;     // Link to a AT91S_Pipe object	AT91S_SvcTempo tempo; // Link to a AT91S_Tempo object	// Private methods:	void (*State0)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State1)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State2)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State3)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State4)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State5)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State6)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State7)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State8)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State9)  (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*State10) (struct _AT91S_DfuDesc *, AT91PS_UsbSetup);	void (*GetStatus) (struct _AT91S_DfuDesc *);	void (*GetState)  (struct _AT91S_DfuDesc *);	// public methods:	void (*DispatchClassRequest) (AT91PS_UsbSetup, void *);	void (*Download)(struct _AT91S_DfuDesc *, unsigned short, AT91PF_PipeReadCallBack);	void (*Upload)(struct _AT91S_DfuDesc *, unsigned short);	// Public data:	AT91S_DfuStatus dfuStatus;	AT91S_DfuFDesc const *pDfuFDesc;	char manifestComplete;	char blockComplete;} AT91S_DfuDesc, *AT91PS_DfuDesc;// Types definition:typedef void (*AT91PF_DfuDescDownload)  (AT91PS_DfuDesc, unsigned short, AT91PF_PipeReadCallBack);typedef void (*AT91PF_DfuDescUpload)  (AT91PS_DfuDesc, unsigned short);typedef AT91PS_DfuDesc (*AT91PF_OpenDfuDesc) (	AT91PS_DfuDesc, 	AT91PS_Pipe, 	AT91PS_CtlTempo, 	char, 	AT91S_DfuFDesc const *, 	AT91PF_DfuDescDownload, 	AT91PF_DfuDescUpload);typedef void (*AT91PF_DfuDescDispatchClassRequest) (AT91PS_DfuDesc, void *);typedef void (*AT91PF_DfuDescState0)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState1)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState2)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState3)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState4)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState5)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState6)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState7)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState8)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState9)  (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescState10) (AT91PS_DfuDesc, AT91PS_UsbSetup);typedef void (*AT91PF_DfuDescGetStatus) (AT91PS_DfuDesc);typedef void (*AT91PF_DfuDescGetState)  (AT91PS_DfuDesc);// Function declaration:extern AT91PS_DfuDesc AT91F_OpenDfuDesc(AT91PS_DfuDesc, AT91PS_Pipe, AT91PS_CtlTempo, char, AT91S_DfuFDesc const *, AT91PF_DfuDescDownload, AT91PF_DfuDescUpload);extern void AT91F_DfuDescDispatchClassRequest (AT91PS_UsbSetup, void *);extern void AT91F_DfuDescState0  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState1  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState2  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState3  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState4  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState5  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState6  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState7  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState8  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState9  (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescState10 (AT91PS_DfuDesc, AT91PS_UsbSetup);extern void AT91F_DfuDescGetStatus(AT91PS_DfuDesc);extern void AT91F_DfuDescGetState (AT91PS_DfuDesc);extern void AT91F_DfuDescSuccess  (AT91PS_DfuDesc);extern void AT91F_DfuDescError    (AT91PS_DfuDesc);extern void AT91F_DfuDescDetachTimeout(AT91S_TempoStatus status, void *pVoid);extern void AT91F_DfuDescStatusPollTimeOut(AT91S_TempoStatus status, void *pVoid);extern void AT91F_DfuDescDownload(AT91S_PipeStatus status, void *pVoid);#endif // obj_dfudesc_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -