X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Flibsigrok-internal.h;h=d35669e06005324d0fb993a99d1d78ac7ffd62bf;hb=df979d6dc6949b1d5c3814b177cb71d6c40d03d4;hp=391671648b262e38f410386db0ad995c161cf486;hpb=8e2d6c9db788785466d61fdac4d8fdc1535bc20c;p=libsigrok.git diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index 39167164..d35669e0 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -701,20 +701,24 @@ struct sr_session { GSList *transforms; struct sr_trigger *trigger; - /** Mutex protecting the main context pointer and ownership flag. */ + /** Callback to invoke on session stop. */ + sr_session_stopped_callback stopped_callback; + /** User data to be passed to the session stop callback. */ + void *stopped_cb_data; + + /** Mutex protecting the main context pointer. */ GMutex main_mutex; /** Context of the session main loop. */ GMainContext *main_context; - /** Whether we are using the thread's default context. */ - gboolean main_context_is_default; - - /** Whether the session has been started. */ - gboolean running; /** Registered event sources for this session. */ GHashTable *event_sources; /** Session main loop. */ GMainLoop *main_loop; + /** ID of idle source for dispatching the session stop notification. */ + unsigned int stop_check_id; + /** Whether the session has been started. */ + gboolean running; }; SR_PRIV int sr_session_source_add_internal(struct sr_session *session, @@ -726,6 +730,21 @@ SR_PRIV int sr_session_source_destroyed(struct sr_session *session, SR_PRIV int sr_session_fd_source_add(struct sr_session *session, void *key, gintptr fd, int events, int timeout, sr_receive_data_callback cb, void *cb_data); + +SR_PRIV int sr_session_source_add(struct sr_session *session, int fd, + int events, int timeout, sr_receive_data_callback cb, void *cb_data); +SR_PRIV int sr_session_source_add_pollfd(struct sr_session *session, + GPollFD *pollfd, int timeout, sr_receive_data_callback cb, + void *cb_data); +SR_PRIV int sr_session_source_add_channel(struct sr_session *session, + GIOChannel *channel, int events, int timeout, + sr_receive_data_callback cb, void *cb_data); +SR_PRIV int sr_session_source_remove(struct sr_session *session, int fd); +SR_PRIV int sr_session_source_remove_pollfd(struct sr_session *session, + GPollFD *pollfd); +SR_PRIV int sr_session_source_remove_channel(struct sr_session *session, + GIOChannel *channel); + SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *packet); SR_PRIV int sr_sessionfile_check(const char *filename); @@ -740,7 +759,7 @@ SR_PRIV GKeyFile *sr_sessionfile_read_metadata(struct zip *archive, /*--- analog.c --------------------------------------------------------------*/ -SR_PRIV int sr_analog_init(struct sr_datafeed_analog2 *analog, +SR_PRIV int sr_analog_init(struct sr_datafeed_analog *analog, struct sr_analog_encoding *encoding, struct sr_analog_meaning *meaning, struct sr_analog_spec *spec, @@ -956,25 +975,25 @@ struct es519xx_info { SR_PRIV gboolean sr_es519xx_2400_11b_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_2400_11b_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); SR_PRIV gboolean sr_es519xx_2400_11b_altfn_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_2400_11b_altfn_parse(const uint8_t *buf, - float *floatval, struct sr_datafeed_analog *analog, void *info); + float *floatval, struct sr_datafeed_analog_old *analog, void *info); SR_PRIV gboolean sr_es519xx_19200_11b_5digits_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_19200_11b_5digits_parse(const uint8_t *buf, - float *floatval, struct sr_datafeed_analog *analog, void *info); + float *floatval, struct sr_datafeed_analog_old *analog, void *info); SR_PRIV gboolean sr_es519xx_19200_11b_clamp_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_19200_11b_clamp_parse(const uint8_t *buf, - float *floatval, struct sr_datafeed_analog *analog, void *info); + float *floatval, struct sr_datafeed_analog_old *analog, void *info); SR_PRIV gboolean sr_es519xx_19200_11b_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_19200_11b_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); SR_PRIV gboolean sr_es519xx_19200_14b_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_19200_14b_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); SR_PRIV gboolean sr_es519xx_19200_14b_sel_lpf_packet_valid(const uint8_t *buf); SR_PRIV int sr_es519xx_19200_14b_sel_lpf_parse(const uint8_t *buf, - float *floatval, struct sr_datafeed_analog *analog, void *info); + float *floatval, struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/fs9922.c -------------------------------------------------*/ @@ -991,8 +1010,8 @@ struct fs9922_info { SR_PRIV gboolean sr_fs9922_packet_valid(const uint8_t *buf); SR_PRIV int sr_fs9922_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); -SR_PRIV void sr_fs9922_z1_diode(struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); +SR_PRIV void sr_fs9922_z1_diode(struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/fs9721.c -------------------------------------------------*/ @@ -1007,12 +1026,12 @@ struct fs9721_info { SR_PRIV gboolean sr_fs9721_packet_valid(const uint8_t *buf); SR_PRIV int sr_fs9721_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); -SR_PRIV void sr_fs9721_00_temp_c(struct sr_datafeed_analog *analog, void *info); -SR_PRIV void sr_fs9721_01_temp_c(struct sr_datafeed_analog *analog, void *info); -SR_PRIV void sr_fs9721_10_temp_c(struct sr_datafeed_analog *analog, void *info); -SR_PRIV void sr_fs9721_01_10_temp_f_c(struct sr_datafeed_analog *analog, void *info); -SR_PRIV void sr_fs9721_max_c_min(struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); +SR_PRIV void sr_fs9721_00_temp_c(struct sr_datafeed_analog_old *analog, void *info); +SR_PRIV void sr_fs9721_01_temp_c(struct sr_datafeed_analog_old *analog, void *info); +SR_PRIV void sr_fs9721_10_temp_c(struct sr_datafeed_analog_old *analog, void *info); +SR_PRIV void sr_fs9721_01_10_temp_f_c(struct sr_datafeed_analog_old *analog, void *info); +SR_PRIV void sr_fs9721_max_c_min(struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/m2110.c --------------------------------------------------*/ @@ -1020,7 +1039,7 @@ SR_PRIV void sr_fs9721_max_c_min(struct sr_datafeed_analog *analog, void *info); SR_PRIV gboolean sr_m2110_packet_valid(const uint8_t *buf); SR_PRIV int sr_m2110_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/metex14.c ------------------------------------------------*/ @@ -1039,7 +1058,7 @@ SR_PRIV int sr_metex14_packet_request(struct sr_serial_dev_inst *serial); #endif SR_PRIV gboolean sr_metex14_packet_valid(const uint8_t *buf); SR_PRIV int sr_metex14_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/rs9lcd.c -------------------------------------------------*/ @@ -1050,7 +1069,7 @@ struct rs9lcd_info { int dummy; }; SR_PRIV gboolean sr_rs9lcd_packet_valid(const uint8_t *buf); SR_PRIV int sr_rs9lcd_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/bm25x.c --------------------------------------------------*/ @@ -1061,7 +1080,7 @@ struct bm25x_info { int dummy; }; SR_PRIV gboolean sr_brymen_bm25x_packet_valid(const uint8_t *buf); SR_PRIV int sr_brymen_bm25x_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/ut71x.c --------------------------------------------------*/ @@ -1076,7 +1095,7 @@ struct ut71x_info { SR_PRIV gboolean sr_ut71x_packet_valid(const uint8_t *buf); SR_PRIV int sr_ut71x_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/dmm/vc870.c --------------------------------------------------*/ @@ -1097,7 +1116,7 @@ struct vc870_info { SR_PRIV gboolean sr_vc870_packet_valid(const uint8_t *buf); SR_PRIV int sr_vc870_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/lcr/es51919.c ------------------------------------------------*/ @@ -1129,7 +1148,7 @@ struct ut372_info { SR_PRIV gboolean sr_ut372_packet_valid(const uint8_t *buf); SR_PRIV int sr_ut372_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); /*--- hardware/scale/kern.c -------------------------------------------------*/ @@ -1142,6 +1161,6 @@ struct kern_info { SR_PRIV gboolean sr_kern_packet_valid(const uint8_t *buf); SR_PRIV int sr_kern_parse(const uint8_t *buf, float *floatval, - struct sr_datafeed_analog *analog, void *info); + struct sr_datafeed_analog_old *analog, void *info); #endif