#define LOG_PREFIX "zketech-ebd-usb"
+#define MSGLEN 19
+#define MSGCHECKSUMPOS 17
+#define MSGFRAMEBEGIN 0xfa
+#define MSGFRAMEBEGINPOS 0
+#define MSGFRAMEEND 0xf8
+#define MSGFRAMEENDPOS 18
+
struct dev_context {
+ struct sr_sw_limits limits;
+ GMutex rw_mutex;
+ float current_limit;
+ gboolean running;
+ gboolean load_activated;
};
+SR_PRIV float zketech_ebd_usb_value_decode(uint8_t b1, uint8_t b2, float divisor);
+SR_PRIV void zketech_ebd_usb_value_encode(float voltage, uint8_t *b1, uint8_t *b2, float divisor);
+
+/* Communication via serial. */
+SR_PRIV int zketech_ebd_usb_send(struct sr_serial_dev_inst *serial, uint8_t buf[], size_t count);
+SR_PRIV int zketech_ebd_usb_sendcfg(struct sr_serial_dev_inst *serial, struct dev_context *devc);
+SR_PRIV int zketech_ebd_usb_read_chars(struct sr_serial_dev_inst *serial,
+ int count, uint8_t *buf);
+
+/* Commands. */
+SR_PRIV int zketech_ebd_usb_init(struct sr_serial_dev_inst *serial, struct dev_context *devc);
+SR_PRIV int zketech_ebd_usb_loadstart(struct sr_serial_dev_inst *serial, struct dev_context *devc);
SR_PRIV int zketech_ebd_usb_receive_data(int fd, int revents, void *cb_data);
+SR_PRIV int zketech_ebd_usb_stop(struct sr_serial_dev_inst *serial, struct dev_context *devc);
+SR_PRIV int zketech_ebd_usb_loadstop(struct sr_serial_dev_inst *serial, struct dev_context *devc);
+
+/* Configuration. */
+SR_PRIV int zketech_ebd_usb_get_current_limit(const struct sr_dev_inst *sdi,
+ float *current);
+SR_PRIV int zketech_ebd_usb_set_current_limit(const struct sr_dev_inst *sdi,
+ float current);
+SR_PRIV gboolean zketech_ebd_usb_current_is0(struct dev_context *devc);
+
+SR_PRIV void zketech_ebd_usb_buffer_debug(const char *message, uint8_t buf[], size_t count);
#endif