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.

