X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Flascar-el-usb%2Fprotocol.h;h=185afde16a9e5330ea7146de352850344af6a0f9;hb=4b97c74e0b5c19ad0ee04620b618461248ab69d7;hp=4aa2e2d6f13d2b5d3eb2168a9bbd10cc792ca03f;hpb=851d5b2274f138d58be42adbbe584d9a4c4dfe01;p=libsigrok.git diff --git a/hardware/lascar-el-usb/protocol.h b/hardware/lascar-el-usb/protocol.h index 4aa2e2d6..185afde1 100644 --- a/hardware/lascar-el-usb/protocol.h +++ b/hardware/lascar-el-usb/protocol.h @@ -33,24 +33,34 @@ #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 LASCAR_VENDOR "Lascar" +#define LASCAR_INTERFACE 0 +#define LASCAR_EP_IN 0x82 +#define LASCAR_EP_OUT 2 +/* Max 100ms for a device to positively identify. */ +#define SCAN_TIMEOUT 100000 + /** Private, per-device-instance driver context. */ struct dev_context { - /** The current sampling limit (in number of samples). */ - uint64_t limit_samples; - - /** The current sampling limit (in ms). */ - uint64_t limit_msec; - - /** Opaque pointer passed in by the frontend. */ void *cb_data; - - /** The current number of already received samples. */ - uint64_t num_samples; - struct sr_usb_dev_inst *usb; const struct elusb_profile *profile; - /* Only requires 3 really. */ int usbfd[10]; + /* Generic EL-USB */ + unsigned char *config; + unsigned int log_size; + unsigned int rcvd_bytes; + unsigned int sample_size; + unsigned int logged_samples; + unsigned int rcvd_samples; + uint64_t limit_samples; + /* Model-specific */ + /* EL-USB-CO: these are something like scaling and calibration values + * fixed per device, used to convert the sample values to CO ppm. */ + float co_high; + float co_low; + /* Temperature units as stored in the device config. */ + int temp_unit; }; enum { @@ -65,6 +75,9 @@ struct elusb_profile { int logformat; }; -SR_PRIV int lascar_el_usb_receive_data(int fd, int revents, void *cb_data); +SR_PRIV unsigned char *lascar_get_config(libusb_device_handle *dev_hdl); +SR_PRIV int lascar_el_usb_handle_events(int fd, int revents, void *cb_data); +SR_PRIV void lascar_el_usb_receive_transfer(struct libusb_transfer *transfer); +SR_PRIV int hw_dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data); #endif