chassishandler: Add support for BIOS verbosity
Implement the set/get BIOS verbosity, data 3 of the boot option
parameters boot flags (0x05).
Tested:
```
root@bmc:~# ipmitool chassis bootparam get 5 |grep verb
- BIOS verbosity : System Default
root@bmc:~# ipmitool raw 0x0 0x8 0x5 0xe0 0x0 0x40 0x0 0x0
root@bmc:~# ipmitool chassis bootparam get 5 |grep verb
- BIOS verbosity : Request Verbose Display
```
Signed-off-by: Cosmo Chou <cosmo.chou@quantatw.com>
Change-Id: I50121a6e1826047b9d6240bec8331fd563328323
diff --git a/chassishandler.cpp b/chassishandler.cpp
index dcf26d7..07e5544 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -1840,6 +1840,7 @@
static uint8_t bootFlagValidBitClr = 0;
static uint5_t bootInitiatorAckData = 0x0;
static bool cmosClear = false;
+static uint2_t biosVerbosity = 0x0;
/** @brief implements the Get Chassis system boot option
* @param ctx - context pointer
@@ -1965,11 +1966,11 @@
uint1_t validFlag = valid ? 1 : 0;
- response.pack(bootOptionParameter, reserved1, uint5_t{},
- uint1_t{biosBootType}, uint1_t{permanent},
- uint1_t{validFlag}, uint2_t{}, uint4_t{bootOption},
- uint1_t{}, cmosClear, uint8_t{}, uint8_t{},
- uint8_t{});
+ response.pack(
+ bootOptionParameter, reserved1, uint5_t{},
+ uint1_t{biosBootType}, uint1_t{permanent}, uint1_t{validFlag},
+ uint2_t{}, uint4_t{bootOption}, uint1_t{}, cmosClear, uint5_t{},
+ uint2_t{biosVerbosity}, uint1_t{}, uint8_t{}, uint8_t{});
return ipmi::responseSuccess(std::move(response));
}
catch (const InternalFailure& e)
@@ -2066,7 +2067,8 @@
bool screenBlank;
uint4_t bootDeviceSelector;
bool lockKeyboard;
- uint8_t data3;
+ uint5_t biosCtrls;
+ bool lockOutPower;
uint4_t biosInfo;
uint4_t rsvd1;
uint5_t deviceInstance;
@@ -2074,8 +2076,9 @@
if (data.unpack(rsvd, biosBootType, permanent, validFlag,
lockOutResetButton, screenBlank, bootDeviceSelector,
- lockKeyboard, cmosClear, data3, biosInfo, rsvd1,
- deviceInstance, rsvd2) != 0 ||
+ lockKeyboard, cmosClear, biosCtrls, biosVerbosity,
+ lockOutPower, biosInfo, rsvd1, deviceInstance, rsvd2) !=
+ 0 ||
!data.fullyUnpacked())
{
return ipmi::responseReqDataLenInvalid();