soft-off: Send soft off request to the host and wait the host soft off responds

The pldm-softpoweroff application will send a set state effecter states request
to host, then the host will soft off.

The pldm-softpoweroff need two timers. One of the timer is used to wait the
response of the pldm soft off request message(default 30s). Another timer
is used to wait the host graceful shutdown complete(default 7200s).If the host
response is not received within the timeout then log an error and exit the
application.

The pldm-softpowerroff application need Subscribe to the
xyz.openbmc_project.PLDM.Event StateSensorEvent signal,When the host soft off
is complete, it sends a pldm event Msg to BMC.After pldmd receive this
event Msg ,it will emit the StateSensorEvent signal.When the pldm-softpowerroff
receive the signal,it will stop the timer and exit.

Tested in fp5280g2 system:
1、If the host state is not "Running", this application will exit with success(0).
2、If no ACK of the soft off request is received within 30 seconds, this
   application will exit with error(-1).
3、If no pldm event Msg(host gracefully shutdown complete) is received within
   7200 seconds, this application will record an error log and exit with
   error(-1).
4、If the pldm event Msg(host gracefully shutdown complete) is received within
   7200 seconds, this application will exit with success(0).

Signed-off-by: Chicago Duan <duanzhijia01@inspur.com>
Change-Id: I486d8068d013766329f78685acc0508fc3cb6c95
diff --git a/softoff/meson.build b/softoff/meson.build
index 09c9d2c..753375b 100644
--- a/softoff/meson.build
+++ b/softoff/meson.build
@@ -1,9 +1,24 @@
-deps = [ libpldm ]
+deps = [
+    libpldm,
+    libpldmutils,
+    dependency('sdeventplus'),
+    dependency('sdbusplus'),
+    dependency('phosphor-dbus-interfaces'),
+    ]
 
-source = ['main.cpp']
+source = ['main.cpp','softoff.cpp']
 
 executable('pldm-softpoweroff',source,
            implicit_include_directories: false,
            dependencies: deps,
            install: true,
            install_dir: get_option('bindir'))
+
+systemd = dependency('systemd')
+servicedir = systemd.get_pkgconfig_variable('systemdsystemunitdir')
+
+configure_file(input: 'services/pldmSoftPowerOff.service',
+                 output: 'pldmSoftPowerOff.service',
+                 copy: true,
+                 install_dir: servicedir)
+