X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=strutil.c;h=1cb0db39efe1c1eb40870008e69452f83adc74e6;hb=6f22a8ef2ccf7091324b41b553632695507215a7;hp=8abc556ec807875a0027c7e3a944d5d533436e8d;hpb=4cc9aea15b2d76930f565e810e0520918e2cc7bd;p=libsigrok.git diff --git a/strutil.c b/strutil.c index 8abc556e..1cb0db39 100644 --- a/strutil.c +++ b/strutil.c @@ -24,6 +24,20 @@ #include "libsigrok.h" #include "libsigrok-internal.h" +/** + * @file + * + * Helper functions for handling or converting libsigrok-related strings. + */ + +/** + * @defgroup grp_strutil String utilities + * + * Helper functions for handling or converting libsigrok-related strings. + * + * @{ + */ + /** * Convert a numeric value value to its "natural" string representation. * in SI units @@ -170,7 +184,9 @@ SR_API char *sr_voltage_string(struct sr_rational *voltage) /** * Parse a trigger specification string. * - * @param dev The device for which the trigger specification is intended. + * @param sdi The device instance for which the trigger specification is + * intended. Must not be NULL. Also, sdi->driver and + * sdi->driver->info_get must not be NULL. * @param triggerstring The string containing the trigger specification for * one or more probes of this device. Entries for multiple probes are * comma-separated. Triggers are specified in the form key=value, @@ -214,24 +230,19 @@ SR_API char **sr_parse_triggerstring(const struct sr_dev_inst *sdi, tokens = g_strsplit(triggerstring, ",", max_probes); for (i = 0; tokens[i]; i++) { - if (tokens[i][0] < '0' || tokens[i][0] > '9') { - /* Named probe */ - probenum = 0; - for (l = sdi->probes; l; l = l->next) { - probe = (struct sr_probe *)l->data; - if (probe->enabled - && !strncmp(probe->name, tokens[i], - strlen(probe->name))) { - probenum = probe->index; - break; - } + probenum = -1; + for (l = sdi->probes; l; l = l->next) { + probe = (struct sr_probe *)l->data; + if (probe->enabled + && !strncmp(probe->name, tokens[i], + strlen(probe->name))) { + probenum = probe->index; + break; } - } else { - probenum = strtol(tokens[i], NULL, 10); } if (probenum < 0 || probenum >= max_probes) { - sr_err("strutil: Invalid probe (%d).", probenum); + sr_err("strutil: Invalid probe."); error = TRUE; break; } @@ -329,16 +340,17 @@ SR_API int sr_parse_sizestring(const char *sizestring, uint64_t *size) * @param timestring A string containing a (decimal) time value. * @return The string's time value as uint64_t, in milliseconds. * - * TODO: Error handling. - * TODO: Add support for "m" (minutes) and others. - * TODO: picoseconds? - * TODO: Allow both lower-case and upper-case. + * @todo Add support for "m" (minutes) and others. + * @todo Add support for picoseconds? + * @todo Allow both lower-case and upper-case? If no, document it. */ SR_API uint64_t sr_parse_timestring(const char *timestring) { uint64_t time_msec; char *s; + /* TODO: Error handling, logging. */ + time_msec = strtoull(timestring, &s, 10); if (time_msec == 0 && s == timestring) return 0; @@ -424,4 +436,4 @@ SR_API int sr_parse_voltage(const char *voltstr, struct sr_rational *r) return SR_OK; } - +/** @} */