# 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
