X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Faquaero.c;h=8872409fcc118c691c4a0a85cdbdf0e14c00fb6b;hb=8acc85b19e44c9bc106484b95cd352d867abdf1c;hp=6e0d0d195f1d9100909411617da669c7b97048e1;hpb=d33c4140644f9dfc682adcbdba6643f6e49f582e;p=collectd.git diff --git a/src/aquaero.c b/src/aquaero.c index 6e0d0d19..8872409f 100644 --- a/src/aquaero.c +++ b/src/aquaero.c @@ -20,6 +20,7 @@ **/ #include "collectd.h" + #include "common.h" #include "plugin.h" @@ -31,33 +32,23 @@ /* Default values for contacting daemon */ static char *conf_device = NULL; -static const char *config_keys[] = -{ - "Device", -}; -static int config_keys_num = STATIC_ARRAY_SIZE (config_keys); - - -static int aquaero_config (const char *key, const char *value) +static int aquaero_config (oconfig_item_t *ci) { - if (strcasecmp (key, "Device") == 0) + for (int i = 0; i < ci->children_num; i++) { - if (conf_device != NULL) + oconfig_item_t *child = ci->children + i; + + if (strcasecmp ("Device", child->key)) + cf_util_get_string (child, &conf_device); + else { - free (conf_device); - conf_device = NULL; + ERROR ("aquaero plugin: Unknown config option \"%s\".", + child->key); } - if (value[0] == '\0') - return (0); - if ((conf_device = strdup (value)) == NULL) - return (1); - } - else - { - return (-1); } + return (0); -} /* int aquaero_config */ +} static int aquaero_shutdown (void) { @@ -69,19 +60,15 @@ static void aquaero_submit (const char *type, const char *type_instance, double value) { const char *instance = conf_device?conf_device:"default"; - value_t values[1]; value_list_t vl = VALUE_LIST_INIT; /* Don't report undefined values. */ if (value == AQ5_FLOAT_UNDEF) return; - values[0].gauge = value; - - vl.values = values; + vl.values = &(value_t) { .gauge = value }; vl.values_len = 1; - sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "aquaero", sizeof (vl.plugin)); sstrncpy (vl.plugin_instance, instance, sizeof (vl.plugin_instance)); sstrncpy (vl.type, type, sizeof (vl.type)); @@ -95,9 +82,8 @@ static void aquaero_submit_array (const char *type, const char *type_instance_prefix, double *value_array, int len) { char type_instance[DATA_MAX_NAME_LEN]; - int i; - for (i = 0; i < len; i++) + for (int i = 0; i < len; i++) { if (value_array[i] == AQ5_FLOAT_UNDEF) continue; @@ -114,7 +100,6 @@ static int aquaero_read (void) aq5_settings_t aq_sett; char *err_msg = NULL; char type_instance[DATA_MAX_NAME_LEN]; - int i; if (libaquaero5_poll(conf_device, &aq_data, &err_msg) < 0) { @@ -155,7 +140,7 @@ static int aquaero_read (void) AQ5_NUM_OTHER_SENSORS); /* Fans */ - for (i = 0; i < AQ5_NUM_FAN; i++) + for (int i = 0; i < AQ5_NUM_FAN; i++) { if ((aq_sett.fan_data_source[i] == NONE) || (aq_data.fan_vrm_temp[i] != AQ5_FLOAT_UNDEF)) @@ -166,7 +151,7 @@ static int aquaero_read (void) aquaero_submit ("fanspeed", type_instance, aq_data.fan_rpm[i]); - aquaero_submit ("percentage", type_instance, + aquaero_submit ("percent", type_instance, aq_data.fan_duty[i]); aquaero_submit ("voltage", type_instance, aq_data.fan_voltage[i]); @@ -185,7 +170,7 @@ static int aquaero_read (void) aquaero_submit_array("flow", "sensor", aq_data.flow, AQ5_NUM_FLOW); /* Liquid level */ - aquaero_submit_array("percentage", "waterlevel", + aquaero_submit_array("percent", "waterlevel", aq_data.level, AQ5_NUM_LEVEL); return (0); @@ -193,8 +178,7 @@ static int aquaero_read (void) void module_register (void) { - plugin_register_config ("aquaero", aquaero_config, config_keys, - config_keys_num); + plugin_register_complex_config ("aquaero", aquaero_config); plugin_register_read ("aquaero", aquaero_read); plugin_register_shutdown ("aquaero", aquaero_shutdown); } /* void module_register */