dfu_mal.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*!
  2. \file usbd_dfu_mal.h
  3. \brief USB DFU device media access layer header file
  4. */
  5. /*
  6. Copyright (C) 2017 GigaDevice
  7. 2017-06-06, V1.0.0, firmware for GD32F3x0
  8. */
  9. #ifndef USBD_DFU_MAL_H
  10. #define USBD_DFU_MAL_H
  11. #include "usb_conf.h"
  12. #include "usbd_conf.h"
  13. typedef struct _DFU_MAL_PROPERTY
  14. {
  15. const uint8_t* pStrDesc;
  16. uint8_t (*pMAL_Init) (void);
  17. uint8_t (*pMAL_DeInit) (void);
  18. uint8_t (*pMAL_Erase) (uint32_t Addr);
  19. uint8_t (*pMAL_Write) (uint32_t Addr, uint32_t Len);
  20. uint8_t* (*pMAL_Read) (uint32_t Addr, uint32_t Len);
  21. uint8_t (*pMAL_CheckAdd) (uint32_t Addr);
  22. const uint32_t EraseTimeout;
  23. const uint32_t WriteTimeout;
  24. }
  25. DFU_MAL_Property_TypeDef;
  26. typedef enum
  27. {
  28. MAL_OK = 0,
  29. MAL_FAIL
  30. } MAL_Status;
  31. #define _1st_BYTE(x) (uint8_t)((x) & 0xFF) /*!< addressing cycle 1st byte */
  32. #define _2nd_BYTE(x) (uint8_t)(((x) & 0xFF00) >> 8) /*!< addressing cycle 2nd byte */
  33. #define _3rd_BYTE(x) (uint8_t)(((x) & 0xFF0000) >> 16) /*!< addressing cycle 3rd byte */
  34. #define SET_POLLING_TIMEOUT(x) buffer[1] = _1st_BYTE(x);\
  35. buffer[2] = _2nd_BYTE(x);\
  36. buffer[3] = _3rd_BYTE(x);
  37. uint8_t DFU_MAL_Init (void);
  38. uint8_t DFU_MAL_DeInit (void);
  39. uint8_t DFU_MAL_Erase (uint32_t Addr);
  40. uint8_t DFU_MAL_Write (uint32_t Addr, uint32_t Len);
  41. uint8_t* DFU_MAL_Read (uint32_t Addr, uint32_t Len);
  42. uint8_t DFU_MAL_GetStatus (uint32_t Addr, uint8_t Cmd, uint8_t *buffer);
  43. extern uint8_t MAL_Buffer[TRANSFER_SIZE];
  44. #endif /* USBD_DFU_MAL_H */