]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
binary_helpers: Add support for 24 bits wide integers.
[libsigrok.git] / src / libsigrok-internal.h
index 6cf1f8de4dd1c59d7378470968b43b0824133c34..bb7e2a9c4334f3cb7e9fc3eee2e4b61dbd13898d 100644 (file)
@@ -172,6 +172,23 @@ static inline uint32_t read_u24le(const uint8_t *p)
        return u;
 }
 
+/**
+ * Read a 24 bits big endian unsigned integer out of memory.
+ * @param x a pointer to the input memory
+ * @return the corresponding unsigned integer
+ */
+static inline uint32_t read_u24be(const uint8_t *p)
+{
+       uint32_t u;
+
+       u = 0;
+       u <<= 8; u |= p[0];
+       u <<= 8; u |= p[1];
+       u <<= 8; u |= p[2];
+
+       return u;
+}
+
 /**
  * Read a 32 bits big endian unsigned integer out of memory.
  * @param x a pointer to the input memory
@@ -2204,11 +2221,13 @@ enum binary_value_type {
        BVT_LE_UINT8 = BVT_UINT8,
 
        BVT_BE_UINT16,
+       BVT_BE_UINT24,
        BVT_BE_UINT32,
        BVT_BE_UINT64,
        BVT_BE_FLOAT,
 
        BVT_LE_UINT16,
+       BVT_LE_UINT24,
        BVT_LE_UINT32,
        BVT_LE_UINT64,
        BVT_LE_FLOAT,
@@ -2218,7 +2237,6 @@ enum binary_value_type {
 struct binary_value_spec {
        size_t offset;                  /**!< Offset into binary image */
        enum binary_value_type type;    /**!< Data type to decode */
-       float scale;                    /**!< Scale factor to native units */
 };
 
 /**