X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fdemo%2Fdemo.c;h=63afcd106a67e54bd8a396c7224a0f5c8cd9ff52;hb=f3f19d1131025b68d29a11273b627c83d748e7ea;hp=95c9fcfee9e3330102a8456763efb8814c733b6d;hpb=7a8a1aba3797ed250f7b0e149ea4a6306be364b8;p=libsigrok.git diff --git a/src/hardware/demo/demo.c b/src/hardware/demo/demo.c index 95c9fcfe..63afcd10 100644 --- a/src/hardware/demo/demo.c +++ b/src/hardware/demo/demo.c @@ -168,7 +168,7 @@ static const uint64_t samplerates[] = { SR_HZ(1), }; -static uint8_t pattern_sigrok[] = { +static const uint8_t pattern_sigrok[] = { 0x4c, 0x92, 0x92, 0x92, 0x64, 0x00, 0x00, 0x00, 0x82, 0xfe, 0xfe, 0x82, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x82, 0x82, 0x92, 0x74, 0x00, 0x00, 0x00, @@ -180,12 +180,10 @@ static uint8_t pattern_sigrok[] = { }; SR_PRIV struct sr_dev_driver demo_driver_info; -static struct sr_dev_driver *di = &demo_driver_info; static int dev_acquisition_stop(struct sr_dev_inst *sdi, void *cb_data); - -static int init(struct sr_context *sr_ctx) +static int init(struct sr_dev_driver *di, struct sr_context *sr_ctx) { return std_init(sr_ctx, di, LOG_PREFIX); } @@ -214,14 +212,13 @@ static void generate_analog_pattern(struct analog_gen *ag, uint64_t sample_rate) } ag->num_samples = last_end; break; - case PATTERN_SINE: frequency = (double) sample_rate / ANALOG_SAMPLES_PER_PERIOD; /* Make sure the number of samples we put out is an integer * multiple of our period size */ /* FIXME we actually need only one period. A ringbuffer would be - * usefull here.*/ + * useful here. */ while (num_samples % ANALOG_SAMPLES_PER_PERIOD != 0) num_samples--; @@ -233,7 +230,6 @@ static void generate_analog_pattern(struct analog_gen *ag, uint64_t sample_rate) ag->num_samples = num_samples; break; - case PATTERN_TRIANGLE: frequency = (double) sample_rate / ANALOG_SAMPLES_PER_PERIOD; @@ -248,7 +244,6 @@ static void generate_analog_pattern(struct analog_gen *ag, uint64_t sample_rate) ag->num_samples = num_samples; break; - case PATTERN_SAWTOOTH: frequency = (double) sample_rate / ANALOG_SAMPLES_PER_PERIOD; @@ -266,7 +261,7 @@ static void generate_analog_pattern(struct analog_gen *ag, uint64_t sample_rate) } } -static GSList *scan(GSList *options) +static GSList *scan(struct sr_dev_driver *di, GSList *options) { struct drv_context *drvc; struct dev_context *devc; @@ -320,8 +315,7 @@ static GSList *scan(GSList *options) cg->name = g_strdup("Logic"); for (i = 0; i < num_logic_channels; i++) { sprintf(channel_name, "D%d", i); - ch = sr_channel_new(i, SR_CHANNEL_LOGIC, TRUE, channel_name); - sdi->channels = g_slist_append(sdi->channels, ch); + ch = sr_channel_new(sdi, i, SR_CHANNEL_LOGIC, TRUE, channel_name); cg->channels = g_slist_append(cg->channels, ch); } sdi->channel_groups = g_slist_append(NULL, cg); @@ -336,9 +330,8 @@ static GSList *scan(GSList *options) devc->ch_ag = g_hash_table_new(g_direct_hash, g_direct_equal); for (i = 0; i < num_analog_channels; i++) { snprintf(channel_name, 16, "A%d", i); - ch = sr_channel_new(i + num_logic_channels, SR_CHANNEL_ANALOG, + ch = sr_channel_new(sdi, i + num_logic_channels, SR_CHANNEL_ANALOG, TRUE, channel_name); - sdi->channels = g_slist_append(sdi->channels, ch); acg->channels = g_slist_append(acg->channels, ch); /* Every analog channel gets its own channel group as well. */ @@ -371,7 +364,7 @@ static GSList *scan(GSList *options) return devices; } -static GSList *dev_list(void) +static GSList *dev_list(const struct sr_dev_driver *di) { return ((struct drv_context *)(di->priv))->instances; } @@ -406,7 +399,7 @@ static void clear_helper(void *priv) g_free(devc); } -static int cleanup(void) +static int cleanup(const struct sr_dev_driver *di) { return std_dev_clear(di, clear_helper); } @@ -491,17 +484,14 @@ static int config_set(uint32_t key, GVariant *data, const struct sr_dev_inst *sd switch (key) { case SR_CONF_SAMPLERATE: devc->cur_samplerate = g_variant_get_uint64(data); - sr_dbg("Setting samplerate to %" PRIu64, devc->cur_samplerate); break; case SR_CONF_LIMIT_SAMPLES: devc->limit_msec = 0; devc->limit_samples = g_variant_get_uint64(data); - sr_dbg("Setting sample limit to %" PRIu64, devc->limit_samples); break; case SR_CONF_LIMIT_MSEC: devc->limit_msec = g_variant_get_uint64(data); devc->limit_samples = 0; - sr_dbg("Setting time limit to %" PRIu64"ms", devc->limit_msec); break; case SR_CONF_AVERAGING: devc->avg = g_variant_get_boolean(data); @@ -579,8 +569,6 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * GVariant *gvar; GVariantBuilder gvb; - (void)sdi; - if (key == SR_CONF_SCAN_OPTIONS) { *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t)); @@ -618,11 +606,11 @@ static int config_list(uint32_t key, GVariant **data, const struct sr_dev_inst * switch (key) { case SR_CONF_DEVICE_OPTIONS: if (ch->type == SR_CHANNEL_LOGIC) - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32, + *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, devopts_cg_logic, ARRAY_SIZE(devopts_cg_logic), sizeof(uint32_t)); else if (ch->type == SR_CHANNEL_ANALOG) - *data = g_variant_new_fixed_array(G_VARIANT_TYPE_INT32, + *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32, devopts_cg_analog, ARRAY_SIZE(devopts_cg_analog), sizeof(uint32_t)); else