#ifndef USB_DESCRIPTORS_H_
#define USB_DESCRIPTORS_H_

enum
{
  REPORT_ID_KEYBOARD = 1,
  REPORT_ID_CONSUMER_CONTROL,
  REPORT_ID_COUNT
};

enum
{
  ITF_NUM_CDC=0,
  ITF_NUM_CDC_DATA,
  ITF_NUM_HID,
  ITF_NUM_TOTAL
};


#define TUD_HID_REPORT_DESC_NKRO(...) \
  HID_USAGE_PAGE(HID_USAGE_PAGE_DESKTOP), HID_USAGE(HID_USAGE_PAGE_KEYBOARD), \
      HID_COLLECTION(HID_COLLECTION_APPLICATION),                             \
      __VA_ARGS__ HID_REPORT_SIZE(1), HID_REPORT_COUNT(8),                    \
      HID_USAGE_PAGE(HID_USAGE_PAGE_KEYBOARD), HID_USAGE_MIN(224),            \
      HID_USAGE_MAX(231), HID_LOGICAL_MIN(0), HID_LOGICAL_MAX(1),             \
      HID_INPUT(HID_VARIABLE),                                                \
      HID_REPORT_SIZE(1), HID_REPORT_COUNT(5),       \
      HID_USAGE_PAGE(HID_USAGE_PAGE_LED), HID_USAGE_MIN(1), HID_USAGE_MAX(5), \
      HID_OUTPUT(HID_VARIABLE), HID_REPORT_SIZE(3), HID_REPORT_COUNT(1),\
      HID_OUTPUT(HID_CONSTANT),                                               \
      HID_REPORT_SIZE(1), HID_REPORT_COUNT(14 * 8),  \
      HID_LOGICAL_MIN(0), HID_LOGICAL_MAX(1),                                 \
      HID_USAGE_PAGE(HID_USAGE_PAGE_KEYBOARD), HID_USAGE_MIN(0),              \
      HID_USAGE_MAX(14 * 8 - 1), HID_INPUT(HID_VARIABLE), HID_COLLECTION_END

#define TUD_HID_REPORT_DESC_MEDIA(...) \
	HID_USAGE_PAGE(HID_USAGE_PAGE_CONSUMER), \
	HID_USAGE(HID_USAGE_CONSUMER_CONTROL), \
	HID_COLLECTION(HID_COLLECTION_APPLICATION), \
	__VA_ARGS__ \
	HID_LOGICAL_MIN(0), \
	HID_LOGICAL_MAX(1), \
	HID_REPORT_SIZE(1), \
	HID_REPORT_COUNT(8), \
	/* next, previous, play/pause, mute, vol up, vol down*/ \
	HID_USAGE(0xB5), \
	HID_USAGE(0xB6), \
	HID_USAGE(0xCD), \
	HID_USAGE(0xE2), \
	HID_USAGE(0xE9), \
	HID_USAGE(0xEA), \
	HID_INPUT(HID_VARIABLE), \
	HID_COLLECTION_END

#endif /* USB_DESCRIPTORS_H_ */
