]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
scpi-pps: Generalize vendor name cleanup.
[libsigrok.git] / src / libsigrok-internal.h
index 2cf39b2b3f3c0060c78c477b464c95da1b399ea0..2ab6347ff5390796ee5a2a95601465d9cdf9fbbb 100644 (file)
 #endif
 
 /**
- * Read a 8 bits integer out of memory.
+ * Read a 8 bits unsigned integer out of memory.
  * @param x a pointer to the input memory
- * @return the corresponding integer
+ * @return the corresponding unsigned integer
  */
 #define R8(x)     ((unsigned)((const uint8_t*)(x))[0])
 
 /**
- * Read a 16 bits big endian integer out of memory.
+ * Read a 16 bits big endian unsigned integer out of memory.
  * @param x a pointer to the input memory
- * @return the corresponding integer
+ * @return the corresponding unsigned integer
  */
 #define RB16(x)  (((unsigned)((const uint8_t*)(x))[0] <<  8) |  \
                    (unsigned)((const uint8_t*)(x))[1])
 
 /**
- * Read a 16 bits little endian integer out of memory.
+ * Read a 16 bits little endian unsigned integer out of memory.
  * @param x a pointer to the input memory
- * @return the corresponding integer
+ * @return the corresponding unsigned integer
  */
 #define RL16(x)  (((unsigned)((const uint8_t*)(x))[1] <<  8) | \
                    (unsigned)((const uint8_t*)(x))[0])
 
 /**
- * Read a 32 bits big endian integer out of memory.
+ * Read a 16 bits little endian signed integer out of memory.
  * @param x a pointer to the input memory
- * @return the corresponding integer
+ * @return the corresponding signed integer
+ */
+#define RL16S(x)  ((int16_t) \
+                         (((unsigned)((const uint8_t*)(x))[1] <<  8) | \
+                    (unsigned)((const uint8_t*)(x))[0]))
+
+/**
+ * Read a 32 bits big endian unsigned integer out of memory.
+ * @param x a pointer to the input memory
+ * @return the corresponding unsigned integer
  */
 #define RB32(x)  (((unsigned)((const uint8_t*)(x))[0] << 24) | \
                   ((unsigned)((const uint8_t*)(x))[1] << 16) |  \
@@ -84,9 +93,9 @@
                    (unsigned)((const uint8_t*)(x))[3])
 
 /**
- * Read a 32 bits little endian integer out of memory.
+ * Read a 32 bits little endian unsigned integer out of memory.
  * @param x a pointer to the input memory
- * @return the corresponding integer
+ * @return the corresponding unsigned integer
  */
 #define RL32(x)  (((unsigned)((const uint8_t*)(x))[3] << 24) | \
                   ((unsigned)((const uint8_t*)(x))[2] << 16) |  \
                    (unsigned)((const uint8_t*)(x))[0])
 
 /**
- * Write a 8 bits integer to memory.
+ * Read a 32 bits little endian signed integer out of memory.
+ * @param x a pointer to the input memory
+ * @return the corresponding signed integer
+ */
+#define RL32S(x)  ((int32_t) \
+                 (((unsigned)((const uint8_t*)(x))[3] << 24) | \
+                  ((unsigned)((const uint8_t*)(x))[2] << 16) |  \
+                  ((unsigned)((const uint8_t*)(x))[1] <<  8) |  \
+                   (unsigned)((const uint8_t*)(x))[0]))
+
+/**
+ * Write a 8 bits unsigned integer to memory.
  * @param p a pointer to the output memory
- * @param x the input integer
+ * @param x the input unsigned integer
  */
 #define W8(p, x)    do { ((uint8_t*)(p))[0] = (uint8_t) (x);      } while(0)
 
 /**
- * Write a 16 bits integer to memory stored as big endian.
+ * Write a 16 bits unsigned integer to memory stored as big endian.
  * @param p a pointer to the output memory
- * @param x the input integer
+ * @param x the input unsigned integer
  */
 #define WB16(p, x)  do { ((uint8_t*)(p))[1] = (uint8_t) (x);      \
                          ((uint8_t*)(p))[0] = (uint8_t)((x)>>8);  } while(0)
 
 /**
- * Write a 16 bits integer to memory stored as little endian.
+ * Write a 16 bits unsigned integer to memory stored as little endian.
  * @param p a pointer to the output memory
- * @param x the input integer
+ * @param x the input unsigned integer
  */
 #define WL16(p, x)  do { ((uint8_t*)(p))[0] = (uint8_t) (x);      \
                          ((uint8_t*)(p))[1] = (uint8_t)((x)>>8);  } while(0)
 
 /**
- * Write a 32 bits integer to memory stored as big endian.
+ * Write a 32 bits unsigned integer to memory stored as big endian.
  * @param p a pointer to the output memory
- * @param x the input integer
+ * @param x the input unsigned integer
  */
 #define WB32(p, x)  do { ((uint8_t*)(p))[3] = (uint8_t) (x);      \
                          ((uint8_t*)(p))[2] = (uint8_t)((x)>>8);  \
                          ((uint8_t*)(p))[0] = (uint8_t)((x)>>24); } while(0)
 
 /**
- * Write a 32 bits integer to memory stored as little endian.
+ * Write a 32 bits unsigned integer to memory stored as little endian.
  * @param p a pointer to the output memory
- * @param x the input integer
+ * @param x the input unsigned integer
  */
 #define WL32(p, x)  do { ((uint8_t*)(p))[0] = (uint8_t) (x);      \
                          ((uint8_t*)(p))[1] = (uint8_t)((x)>>8);  \
@@ -197,21 +217,21 @@ struct sr_input {
 /** Input (file) module driver. */
 struct sr_input_module {
        /**
-        * A unique ID for this output module, suitable for use in command-line
+        * A unique ID for this input module, suitable for use in command-line
         * clients, [a-z0-9-]. Must not be NULL.
         */
        const char *id;
 
        /**
-        * A unique name for this output module, suitable for use in GUI
+        * A unique name for this input module, suitable for use in GUI
         * clients, can contain UTF-8. Must not be NULL.
         */
        const char *name;
 
        /**
-        * A short description of the output module. Must not be NULL.
+        * A short description of the input module. Must not be NULL.
         *
-        * This can be displayed by frontends, e.g. when selecting the output
+        * This can be displayed by frontends, e.g. when selecting the input
         * module for saving a file.
         */
        const char *desc;
@@ -243,8 +263,13 @@ struct sr_input_module {
         *
         * @param[in] metadata Metadata the module can use to identify the stream.
         *
-        * @retval TRUE This module knows the format.
-        * @retval FALSE This module does not know the format.
+        * @retval SR_OK This module knows the format.
+        * @retval SR_OK_CONTINUE There wasn't enough data for this module to
+        *   positively identify the format.
+        * @retval SR_ERR_DATA This module knows the format, but cannot handle it.
+        *   This means the stream is either corrupt, or indicates a feature
+        *   that the module does not support.
+        * @retval SR_ERR This module does not know the format.
         */
        int (*format_match) (GHashTable *metadata);