diff options
Diffstat (limited to 'tinyusb/device/romdriver/mw_usbd_dfuuser.h')
| -rw-r--r-- | tinyusb/device/romdriver/mw_usbd_dfuuser.h | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/tinyusb/device/romdriver/mw_usbd_dfuuser.h b/tinyusb/device/romdriver/mw_usbd_dfuuser.h deleted file mode 100644 index 40070c065..000000000 --- a/tinyusb/device/romdriver/mw_usbd_dfuuser.h +++ /dev/null @@ -1,264 +0,0 @@ -/*********************************************************************** -* $Id:: mw_usbd_dfuuser.h 202 2011-06-12 21:50:01Z usb06052 $ -* -* Project: USB device ROM Stack -* -* Description: -* Device Firmware Upgrade Class Custom User Module Definitions. -* -*********************************************************************** -* Copyright(C) 2011, NXP Semiconductor -* All rights reserved. -* -* Software that is described herein is for illustrative purposes only -* which provides customers with programming information regarding the -* products. This software is supplied "AS IS" without any warranties. -* NXP Semiconductors assumes no responsibility or liability for the -* use of the software, conveys no license or title under any patent, -* copyright, or mask work right to the product. NXP Semiconductors -* reserves the right to make changes in the software without -* notification. NXP Semiconductors also make no representation or -* warranty that such application will be suitable for the specified -* use without further testing or modification. -**********************************************************************/ - -#ifndef __DFUUSER_H__ -#define __DFUUSER_H__ - -#include "mw_usbd.h" -#include "mw_usbd_dfu.h" -#include "mw_usbd_core.h" - -/** \file - * \brief Device Firmware Upgrade (DFU) API structures and function prototypes. - * - * Definition of functions exported by ROM based DFU function driver. - * - */ - - -/** \ingroup Group_USBD - * @defgroup USBD_DFU Device Firmware Upgrade (DFU) Class Function Driver - * \section Sec_MSCModDescription Module Description - * DFU Class Function Driver module. This module contains an internal implementation of the USB DFU Class. - * User applications can use this class driver instead of implementing the DFU class manually - * via the low-level USBD_HW and USBD_Core APIs. - * - * This module is designed to simplify the user code by exposing only the required interface needed to interface with - * Devices using the USB DFU Class. - */ - -/** \brief USB descriptors data structure. - * \ingroup USBD_DFU - * - * \details This module exposes functions which interact directly with USB device stack's core layer. - * The application layer uses this component when it has to implement custom class function driver or - * standard class function driver which is not part of the current USB device stack. - * The functions exposed by this interface are to register class specific EP0 handlers and corresponding - * utility functions to manipulate EP0 state machine of the stack. This interface also exposes - * function to register custom endpoint interrupt handler. - * - */ -typedef struct USBD_DFU_INIT_PARAM -{ - /* memory allocation params */ - uint32_t mem_base; /**< Base memory location from where the stack can allocate - data and buffers. \note The memory address set in this field - should be accessible by USB DMA controller. Also this value - should be aligned on 4 byte boundary. - */ - uint32_t mem_size; /**< The size of memory buffer which stack can use. - \note The \em mem_size should be greater than the size - returned by USBD_DFU_API::GetMemSize() routine.*/ - /* DFU paramas */ - uint16_t wTransferSize; /**< DFU transfer block size in number of bytes. - This value should match the value set in DFU descriptor - provided as part of the descriptor array - (\em high_speed_desc) passed to Init() through - \ref USB_CORE_DESCS_T structure. */ - - uint16_t pad; - /** Pointer to the DFU interface descriptor within the descriptor - * array (\em high_speed_desc) passed to Init() through \ref USB_CORE_DESCS_T - * structure. - */ - uint8_t* intf_desc; - /* user defined functions */ - /** - * DFU Write callback function. - * - * This function is provided by the application software. This function gets called - * when host sends a write command. For application using zero-copy buffer scheme - * this function is called for the first time with \em length parameter set to 0. - * The application code should update the buffer pointer. - * - * \param[in] block_num Destination start address. - * \param[in, out] src Pointer to a pointer to the source of data. Pointer-to-pointer - * is used to implement zero-copy buffers. See \ref USBD_ZeroCopy - * for more details on zero-copy concept. - * \param[out] bwPollTimeout Pointer to a 3 byte buffer which the callback implementer - * should fill with the amount of minimum time, in milliseconds, - * that the host should wait before sending a subsequent - * DFU_GETSTATUS request. - * \param[in] length Number of bytes to be written. - * \return Returns DFU_STATUS_ values defined in mw_usbd_dfu.h. - * - */ - uint8_t (*DFU_Write)( uint32_t block_num, uint8_t** src, uint32_t length, uint8_t* bwPollTimeout); - - /** - * DFU Read callback function. - * - * This function is provided by the application software. This function gets called - * when host sends a read command. - * - * \param[in] block_num Destination start address. - * \param[in, out] dst Pointer to a pointer to the source of data. Pointer-to-pointer - * is used to implement zero-copy buffers. See \ref USBD_ZeroCopy - * for more details on zero-copy concept. - * \param[in] length Amount of data copied to destination buffer. - * \return Returns DFU_STATUS_ values defined in mw_usbd_dfu.h. - * - */ - uint32_t (*DFU_Read)( uint32_t block_num, uint8_t** dst, uint32_t length); - - /** - * DFU done callback function. - * - * This function is provided by the application software. This function gets called - * after download is finished. - * - * \return Nothing. - * - */ - void (*DFU_Done)(void); - - /** - * DFU detach callback function. - * - * This function is provided by the application software. This function gets called - * after USB_REQ_DFU_DETACH is recieved. Applications which set USB_DFU_WILL_DETACH - * bit in DFU descriptor should define this function. As part of this function - * application can call Connect() routine to disconnect and then connect back with - * host. For application which rely on WinUSB based host application should use this - * feature since USB reset can be invoked only by kernel drivers on Windows host. - * By implementing this feature host doen't have to issue reset instead the device - * has to do it automatically by disconnect and connect procedure. - * - * \param[in] hUsb Handle DFU control structure. - * \return Nothing. - * - */ - void (*DFU_Detach)(USBD_HANDLE_T hUsb); - - /** - * Optional user overridable function to replace the default DFU class handler. - * - * The application software could override the default EP0 class handler with their - * own by providing the handler function address as this data member of the parameter - * structure. Application which like the default handler should set this data member - * to zero before calling the USBD_DFU_API::Init(). - * \n - * \note - * - * \param[in] hUsb Handle to the USB device stack. - * \param[in] data Pointer to the data which will be passed when callback function is called by the stack. - * \param[in] event Type of endpoint event. See \ref USBD_EVENT_T for more details. - * \return The call back should returns \ref ErrorCode_t type to indicate success or error condition. - * \retval LPC_OK On success. - * \retval ERR_USBD_UNHANDLED Event is not handled hence pass the event to next in line. - * \retval ERR_USBD_xxx For other error conditions. - * - */ - ErrorCode_t (*DFU_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event); - -} USBD_DFU_INIT_PARAM_T; - - -/** \brief DFU class API functions structure. - * \ingroup USBD_DFU - * - * This module exposes functions which interact directly with USB device controller hardware. - * - */ -typedef struct USBD_DFU_API -{ - /** \fn uint32_t GetMemSize(USBD_DFU_INIT_PARAM_T* param) - * Function to determine the memory required by the DFU function driver module. - * - * This function is called by application layer before calling pUsbApi->dfu->Init(), to allocate memory used - * by DFU function driver module. The application should allocate the memory which is accessible by USB - * controller/DMA controller. - * \note Some memory areas are not accessible by all bus masters. - * - * \param[in] param Structure containing DFU function driver module initialization parameters. - * \return Returns the required memory size in bytes. - */ - uint32_t (*GetMemSize)(USBD_DFU_INIT_PARAM_T* param); - - /** \fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param) - * Function to initialize DFU function driver module. - * - * This function is called by application layer to initialize DFU function driver module. - * - * \param[in] hUsb Handle to the USB device stack. - * \param[in, out] param Structure containing DFU function driver module initialization parameters. - * \return Returns \ref ErrorCode_t type to indicate success or error condition. - * \retval LPC_OK On success - * \retval ERR_USBD_BAD_MEM_BUF Memory buffer passed is not 4-byte aligned or smaller than required. - * \retval ERR_API_INVALID_PARAM2 Either DFU_Write() or DFU_Done() or DFU_Read() callbacks are not defined. - * \retval ERR_USBD_BAD_DESC - * - USB_DFU_DESCRIPTOR_TYPE is not defined immediately after - * interface descriptor. - * - wTransferSize in descriptor doesn't match the value passed - * in param->wTransferSize. - * - DFU_Detach() is not defined while USB_DFU_WILL_DETACH is set - * in DFU descriptor. - * \retval ERR_USBD_BAD_INTF_DESC Wrong interface descriptor is passed. - */ - ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param, uint32_t init_state); - -} USBD_DFU_API_T; - -/*----------------------------------------------------------------------------- - * Private functions & structures prototypes - *-----------------------------------------------------------------------------*/ -/** @cond ADVANCED_API */ - -typedef struct _USBD_DFU_CTRL_T -{ - /*ALIGNED(4)*/ DFU_STATUS_T dfu_req_get_status; - uint16_t pad; - uint8_t dfu_state; - uint8_t dfu_status; - uint8_t download_done; - uint8_t if_num; /* interface number */ - - uint8_t* xfr_buf; - USB_DFU_FUNC_DESCRIPTOR* dfu_desc; - - USB_CORE_CTRL_T* pUsbCtrl; - /* user defined functions */ - /* return DFU_STATUS_ values defined in mw_usbd_dfu.h */ - uint8_t (*DFU_Write)( uint32_t block_num, uint8_t** src, uint32_t length, uint8_t* bwPollTimeout); - /* return - * DFU_STATUS_ : values defined in mw_usbd_dfu.h in case of errors - * 0 : If end of memory reached - * length : Amount of data copied to destination buffer - */ - uint32_t (*DFU_Read)( uint32_t block_num, uint8_t** dst, uint32_t length); - /* callback called after download is finished */ - void (*DFU_Done)(void); - /* callback called after USB_REQ_DFU_DETACH is recived */ - void (*DFU_Detach)(USBD_HANDLE_T hUsb); - -} USBD_DFU_CTRL_T; - -/** @cond DIRECT_API */ -uint32_t mwDFU_GetMemSize(USBD_DFU_INIT_PARAM_T* param); -extern ErrorCode_t mwDFU_init(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param, uint32_t init_state); -/** @endcond */ - -/** @endcond */ - -#endif /* __DFUUSER_H__ */ |
