3      Copyright (C) Dean Camera, 2013. 
   5   dean [at] fourwalledcubicle [dot] com 
   9 #ifndef _DESCRIPTORS_H_ 
  10 #define _DESCRIPTORS_H_ 
  13                 #include <avr/pgmspace.h> 
  15                 #include <LUFA/Drivers/USB/USB.h> 
  17                 #include "TempDataLogger.h" 
  18                 #include "Config/AppConfig.h" 
  21                 /** Endpoint address of the Mass Storage device-to-host data IN endpoint. */ 
  22                 #define MASS_STORAGE_IN_EPADDR         (ENDPOINT_DIR_IN  | 3) 
  24                 /** Endpoint address of the Mass Storage host-to-device data OUT endpoint. */ 
  25                 #define MASS_STORAGE_OUT_EPADDR        (ENDPOINT_DIR_OUT | 4) 
  27                 /** Size in bytes of the Mass Storage data endpoints. */ 
  28                 #define MASS_STORAGE_IO_EPSIZE         64 
  30                 /** Endpoint address of the Generic HID reporting IN endpoint. */ 
  31                 #define GENERIC_IN_EPADDR              (ENDPOINT_DIR_IN  | 1) 
  33                 /** Size in bytes of the Generic HID reporting endpoint. */ 
  34                 #define GENERIC_EPSIZE                 16 
  36                 /** Size in bytes of the Generic HID reports (including report ID byte). */ 
  37                 #define GENERIC_REPORT_SIZE            sizeof(Device_Report_t) 
  40                 /** Type define for the device configuration descriptor structure. This must be defined in the 
  41                  *  application code, as the configuration descriptor contains several sub-descriptors which 
  42                  *  vary between devices, and which describe the device's usage to the host. 
  46                         USB_Descriptor_Configuration_Header_t Config
; 
  48                         // Mass Storage Interface 
  49                         USB_Descriptor_Interface_t            MS_Interface
; 
  50                         USB_Descriptor_Endpoint_t             MS_DataInEndpoint
; 
  51                         USB_Descriptor_Endpoint_t             MS_DataOutEndpoint
; 
  53                         // Settings Management Generic HID Interface 
  54                         USB_Descriptor_Interface_t            HID_Interface
; 
  55                         USB_HID_Descriptor_HID_t              HID_GenericHID
; 
  56                         USB_Descriptor_Endpoint_t             HID_ReportINEndpoint
; 
  57                 } USB_Descriptor_Configuration_t
; 
  59                 /** Enum for the device string descriptor IDs within the device. Each string descriptor should 
  60                  *  have a unique ID index associated with it, which can be used to refer to the string from 
  63                 enum StringDescriptors_t
 
  65                     STRING_ID_Language      
= 0, /**< Supported Languages string descriptor ID (must be zero) */ 
  66                     STRING_ID_Manufacturer  
= 1, /**< Manufacturer string ID */ 
  67                     STRING_ID_Product       
= 2, /**< Product string ID */ 
  70         /* Function Prototypes: */ 
  71                 uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue
, 
  73                                                     const void** const DescriptorAddress
) 
  74                                                     ATTR_WARN_UNUSED_RESULT 
ATTR_NON_NULL_PTR_ARG(3);