X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Flibsigrok-internal.h;h=73162f8e0f00071175d67ce2c7510051d432cf42;hb=71580ef1f3cf1a5979a2c52e9819de34d525ecbf;hp=89cfb599c950d9dca6c483a79d9ca24b55ae0caa;hpb=d65fcbcd4101c276e509746e1af73b3a95aa03fb;p=libsigrok.git diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index 89cfb599..73162f8e 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); \ @@ -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); @@ -413,8 +438,6 @@ struct sr_serial_dev_inst { char *port; /** Comm params for serial_set_paramstr(). */ char *serialcomm; - /** Port is non-blocking. */ - int nonblocking; /** libserialport port handle */ struct sp_port *data; /** libserialport event set */ @@ -491,8 +514,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); @@ -542,6 +567,9 @@ SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *packet); SR_PRIV int sr_session_stop_sync(struct sr_session *session); SR_PRIV int sr_sessionfile_check(const char *filename); +SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet, + struct sr_datafeed_packet **copy); +SR_PRIV void sr_packet_free(struct sr_datafeed_packet *packet); /*--- std.c -----------------------------------------------------------------*/ @@ -593,7 +621,6 @@ SR_PRIV int soft_trigger_logic_check(struct soft_trigger_logic *st, uint8_t *buf enum { SERIAL_RDWR = 1, SERIAL_RDONLY = 2, - SERIAL_NONBLOCK = 4, }; typedef gboolean (*packet_valid_callback)(const uint8_t *buf); @@ -601,14 +628,10 @@ typedef gboolean (*packet_valid_callback)(const uint8_t *buf); SR_PRIV int serial_open(struct sr_serial_dev_inst *serial, int flags); SR_PRIV int serial_close(struct sr_serial_dev_inst *serial); SR_PRIV int serial_flush(struct sr_serial_dev_inst *serial); -SR_PRIV int serial_write(struct sr_serial_dev_inst *serial, - const void *buf, size_t count); SR_PRIV int serial_write_blocking(struct sr_serial_dev_inst *serial, const void *buf, size_t count); SR_PRIV int serial_write_nonblocking(struct sr_serial_dev_inst *serial, const void *buf, size_t count); -SR_PRIV int serial_read(struct sr_serial_dev_inst *serial, void *buf, - size_t count); SR_PRIV int serial_read_blocking(struct sr_serial_dev_inst *serial, void *buf, size_t count); SR_PRIV int serial_read_nonblocking(struct sr_serial_dev_inst *serial, void *buf, @@ -652,6 +675,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 ------------------------------------------------*/