]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
minilzo: import content of upstream minilzo-2.10.tar.gz archive
[libsigrok.git] / src / libsigrok-internal.h
index 9111bc37cb07eeff729ef5b6271745e501599f64..7a5b717d6d4c7482534a185fbb30ab67e48e2cb4 100644 (file)
@@ -475,6 +475,22 @@ static inline void write_u32le(uint8_t *p, uint32_t x)
 }
 #define WL32(p, x) write_u32le((uint8_t *)(p), (uint32_t)(x))
 
+/**
+ * Write a 48 bits unsigned integer to memory stored as little endian.
+ * @param p a pointer to the output memory
+ * @param x the input unsigned integer
+ */
+static inline void write_u48le(uint8_t *p, uint64_t x)
+{
+       p[0] = x & 0xff; x >>= 8;
+       p[1] = x & 0xff; x >>= 8;
+       p[2] = x & 0xff; x >>= 8;
+       p[3] = x & 0xff; x >>= 8;
+       p[4] = x & 0xff; x >>= 8;
+       p[5] = x & 0xff; x >>= 8;
+}
+#define WL48(p, x) write_u48le((uint8_t *)(p), (uint64_t)(x))
+
 /**
  * Write a 64 bits unsigned integer to memory stored as big endian.
  * @param p a pointer to the output memory
@@ -905,6 +921,19 @@ static inline void write_u32le_inc(uint8_t **p, uint32_t x)
        *p += sizeof(x);
 }
 
+/**
+ * Write unsigned 48bit little endian integer to raw memory, increment write position.
+ * @param[in, out] p Pointer into byte stream.
+ * @param[in] x Value to write.
+ */
+static inline void write_u48le_inc(uint8_t **p, uint64_t x)
+{
+       if (!p || !*p)
+               return;
+       write_u48le(*p, x);
+       *p += 48 / 8 * sizeof(uint8_t);
+}
+
 /**
  * Write unsigned 64bit little endian integer to raw memory, increment write position.
  * @param[in, out] p Pointer into byte stream.
@@ -2642,6 +2671,9 @@ SR_PRIV int sr_sw_limits_config_set(struct sr_sw_limits *limits, uint32_t key,
        GVariant *data);
 SR_PRIV void sr_sw_limits_acquisition_start(struct sr_sw_limits *limits);
 SR_PRIV gboolean sr_sw_limits_check(struct sr_sw_limits *limits);
+SR_PRIV int sr_sw_limits_get_remain(const struct sr_sw_limits *limits,
+       uint64_t *samples, uint64_t *frames, uint64_t *msecs,
+       gboolean *exceeded);
 SR_PRIV void sr_sw_limits_update_samples_read(struct sr_sw_limits *limits,
        uint64_t samples_read);
 SR_PRIV void sr_sw_limits_update_frames_read(struct sr_sw_limits *limits,
@@ -2654,7 +2686,7 @@ struct feed_queue_logic;
 struct feed_queue_analog;
 
 SR_API struct feed_queue_logic *feed_queue_logic_alloc(
-       struct sr_dev_inst *sdi,
+       const struct sr_dev_inst *sdi,
        size_t sample_count, size_t unit_size);
 SR_API int feed_queue_logic_submit(struct feed_queue_logic *q,
        const uint8_t *data, size_t count);
@@ -2662,7 +2694,7 @@ SR_API int feed_queue_logic_flush(struct feed_queue_logic *q);
 SR_API void feed_queue_logic_free(struct feed_queue_logic *q);
 
 SR_API struct feed_queue_analog *feed_queue_analog_alloc(
-       struct sr_dev_inst *sdi,
+       const struct sr_dev_inst *sdi,
        size_t sample_count, int digits, struct sr_channel *ch);
 SR_API int feed_queue_analog_submit(struct feed_queue_analog *q,
        float data, size_t count);