X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=libsigrok.h;h=4212c59c4f046d77522b81a12b9a949568664123;hb=e45ad6e24ff1a3873d551f9ed08acb3ffd0d1d0d;hp=2ab75a89ec75b418669e8de059a8a96792d20e7e;hpb=e6551ea640f113a9f7cd6bfaaf3a8d0689c71edf;p=libsigrok.git diff --git a/libsigrok.h b/libsigrok.h index 2ab75a89..4212c59c 100644 --- a/libsigrok.h +++ b/libsigrok.h @@ -1,7 +1,7 @@ /* * This file is part of the sigrok project. * - * Copyright (C) 2010-2012 Bert Vermeulen + * Copyright (C) 2013 Bert Vermeulen * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +36,7 @@ extern "C" { * The public libsigrok header file to be used by frontends. * * This is the only file that libsigrok users (frontends) are supposed to - * use and #include. There are other header files which get installed with + * use and \#include. There are other header files which get installed with * libsigrok, but those are not meant to be used directly by frontends. * * The correct way to get/use the libsigrok API functions is: @@ -522,7 +522,7 @@ struct sr_probe { struct sr_config { int key; - const void *value; + GVariant *data; }; struct sr_config_info { @@ -594,7 +594,7 @@ enum { /*--- Device configuration ------------------------------------------*/ - /** The device supports setting/changing its samplerate. */ + /** The device supports setting its samplerate, in Hz. */ SR_CONF_SAMPLERATE = 30000, /** The device supports setting a pre/post-trigger capture ratio. */ @@ -633,6 +633,15 @@ enum { /** Trigger types. */ SR_CONF_TRIGGER_TYPE, + /** The device supports setting its sample interval, in ms. */ + SR_CONF_SAMPLE_INTERVAL, + + /** Number of timebases, as related to SR_CONF_TIMEBASE. */ + SR_CONF_NUM_TIMEBASE, + + /** Number of vertical divisions, as related to SR_CONF_VDIV. */ + SR_CONF_NUM_VDIV, + /*--- Special stuff -------------------------------------------------*/ /** Scan options supported by the driver. */ @@ -719,18 +728,6 @@ enum { SR_ST_STOPPING, }; -/* - * A device supports either a range of samplerates with steps of a given - * granularity, or is limited to a set of defined samplerates. Use either - * step or list, but not both. - */ -struct sr_samplerates { - uint64_t low; - uint64_t high; - uint64_t step; - const uint64_t *list; -}; - struct sr_dev_driver { /* Driver-specific */ char *name; @@ -741,11 +738,11 @@ struct sr_dev_driver { GSList *(*scan) (GSList *options); GSList *(*dev_list) (void); int (*dev_clear) (void); - int (*config_get) (int id, const void **value, + int (*config_get) (int id, GVariant **data, const struct sr_dev_inst *sdi); - int (*config_set) (int id, const void *value, + int (*config_set) (int id, GVariant *data, const struct sr_dev_inst *sdi); - int (*config_list) (int info_id, const void **data, + int (*config_list) (int info_id, GVariant **data, const struct sr_dev_inst *sdi); /* Device-specific */ @@ -778,6 +775,14 @@ struct sr_session { struct source *sources; GPollFD *pollfds; int source_timeout; + + /* + * These are our synchronization primitives for stopping the session in + * an async fashion. We need to make sure the session is stopped from + * within the session thread itself. + */ + GMutex stop_mutex; + gboolean abort_session; }; #include "proto.h"