# Phosphor Fan Presence (PFP) example configuration file.
#
# The configuration represents an array of fans the application
# should check for presence.  The name attribute is required
# and is used as the PrettyName attribute for the
# xyz.openbmc_project.Inventory.Item interface.  Path is required
# and is the location where the fan inventory object will be
# created.  Additional configuration directives described below
# in the examples.

- 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
