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: object_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: object_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.
