X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fzeroplus-logic-cube%2Fapi.c;h=240de8e6ca894eb53dfe2910aaf94ac95fcbe883;hb=3316e149d0dd03e65aca72183bc15eb839e392c6;hp=eca4bea483cf530df2217762c9506bf436ef0f6d;hpb=e0e150672af8b52f7931ad827bdfb85773cfb4bb;p=libsigrok.git diff --git a/hardware/zeroplus-logic-cube/api.c b/hardware/zeroplus-logic-cube/api.c index eca4bea4..240de8e6 100644 --- a/hardware/zeroplus-logic-cube/api.c +++ b/hardware/zeroplus-logic-cube/api.c @@ -210,6 +210,33 @@ static int configure_probes(const struct sr_dev_inst *sdi) return SR_OK; } +SR_PRIV int zp_set_samplerate(struct dev_context *devc, uint64_t samplerate) +{ + int i; + + for (i = 0; ARRAY_SIZE(samplerates_200); i++) + if (samplerate == samplerates_200[i]) + break; + + if (i == ARRAY_SIZE(samplerates_200) || samplerate > devc->max_samplerate) { + sr_err("Unsupported samplerate: %" PRIu64 "Hz.", samplerate); + return SR_ERR_ARG; + } + + sr_info("Setting samplerate to %" PRIu64 "Hz.", samplerate); + + if (samplerate >= SR_MHZ(1)) + analyzer_set_freq(samplerate / SR_MHZ(1), FREQ_SCALE_MHZ); + else if (samplerate >= SR_KHZ(1)) + analyzer_set_freq(samplerate / SR_KHZ(1), FREQ_SCALE_KHZ); + else + analyzer_set_freq(samplerate, FREQ_SCALE_HZ); + + devc->cur_samplerate = samplerate; + + return SR_OK; +} + static int clear_instances(void) { GSList *l;