check_capability: explicitly target recent linux implementations
[collectd.git] / src / aquaero.c
index 6e0d0d1..81a4efd 100644 (file)
@@ -20,6 +20,7 @@
  **/
 
 #include "collectd.h"
+
 #include "common.h"
 #include "plugin.h"
 
 /* Default values for contacting daemon */
 static char *conf_device = NULL;
 
-static const char *config_keys[] =
+static int aquaero_config (oconfig_item_t *ci)
 {
-       "Device",
-};
-static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
-
-
-static int aquaero_config (const char *key, const char *value)
-{
-       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)
 {
@@ -95,9 +86,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 +104,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 +144,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 +155,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 +174,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 +182,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 */