]> sigrok.org Git - libsigrok.git/blobdiff - output/chronovu_la8.c
hantek-dso: proper protocol implementation of trigger/samplerate setting
[libsigrok.git] / output / chronovu_la8.c
index 830f42695552c1ac0d702d84008a114acf91c139..cca6a295e7539fd4a834bb7f2f3fb66d1fada386 100644 (file)
@@ -36,6 +36,7 @@ struct context {
  * Check if the given samplerate is supported by the LA8 hardware.
  *
  * @param samplerate The samplerate (in Hz) to check.
+ *
  * @return 1 if the samplerate is supported/valid, 0 otherwise.
  */
 static int is_valid_samplerate(uint64_t samplerate)
@@ -61,6 +62,7 @@ static int is_valid_samplerate(uint64_t samplerate)
  * Max. value for divcount: 0xfe (2550ns sample period, 392.15kHz samplerate).
  *
  * @param samplerate The samplerate in Hz.
+ *
  * @return The divcount value as needed by the hardware, or 0xff upon errors.
  */
 static uint8_t samplerate_to_divcount(uint64_t samplerate)
@@ -84,7 +86,6 @@ static int init(struct sr_output *o)
        struct context *ctx;
        struct sr_probe *probe;
        GSList *l;
-       int num_probes;
        uint64_t samplerate;
 
        if (!o) {
@@ -92,13 +93,13 @@ static int init(struct sr_output *o)
                return SR_ERR_ARG;
        }
 
-       if (!o->device) {
-               sr_warn("la8 out: %s: o->device was NULL", __func__);
+       if (!o->dev) {
+               sr_warn("la8 out: %s: o->dev was NULL", __func__);
                return SR_ERR_ARG;
        }
 
-       if (!o->device->plugin) {
-               sr_warn("la8 out: %s: o->device->plugin was NULL", __func__);
+       if (!o->dev->driver) {
+               sr_warn("la8 out: %s: o->dev->driver was NULL", __func__);
                return SR_ERR_ARG;
        }
 
@@ -109,9 +110,9 @@ static int init(struct sr_output *o)
 
        o->internal = ctx;
 
-       /* Get the number of probes, their names, and the unitsize. */
+       /* Get the probe names and the unitsize. */
        /* TODO: Error handling. */
-       for (l = o->device->probes; l; l = l->next) {
+       for (l = o->dev->probes; l; l = l->next) {
                probe = l->data;
                if (!probe->enabled)
                        continue;
@@ -120,11 +121,9 @@ static int init(struct sr_output *o)
        ctx->probelist[ctx->num_enabled_probes] = 0;
        ctx->unitsize = (ctx->num_enabled_probes + 7) / 8;
 
-       num_probes = g_slist_length(o->device->probes);
-
-       if (sr_dev_has_hwcap(o->device, SR_HWCAP_SAMPLERATE)) {
-               samplerate = *((uint64_t *) o->device->plugin->get_device_info(
-                               o->device->plugin_index, SR_DI_CUR_SAMPLERATE));
+       if (sr_dev_has_hwcap(o->dev, SR_HWCAP_SAMPLERATE)) {
+               samplerate = *((uint64_t *) o->dev->driver->dev_info_get(
+                               o->dev->driver_index, SR_DI_CUR_SAMPLERATE));
                /* TODO: Error checks. */
        } else {
                samplerate = 0; /* TODO: Error or set some value? */
@@ -134,11 +133,11 @@ static int init(struct sr_output *o)
        return 0; /* TODO: SR_OK? */
 }
 
-static int event(struct sr_output *o, int event_type, char **data_out,
+static int event(struct sr_output *o, int event_type, uint8_t **data_out,
                 uint64_t *length_out)
 {
        struct context *ctx;
-       char *outbuf;
+       uint8_t *outbuf;
 
        if (!o) {
                sr_warn("la8 out: %s: o was NULL", __func__);
@@ -197,11 +196,11 @@ static int event(struct sr_output *o, int event_type, char **data_out,
        return SR_OK;
 }
 
-static int data(struct sr_output *o, const char *data_in, uint64_t length_in,
-               char **data_out, uint64_t *length_out)
+static int data(struct sr_output *o, const uint8_t *data_in,
+               uint64_t length_in, uint8_t **data_out, uint64_t *length_out)
 {
        struct context *ctx;
-       char *outbuf;
+       uint8_t *outbuf;
 
        if (!o) {
                sr_warn("la8 out: %s: o was NULL", __func__);