support multiple device trees in the same BMC image
This commit checks for current system type and if it is changed from last boot,
it loads new/appropriate device tree and reboot the system.
Tested-
=========================================
Test Case 1: first boot when env not defined
triggerred system vpd collection-
DBG: systemType is: 50001000
DBG: newDeviceTree: fw_dt2
U-Boot environment is not set. Updating...
DBG: rebooting...
root@rainier:/tmp# Connection to rain4bmc closed by remote host.
Connection to rain4bmc closed.
========================================
Test case 2-
triggerred system vpd collection-
DBG: systemType is: 50001001
DBG: newDeviceTree: fw_dt1
U-Boot environment is not updated. Updating...
DBG: rebooting...
root@rainier:/tmp# Connection to rain4bmc closed by remote host.
Connection to rain4bmc closed.
alpana07> ssh -k root@rain4bmc
root@rain4bmc's password:
printenv
...
bootside=b
devTree=fw_dt1
root@rainier:~#
=========================================
Test case 3-
triggerred system vpd collection again-
DBG: systemType is: 50001001
DBG: newDeviceTree: fw_dt1
U-Boot environment is Updated.
root@rainier:~# fw_printenv
...
bootside=b
devTree=fw_dt1
=========================================
Change-Id: I28bce8ced4a970e1818b4f4f613bd062647a4d3a
Signed-off-by: Alpana Kumari <alpankum@in.ibm.com>
diff --git a/types.hpp b/types.hpp
index c23ddb2..c80af32 100644
--- a/types.hpp
+++ b/types.hpp
@@ -44,6 +44,10 @@
constexpr auto pimIntf = "xyz.openbmc_project.Inventory.Manager";
using KeywordVpdMap = std::unordered_map<std::string, Binary>;
+using systemType = std::string;
+using deviceTree = std::string;
+using deviceTreeMap = std::unordered_map<systemType, deviceTree>;
+
} // namespace inventory
} // namespace vpd