hathach 7 роки тому
батько
коміт
bd2313aa8b
2 змінених файлів з 26 додано та 12 видалено
  1. 4 12
      src/common/tusb_common.h
  2. 22 0
      src/common/tusb_types.h

+ 4 - 12
src/common/tusb_common.h

@@ -137,23 +137,15 @@
 #define memclr_(buffer, size)  memset((buffer), 0, (size))
 #define memclr_(buffer, size)  memset((buffer), 0, (size))
 #define varclr_(_var)          memclr_(_var, sizeof(*(_var)))
 #define varclr_(_var)          memclr_(_var, sizeof(*(_var)))
 #define arrclr_(_arr)          memclr_(_arr, sizeof(_arr))
 #define arrclr_(_arr)          memclr_(_arr, sizeof(_arr))
-
 #define arrcount_(_arr)       ( sizeof(_arr) / sizeof(_arr[0]) )
 #define arrcount_(_arr)       ( sizeof(_arr) / sizeof(_arr[0]) )
 
 
-static inline uint8_t const * descriptor_next(uint8_t const p_desc[])
-{
-  return p_desc + p_desc[DESC_OFFSET_LEN];
-}
-
-static inline uint8_t descriptor_type(uint8_t const p_desc[])
+static inline bool mem_all_zero(void const* buffer, uint32_t size)
 {
 {
-  return p_desc[DESC_OFFSET_TYPE];
+  uint8_t const* p_mem = (uint8_t const*) buffer;
+  for(uint32_t i=0; i<size; i++) if (p_mem[i] != 0)  return false;
+  return true;
 }
 }
 
 
-static inline uint8_t descriptor_len(uint8_t const p_desc[])
-{
-  return p_desc[DESC_OFFSET_LEN];
-}
 
 
 //------------- Conversion -------------//
 //------------- Conversion -------------//
 /// form an uint32_t from 4 x uint8_t
 /// form an uint32_t from 4 x uint8_t

+ 22 - 0
src/common/tusb_types.h

@@ -377,6 +377,10 @@ static inline uint8_t bm_request_type(uint8_t direction, uint8_t type, uint8_t r
   return ((uint8_t) (direction << 7)) | ((uint8_t) (type << 5)) | (recipient);
   return ((uint8_t) (direction << 7)) | ((uint8_t) (type << 5)) | (recipient);
 }
 }
 
 
+//--------------------------------------------------------------------+
+// Endpoint helper
+//--------------------------------------------------------------------+
+
 // Get direction from Endpoint address
 // Get direction from Endpoint address
 static inline tusb_dir_t edpt_dir(uint8_t addr)
 static inline tusb_dir_t edpt_dir(uint8_t addr)
 {
 {
@@ -394,6 +398,24 @@ static inline uint8_t edpt_addr(uint8_t num, tusb_dir_t dir)
   return num | (dir == TUSB_DIR_IN ? TUSB_DIR_IN_MASK : 0);
   return num | (dir == TUSB_DIR_IN ? TUSB_DIR_IN_MASK : 0);
 }
 }
 
 
+//--------------------------------------------------------------------+
+// Descriptor helper
+//--------------------------------------------------------------------+
+static inline uint8_t const * descriptor_next(uint8_t const p_desc[])
+{
+  return p_desc + p_desc[DESC_OFFSET_LEN];
+}
+
+static inline uint8_t descriptor_type(uint8_t const p_desc[])
+{
+  return p_desc[DESC_OFFSET_TYPE];
+}
+
+static inline uint8_t descriptor_len(uint8_t const p_desc[])
+{
+  return p_desc[DESC_OFFSET_LEN];
+}
+
 
 
 // Convert comma-separated string to descriptor unicode format
 // Convert comma-separated string to descriptor unicode format
 #define TUD_DESC_STRCONV( ... )  (const uint16_t[]) { (TUSB_DESC_STRING << 8 ) | (2*VA_ARGS_NUM_(__VA_ARGS__) + 2), __VA_ARGS__ }
 #define TUD_DESC_STRCONV( ... )  (const uint16_t[]) { (TUSB_DESC_STRING << 8 ) | (2*VA_ARGS_NUM_(__VA_ARGS__) + 2), __VA_ARGS__ }