]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/asix-sigma/api.c
asix-sigma: concentrate parameters for sample memory interpretation
[libsigrok.git] / src / hardware / asix-sigma / api.c
index 41c4f6448d65d67c05301d4c593622e7c88cfb6b..6469b69a2bc39cdfd7549ee725eb1d477e218d93 100644 (file)
@@ -248,7 +248,7 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                devc->id.serno = serno_num;
                devc->id.prefix = serno_pre;
                devc->id.type = dev_type;
-               sr_sw_limits_init(&devc->cfg_limits);
+               sr_sw_limits_init(&devc->limit.config);
                devc->capture_ratio = 50;
                devc->use_triggers = FALSE;
 
@@ -316,7 +316,7 @@ static int config_get(uint32_t key, GVariant **data,
                break;
        case SR_CONF_LIMIT_MSEC:
        case SR_CONF_LIMIT_SAMPLES:
-               return sr_sw_limits_config_get(&devc->cfg_limits, key, data);
+               return sr_sw_limits_config_get(&devc->limit.config, key, data);
 #if ASIX_SIGMA_WITH_TRIGGER
        case SR_CONF_CAPTURE_RATIO:
                *data = g_variant_new_uint64(devc->capture_ratio);
@@ -375,7 +375,7 @@ static int config_set(uint32_t key, GVariant *data,
                break;
        case SR_CONF_LIMIT_MSEC:
        case SR_CONF_LIMIT_SAMPLES:
-               return sr_sw_limits_config_set(&devc->cfg_limits, key, data);
+               return sr_sw_limits_config_set(&devc->limit.config, key, data);
 #if ASIX_SIGMA_WITH_TRIGGER
        case SR_CONF_CAPTURE_RATIO:
                devc->capture_ratio = g_variant_get_uint64(data);
@@ -477,9 +477,9 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
 
                /* Find which pin to trigger on from mask. */
                for (triggerpin = 0; triggerpin < 8; triggerpin++) {
-                       if (devc->trigger.risingmask & (1 << triggerpin))
+                       if (devc->trigger.risingmask & BIT(triggerpin))
                                break;
-                       if (devc->trigger.fallingmask & (1 << triggerpin))
+                       if (devc->trigger.fallingmask & BIT(triggerpin))
                                break;
                }
 
@@ -550,7 +550,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
         * Derive a mask where bits are set for unavailable channels.
         * Either send the single byte, or the full byte sequence.
         */
-       pindis_mask = ~((1UL << devc->num_channels) - 1);
+       pindis_mask = ~BITS_MASK(devc->interp.num_channels);
        if (devc->clock.samplerate > SR_MHZ(50)) {
                ret = sigma_set_register(devc, WRITE_CLOCK_SELECT,
                        pindis_mask & 0xff);
@@ -592,9 +592,8 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
 
        /* Start acqusition. */
        regval = WMR_TRGRES | WMR_SDRAMWRITEEN;
-#if ASIX_SIGMA_WITH_TRIGGER
-       regval |= WMR_TRGEN;
-#endif
+       if (devc->use_triggers && ASIX_SIGMA_WITH_TRIGGER)
+               regval |= WMR_TRGEN;
        ret = sigma_set_register(devc, WRITE_MODE, regval);
        if (ret != SR_OK)
                return ret;
@@ -609,7 +608,7 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
        if (ret != SR_OK)
                return ret;
 
-       devc->state.state = SIGMA_CAPTURE;
+       devc->state = SIGMA_CAPTURE;
 
        return SR_OK;
 }
@@ -627,10 +626,10 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi)
         * already. The detour is required to have sample data retrieved
         * for forced acquisition stops.
         */
-       if (devc->state.state == SIGMA_CAPTURE) {
-               devc->state.state = SIGMA_STOPPING;
+       if (devc->state == SIGMA_CAPTURE) {
+               devc->state = SIGMA_STOPPING;
        } else {
-               devc->state.state = SIGMA_IDLE;
+               devc->state = SIGMA_IDLE;
                (void)sr_session_source_remove(sdi->session, -1);
        }