1description: >
2    Provides Remote BIOS Configuration management functionality.
3    As communication to this service is done through authenticated
4    & authorized session, there won't be any validation for both.
5    https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/29320
6
7methods:
8    - name: SetAttribute
9      description: >
10          To set the new value on existing attribute name.
11          It will create or add the pending attributes.
12      parameters:
13          - name: AttributeName
14            type: string
15            description: >
16                AttributeName which has to be changed.
17          - name: AttributeValue
18            type: variant[int64,string]
19            description: >
20                New attribute value
21
22      errors:
23          - xyz.openbmc_project.Common.Error.InternalFailure
24          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeReadOnly
25          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeNotFound
26
27    - name: GetAttribute
28      description: >
29          To get the attribute value of existing attributes.
30      parameters:
31          - name: AttributeName
32            type: string
33            description: >
34                To get the bios attribute current values and
35                pending values if previously set by setAttribute or
36                SetPendingAttributes.
37
38      returns:
39          - name: AttributeValueType
40            type: enum[self.AttributeType]
41            description: >
42                PLDM attribute Type present in PLDM spec
43          - name: CurrentValue
44            type: variant[int64,string]
45            description: >
46                The attribute current value.
47          - name: PendingValue
48            type: variant[int64,string]
49            description: >
50                The pending attribute value if its available.
51      errors:
52          - xyz.openbmc_project.Common.Error.InternalFailure
53          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeNotFound
54
55properties:
56    - name: ResetBIOSSettings
57      type: enum[self.ResetFlag]
58      default: NoAction
59      description: >
60          Contain reset BIOS setting type:
61          Interface have to set NoAction this property.
62          when Reset BIOS settings are informed to the BIOS.
63
64    - name: BaseBIOSTable
65      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]]]]]
66      description: >
67          map{attributeName,struct{attributeType,readonlyStatus,displayname,
68          description,menuPath,current,default,
69          array{struct{optionstring,optionvalue}}}}
70          Example 1:
71          {"DdrFreqLimit",
72          {xyz.openbmc_project.BIOSConfig.Manager.AttributeType.String,
73           false,
74           "Memory Operating Speed Selection",
75           "Force specific Memory Operating Speed or use Auto setting.",
76           "Advanced/Memory Configuration/Memory Operating Speed Selection",
77           "0x00",
78           "0x0B",
79           { {"OneOf", "auto"},
80             {"OneOf", "2133"},
81             {"OneOf", "2400"},
82             {"OneOf", "2664"},
83             {"OneOf", "2933"}
84           }
85          }
86          }
87           Example 2:
88          {"BIOSSerialDebugLevel",
89          {xyz.openbmc_project.BIOSConfig.Manager.AttributeType.Integer,
90           false,
91           "BIOS Serial Debug level",
92           "BIOS Serial Debug level during system boot.",
93           "Advanced/Debug Feature Selection",
94           0x00,
95           0x01,
96           { {"MinBound", 0},
97             {"MaxBound", 4},
98             {"ScalarIncrement",1}
99           }
100          }
101          }
102
103    - name: PendingAttributes
104      type: dict[string,struct[enum[self.AttributeType],variant[int64,string]]]
105      description: >
106          The Pending attribute name and new value.
107          ex- { {"QuietBoot",Type.Integer, 0x1},
108                { "DdrFreqLimit",Type.String,"2933"}
109              }
110      errors:
111          - xyz.openbmc_project.Common.Error.InvalidArgument
112          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeNotFound
113          - xyz.openbmc_project.BIOSConfig.Common.Error.AttributeReadOnly
114
115enumerations:
116    - name: AttributeType
117      description: >
118          Attribute Type.
119      values:
120          - name: Enumeration
121            description: >
122                Enumeration value Type.
123          - name: String
124            description: >
125                string value Type.
126          - name: Password
127            description: >
128                Encoded string value Type
129          - name: Integer
130            description: >
131                Integer value Type.
132          - name: Boolean
133            description: >
134                Boolean value Type
135
136    - name: ResetFlag
137      description: >
138          Reset BIOS setting type requested by user.
139      values:
140          - name: NoAction
141            description: >
142                Default value, In order to cancel the reset BIOS settings.
143          - name: FactoryDefaults
144            description: >
145                Used to set factory default settings.
146          - name: FailSafeDefaults
147            description: >
148                Used to set the fail safe settings.
149
150    - name: BoundType
151      description: >
152          Contain BoundType value for string and integer
153      values:
154          - name: LowerBound
155            description: >
156                Used to define the lower bound value.
157          - name: UpperBound
158            description: >
159                Used to define the upper bound value.
160          - name: ScalarIncrement
161            description: >
162                Used to define scalar value of integer.
163          - name: MinStringLength
164            description: >
165                Used to define minimum string length.
166          - name: MaxStringLength
167            description: >
168                Used to define maximum string length.
169          - name: OneOf
170            description: >
171                Used to define the enumeration options.
172