+/* Packets to/from the device. */
+#define PACKET_SIZE 24
+
+enum {
+ PPS_3203T_3S,
+ PPS_3203T_2S,
+ PPS_3205T_3S,
+ PPS_3205T_2S,
+ PPS_3003S,
+ PPS_3005S,
+};
+
+/* Maximum number of output channels handled by this driver. */
+#define MAX_CHANNELS 3
+
+#define CHANMODE_INDEPENDENT 1 << 0
+#define CHANMODE_SERIES 1 << 1
+#define CHANMODE_PARALLEL 1 << 2
+
+struct channel_spec {
+ /* Min, max, step. */
+ gdouble voltage[3];
+ gdouble current[3];
+};
+
+struct pps_model {
+ int modelid;
+ char *name;
+ int channel_modes;
+ int num_channels;
+ struct channel_spec channels[MAX_CHANNELS];
+};
+
+struct per_channel_config {
+ /* Received from device. */
+ gdouble output_voltage_last;
+ gdouble output_current_last;
+ gboolean output_enabled;
+ /* Set by frontend. */
+ gdouble output_voltage_max;
+ gdouble output_current_max;
+ gboolean output_enabled_set;
+};
+