]> sigrok.org Git - libsigrok.git/blobdiff - sigrok.h
Use glib's g_fopen() instead of fopen().
[libsigrok.git] / sigrok.h
index 101a2f9f5e466fe41bf7811e151683f37c66c52a..983246bb81f7366a7c7a737ddffff916ce659cd4 100644 (file)
--- a/sigrok.h
+++ b/sigrok.h
@@ -25,7 +25,9 @@
 #include <stdint.h>
 #include <inttypes.h>
 #include <glib.h>
+#ifdef HAVE_LIBUSB_1_0
 #include <libusb.h>
+#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -76,13 +78,13 @@ typedef int (*receive_data_callback) (int fd, int revents, void *user_data);
 
 /* Data types used by hardware plugins for set_configuration() */
 enum {
-       T_UINT64,
-       T_CHAR,
-       T_NULL,
+       SR_T_UINT64,
+       SR_T_CHAR,
+       SR_T_NULL,
 };
 
 enum {
-       PROTO_RAW,
+       SR_PROTO_RAW,
 };
 
 /* (Unused) protocol decoder stack entry */
@@ -94,12 +96,12 @@ struct protocol {
 
 /* sr_datafeed_packet.type values */
 enum {
-       DF_HEADER,
-       DF_END,
-       DF_TRIGGER,
-       DF_LOGIC,
-       DF_ANALOG,
-       DF_PD,
+       SR_DF_HEADER,
+       SR_DF_END,
+       SR_DF_TRIGGER,
+       SR_DF_LOGIC,
+       SR_DF_ANALOG,
+       SR_DF_PD,
 };
 
 struct sr_datafeed_packet {
@@ -132,7 +134,7 @@ struct analog_sample {
 struct sr_input {
        struct sr_input_format *format;
        char *param;
-       struct device *vdevice;
+       struct sr_device *vdevice;
 };
 
 struct sr_input_format {
@@ -145,7 +147,7 @@ struct sr_input_format {
 
 struct sr_output {
        struct sr_output_format *format;
-       struct device *device;
+       struct sr_device *device;
        char *param;
        void *internal;
 };
@@ -186,9 +188,9 @@ struct datastore {
  * to the device index within that plugin; it may be handling more than one
  * device. All relevant plugin calls take a device_index parameter for this.
  */
-struct device {
+struct sr_device {
        /* Which plugin handles this device */
-       struct device_plugin *plugin;
+       struct sr_device_plugin *plugin;
        /* A plugin may handle multiple devices of the same type */
        int plugin_index;
        /* List of struct probe* */
@@ -198,8 +200,8 @@ struct device {
 };
 
 enum {
-       PROBE_TYPE_LOGIC,
-       PROBE_TYPE_ANALOG,
+       SR_PROBE_TYPE_LOGIC,
+       SR_PROBE_TYPE_ANALOG,
 };
 
 struct probe {
@@ -214,20 +216,25 @@ extern GSList *devices;
 
 /* Hardware plugin capabilities */
 enum {
-       HWCAP_DUMMY,             /* Used to terminate lists */
+       SR_HWCAP_DUMMY,             /* Used to terminate lists */
        /* device classes */
-       HWCAP_LOGIC_ANALYZER,
+       SR_HWCAP_LOGIC_ANALYZER,
 
        /* device options */
-       HWCAP_SAMPLERATE,        /* Change samplerate */
-       HWCAP_PROBECONFIG,       /* Configure probe mask */
-       HWCAP_CAPTURE_RATIO,     /* Set pre/post-trigger capture ratio */
-       HWCAP_PATTERN_MODE,      /* Pattern generator mode */
+       SR_HWCAP_SAMPLERATE,        /* Change samplerate */
+       SR_HWCAP_PROBECONFIG,       /* Configure probe mask */
+       SR_HWCAP_CAPTURE_RATIO,     /* Set pre/post-trigger capture ratio */
+       SR_HWCAP_PATTERN_MODE,      /* Pattern generator mode */
+
+       /* special stuff */
+       SR_HWCAP_CAPTUREFILE,       /* capturefile to inject */
+       SR_HWCAP_CAPTURE_UNITSIZE,  /* unitsize of capturefile data */
+       SR_HWCAP_CAPTURE_NUM_PROBES,/* set number of probes */
 
        /* acquisition modes */
-       HWCAP_LIMIT_MSEC,        /* Set a time limit for sample acquisition */
-       HWCAP_LIMIT_SAMPLES,     /* Set a limit on number of samples */
-       HWCAP_CONTINUOUS,
+       SR_HWCAP_LIMIT_MSEC,        /* Set a time limit for sample acquisition */
+       SR_HWCAP_LIMIT_SAMPLES,     /* Set a limit on number of samples */
+       SR_HWCAP_CONTINUOUS,
 };
 
 struct hwcap_option {
@@ -246,37 +253,39 @@ struct sr_device_instance {
        char *version;
        void *priv;
        union {
-               struct usb_device_instance *usb;
-               struct serial_device_instance *serial;
+               struct sr_usb_device_instance *usb;
+               struct sr_serial_device_instance *serial;
        };
 };
 
 /* sr_device_instance types */
 enum {
-       USB_INSTANCE,
-       SERIAL_INSTANCE,
+       SR_USB_INSTANCE,
+       SR_SERIAL_INSTANCE,
 };
 
-struct usb_device_instance {
+#ifdef HAVE_LIBUSB_1_0
+struct sr_usb_device_instance {
        uint8_t bus;
        uint8_t address;
        struct libusb_device_handle *devhdl;
 };
+#endif
 
-struct serial_device_instance {
+struct sr_serial_device_instance {
        char *port;
        int fd;
 };
 
 /* Device instance status */
 enum {
-       ST_NOT_FOUND,
+       SR_ST_NOT_FOUND,
        /* Found, but still booting */
-       ST_INITIALIZING,
+       SR_ST_INITIALIZING,
        /* Live, but not in use */
-       ST_INACTIVE,
+       SR_ST_INACTIVE,
        /* Actively in use in a session */
-       ST_ACTIVE,
+       SR_ST_ACTIVE,
 };
 
 /*
@@ -287,17 +296,17 @@ enum {
 /* Device info IDs */
 enum {
        /* struct sr_device_instance for this specific device */
-       DI_INSTANCE,
+       SR_DI_INSTANCE,
        /* The number of probes connected to this device */
-       DI_NUM_PROBES,
+       SR_DI_NUM_PROBES,
        /* Samplerates supported by this device, (struct samplerates) */
-       DI_SAMPLERATES,
+       SR_DI_SAMPLERATES,
        /* Types of trigger supported, out of "01crf" (char *) */
-       DI_TRIGGER_TYPES,
+       SR_DI_TRIGGER_TYPES,
        /* The currently set samplerate in Hz (uint64_t) */
-       DI_CUR_SAMPLERATE,
+       SR_DI_CUR_SAMPLERATE,
        /* Supported pattern generator modes */
-       DI_PATTERNMODES,
+       SR_DI_PATTERNMODES,
 };
 
 /*
@@ -312,9 +321,10 @@ struct samplerates {
        uint64_t *list;
 };
 
-struct device_plugin {
+struct sr_device_plugin {
        /* Plugin-specific */
        char *name;
+       char *longname;
        int api_version;
        int (*init) (char *deviceinfo);
        void (*cleanup) (void);
@@ -330,15 +340,8 @@ struct device_plugin {
        void (*stop_acquisition) (int device_index, gpointer session_device_id);
 };
 
-struct gsource_fd {
-       GSource source;
-       GPollFD gpfd;
-       /* Not really using this */
-       GSource *timeout_source;
-};
-
 struct session {
-       /* List of struct device* */
+       /* List of struct sr_device* */
        GSList *devices;
        /* List of struct analyzer* */
        GSList *analyzers;