- * - <b>USE_RAM_DESCRIPTORS</b> - (\ref Group_StdDescriptors) - <i>AVR8 Only</i> \n
- * Define this token to indicate to the USB driver that all device descriptors are stored in RAM, rather than being located in any one
- * of the AVR's memory spaces. RAM descriptors may be desirable in applications where the descriptors need to be modified at runtime.
- *
- * - <b>USE_FLASH_DESCRIPTORS</b> - (\ref Group_StdDescriptors) - <i>AVR8 Only</i> \n
- * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's FLASH memory rather than RAM.
- *
- * - <b>USE_EEPROM_DESCRIPTORS</b> - (\ref Group_StdDescriptors) - <i>AVR8 Only</i> \n
- * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's EEPROM memory rather than RAM.
- *
- * - <b>NO_INTERNAL_SERIAL</b> - (\ref Group_StdDescriptors) - <i>All Architectures</i> \n
- * Some AVR models contain a unique serial number which can be used as the device serial number, while in device mode. This allows
- * the host to uniquely identify the device regardless of if it is moved between USB ports on the same computer, allowing allocated
- * resources (such as drivers, COM Port number allocations) to be preserved. This is not needed in many apps, and so the code that
- * performs this task can be disabled by defining this option and passing it to the compiler via the -D switch.
- *
- * - <b>FIXED_CONTROL_ENDPOINT_SIZE</b>=<i>x</i> - (\ref Group_EndpointManagement) - <i>All Architectures</i> \n
- * By default, the library determines the size of the control endpoint (when in device mode) by reading the device descriptor.
- * Normally this reduces the amount of configuration required for the library, allows the value to change dynamically (if
- * descriptors are stored in EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this token can be
- * defined to a non-zero value instead to give the size in bytes of the control endpoint, to reduce the size of the compiled
- * binary.
- *
- * - <b>DEVICE_STATE_AS_GPIOR</b> - (\ref Group_Device) - <i>AVR8 Only</i> \n
- * One of the most frequently used global variables in the stack is the USB_DeviceState global, which indicates the current state of
- * the Device State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token
- * may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR
- * reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except
- * implicitly via the library APIs.
- *
- * - <b>FIXED_NUM_CONFIGURATIONS</b>=<i>x</i> - (\ref Group_Device) - <i>All Architectures</i> \n
- * By default, the library determines the number of configurations a USB device supports by reading the device descriptor. This reduces
- * the amount of configuration required to set up the library, and allows the value to change dynamically (if descriptors are stored in
- * EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this value may be fixed via this token in the project
- * makefile to reduce the compiled size of the binary at the expense of flexibility.
- *
- * - <b>CONTROL_ONLY_DEVICE</b> - (\ref Group_Device) - <i>All Architectures</i> \n
- * In some limited USB device applications, there are no device endpoints other than the control endpoint; i.e. all device communication
- * is through control endpoint requests. Defining this token will remove several features related to the selection and control of device
- * endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided.
- *
- * - <b>MAX_ENDPOINT_INDEX</b> - (\ref Group_Device) - <i>XMEGA Only</i> \n
- * Defining this value to the highest index (not address - this excludes the direction flag) endpoint within the device will restrict the
- * number of FIFOs created internally for the endpoint buffers, reducing the total RAM usage.
- *
- * - <b>INTERRUPT_CONTROL_ENDPOINT</b> - (\ref Group_USBManagement) - <i>All Architectures</i> \n
- * Some applications prefer to not call the USB_USBTask() management task regularly while in device mode, as it can complicate code significantly.
- * Instead, when device mode is used this token can be passed to the library via the -D switch to allow the library to manage the USB control
- * endpoint entirely via USB controller interrupts asynchronously to the user application. When defined, USB_USBTask() does not need to be called
- * when in USB device mode.
- *
- * - <b>NO_DEVICE_REMOTE_WAKEUP</b> - (\ref Group_Device) - <i>All Architectures</i> \n
- * Many devices do not require the use of the Remote Wakeup features of USB, used to wake up the USB host when suspended. On these devices,
- * the code required to manage device Remote Wakeup can be disabled by defining this token and passing it to the library via the -D switch.
- *
- * - <b>NO_DEVICE_SELF_POWER</b> - (\ref Group_Device) - <i>All Architectures</i> \n
- * USB devices may be bus powered, self powered, or a combination of both. When a device can be both bus powered and self powered, the host may
- * query the device to determine the current power source, via \ref USB_Device_CurrentlySelfPowered. For solely bus powered devices, this global
- * and the code required to manage it may be disabled by passing this token to the library via the -D switch.
+ * \li <b>USE_RAM_DESCRIPTORS</b> - (\ref Group_StdDescriptors) - <i>AVR8 Only</i> \n
+ * Define this token to indicate to the USB driver that all device descriptors are stored in RAM, rather than being located in any one
+ * of the AVR's memory spaces. RAM descriptors may be desirable in applications where the descriptors need to be modified at runtime.
+ *
+ * \li <b>USE_FLASH_DESCRIPTORS</b> - (\ref Group_StdDescriptors) - <i>AVR8 Only</i> \n
+ * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's FLASH memory rather than RAM.
+ *
+ * \li <b>USE_EEPROM_DESCRIPTORS</b> - (\ref Group_StdDescriptors) - <i>AVR8 Only</i> \n
+ * Similar to USE_RAM_DESCRIPTORS, but all descriptors are stored in the AVR's EEPROM memory rather than RAM.
+ *
+ * \li <b>NO_INTERNAL_SERIAL</b> - (\ref Group_StdDescriptors) - <i>All Architectures</i> \n
+ * Some AVR models contain a unique serial number which can be used as the device serial number, while in device mode. This allows
+ * the host to uniquely identify the device regardless of if it is moved between USB ports on the same computer, allowing allocated
+ * resources (such as drivers, COM Port number allocations) to be preserved. This is not needed in many apps, and so the code that
+ * performs this task can be disabled by defining this option and passing it to the compiler via the -D switch.
+ *
+ * \li <b>FIXED_CONTROL_ENDPOINT_SIZE</b>=<i>x</i> - (\ref Group_EndpointManagement) - <i>All Architectures</i> \n
+ * By default, the library determines the size of the control endpoint (when in device mode) by reading the device descriptor.
+ * Normally this reduces the amount of configuration required for the library, allows the value to change dynamically (if
+ * descriptors are stored in EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this token can be
+ * defined to a non-zero value instead to give the size in bytes of the control endpoint, to reduce the size of the compiled
+ * binary.
+ *
+ * \li <b>DEVICE_STATE_AS_GPIOR</b> - (\ref Group_Device) - <i>AVR8 Only</i> \n
+ * One of the most frequently used global variables in the stack is the USB_DeviceState global, which indicates the current state of
+ * the Device State Machine. To reduce the amount of code and time required to access and modify this global in an application, this token
+ * may be defined to a value between 0 and 2 to fix the state variable into one of the three general purpose IO registers inside the AVR
+ * reserved for application use. When defined, the corresponding GPIOR register should not be used within the user application except
+ * implicitly via the library APIs.
+ *
+ * \li <b>FIXED_NUM_CONFIGURATIONS</b>=<i>x</i> - (\ref Group_Device) - <i>All Architectures</i> \n
+ * By default, the library determines the number of configurations a USB device supports by reading the device descriptor. This reduces
+ * the amount of configuration required to set up the library, and allows the value to change dynamically (if descriptors are stored in
+ * EEPROM or RAM rather than flash memory) and reduces code maintenance. However, this value may be fixed via this token in the project
+ * makefile to reduce the compiled size of the binary at the expense of flexibility.
+ *
+ * \li <b>CONTROL_ONLY_DEVICE</b> - (\ref Group_Device) - <i>All Architectures</i> \n
+ * In some limited USB device applications, there are no device endpoints other than the control endpoint; i.e. all device communication
+ * is through control endpoint requests. Defining this token will remove several features related to the selection and control of device
+ * endpoints internally, saving space. Generally, this is usually only useful in (some) bootloaders and is best avoided.
+ *
+ * \li <b>MAX_ENDPOINT_INDEX</b> - (\ref Group_Device) - <i>XMEGA Only</i> \n
+ * Defining this value to the highest index (not address - this excludes the direction flag) endpoint within the device will restrict the
+ * number of FIFOs created internally for the endpoint buffers, reducing the total RAM usage.
+ *
+ * \li <b>INTERRUPT_CONTROL_ENDPOINT</b> - (\ref Group_USBManagement) - <i>All Architectures</i> \n
+ * Some applications prefer to not call the USB_USBTask() management task regularly while in device mode, as it can complicate code significantly.
+ * Instead, when device mode is used this token can be passed to the library via the -D switch to allow the library to manage the USB control
+ * endpoint entirely via USB controller interrupts asynchronously to the user application. When defined, USB_USBTask() does not need to be called
+ * when in USB device mode.
+ *
+ * \li <b>NO_DEVICE_REMOTE_WAKEUP</b> - (\ref Group_Device) - <i>All Architectures</i> \n
+ * Many devices do not require the use of the Remote Wakeup features of USB, used to wake up the USB host when suspended. On these devices,
+ * the code required to manage device Remote Wakeup can be disabled by defining this token and passing it to the library via the -D switch.
+ *
+ * \li <b>NO_DEVICE_SELF_POWER</b> - (\ref Group_Device) - <i>All Architectures</i> \n
+ * USB devices may be bus powered, self powered, or a combination of both. When a device can be both bus powered and self powered, the host may
+ * query the device to determine the current power source, via \ref USB_Device_CurrentlySelfPowered. For solely bus powered devices, this global
+ * and the code required to manage it may be disabled by passing this token to the library via the -D switch.