meta-facebook: yosemite4: Set the fan LED to amber or blue

Set the fan led to amber when the fan tach triggers critical threshold.

Test Plan:
Modify the threshold and check if the led is correct.

Change-Id: I1ad360c15b2e4ff9c47d6e0bbc81e3a30ab1cd23
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml
new file mode 100644
index 0000000..cdf6e69
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 9 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN9_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN9_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 9 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 9 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan9_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan9_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan9_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan9_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert