Hi again, well, seing how the config function was rewritten, I think a squished together patch might actually make more sense. If you have a Github account, opening a Pull Request would also work, since I can comment on the overall changes, not just indivitual patches.
On Mon, Jul 22, 2013 at 06:21:19PM +0200, Bert Vermeulen wrote: > +static int plugin_config_device(oconfig_item_t *ci) > { > … > + if (!strcasecmp(item->key, "driver")) { > + cfdev->driver = strdup(item->values[0].value.string); Please use cf_util_get_string() from src/configfile.h for string arguments. > + } else if (!strcasecmp(item->key, "interval")) { > + cfdev->min_write_interval = > item->values[0].value.number; Please use cf_util_get_cdtime() from src/configfile.h for this. > +static int elapsed_time(struct timespec *last_write, struct timespec > *elapsed) Please use cdtime_t from src/utils_time.h; you can simply do a cdtime_t elapsed = now - previous; with that time representation. > + if (packet->type == SR_DF_END) { > + /* TODO: try to restart acquisition after a delay? */ > + INFO("oops! ended"); There's a specialized logginf function in the code. Why not use it here? > + if (!cfdev) { > + ERROR("Unknown device instance in sigrok driver %s.", > sdi->driver->name); Dito. > + if (elapsed_time(&cfdev->last_write, &elapsed) != 0) > + return; > + if (elapsed.tv_sec < cfdev->min_write_interval) > + return; Can't you use the timing code from plugin.c? For example, can't you register one read callback for each device? Then you don't have to care about the interval at all. > + ERROR("malloc() failed."); See above. > + if (clock_gettime(CLOCK_REALTIME, &cfdev->last_write) != 0) { Please use cdtime() or, preferably, let the plugin infrastructure handle all the timing. > static int plugin_init(void) The "plugin_" prefix is reserved for functions defined in src/plugin.h. Maybe you can use "csr_" or something like that instead? > + /* Do this only when we're sure there's hardware to talk to. */ > + ts.tv_sec = 0; > + ts.tv_nsec = 1000000L; > + plugin_register_complex_read("sigrok", "sigrok", plugin_read, > + &ts, NULL); This is fine, if you register one read callback for each device you find. As it is, I would simply register this in module_register() below. If the user loaded this plugin and no devices are found, something is usually wrong. Best regards, —octo -- collectd – The system statistics collection daemon Website: http://collectd.org Google+: http://collectd.org/+ GitHub: https://github.com/collectd Twitter: http://twitter.com/collectd
signature.asc
Description: Digital signature
_______________________________________________ collectd mailing list collectd@verplant.org http://mailman.verplant.org/listinfo/collectd