description: >
    Provides Remote BIOS Configuration management functionality. As
    communication to this service is done through authenticated & authorized
    session, there won't be any validation for both.
    https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/29320

methods:
    - name: SetAttribute
      description: >
          To set the new value on existing attribute name. It will create or add
          the pending attributes.
      parameters:
          - name: AttributeName
            type: string
            description: >
                AttributeName which has to be changed.
          - name: AttributeValue
            type: variant[int64,string]
            description: >
                New attribute value

      errors:
          - xyz.openbmc_project.Common.Error.InternalFailure
          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeReadOnly
          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeNotFound

    - name: GetAttribute
      description: >
          To get the attribute value of existing attributes.
      parameters:
          - name: AttributeName
            type: string
            description: >
                To get the bios attribute current values and pending values if
                previously set by setAttribute or SetPendingAttributes.

      returns:
          - name: AttributeValueType
            type: enum[self.AttributeType]
            description: >
                PLDM attribute Type present in PLDM spec
          - name: CurrentValue
            type: variant[int64,string]
            description: >
                The attribute current value.
          - name: PendingValue
            type: variant[int64,string]
            description: >
                The pending attribute value if its available.
      errors:
          - xyz.openbmc_project.Common.Error.InternalFailure
          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeNotFound

properties:
    - name: ResetBIOSSettings
      type: enum[self.ResetFlag]
      default: NoAction
      description: >
          Contain reset BIOS setting type: Interface have to set NoAction this
          property. when Reset BIOS settings are informed to the BIOS.

    - name: BaseBIOSTable
      type:
          dict[string,struct[enum[self.AttributeType],boolean,string,string,string,variant[int64,string],variant[int64,string],array[struct[enum[self.BoundType],
          variant[int64, string]]]]]
      description: >
          map{attributeName,struct{attributeType,readonlyStatus,displayname,
          description,menuPath,current,default,
          array{struct{optionstring,optionvalue}}}} Example 1: {"DdrFreqLimit",
          {xyz.openbmc_project.BIOSConfig.Manager.AttributeType.String,
           false,
           "Memory Operating Speed Selection",
           "Force specific Memory Operating Speed or use Auto setting.",
           "Advanced/Memory Configuration/Memory Operating Speed Selection",
           "0x00",
           "0x0B",
           { {"OneOf", "auto"},
             {"OneOf", "2133"},
             {"OneOf", "2400"},
             {"OneOf", "2664"},
             {"OneOf", "2933"}
           }
          } }
           Example 2:
          {"BIOSSerialDebugLevel",
          {xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Integer,
           false,
           "BIOS Serial Debug level",
           "BIOS Serial Debug level during system boot.",
           "Advanced/Debug Feature Selection",
           0x00,
           0x01,
           { {"MinBound", 0},
             {"MaxBound", 4},
             {"ScalarIncrement",1}
           }
          } }

    - name: PendingAttributes
      type: dict[string,struct[enum[self.AttributeType],variant[int64,string]]]
      description: >
          The Pending attribute name and new value. ex- {
          {"QuietBoot",Type.Integer, 0x1},
                { "DdrFreqLimit",Type.String,"2933"}
              }
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument
          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeNotFound
          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeReadOnly

enumerations:
    - name: AttributeType
      description: >
          Attribute Type.
      values:
          - name: Enumeration
            description: >
                Enumeration value Type.
          - name: String
            description: >
                string value Type.
          - name: Password
            description: >
                Encoded string value Type
          - name: Integer
            description: >
                Integer value Type.
          - name: Boolean
            description: >
                Boolean value Type

    - name: ResetFlag
      description: >
          Reset BIOS setting type requested by user.
      values:
          - name: NoAction
            description: >
                Default value, In order to cancel the reset BIOS settings.
          - name: FactoryDefaults
            description: >
                Used to set factory default settings.
          - name: FailSafeDefaults
            description: >
                Used to set the fail safe settings.

    - name: BoundType
      description: >
          Contain BoundType value for string and integer
      values:
          - name: LowerBound
            description: >
                Used to define the lower bound value.
          - name: UpperBound
            description: >
                Used to define the upper bound value.
          - name: ScalarIncrement
            description: >
                Used to define scalar value of integer.
          - name: MinStringLength
            description: >
                Used to define minimum string length.
          - name: MaxStringLength
            description: >
                Used to define maximum string length.
          - name: OneOf
            description: >
                Used to define the enumeration options.
