X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fzeroplus-logic-cube%2Fprotocol.c;h=0f68350e3ad1f700390abc888876ec20e0b6abfa;hb=61c39f54bbcae7bdde86ddb11b2fd0ff308d319b;hp=470debe64e4a6e91d5a13ba08894fb703d17ca83;hpb=3e43da1f70d48aba917026074d46ca4c91e43bf1;p=libsigrok.git diff --git a/hardware/zeroplus-logic-cube/protocol.c b/hardware/zeroplus-logic-cube/protocol.c index 470debe6..0f68350e 100644 --- a/hardware/zeroplus-logic-cube/protocol.c +++ b/hardware/zeroplus-logic-cube/protocol.c @@ -57,6 +57,9 @@ SR_PRIV int clz(unsigned int x) SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples) { + if (samples > devc->max_sample_depth) + samples = devc->max_sample_depth; + devc->limit_samples = samples; if (samples <= 2 * 1024) @@ -90,27 +93,26 @@ SR_PRIV int set_capture_ratio(struct dev_context *devc, uint64_t ratio) SR_PRIV void set_triggerbar(struct dev_context *devc) { - unsigned int ramsize, n, triggerbar; - - ramsize = get_memory_size(devc->memory_size) / 4; - if (devc->trigger) { - n = ramsize; - if (devc->max_sample_depth < n) - n = devc->max_sample_depth; - if (devc->limit_samples < n) - n = devc->limit_samples; - n = n * devc->capture_ratio / 100; - if (n > ramsize - 8) - triggerbar = ramsize - 8; - else - triggerbar = n; - } else { + unsigned int trigger_depth, triggerbar, ramsize_trigger; + + trigger_depth = get_memory_size(devc->memory_size) / 4; + if (devc->limit_samples < trigger_depth) + trigger_depth = devc->limit_samples; + triggerbar = trigger_depth * devc->capture_ratio / 100; + + ramsize_trigger = trigger_depth - triggerbar; + /* Matches USB packet captures from official app/driver */ + if (triggerbar > 2) + triggerbar -= 2; + else { + ramsize_trigger -= 1; triggerbar = 0; } + analyzer_set_triggerbar_address(triggerbar); - analyzer_set_ramsize_trigger_address(ramsize - triggerbar); + analyzer_set_ramsize_trigger_address(ramsize_trigger); sr_dbg("triggerbar_address = %d(0x%x)", triggerbar, triggerbar); sr_dbg("ramsize_triggerbar_address = %d(0x%x)", - ramsize - triggerbar, ramsize - triggerbar); + ramsize_trigger, ramsize_trigger); }