summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFan DANG <[email protected]>2026-04-13 10:14:20 +0800
committerFan DANG <[email protected]>2026-04-13 10:14:20 +0800
commitce9864a0bcad0b22b1494466b7ef379e1b688319 (patch)
treec846368956e02d01c1911bfc5db8be0cf53adea8
parent34aded88edd5b1403bb35b531985953502a0faab (diff)
introduce two more macros to follow tinyusb's style
-rw-r--r--src/common/tusb_compiler.h11
-rw-r--r--src/common/tusb_types.h12
2 files changed, 13 insertions, 10 deletions
diff --git a/src/common/tusb_compiler.h b/src/common/tusb_compiler.h
index e66bcc5ea..4ed14dcfb 100644
--- a/src/common/tusb_compiler.h
+++ b/src/common/tusb_compiler.h
@@ -66,6 +66,9 @@
#define TU_LITTLE_ENDIAN (0x12u)
#define TU_BIG_ENDIAN (0x21u)
+#define TU_BITFIELD_LE (0x34u)
+#define TU_BITFIELD_BE (0x43u)
+
/*------------------------------------------------------------------*/
/* Count number of arguments of __VA_ARGS__
* - reference www.stackoverflow.com/questions/2124339/c-preprocessor-va-args-number-of-arguments
@@ -167,10 +170,10 @@
// For TI ARM compiler, __BYTE_ORDER__ is not defined for MSP430 but still LE
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ || defined(__MSP430__)
#define TU_BYTE_ORDER TU_LITTLE_ENDIAN
- #define TU_LITTLE_ENDIAN_BITFIELD
+ #define TU_BITFIELD_ORDER TU_BITFIELD_LE
#else
#define TU_BYTE_ORDER TU_BIG_ENDIAN
- #define TU_BIG_ENDIAN_BITFIELD
+ #define TU_BITFIELD_ORDER TU_BITFIELD_BE
#endif
// Unfortunately XC16 doesn't provide builtins for 32bit endian conversion
@@ -214,10 +217,10 @@
// Endian conversion use well-known host to network (big endian) naming
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define TU_BYTE_ORDER TU_LITTLE_ENDIAN
- #define TU_LITTLE_ENDIAN_BITFIELD
+ #define TU_BITFIELD_ORDER TU_BITFIELD_LE
#else
#define TU_BYTE_ORDER TU_BIG_ENDIAN
- #define TU_BIG_ENDIAN_BITFIELD
+ #define TU_BITFIELD_ORDER TU_BITFIELD_BE
#endif
#define TU_BSWAP16(u16) (__iar_builtin_REV16(u16))
diff --git a/src/common/tusb_types.h b/src/common/tusb_types.h
index b02e90eae..70c73b27d 100644
--- a/src/common/tusb_types.h
+++ b/src/common/tusb_types.h
@@ -409,18 +409,18 @@ typedef struct TU_ATTR_PACKED {
uint8_t bEndpointAddress ; // The address of the endpoint
struct TU_ATTR_PACKED {
-#if defined(TU_LITTLE_ENDIAN_BITFIELD)
+#if (TU_BITFIELD_ORDER == TU_BITFIELD_LE)
uint8_t xfer : 2; // Control, ISO, Bulk, Interrupt
uint8_t sync : 2; // None, Asynchronous, Adaptive, Synchronous
uint8_t usage : 2; // Data, Feedback, Implicit feedback
uint8_t : 2;
-#elif defined(TU_BIG_ENDIAN_BITFIELD)
+#elif (TU_BITFIELD_ORDER == TU_BITFIELD_BE)
uint8_t : 2;
uint8_t usage : 2;
uint8_t sync : 2;
uint8_t xfer : 2;
#else
- #error "Please define TU_LITTLE_ENDIAN_BITFIELD or TU_BIG_ENDIAN_BITFIELD"
+ #error "Please define TU_BITFIELD_ORDER as TU_BITFIELD_LE or TU_BITFIELD_BE"
#endif
} bmAttributes;
@@ -531,16 +531,16 @@ typedef struct TU_ATTR_PACKED {
typedef struct TU_ATTR_PACKED {
union {
struct TU_ATTR_PACKED {
-#if defined(TU_LITTLE_ENDIAN_BITFIELD)
+#if (TU_BITFIELD_ORDER == TU_BITFIELD_LE)
uint8_t recipient : 5; ///< Recipient type tusb_request_recipient_t.
uint8_t type : 2; ///< Request type tusb_request_type_t.
uint8_t direction : 1; ///< Direction type. tusb_dir_t
-#elif defined(TU_BIG_ENDIAN_BITFIELD)
+#elif (TU_BITFIELD_ORDER == TU_BITFIELD_BE)
uint8_t direction : 1; ///< Direction type. tusb_dir_t
uint8_t type : 2; ///< Request type tusb_request_type_t.
uint8_t recipient : 5; ///< Recipient type tusb_request_recipient_t.
#else
- #error "Please define TU_LITTLE_ENDIAN_BITFIELD or TU_BIG_ENDIAN_BITFIELD"
+ #error "Please define TU_BITFIELD_ORDER as TU_BITFIELD_LE or TU_BITFIELD_BE"
#endif
} bmRequestType_bit;