]> sigrok.org Git - libsigrok.git/blobdiff - src/libsigrok-internal.h
Add usb_get_port_path() helper function
[libsigrok.git] / src / libsigrok-internal.h
index 89cfb599c950d9dca6c483a79d9ca24b55ae0caa..28e26c1a1b8ed26e5daa2a7aefc14c30e356f5de 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);  \
@@ -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);
 
@@ -491,8 +516,10 @@ SR_PRIV void sr_usbtmc_dev_inst_free(struct sr_usbtmc_dev_inst *usbtmc);
 
 /*--- hwdriver.c ------------------------------------------------------------*/
 
+SR_PRIV const GVariantType *sr_variant_type_get(int datatype);
+SR_PRIV int sr_variant_type_check(uint32_t key, GVariant *data);
 SR_PRIV void sr_hw_cleanup_all(void);
-SR_PRIV struct sr_config *sr_config_new(int key, GVariant *data);
+SR_PRIV struct sr_config *sr_config_new(uint32_t key, GVariant *data);
 SR_PRIV void sr_config_free(struct sr_config *src);
 SR_PRIV int sr_source_remove(int fd);
 SR_PRIV int sr_source_remove_pollfd(GPollFD *pollfd);
@@ -652,6 +679,7 @@ SR_PRIV int sr_usb_open(libusb_context *usb_ctx, struct sr_usb_dev_inst *usb);
 SR_PRIV int usb_source_add(struct sr_session *session, struct sr_context *ctx,
                int timeout, sr_receive_data_callback cb, void *cb_data);
 SR_PRIV int usb_source_remove(struct sr_session *session, struct sr_context *ctx);
+SR_PRIV int usb_get_port_path(libusb_device *dev, const char *path, int path_len);
 #endif
 
 /*--- hardware/common/scpi.c ------------------------------------------------*/