X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Flibsigrok-internal.h;h=95ac98f1d049d34078761fe63291ca6373ca11d8;hb=ee9953ef12514d833c6719777dfc285d56c0ffc1;hp=275deac4ad07c22ef7a99048149e0f34d0e1efd3;hpb=98654c99daf85bd2a81a9c87f517e800c31e34f2;p=libsigrok.git diff --git a/src/libsigrok-internal.h b/src/libsigrok-internal.h index 275deac4..95ac98f1 100644 --- a/src/libsigrok-internal.h +++ b/src/libsigrok-internal.h @@ -209,6 +209,10 @@ struct sr_context { #ifdef HAVE_LIBUSB_1_0 libusb_context *libusb_ctx; #endif + sr_resource_open_callback resource_open_cb; + sr_resource_close_callback resource_close_cb; + sr_resource_read_callback resource_read_cb; + void *resource_cb_data; }; /** Input module metadata keys. */ @@ -589,10 +593,6 @@ struct drv_context { GSList *instances; }; -/*--- input/input.c ---------------------------------------------------------*/ - -SR_PRIV int64_t sr_file_get_size(FILE *file); - /*--- log.c -----------------------------------------------------------------*/ #if defined(G_OS_WIN32) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) @@ -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); @@ -765,6 +784,22 @@ SR_PRIV int std_dev_clear(const struct sr_dev_driver *driver, std_dev_clear_callback clear_private); SR_PRIV int std_serial_dev_close(struct sr_dev_inst *sdi); +/*--- resource.c ------------------------------------------------------------*/ + +SR_PRIV int64_t sr_file_get_size(FILE *file); + +SR_PRIV int sr_resource_open(struct sr_context *ctx, + struct sr_resource *res, int type, const char *name) + G_GNUC_WARN_UNUSED_RESULT; +SR_PRIV int sr_resource_close(struct sr_context *ctx, + struct sr_resource *res); +SR_PRIV ssize_t sr_resource_read(struct sr_context *ctx, + const struct sr_resource *res, void *buf, size_t count) + G_GNUC_WARN_UNUSED_RESULT; +SR_PRIV void *sr_resource_load(struct sr_context *ctx, int type, + const char *name, size_t *size, size_t max_size) + G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT; + /*--- strutil.c -------------------------------------------------------------*/ SR_PRIV int sr_atol(const char *str, long *ret); @@ -843,10 +878,10 @@ SR_PRIV int serial_timeout(struct sr_serial_dev_inst *port, int num_bytes); #ifdef HAVE_LIBUSB_1_0 SR_PRIV int ezusb_reset(struct libusb_device_handle *hdl, int set_clear); -SR_PRIV int ezusb_install_firmware(libusb_device_handle *hdl, - const char *filename); -SR_PRIV int ezusb_upload_firmware(libusb_device *dev, int configuration, - const char *filename); +SR_PRIV int ezusb_install_firmware(struct sr_context *ctx, libusb_device_handle *hdl, + const char *name); +SR_PRIV int ezusb_upload_firmware(struct sr_context *ctx, libusb_device *dev, + int configuration, const char *name); #endif /*--- hardware/usb.c --------------------------------------------------------*/