#include <glib.h>
#include <libusb.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
/*
* Status/error codes returned by libsigrok functions.
* or reused for different #defines later. You can only add new #defines and
* return codes, but never remove or redefine existing ones.
*/
-#define SIGROK_OK 0 /* No error */
-#define SIGROK_ERR -1 /* Generic/unspecified error */
-#define SIGROK_ERR_MALLOC -2 /* Malloc/calloc/realloc error */
-#define SIGROK_ERR_SAMPLERATE -3 /* Incorrect samplerate */
+#define SR_OK 0 /* No error */
+#define SR_ERR -1 /* Generic/unspecified error */
+#define SR_ERR_MALLOC -2 /* Malloc/calloc/realloc error */
+#define SR_ERR_SAMPLERATE -3 /* Incorrect samplerate */
/* limited by uint64_t */
#define MAX_NUM_PROBES 64
#define MAX_PROBENAME_LEN 32
-
/* Handy little macros */
#define KHZ(n) ((n) * 1000)
#define MHZ(n) ((n) * 1000000)
#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,
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;
+struct sr_input {
+ struct sr_input_format *format;
char *param;
struct device *vdevice;
};
-struct input_format {
+struct sr_input_format {
char *extension;
char *description;
int (*format_match) (const char *filename);
- int (*init) (struct input *in);
- int (*loadfile) (struct input *in, const char *filename);
+ int (*init) (struct sr_input *in);
+ int (*loadfile) (struct sr_input *in, const char *filename);
};
-
-
-struct output {
- struct output_format *format;
+struct sr_output {
+ struct sr_output_format *format;
struct device *device;
char *param;
void *internal;
};
-struct output_format {
+struct sr_output_format {
char *extension;
char *description;
int df_type;
- int (*init) (struct output *o);
- int (*data) (struct output *o, char *data_in, uint64_t length_in,
+ int (*init) (struct sr_output *o);
+ int (*data) (struct sr_output *o, char *data_in, uint64_t length_in,
char **data_out, uint64_t *length_out);
- int (*event) (struct output *o, int event_type, char **data_out,
+ int (*event) (struct sr_output *o, int event_type, char **data_out,
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
extern GSList *devices;
-
/* Hardware plugin capabilities */
enum {
HWCAP_DUMMY, /* Used to terminate lists */
char *shortname;
};
-
-struct sigrok_device_instance {
+struct sr_device_instance {
int index;
int status;
int instance_type;
};
};
-/* sigrok_device_instance types */
+/* sr_device_instance types */
enum {
USB_INSTANCE,
SERIAL_INSTANCE,
/* Device info IDs */
enum {
- /* struct sigrok_device_instance for this specific device */
+ /* struct sr_device_instance for this specific device */
DI_INSTANCE,
/* The number of probes connected to this device */
DI_NUM_PROBES,
GSList *devices;
/* List of struct analyzer* */
GSList *analyzers;
- /* Datafeed callbacks */
+ /* list of receive_data_callback */
GSList *datafeed_callbacks;
GTimeVal starttime;
+ gboolean running;
};
#include "sigrok-proto.h"
+#ifdef __cplusplus
+}
+#endif
+
#endif