X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Fzeroplus-logic-cube%2Fprotocol.c;h=37fcbdcc2eb04d09d3c15a8f4f18736fcef8fca0;hp=ce20ccf4012f1a5fadd9098b82ef32e10b0a8c50;hb=HEAD;hpb=155b680da482cea2381becb73c51cfb838bff31e diff --git a/src/hardware/zeroplus-logic-cube/protocol.c b/src/hardware/zeroplus-logic-cube/protocol.c index ce20ccf4..37fcbdcc 100644 --- a/src/hardware/zeroplus-logic-cube/protocol.c +++ b/src/hardware/zeroplus-logic-cube/protocol.c @@ -17,17 +17,17 @@ * along with this program. If not, see . */ +#include #include #include "protocol.h" -SR_PRIV unsigned int get_memory_size(int type) +SR_PRIV size_t get_memory_size(int type) { if (type == MEMORY_SIZE_8K) - return 8 * 1024; - else if (type <= MEMORY_SIZE_8M) + return (8 * 1024); + if (type <= MEMORY_SIZE_8M) return (32 * 1024) << type; - else - return 0; + return 0; } static int clz(unsigned int x) @@ -58,40 +58,28 @@ static int clz(unsigned int x) SR_PRIV int set_limit_samples(struct dev_context *devc, uint64_t samples) { + size_t mem_kb; + if (samples > devc->max_sample_depth) samples = devc->max_sample_depth; devc->limit_samples = samples; - if (samples <= 2 * 1024) + if (samples <= (2 * 1024)) devc->memory_size = MEMORY_SIZE_8K; - else if (samples <= 16 * 1024) + else if (samples <= (16 * 1024)) devc->memory_size = MEMORY_SIZE_64K; else devc->memory_size = 19 - clz(samples - 1); - sr_info("Setting memory size to %dK.", - get_memory_size(devc->memory_size) / 1024); + mem_kb = get_memory_size(devc->memory_size) / 1024; + sr_info("Setting memory size to %zuK.", mem_kb); analyzer_set_memory_size(devc->memory_size); return SR_OK; } -SR_PRIV int set_capture_ratio(struct dev_context *devc, uint64_t ratio) -{ - if (ratio > 100) { - sr_err("Invalid capture ratio: %" PRIu64 ".", ratio); - return SR_ERR_ARG; - } - - devc->capture_ratio = ratio; - - sr_info("Setting capture ratio to %d%%.", devc->capture_ratio); - - return SR_OK; -} - SR_PRIV int set_voltage_threshold(struct dev_context *devc, double thresh) { if (thresh > 6.0) @@ -117,7 +105,7 @@ SR_PRIV void set_triggerbar(struct dev_context *devc) trigger_depth = devc->limit_samples; if (devc->trigger) - triggerbar = trigger_depth * devc->capture_ratio / 100; + triggerbar = (trigger_depth * devc->capture_ratio) / 100; else triggerbar = 0;