]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/yokogawa-dlm/protocol.h
Backport recent changes from mainline.
[libsigrok.git] / src / hardware / yokogawa-dlm / protocol.h
index 4e80ea101becc9dc4b6f991ceabe70187051bd70..6b27385d216dbaa902e87e8014e638b12dcefb0b 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <math.h>
-#include "libsigrok.h"
+#include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
 #include "protocol_wrappers.h"
 
 #define LOG_PREFIX "yokogawa-dlm"
-#define MAX_INSTRUMENT_VERSIONS 4
+
+#define MAX_INSTRUMENT_VERSIONS 8
 
 #define RECEIVE_BUFFER_SIZE 4096
 
 #define DLM_DIVISION_FOR_WORD_FORMAT 3200
 #define DLM_DIVISION_FOR_BYTE_FORMAT 12.5
 
+#define DLM_DIG_CHAN_INDEX_OFFS 32
+
 enum trigger_slopes {
        SLOPE_POSITIVE,
        SLOPE_NEGATIVE
 };
 
+extern const char *dlm_trigger_slopes[2];
+extern const uint64_t dlm_timebases[36][2];
+extern const uint64_t dlm_vdivs[17][2];
+
 struct scope_config {
        const char *model_id[MAX_INSTRUMENT_VERSIONS];
        const char *model_name[MAX_INSTRUMENT_VERSIONS];
@@ -56,26 +63,12 @@ struct scope_config {
        const char *(*analog_names)[];
        const char *(*digital_names)[];
 
-       const uint32_t (*devopts)[];
-       const uint8_t num_devopts;
-
-       const uint32_t (*analog_devopts)[];
-       const uint8_t num_analog_devopts;
-
        const char *(*coupling_options)[];
        const uint8_t num_coupling_options;
 
        const char *(*trigger_sources)[];
        const uint8_t num_trigger_sources;
 
-       const char *(*trigger_slopes)[];
-
-       const uint64_t (*timebases)[][2];
-       const uint8_t num_timebases;
-
-       const uint64_t (*vdivs)[][2];
-       const uint8_t num_vdivs;
-
        const uint8_t num_xdivs;
        const uint8_t num_ydivs;
 };
@@ -103,7 +96,6 @@ struct scope_state {
        uint32_t samples_per_frame;
 };
 
-/** Private, per-device-instance driver context. */
 struct dev_context {
        const void *model_config;
        void *model_state;
@@ -121,6 +113,8 @@ struct dev_context {
        gboolean data_pending;
 };
 
+SR_PRIV int dlm_channel_state_set(const struct sr_dev_inst *sdi,
+               const int ch_index, gboolean state);
 SR_PRIV int dlm_data_request(const struct sr_dev_inst *sdi);
 SR_PRIV int dlm_model_get(char *model_id, char **model_name, int *model_index);
 SR_PRIV int dlm_device_init(struct sr_dev_inst *sdi, int model_index);