Add the Logging.IPMI interface

Adding an interface for the IPMI SEL Logger which provides methods
for IPMI Sensor D-Bus objects to add System and OEM SEL events
to the journal.

Related discussion at
https://lists.ozlabs.org/pipermail/openbmc/2018-September/013129.html

Change-Id: Idd15d92b95fcd4350d4d8ca15b34d864b0c2c507
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
diff --git a/xyz/openbmc_project/Logging/IPMI.interface.yaml b/xyz/openbmc_project/Logging/IPMI.interface.yaml
new file mode 100644
index 0000000..2b2e393
--- /dev/null
+++ b/xyz/openbmc_project/Logging/IPMI.interface.yaml
@@ -0,0 +1,77 @@
+description: >
+    Implement to provide an IPMI System Event Log (SEL) logging interface
+    under the path /xyz/openbmc_project/Logging/IPMI.
+
+    SEL records store system event information and will contain a record ID
+    and type followed by type-specific information.  The type-specific
+    information includes a timestamp, generator ID (used to identify the
+    component that is adding the SEL record), sensor number, event
+    direction and event-specific data for system type events; or timestamp
+    and OEM data for OEM type events.
+
+    The interface allows adding system or OEM type events.  For system type
+    events it requires a generator ID (0x20 for BMC), sensor D-Bus path,
+    event direction (assertion or de-assertion), and event specific data.
+    For OEM type events, it requires the record type and OEM data.
+
+    It will assign a record ID and timestamp automatically and return the
+    assigned record ID.
+methods:
+    - name: IpmiSelAdd
+      description: >
+        Log a system event record type SEL entry.
+      parameters:
+        - name: Message
+          type: string
+          description: >
+            The text to log for the event.
+        - name: Path
+          type: path
+          description: >
+            The object path that is generating the SEL entry.
+        - name: SELData
+          type: array[byte]
+          description: >
+            An array of up to 3 bytes of SEL event data.
+        - name: Assert
+          type: boolean
+          description: >
+            An indicator if the SEL event is asserting or de-asserting.
+        - name: GeneratorID
+          type: uint16
+          description: >
+            The Generator ID of the component requesting the new SEL entry.
+            In most cases this will be 0x20 (the BMC Generator ID).
+      returns:
+        - name: RecordID
+          type: uint16
+          description: >
+            The Record ID of the new SEL entry.
+      errors:
+        - xyz.openbmc_project.Common.Error.InternalFailure
+        - xyz.openbmc_project.Common.Error.InvalidArgument
+
+    - name: IpmiSelAddOem
+      description: >
+        Log an OEM record type SEL entry requested from external to the BMC.
+      parameters:
+        - name: Message
+          type: string
+          description: >
+            The text to log for the event.
+        - name: SELData
+          type: array[byte]
+          description: >
+            An array of up to 13 bytes of SEL event data.
+        - name: RecordType
+          type: byte
+          description: >
+            The OEM record type for the SEL entry.
+      returns:
+        - name: RecordID
+          type: uint16
+          description: >
+            The Record ID of the new SEL entry.
+      errors:
+        - xyz.openbmc_project.Common.Error.InternalFailure
+        - xyz.openbmc_project.Common.Error.InvalidArgument