-               /** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a
-                *  uniform structure but variable sized data payloads, thus cannot be represented accurately by
-                *  a single typedef struct. A macro is used instead so that functional descriptors can be created
-                *  easily by specifying the size of the payload. This allows sizeof() to work correctly.
-                *
-                *  \param[in] DataSize  Size in bytes of the CDC functional descriptor's data payload
-                */             
-               #define CDC_FUNCTIONAL_DESCRIPTOR(DataSize)        \
-                    struct                                        \
-                    {                                             \
-                         USB_Descriptor_Header_t Header;          \
-                             uint8_t                 SubType;         \
-                         uint8_t                 Data[DataSize];  \
-                    }
-
-               /** Endpoint number of the CDC device-to-host notification IN endpoint. */
-               #define CDC_NOTIFICATION_EPNUM         3
-
-               /** Endpoint number of the CDC device-to-host data IN endpoint. */
-               #define CDC_TX_EPNUM                   1        
-
-               /** Endpoint number of the CDC host-to-device data OUT endpoint. */
-               #define CDC_RX_EPNUM                   2        
+               /** Endpoint address of the CDC device-to-host data IN endpoint. */
+               #define CDC_TX_EPADDR                  (ENDPOINT_DIR_IN  | 1)