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: AddExtended
      description: >
          Log a system event record SEL entry with custom SensorType/EventType.
      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: 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).
          - name: eventType
            type: byte
            description: >
                Type of trigger for the event and event direction.
          - name: sensorType
            type: byte
            description: >
                Sensor Type Code for sensor that generated the event.
          - name: sensorNum
            type: byte
            description: >
                Number of sensor that generated the event.
      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

    - name: Clear
      description: >
          Clear the SEL entries from their storage location.
