X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fmic-985xx%2Fprotocol.h;h=279cca5be79f3ed195a49d27b6f18a9226671907;hb=3544f848e0d7f67af8e11ce7ec344b34cd797df3;hp=0b1efdd86aad651da820afedfd9ed39810c068b6;hpb=7ec5b54955118d8c1ee003a02c3334f1a0046457;p=libsigrok.git diff --git a/hardware/mic-985xx/protocol.h b/hardware/mic-985xx/protocol.h index 0b1efdd8..279cca5b 100644 --- a/hardware/mic-985xx/protocol.h +++ b/hardware/mic-985xx/protocol.h @@ -22,18 +22,38 @@ #define LIBSIGROK_HARDWARE_MIC_985XX_PROTOCOL_H #include +#include +#include #include #include "libsigrok.h" #include "libsigrok-internal.h" -/* Message logging helpers with driver-specific prefix string. */ -#define DRIVER_LOG_DOMAIN "mic-985xx: " -#define sr_log(l, s, args...) sr_log(l, DRIVER_LOG_DOMAIN s, ## args) -#define sr_spew(s, args...) sr_spew(DRIVER_LOG_DOMAIN s, ## args) -#define sr_dbg(s, args...) sr_dbg(DRIVER_LOG_DOMAIN s, ## args) -#define sr_info(s, args...) sr_info(DRIVER_LOG_DOMAIN s, ## args) -#define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args) -#define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args) +#define LOG_PREFIX "mic-985xx" + +/* Note: When adding entries here, don't forget to update MIC_DEV_COUNT. */ +enum { + MIC_98581, + MIC_98583, +}; + +#define MIC_DEV_COUNT 2 + +struct mic_dev_info { + char *vendor; + char *device; + char *conn; + uint32_t max_sample_points; + gboolean has_temperature; + gboolean has_humidity; + uint8_t packet_size; + gboolean (*packet_valid)(const uint8_t *); + 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 { @@ -48,8 +68,20 @@ struct dev_context { /** The current number of already received samples. */ uint64_t num_samples; + + int64_t starttime; + + 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 gboolean packet_valid_temp(const uint8_t *buf); +SR_PRIV gboolean packet_valid_temp_hum(const uint8_t *buf); + +SR_PRIV int receive_data_MIC_98581(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