]> sigrok.org Git - libsigrok.git/blobdiff - hardware/mic-985xx/protocol.h
Initial driver implementation for MIC 98583.
[libsigrok.git] / hardware / mic-985xx / protocol.h
index 0b1efdd86aad651da820afedfd9ed39810c068b6..e854b1d49c7ced82601e81c91d128f8782a5d940 100644 (file)
@@ -22,6 +22,8 @@
 #define LIBSIGROK_HARDWARE_MIC_985XX_PROTOCOL_H
 
 #include <stdint.h>
+#include <string.h>
+#include <ctype.h>
 #include <glib.h>
 #include "libsigrok.h"
 #include "libsigrok-internal.h"
 #define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args)
 #define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args)
 
+/* Note: When adding entries here, don't forget to update MIC_DEV_COUNT. */
+enum {
+       MIC_98583,
+};
+
+#define MIC_DEV_COUNT 1
+
+struct mic_dev_info {
+       char *vendor;
+       char *device;
+       char *conn;
+       uint32_t max_sample_points;
+       gboolean has_temperature;
+       gboolean has_humidity;
+       struct sr_dev_driver *di;
+       int (*receive_data)(int, int, void *);
+};
+
+extern SR_PRIV const struct mic_dev_info mic_devs[MIC_DEV_COUNT];
+
+#define SERIAL_BUFSIZE 256
+
 /** Private, per-device-instance driver context. */
 struct dev_context {
        /** The current sampling limit (in number of samples). */
@@ -48,8 +72,18 @@ struct dev_context {
 
        /** The current number of already received samples. */
        uint64_t num_samples;
+
+       int64_t starttime;
+
+       struct sr_serial_dev_inst *serial;
+
+       uint8_t buf[SERIAL_BUFSIZE];
+       int bufoffset;
+       int buflen;
 };
 
-SR_PRIV int mic_985xx_receive_data(int fd, int revents, void *cb_data);
+SR_PRIV int receive_data_MIC_98583(int fd, int revents, void *cb_data);
+
+SR_PRIV int mic_cmd_get_device_info(struct sr_serial_dev_inst *serial);
 
 #endif