X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Flibsigrok-internal.h;h=28e26c1a1b8ed26e5daa2a7aefc14c30e356f5de;hb=50276118ca45dc3dbf91f2fc77fc1f611cf1e57d;hp=2cf39b2b3f3c0060c78c477b464c95da1b399ea0;hpb=20e8882106bcd100414573f53b1a2e9a720cae9b;p=libsigrok.git diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index 2cf39b2b..28e26c1a 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -51,32 +51,41 @@ #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) | \ @@ -94,32 +103,43 @@ (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); \ @@ -127,9 +147,9 @@ ((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); @@ -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 ------------------------------------------------*/