*/
-#ifndef GENERICDMM_H_
-#define GENERICDMM_H_
+#ifndef LIBSIGROK_GENERICDMM_H
+#define LIBSIGROK_GENERICDMM_H
/* SR_HWCAP_CONN takes one of these: */
-#define DMM_CONN_USB_VIDPID "^([0--9a-z]{1,4}):([0--9a-z]{1,4})$"
+#define DMM_CONN_USB_VIDPID "^([0-9a-z]{1,4})\\.([0-9a-z]{1,4})$"
#define DMM_CONN_USB_BUSADDR "^(\\d+)\\.(\\d+)$"
#define DMM_CONN_SERIALPORT "^([a-z0-9/\\-_]+)$"
char *vendor;
char *model;
struct dmmchip *chip;
- /* Only use when the VID:PID is really specific to a DMM. */
- uint16_t vid;
- uint16_t pid;
int transport;
+ int poll_timeout;
+ struct sr_hwopt *defaults_opts;
};
-struct context {
+/* Private driver context. */
+struct drv_context {
+ GSList *instances;
+};
+
+/* Private, per-device-instance driver context. */
+struct dev_context {
struct dev_profile *profile;
uint64_t limit_samples;
uint64_t limit_msec;
struct dmmchip {
/* Optional, called once before measurement starts. */
- int (*init) (struct context *ctx);
+ int (*init) (void);
+
+ /* Scan for devices with the given options. */
+ GSList *(*scan) (GSList *options);
+
/* Called whenever a chunk of data arrives. */
- int (*data) (struct context *ctx, unsigned char *data);
+ int (*data) (struct sr_dev_inst *sdi);
};
-#endif /* GENERICDMM_H_ */
+#endif /* LIBSIGROK_GENERICDMM_H */