apphandler: Add firmware_revision support for ipmi config
Allow us to configure the firmware revision if needed. The field is
optional and will override the existing firmware revision.
This provide us a way to customize the firmware revision to anything we
want.
Tested:
With firmware_revision in dev_id.json
```
$ cat /usr/share/ipmi-providers/dev_id.json
$ ipmitool mc info
{
"id": 0,
"revision": 0,
"addn_dev_support": 0,
"firmware_revision": {
"major": 35,
"minor": 16
},
"manuf_id": 11129,
"prod_id": 14426,
"aux": 0
}
ipmitool mc info
Device ID : 0
Device Revision : 0
Firmware Revision : 35.10
IPMI Version : 2.0
Manufacturer ID : 11129
Manufacturer Name : Google, Inc.
Product ID : 14426 (0x385a)
Product Name : Unknown (0x385A)
Device Available : yes
Provides Device SDRs : no
Additional Device Support :
Aux Firmware Rev Info :
0x00
0x00
0x00
0x00
```
Change-Id: Ia05ceb9ff5ca46b104e70ad9230432e79fc70d07
Signed-off-by: Willy Tu <wltu@google.com>
diff --git a/apphandler.cpp b/apphandler.cpp
index 0577c07..8c81dc8 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -645,6 +645,19 @@
devId.prodId = data.value("prod_id", 0);
devId.aux = data.value("aux", 0);
+ if (data.contains("firmware_revision"))
+ {
+ const auto& firmwareRevision = data.at("firmware_revision");
+ if (firmwareRevision.contains("major"))
+ {
+ firmwareRevision.at("major").get_to(devId.fw[0]);
+ }
+ if (firmwareRevision.contains("minor"))
+ {
+ firmwareRevision.at("minor").get_to(devId.fw[1]);
+ }
+ }
+
// Set the availablitity of the BMC.
defaultActivationSetting = data.value("availability", true);