presence: Make error time be per fan

Previously there was a global value for the amount of time a fan needed
to be missing before an event log was created.  This commit changes it
so that instead the value is specified per fan in the JSON.

This way, the times can be different or left off completely on a fan to
fan basis.  The ErrorReporter object will only be created if there is at
least one fan with a time value.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I53bb91c88ec1b0352df11b2e988064c2ec02af45
diff --git a/presence/example/example.json b/presence/example/example.json
index 25c77cc..fd1d657 100644
--- a/presence/example/example.json
+++ b/presence/example/example.json
@@ -1,81 +1,76 @@
-{
-    "fans":
-    [
-        {
-            "name": "Example Fan0",
-            "description": "'Example fan with tach feedback detection method. Fans without any special presence detection hardware can use one or more tach speed sensor feedbacks as an indicator of presence.  Listed sensors are expected to be found in the /xyz/openbmc_project/sensors/fan_tach namespace as required by the OpenBMC DBus API. Supported policy types are fallback or anyof.'",
-            "path": "/system/chassis/motherboard/fan0",
-            "methods": [
-                {
-                    "type": "tach",
-                    "sensors": [
-                        "fan0"
-                    ]
-                }
-            ]
-        },
-        {
-            "name": "Example Fan1",
-            "description": "'Example fan with gpio detection method. Fans with dedicated gpios can use the gpio detection method.  The gpio detection uses Linux gpio-keys: the event number must be provided via the key property.'",
-            "path": "/system/chassis/motherboard/fan1",
-            "methods": [
-                {
-                    "type": "gpio",
-                    "key": 123,
-                    "physpath": "/sys/devices/foo/bar",
-                    "devpath": "/dev/input/by-path/platform-gpio-keys-event"
-                }
-            ]
-        },
-        {
-            "name": "Example Fan2",
-            "description": "'Example fan with fallback redundancy policy. Multiple detection methods for a single fan are allowed. When multiple detection methods are provided a redundancy algorithm must be specified with the rpolicy attribute. Note that the redundancy policy algorithm may or may not factor the order the detection methods are listed into its logic. The fallback algorithm falls back to subsequently listed detection methods when the first method does not detect a fan and the second method does.'",
-            "path": "/system/chassis/motherboard/fan2",
-            "methods": [
-                {
-                    "type": "gpio",
-                    "key": 124,
-                    "physpath": "/sys/devices/foo/bar",
-                    "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
-                },
-                {
-                    "type": "tach",
-                    "sensors": [
-                        "fan2"
-                    ]
-                }
-            ],
-            "rpolicy": {
-                "type": "fallback"
-            }
-        },
-        {
-            "name": "Example Fan3",
-            "description": "'Example fan with anyof redundancy policy. The anyof algorithm reports true if any redundancy set component sensors report true.'",
-            "path": "/system/chassis/motherboard/fan3",
-            "methods": [
-                {
-                    "type": "gpio",
-                    "key": 125,
-                    "physpath": "/sys/devices/foo/bar",
-                    "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
-                },
-                {
-                    "type": "tach",
-                    "sensors": [
-                        "fan3"
-                    ]
-                }
-            ],
-            "rpolicy": {
-                "type": "anyof"
-            }
-        }
-    ],
-
-    "reporting":
+[
     {
-        "description": "'The amount of time, in seconds, that a fan must be missing before an event log is created.'",
-        "fan_missing_error_time": 10
+        "name": "Example Fan0",
+        "description": "'Example fan with tach feedback detection method. Fans without any special presence detection hardware can use one or more tach speed sensor feedbacks as an indicator of presence.  Listed sensors are expected to be found in the /xyz/openbmc_project/sensors/fan_tach namespace as required by the OpenBMC DBus API. Supported policy types are fallback or anyof.  The fan_missing_error_time value is the amount of time in seconds that a fan must be missing before an event log is created.'",
+        "path": "/system/chassis/motherboard/fan0",
+        "fan_missing_error_time": 10,
+        "methods": [
+            {
+                "type": "tach",
+                "sensors": [
+                    "fan0"
+                ]
+            }
+        ]
+    },
+    {
+        "name": "Example Fan1",
+        "description": "'Example fan with gpio detection method. Fans with dedicated gpios can use the gpio detection method.  The gpio detection uses Linux gpio-keys: the event number must be provided via the key property.'",
+        "path": "/system/chassis/motherboard/fan1",
+        "fan_missing_error_time": 10,
+        "methods": [
+            {
+                "type": "gpio",
+                "key": 123,
+                "physpath": "/sys/devices/foo/bar",
+                "devpath": "/dev/input/by-path/platform-gpio-keys-event"
+            }
+        ]
+    },
+    {
+        "name": "Example Fan2",
+        "description": "'Example fan with fallback redundancy policy. Multiple detection methods for a single fan are allowed. When multiple detection methods are provided a redundancy algorithm must be specified with the rpolicy attribute. Note that the redundancy policy algorithm may or may not factor the order the detection methods are listed into its logic. The fallback algorithm falls back to subsequently listed detection methods when the first method does not detect a fan and the second method does.'",
+        "path": "/system/chassis/motherboard/fan2",
+        "fan_missing_error_time": 10,
+        "methods": [
+            {
+                "type": "gpio",
+                "key": 124,
+                "physpath": "/sys/devices/foo/bar",
+                "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
+            },
+            {
+                "type": "tach",
+                "sensors": [
+                    "fan2"
+                ]
+            }
+        ],
+        "rpolicy": {
+            "type": "fallback"
+        }
+    },
+    {
+        "name": "Example Fan3",
+        "description": "'Example fan with anyof redundancy policy. The anyof algorithm reports true if any redundancy set component sensors report true.'",
+        "path": "/system/chassis/motherboard/fan3",
+        "fan_missing_error_time": 10,
+        "methods": [
+            {
+                "type": "gpio",
+                "key": 125,
+                "physpath": "/sys/devices/foo/bar",
+                "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
+            },
+            {
+                "type": "tach",
+                "sensors": [
+                    "fan3"
+                ]
+            }
+        ],
+        "rpolicy": {
+            "type": "anyof"
+        }
     }
-}
+]