Implement Liquid Leak Detector
Implement liquid leak detector based on design
https://gerrit.openbmc.org/c/openbmc/docs/+/73152.
Related PRs:
https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/73151
https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/73707
https://gerrit.openbmc.org/c/openbmc/sdbusplus/+/75461
https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/75999
Tested:
```
>> busctl tree xyz.openbmc_project.LeakDetector
└─ /xyz
└─ /xyz/openbmc_project
└─ /xyz/openbmc_project/state
└─ /xyz/openbmc_project/state/leak
└─ /xyz/openbmc_project/state/leak/detector
├─ /xyz/openbmc_project/state/leak/detector/TrayDetector1
└─ /xyz/openbmc_project/state/leak/detector/TrayDetector2
>> echo pull-up > /sys/devices/platform/gpio-sim.0/gpiochip2/sim_gpio0/pull
>> curl -k -H "X-Auth-Token: $token" -X GET https://${bmc}/redfish/v1/Systems/system/LogServices/EventLog/Entries
{
"@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries",
"@odata.type": "#LogEntryCollection.LogEntryCollection",
"Description": "Collection of System Event Log Entries",
"Members": [
...
{
"@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/2",
"@odata.type": "#LogEntry.v1_9_0.LogEntry",
"AdditionalDataURI": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/2/attachment",
"Created": "2024-05-10T06:40:30.423+00:00",
"EntryType": "Event",
"Id": "2",
"Message": "xyz.openbmc_project.State.Leak.Detector.LeakDetectedWarning",
"Modified": "2024-05-10T06:40:30.423+00:00",
"Name": "System Event Log Entry",
"Resolved": false,
"Severity": "Warning"
}
],
"Members@odata.count": 2,
"Name": "System Event Log Entries"
}
>> echo pull-down > /sys/devices/platform/gpio-sim.0/gpiochip2/sim_gpio0/pull
>> curl -k -H "X-Auth-Token: $token" -X GET https://${bmc}/redfish/v1/Systems/system/LogServices/EventLog/Entries
{
"@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries",
"@odata.type": "#LogEntryCollection.LogEntryCollection",
"Description": "Collection of System Event Log Entries",
"Members": [
...
{
"@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/2",
"@odata.type": "#LogEntry.v1_9_0.LogEntry",
"AdditionalDataURI": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/2/attachment",
"Created": "2024-05-10T06:40:30.423+00:00",
"EntryType": "Event",
"Id": "2",
"Message": "xyz.openbmc_project.State.Leak.Detector.LeakDetectedWarning",
"Modified": "2024-05-10T06:42:23.989+00:00",
"Name": "System Event Log Entry",
"Resolved": true,
"Severity": "Warning"
},
{
"@odata.id": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/3",
"@odata.type": "#LogEntry.v1_9_0.LogEntry",
"AdditionalDataURI": "/redfish/v1/Systems/system/LogServices/EventLog/Entries/3/attachment",
"Created": "2024-05-10T06:42:24.024+00:00",
"EntryType": "Event",
"Id": "3",
"Message": "xyz.openbmc_project.State.Leak.Detector.LeakDetectedNormal",
"Modified": "2024-05-10T06:42:24.024+00:00",
"Name": "System Event Log Entry",
"Resolved": false,
"Severity": "OK"
}
],
"Members@odata.count": 3,
"Name": "System Event Log Entries"
}
```
Change-Id: Id6981deb314ca6852c5e31b932b28e601c2f3976
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>
diff --git a/src/meson.build b/src/meson.build
index ca995e5..5668bf4 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -61,6 +61,32 @@
dependencies: [default_deps, thresholds_dep],
)
+systemdinterface_src = files('SystemdInterface.cpp')
+
+gpiointerface_a = static_library(
+ 'gpiointerface_a',
+ 'GPIOInterface.cpp',
+ dependencies: default_deps,
+)
+
+gpiointerface_dep = declare_dependency(
+ include_directories: ['.'],
+ link_with: [gpiointerface_a],
+ dependencies: default_deps,
+)
+
+entitymanagerinterface_a = static_library(
+ 'entitymanagerinterface_a',
+ 'EntityManagerInterface.cpp',
+ dependencies: default_deps,
+)
+
+entitymanagerinterface_dep = declare_dependency(
+ include_directories: ['.'],
+ link_with: [entitymanagerinterface_a],
+ dependencies: default_deps,
+)
+
peci_incdirs = []
if not meson.get_compiler('cpp').has_header('linux/peci-ioctl.h')
peci_incdirs = ['../include']
@@ -118,3 +144,7 @@
if get_option('tests').allowed()
subdir('tests')
endif
+
+if get_option('leakdetector').allowed()
+ subdir('leakdetector')
+endif