#include <glib.h>
#include <libusb.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
* Status/error codes returned by libsigrok functions.
#define MAX_NUM_PROBES 64
#define MAX_PROBENAME_LEN 32
-
/* Handy little macros */
#define KHZ(n) ((n) * 1000)
#define MHZ(n) ((n) * 1000000)
#define GHZ(n) ((n) * 1000000000)
+#define HZ_TO_NS(n) (1000000000 / (n))
+
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
#endif
#define ARRAY_AND_SIZE(a) (a), ARRAY_SIZE(a)
#endif
-
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,
};
enum {
int stackindex;
};
-
-
/* datafeed_packet.type values */
enum {
DF_HEADER,
struct timeval starttime;
uint64_t samplerate;
int protocol_id;
- int num_probes;
+ int num_analog_probes;
+ int num_logic_probes;
};
+struct analog_probe {
+ uint8_t att;
+ uint8_t res; /* Needs to be a power of 2, FIXME */
+ uint16_t val; /* Max hardware ADC width is 16bits */
+};
+struct analog_sample {
+ uint8_t num_probes; /* Max hardware probes is 256 */
+ struct analog_probe probes[];
+};
struct input {
struct input_format *format;
- void *param;
- void *internal;
+ char *param;
+ struct device *vdevice;
};
struct input_format {
char *extension;
char *description;
int (*format_match) (const char *filename);
- int (*in_loadfile) (const char *filename);
+ int (*init) (struct input *in);
+ int (*loadfile) (struct input *in, const char *filename);
};
-
-
struct output {
struct output_format *format;
struct device *device;
uint64_t *length_out);
};
-
struct analyzer {
char *name;
char *filename;
*/
};
-
/* Size of a chunk in units */
#define DATASTORE_CHUNKSIZE 512000
GSList *chunklist;
};
-
/*
* This represents a generic device connected to the system.
* For device-specific information, ask the plugin. The plugin_index refers
struct datastore *datastore;
};
+enum {
+ PROBE_TYPE_LOGIC,
+ PROBE_TYPE_ANALOG,
+};
+
struct probe {
int index;
+ int type;
gboolean enabled;
char *name;
char *trigger;
extern GSList *devices;
-
/* Hardware plugin capabilities */
enum {
- HWCAP_DUMMY, /* Used to terminate lists */
+ HWCAP_DUMMY, /* Used to terminate lists */
+ /* device classes */
HWCAP_LOGIC_ANALYZER,
- HWCAP_SAMPLERATE, /* Change samplerate */
- HWCAP_PROBECONFIG, /* Configure probe mask */
- HWCAP_CAPTURE_RATIO, /* Set pre/post-trigger capture ratio */
- HWCAP_LIMIT_MSEC, /* Set a time limit for sample acquisition */
- HWCAP_LIMIT_SAMPLES, /* Set a limit on number of samples */
+
+ /* 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 */
+
+ /* acquisition modes */
+ HWCAP_LIMIT_MSEC, /* Set a time limit for sample acquisition */
+ HWCAP_LIMIT_SAMPLES, /* Set a limit on number of samples */
+ HWCAP_CONTINUOUS,
};
struct hwcap_option {
char *shortname;
};
-
struct sigrok_device_instance {
int index;
int status;
DI_TRIGGER_TYPES,
/* The currently set samplerate in Hz (uint64_t) */
DI_CUR_SAMPLERATE,
+ /* Supported pattern generator modes */
+ DI_PATTERNMODES,
};
/*
};
#include "sigrok-proto.h"
+
+#ifdef __cplusplus
+}
+#endif
+
#endif