meta-bletchley: add bletchley-host-state-monitor service

Add a service for monitoring host power state by query port status via
mdio bus.

Test Results:
- Poweron SLED6
root@bletchley:~# obmcutil -i=6 poweron
root@bletchley:~# obmcutil -i=6 state
CurrentBMCState     : xyz.openbmc_project.State.BMC.BMCState.Ready
CurrentPowerState   : xyz.openbmc_project.State.Chassis.PowerState.On
CurrentHostState    : xyz.openbmc_project.State.Host.HostState.Running
BootProgress        : xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified
OperatingSystemState: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive
root@bletchley:~# journalctl -u bletchley-host-state-monitor
...
Oct 24 07:55:17 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 5
Oct 24 07:55:18 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 4
Oct 24 07:55:22 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 5
Oct 24 07:55:23 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 4
Oct 24 07:55:27 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 5
Oct 24 07:55:29 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 4
Oct 24 07:55:30 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 3
Oct 24 07:55:31 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 2
Oct 24 07:55:33 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 1
Oct 24 07:55:34 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed, update host state to ON

- Poweroff SLED6
root@bletchley:~# obmcutil -i=6 poweroff
root@bletchley:~# obmcutil -i=6 state
CurrentBMCState     : xyz.openbmc_project.State.BMC.BMCState.Ready
CurrentPowerState   : xyz.openbmc_project.State.Chassis.PowerState.Off
CurrentHostState    : xyz.openbmc_project.State.Host.HostState.Off
BootProgress        : xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified
OperatingSystemState: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive
root@bletchley:~# journalctl -u bletchley-host-state-monitor
Oct 21 09:38:21 bletchley systemd[1]: Started Bletchley host state monitoring.
...
Oct 24 07:55:17 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 5
Oct 24 07:55:18 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 4
Oct 24 07:55:22 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 5
Oct 24 07:55:23 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 4
Oct 24 07:55:27 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 5
Oct 24 07:55:29 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 4
Oct 24 07:55:30 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 3
Oct 24 07:55:31 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 2
Oct 24 07:55:33 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:OFF, current:ON), check count: 1
Oct 24 07:55:34 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed, update host state to ON
Oct 24 08:03:38 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:ON, current:OFF), check count: 5
Oct 24 08:03:39 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:ON, current:OFF), check count: 4
Oct 24 08:03:40 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:ON, current:OFF), check count: 3
Oct 24 08:03:42 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:ON, current:OFF), check count: 2
Oct 24 08:03:43 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed (previous:ON, current:OFF), check count: 1
Oct 24 08:03:44 bletchley bletchley-host-state-monitor[905]: SLED6: detected state changed, update host state to OFF

Signed-off-by: Potin Lai <potin.lai@quantatw.com>
Change-Id: I5916cd411c0d7d625b54f74c888aa380e00a1853
diff --git a/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor.service b/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor.service
new file mode 100644
index 0000000..bba0dc0
--- /dev/null
+++ b/meta-facebook/meta-bletchley/recipes-bletchley/plat-svc/files/bletchley-host-state-monitor.service
@@ -0,0 +1,50 @@
+[Unit]
+Description=Bletchley host state monitoring
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis1.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis1.service
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis2.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis2.service
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis3.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis3.service
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis4.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis4.service
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis5.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis5.service
+Wants=mapper-wait@-xyz-openbmc_project-state-chassis6.service
+After=mapper-wait@-xyz-openbmc_project-state-chassis6.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host1.service
+After=mapper-wait@-xyz-openbmc_project-state-host1.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host2.service
+After=mapper-wait@-xyz-openbmc_project-state-host2.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host3.service
+After=mapper-wait@-xyz-openbmc_project-state-host3.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host4.service
+After=mapper-wait@-xyz-openbmc_project-state-host4.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host5.service
+After=mapper-wait@-xyz-openbmc_project-state-host5.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host6.service
+After=mapper-wait@-xyz-openbmc_project-state-host6.service
+Wants=mapper-wait@-xyz-openbmc_project-state-host6.service
+After=mapper-wait@-xyz-openbmc_project-state-host6.service
+Wants=mapper-wait@-xyz-openbmc_project-control-host1-acpi_power_state.service
+After=mapper-wait@-xyz-openbmc_project-control-host1-acpi_power_state.service
+Wants=mapper-wait@-xyz-openbmc_project-control-host2-acpi_power_state.service
+After=mapper-wait@-xyz-openbmc_project-control-host2-acpi_power_state.service
+Wants=mapper-wait@-xyz-openbmc_project-control-host3-acpi_power_state.service
+After=mapper-wait@-xyz-openbmc_project-control-host3-acpi_power_state.service
+Wants=mapper-wait@-xyz-openbmc_project-control-host4-acpi_power_state.service
+After=mapper-wait@-xyz-openbmc_project-control-host4-acpi_power_state.service
+Wants=mapper-wait@-xyz-openbmc_project-control-host5-acpi_power_state.service
+After=mapper-wait@-xyz-openbmc_project-control-host5-acpi_power_state.service
+Wants=mapper-wait@-xyz-openbmc_project-control-host6-acpi_power_state.service
+After=mapper-wait@-xyz-openbmc_project-control-host6-acpi_power_state.service
+
+[Service]
+ExecStart=/usr/libexec/bletchley-host-state-monitor
+SyslogIdentifier=bletchley-host-state-monitor
+Type=simple
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target