]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/icstation-usbrelay/protocol.h
icstation-usbrelay: Initial ICStation USBRelay driver.
[libsigrok.git] / src / hardware / icstation-usbrelay / protocol.h
index 3c8319d600723f1092a16c7c946c736e59f736f8..bcf9dd07021593e64d2b90aa9c55704acb9fcf66 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the libsigrok project.
  *
- * Copyright (C) 2021 Frank Stettner <frank-stettner@gmx.net>
+ * Copyright (C) 2021-2023 Frank Stettner <frank-stettner@gmx.net>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #ifndef LIBSIGROK_HARDWARE_ICSTATION_USBRELAY_PROTOCOL_H
 #define LIBSIGROK_HARDWARE_ICSTATION_USBRELAY_PROTOCOL_H
 
-#include <stdint.h>
 #include <glib.h>
 #include <libsigrok/libsigrok.h>
+#include <stdint.h>
+
 #include "libsigrok-internal.h"
 
 #define LOG_PREFIX "icstation-usbrelay"
 
+/* Known models. */
+enum icstation_model {
+       ICSE012A = 1,
+       ICSE013A,
+       ICSE014A,
+};
+
+/* Supported device profiles */
+struct ics_usbrelay_profile {
+       enum icstation_model model;
+       uint8_t id;
+       const char *modelname;
+       size_t nb_channels;
+};
+
 struct dev_context {
+       size_t relay_count;
+       uint8_t relay_mask;
+       uint8_t relay_state;
+};
+
+struct channel_group_context {
+       size_t index;
 };
 
-SR_PRIV int icstation_usbrelay_receive_data(int fd, int revents, void *cb_data);
+SR_PRIV int icstation_usbrelay_identify(struct sr_serial_dev_inst *serial,
+       uint8_t *id);
+SR_PRIV int icstation_usbrelay_start(const struct sr_dev_inst *sdi);
+SR_PRIV int icstation_usbrelay_switch_cg(const struct sr_dev_inst *sdi,
+       const struct sr_channel_group *cg, gboolean on);
 
 #endif