FruDevice: some code cleanup
* Rename some variables to better represent meaning.
* Replace "Fru" in fuctions/variables names to "FRU" according to
OpenBMC "C++ Coding Style and Conventions"
* Replace magical "8" with global named constant
* Change some variables types from int to size_t
Signed-off-by: Andrei Kartashev <a.kartashev@yadro.com>
Change-Id: If492b1b7ad3ddc097a773530767c4d9c8010b3aa
diff --git a/src/FruDevice.cpp b/src/FruDevice.cpp
index 3a28e0f..14686d9 100644
--- a/src/FruDevice.cpp
+++ b/src/FruDevice.cpp
@@ -61,6 +61,7 @@
constexpr size_t MAX_FRU_SIZE = 512;
constexpr size_t MAX_EEPROM_PAGE_INDEX = 255;
constexpr size_t busTimeoutSeconds = 5;
+constexpr size_t fruBlockSize = 8; // FRU areas are measured in 8-byte blocks
constexpr const char* blacklistPath = PACKAGE_DIR "blacklist.json";
@@ -69,7 +70,7 @@
const static constexpr char* I2C_DEV_LOCATION = "/dev";
-static constexpr std::array<const char*, 5> FRU_AREAS = {
+static const std::array<std::string, 5> FRU_AREAS = {
"INTERNAL", "CHASSIS", "BOARD", "PRODUCT", "MULTIRECORD"};
const static std::regex NON_ASCII_REGEX("[^\x01-\x7f]");
using DeviceMap = boost::container::flat_map<int, std::vector<uint8_t>>;
@@ -92,19 +93,19 @@
auto systemBus = std::make_shared<sdbusplus::asio::connection>(io);
auto objServer = sdbusplus::asio::object_server(systemBus);
-static const std::vector<const char*> CHASSIS_FRU_AREAS = {
+static const std::vector<std::string> CHASSIS_FRU_AREAS = {
"PART_NUMBER", "SERIAL_NUMBER", "INFO_AM1", "INFO_AM2"};
-static const std::vector<const char*> BOARD_FRU_AREAS = {
+static const std::vector<std::string> BOARD_FRU_AREAS = {
"MANUFACTURER", "PRODUCT_NAME", "SERIAL_NUMBER", "PART_NUMBER",
"FRU_VERSION_ID", "INFO_AM1", "INFO_AM2"};
-static const std::vector<const char*> PRODUCT_FRU_AREAS = {
+static const std::vector<std::string> PRODUCT_FRU_AREAS = {
"MANUFACTURER", "PRODUCT_NAME", "PART_NUMBER", "VERSION", "SERIAL_NUMBER",
"ASSET_TAG", "FRU_VERSION_ID", "INFO_AM1", "INFO_AM2"};
bool validateHeader(const std::array<uint8_t, I2C_SMBUS_BLOCK_MAX>& blockData);
-bool updateFruProperty(
+bool updateFRUProperty(
const std::string& assetTag, uint32_t bus, uint32_t address,
std::string propertyName,
boost::container::flat_map<
@@ -117,7 +118,7 @@
// Read and validate FRU contents, given the flag required for raw i2c, the open
// file handle, a read method, and a helper string for failures.
-std::vector<uint8_t> readFruContents(int flag, int file, uint16_t address,
+std::vector<uint8_t> readFRUContents(int flag, int file, uint16_t address,
ReadBlockFunc readBlock,
const std::string& errorHelp)
{
@@ -144,11 +145,11 @@
device.insert(device.end(), blockData.begin(), blockData.begin() + 8);
bool hasMultiRecords = false;
- int fruLength = 0;
+ ssize_t fruLength = fruBlockSize; // At least FRU header is present
for (size_t jj = 1; jj <= FRU_AREAS.size(); jj++)
{
// Offset value can be 255.
- int areaOffset = device[jj];
+ unsigned int areaOffset = device[jj];
if (areaOffset == 0)
{
continue;
@@ -162,7 +163,7 @@
break;
}
- areaOffset *= 8;
+ areaOffset *= fruBlockSize;
if (readBlock(flag, file, address, static_cast<uint16_t>(areaOffset),
0x2, blockData.data()) < 0)
@@ -172,7 +173,7 @@
}
// Ignore data type (blockData is already unsigned).
- int length = blockData[1] * 8;
+ size_t length = blockData[1] * fruBlockSize;
areaOffset += length;
fruLength = (areaOffset > fruLength) ? areaOffset : fruLength;
}
@@ -181,12 +182,12 @@
{
// device[area count] is the index to the last area because the 0th
// entry is not an offset in the common header.
- int areaOffset = device[FRU_AREAS.size()];
- areaOffset *= 8;
+ unsigned int areaOffset = device[FRU_AREAS.size()];
+ areaOffset *= fruBlockSize;
// the multi-area record header is 5 bytes long.
- constexpr int multiRecordHeaderSize = 5;
- constexpr int multiRecordEndOfList = 0x80;
+ constexpr size_t multiRecordHeaderSize = 5;
+ constexpr uint8_t multiRecordEndOfListMask = 0x80;
// Sanity hard-limit to 64KB.
while (areaOffset < std::numeric_limits<uint16_t>::max())
@@ -203,12 +204,12 @@
// Ok, let's check the record length, which is in bytes (unsigned,
// up to 255, so blockData should hold uint8_t not char)
- int recordLength = blockData[2];
+ size_t recordLength = blockData[2];
areaOffset += (recordLength + multiRecordHeaderSize);
fruLength = (areaOffset > fruLength) ? areaOffset : fruLength;
// If this is the end of the list bail.
- if ((blockData[1] & multiRecordEndOfList))
+ if ((blockData[1] & multiRecordEndOfListMask))
{
break;
}
@@ -216,13 +217,14 @@
}
// You already copied these first 8 bytes (the ipmi fru header size)
- fruLength -= 8;
+ fruLength -= fruBlockSize;
- int readOffset = 8;
+ int readOffset = fruBlockSize;
while (fruLength > 0)
{
- int requestLength = std::min(I2C_SMBUS_BLOCK_MAX, fruLength);
+ int requestLength =
+ std::min(I2C_SMBUS_BLOCK_MAX, static_cast<int>(fruLength));
if (readBlock(flag, file, address, static_cast<uint16_t>(readOffset),
static_cast<uint8_t>(requestLength),
@@ -470,7 +472,7 @@
std::string errorMessage = "eeprom at " + std::to_string(bus) +
" address " + std::to_string(address);
- std::vector<uint8_t> device = readFruContents(
+ std::vector<uint8_t> device = readFRUContents(
0, file, static_cast<uint16_t>(address), readFromEeprom, errorMessage);
close(file);
@@ -538,7 +540,7 @@
return foundList;
}
-int getBusFrus(int file, int first, int last, int bus,
+int getBusFRUs(int file, int first, int last, int bus,
std::shared_ptr<DeviceMap> devices)
{
@@ -629,7 +631,7 @@
std::string errorMessage =
"bus " + std::to_string(bus) + " address " + std::to_string(ii);
std::vector<uint8_t> device =
- readFruContents(flag, file, static_cast<uint16_t>(ii),
+ readFRUContents(flag, file, static_cast<uint16_t>(ii),
readBlockData, errorMessage);
if (device.empty())
{
@@ -774,7 +776,7 @@
}
// fd is closed in this function in case the bus locks up
- getBusFrus(file, 0x03, 0x77, bus, device);
+ getBusFRUs(file, 0x03, 0x77, bus, device);
if (DEBUG)
{
@@ -853,7 +855,7 @@
* iterator is no longer usable.
*/
static std::pair<DecodeState, std::string>
- decodeFruData(std::vector<uint8_t>::const_iterator& iter,
+ decodeFRUData(std::vector<uint8_t>::const_iterator& iter,
const std::vector<uint8_t>::const_iterator& end)
{
std::string value;
@@ -927,10 +929,10 @@
return make_pair(DecodeState::ok, value);
}
-bool formatFru(const std::vector<uint8_t>& fruBytes,
+bool formatFRU(const std::vector<uint8_t>& fruBytes,
boost::container::flat_map<std::string, std::string>& result)
{
- if (fruBytes.size() <= 8)
+ if (fruBytes.size() <= fruBlockSize)
{
return false;
}
@@ -938,7 +940,7 @@
result["Common_Format_Version"] =
std::to_string(static_cast<int>(*fruAreaOffsetField));
- const std::vector<const char*>* fieldData;
+ const std::vector<std::string>* fruAreaFieldNames;
for (const std::string& area : FRU_AREAS)
{
@@ -947,7 +949,7 @@
{
return false;
}
- size_t offset = (*fruAreaOffsetField) * 8;
+ size_t offset = (*fruAreaOffsetField) * fruBlockSize;
if (offset > 1)
{
@@ -965,7 +967,7 @@
result["CHASSIS_TYPE"] =
std::to_string(static_cast<int>(*fruBytesIter));
fruBytesIter += 1;
- fieldData = &CHASSIS_FRU_AREAS;
+ fruAreaFieldNames = &CHASSIS_FRU_AREAS;
}
else if (area == "BOARD")
{
@@ -997,22 +999,22 @@
result["BOARD_MANUFACTURE_DATE"] = std::string(timeString);
fruBytesIter += 3;
- fieldData = &BOARD_FRU_AREAS;
+ fruAreaFieldNames = &BOARD_FRU_AREAS;
}
else if (area == "PRODUCT")
{
result["PRODUCT_LANGUAGE_CODE"] =
std::to_string(static_cast<int>(*fruBytesIter));
fruBytesIter += 1;
- fieldData = &PRODUCT_FRU_AREAS;
+ fruAreaFieldNames = &PRODUCT_FRU_AREAS;
}
else
{
continue;
}
- for (auto& field : *fieldData)
+ for (auto& field : *fruAreaFieldNames)
{
- auto res = decodeFruData(fruBytesIter, fruBytes.end());
+ auto res = decodeFRUData(fruBytesIter, fruBytes.end());
std::string name = area + "_" + field;
if (res.first == DecodeState::end)
@@ -1041,7 +1043,7 @@
return true;
}
-std::vector<uint8_t>& getFruInfo(const uint8_t& bus, const uint8_t& address)
+std::vector<uint8_t>& getFRUInfo(const uint8_t& bus, const uint8_t& address)
{
auto deviceMap = busMap.find(bus);
if (deviceMap == busMap.end())
@@ -1058,31 +1060,31 @@
return ret;
}
-void AddFruObjectToDbus(
+void AddFRUObjectToDbus(
std::vector<uint8_t>& device,
boost::container::flat_map<
std::pair<size_t, size_t>,
std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
uint32_t bus, uint32_t address)
{
- boost::container::flat_map<std::string, std::string> formattedFru;
- if (!formatFru(device, formattedFru))
+ boost::container::flat_map<std::string, std::string> formattedFRU;
+ if (!formatFRU(device, formattedFRU))
{
std::cerr << "failed to format fru for device at bus " << bus
<< " address " << address << "\n";
return;
}
- auto productNameFind = formattedFru.find("BOARD_PRODUCT_NAME");
+ auto productNameFind = formattedFRU.find("BOARD_PRODUCT_NAME");
std::string productName;
// Not found under Board section or an empty string.
- if (productNameFind == formattedFru.end() ||
+ if (productNameFind == formattedFRU.end() ||
productNameFind->second.empty())
{
- productNameFind = formattedFru.find("PRODUCT_PRODUCT_NAME");
+ productNameFind = formattedFRU.find("PRODUCT_PRODUCT_NAME");
}
// Found under Product section and not an empty string.
- if (productNameFind != formattedFru.end() &&
+ if (productNameFind != formattedFRU.end() &&
!productNameFind->second.empty())
{
productName = productNameFind->second;
@@ -1108,9 +1110,9 @@
if (std::regex_match(path, std::regex(productName + "(_\\d+|)$")))
{
if (isMuxBus(bus) && address == busIface.first.second &&
- (getFruInfo(static_cast<uint8_t>(busIface.first.first),
+ (getFRUInfo(static_cast<uint8_t>(busIface.first.first),
static_cast<uint8_t>(busIface.first.second)) ==
- getFruInfo(static_cast<uint8_t>(bus),
+ getFRUInfo(static_cast<uint8_t>(bus),
static_cast<uint8_t>(address))))
{
// This device is already added to the lower numbered bus,
@@ -1151,7 +1153,7 @@
objServer.add_interface(productName, "xyz.openbmc_project.FruDevice");
dbusInterfaceMap[std::pair<size_t, size_t>(bus, address)] = iface;
- for (auto& property : formattedFru)
+ for (auto& property : formattedFRU)
{
std::regex_replace(property.second.begin(), property.second.begin(),
@@ -1173,7 +1175,7 @@
if (strcmp(req.c_str(), resp.c_str()))
{
// call the method which will update
- if (updateFruProperty(req, bus, address, propertyName,
+ if (updateFRUProperty(req, bus, address, propertyName,
dbusInterfaceMap))
{
resp = req;
@@ -1181,7 +1183,7 @@
else
{
throw std::invalid_argument(
- "Fru property update failed.");
+ "FRU property update failed.");
}
}
return 1;
@@ -1204,17 +1206,17 @@
iface->initialize();
}
-static bool readBaseboardFru(std::vector<uint8_t>& baseboardFru)
+static bool readBaseboardFRU(std::vector<uint8_t>& baseboardFRU)
{
// try to read baseboard fru from file
- std::ifstream baseboardFruFile(BASEBOARD_FRU_LOCATION, std::ios::binary);
- if (baseboardFruFile.good())
+ std::ifstream baseboardFRUFile(BASEBOARD_FRU_LOCATION, std::ios::binary);
+ if (baseboardFRUFile.good())
{
- baseboardFruFile.seekg(0, std::ios_base::end);
- size_t fileSize = static_cast<size_t>(baseboardFruFile.tellg());
- baseboardFru.resize(fileSize);
- baseboardFruFile.seekg(0, std::ios_base::beg);
- baseboardFruFile.read(reinterpret_cast<char*>(baseboardFru.data()),
+ baseboardFRUFile.seekg(0, std::ios_base::end);
+ size_t fileSize = static_cast<size_t>(baseboardFRUFile.tellg());
+ baseboardFRU.resize(fileSize);
+ baseboardFRUFile.seekg(0, std::ios_base::beg);
+ baseboardFRUFile.read(reinterpret_cast<char*>(baseboardFRU.data()),
fileSize);
}
else
@@ -1224,18 +1226,18 @@
return true;
}
-bool writeFru(uint8_t bus, uint8_t address, const std::vector<uint8_t>& fru)
+bool writeFRU(uint8_t bus, uint8_t address, const std::vector<uint8_t>& fru)
{
boost::container::flat_map<std::string, std::string> tmp;
if (fru.size() > MAX_FRU_SIZE)
{
- std::cerr << "Invalid fru.size() during writeFru\n";
+ std::cerr << "Invalid fru.size() during writeFRU\n";
return false;
}
// verify legal fru by running it through fru parsing logic
- if (!formatFru(fru, tmp))
+ if (!formatFRU(fru, tmp))
{
- std::cerr << "Invalid fru format during writeFru\n";
+ std::cerr << "Invalid fru format during writeFRU\n";
return false;
}
// baseboard fru
@@ -1386,7 +1388,7 @@
}
for (auto& device : *(found->second))
{
- AddFruObjectToDbus(device.second, dbusInterfaceMap,
+ AddFRUObjectToDbus(device.second, dbusInterfaceMap,
static_cast<uint32_t>(busNum), device.first);
}
});
@@ -1437,19 +1439,19 @@
UNKNOWN_BUS_OBJECT_COUNT = 0;
// todo, get this from a more sensable place
- std::vector<uint8_t> baseboardFru;
- if (readBaseboardFru(baseboardFru))
+ std::vector<uint8_t> baseboardFRU;
+ if (readBaseboardFRU(baseboardFRU))
{
boost::container::flat_map<int, std::vector<uint8_t>>
baseboardDev;
- baseboardDev.emplace(0, baseboardFru);
+ baseboardDev.emplace(0, baseboardFRU);
busmap[0] = std::make_shared<DeviceMap>(baseboardDev);
}
for (auto& devicemap : busmap)
{
for (auto& device : *devicemap.second)
{
- AddFruObjectToDbus(device.second, dbusInterfaceMap,
+ AddFRUObjectToDbus(device.second, dbusInterfaceMap,
devicemap.first, device.first);
}
}
@@ -1469,47 +1471,44 @@
// Update new fru area length &
// Update checksum at new checksum location
-static void updateFruAreaLenAndChecksum(std::vector<uint8_t>& fruData,
- size_t fruAreaStartOffset,
- size_t fruAreaNoMoreFieldOffset)
+static void updateFRUAreaLenAndChecksum(std::vector<uint8_t>& fruData,
+ size_t fruAreaStart,
+ size_t fruAreaEndOfFieldsOffset)
{
- constexpr size_t fruAreaMultipleBytes = 8;
- size_t traverseFruAreaIndex = fruAreaNoMoreFieldOffset - fruAreaStartOffset;
+ size_t traverseFRUAreaIndex = fruAreaEndOfFieldsOffset - fruAreaStart;
// fill zeros for any remaining unused space
- std::fill(fruData.begin() + fruAreaNoMoreFieldOffset, fruData.end(), 0);
+ std::fill(fruData.begin() + fruAreaEndOfFieldsOffset, fruData.end(), 0);
- size_t mod = traverseFruAreaIndex % fruAreaMultipleBytes;
+ size_t mod = traverseFRUAreaIndex % fruBlockSize;
size_t checksumLoc;
if (!mod)
{
- traverseFruAreaIndex += (fruAreaMultipleBytes);
- checksumLoc = fruAreaNoMoreFieldOffset + (fruAreaMultipleBytes - 1);
+ traverseFRUAreaIndex += (fruBlockSize);
+ checksumLoc = fruAreaEndOfFieldsOffset + (fruBlockSize - 1);
}
else
{
- traverseFruAreaIndex += (fruAreaMultipleBytes - mod);
- checksumLoc =
- fruAreaNoMoreFieldOffset + (fruAreaMultipleBytes - mod - 1);
+ traverseFRUAreaIndex += (fruBlockSize - mod);
+ checksumLoc = fruAreaEndOfFieldsOffset + (fruBlockSize - mod - 1);
}
- size_t newFruAreaLen = (traverseFruAreaIndex / fruAreaMultipleBytes) +
- ((traverseFruAreaIndex % fruAreaMultipleBytes) != 0);
- size_t fruAreaLengthLoc = fruAreaStartOffset + 1;
- fruData[fruAreaLengthLoc] = static_cast<uint8_t>(newFruAreaLen);
+ size_t newFRUAreaLen = (traverseFRUAreaIndex / fruBlockSize) +
+ ((traverseFRUAreaIndex % fruBlockSize) != 0);
+ size_t fruAreaLengthLoc = fruAreaStart + 1;
+ fruData[fruAreaLengthLoc] = static_cast<uint8_t>(newFRUAreaLen);
// Calculate new checksum
- std::vector<uint8_t> finalFruData;
- std::copy_n(fruData.begin() + fruAreaStartOffset,
- checksumLoc - fruAreaStartOffset,
- std::back_inserter(finalFruData));
+ std::vector<uint8_t> finalFRUData;
+ std::copy_n(fruData.begin() + fruAreaStart, checksumLoc - fruAreaStart,
+ std::back_inserter(finalFRUData));
- size_t checksumVal = calculateChecksum(finalFruData);
+ size_t checksumVal = calculateChecksum(finalFRUData);
fruData[checksumLoc] = static_cast<uint8_t>(checksumVal);
}
-static size_t getTypeLength(uint8_t fruFieldTypeLenValue)
+static size_t getFieldLength(uint8_t fruFieldTypeLenValue)
{
constexpr uint8_t typeLenMask = 0x3F;
return fruFieldTypeLenValue & typeLenMask;
@@ -1526,7 +1525,7 @@
// 4. Update the Asset Tag, reposition the product Info area in multiple of
// 8 bytes. Update the Product area length and checksum.
-bool updateFruProperty(
+bool updateFRUProperty(
const std::string& updatePropertyReq, uint32_t bus, uint32_t address,
std::string propertyName,
boost::container::flat_map<
@@ -1537,7 +1536,7 @@
if (updatePropertyReqLen == 1 || updatePropertyReqLen > 63)
{
std::cerr
- << "Fru field data cannot be of 1 char or more than 63 chars. "
+ << "FRU field data cannot be of 1 char or more than 63 chars. "
"Invalid Length "
<< updatePropertyReqLen << "\n";
return false;
@@ -1546,12 +1545,12 @@
std::vector<uint8_t> fruData;
try
{
- fruData = getFruInfo(static_cast<uint8_t>(bus),
+ fruData = getFRUInfo(static_cast<uint8_t>(bus),
static_cast<uint8_t>(address));
}
catch (std::invalid_argument& e)
{
- std::cerr << "Failure getting Fru Info" << e.what() << "\n";
+ std::cerr << "Failure getting FRU Info" << e.what() << "\n";
return false;
}
@@ -1560,9 +1559,8 @@
return false;
}
- const std::vector<const char*>* fieldData;
+ const std::vector<std::string>* fruAreaFieldNames;
- constexpr size_t commonHeaderMultipleBytes = 8; // in multiple of 8 bytes
uint8_t fruAreaOffsetFieldValue = 1;
size_t offset = 0;
@@ -1573,7 +1571,7 @@
offset = 3; // chassis part number offset. Skip fixed first 3 bytes
- fieldData = &CHASSIS_FRU_AREAS;
+ fruAreaFieldNames = &CHASSIS_FRU_AREAS;
}
else if (propertyName.find("BOARD") == 0)
{
@@ -1582,7 +1580,7 @@
offset = 6; // board manufacturer offset. Skip fixed first 6 bytes
- fieldData = &BOARD_FRU_AREAS;
+ fruAreaFieldNames = &BOARD_FRU_AREAS;
}
else if (propertyName.find("PRODUCT") == 0)
{
@@ -1593,63 +1591,62 @@
// Manufacturer name offset. Skip fixed first 3 product fru bytes i.e.
// version, area length and language code
- fieldData = &PRODUCT_FRU_AREAS;
+ fruAreaFieldNames = &PRODUCT_FRU_AREAS;
}
else
{
- std::cerr << "ProperyName doesn't exist in Fru Area Vector \n";
+ std::cerr << "ProperyName doesn't exist in FRU Area Vector \n";
return false;
}
- size_t fruAreaStartOffset =
- fruAreaOffsetFieldValue * commonHeaderMultipleBytes;
- size_t fruDataIter = fruAreaStartOffset + offset;
+ size_t fruAreaStart = fruAreaOffsetFieldValue * fruBlockSize;
+ size_t fruDataIter = fruAreaStart + offset;
size_t fruUpdateFieldLoc = 0;
- size_t typeLength;
- size_t skipToFruUpdateField = 0;
+ size_t fieldLength;
+ size_t skipToFRUUpdateField = 0;
- for (auto& field : *fieldData)
+ for (auto& field : *fruAreaFieldNames)
{
- skipToFruUpdateField++;
+ skipToFRUUpdateField++;
if (propertyName.find(field) != std::string::npos)
{
break;
}
}
- for (size_t i = 1; i < skipToFruUpdateField; i++)
+ for (size_t i = 1; i < skipToFRUUpdateField; i++)
{
- typeLength = getTypeLength(fruData[fruDataIter]);
- fruUpdateFieldLoc = fruDataIter + typeLength;
+ fieldLength = getFieldLength(fruData[fruDataIter]);
+ fruUpdateFieldLoc = fruDataIter + fieldLength;
fruDataIter = ++fruUpdateFieldLoc;
}
// Push post update fru field bytes to a vector
- typeLength = getTypeLength(fruData[fruUpdateFieldLoc]);
- size_t postFruUpdateFieldLoc = fruUpdateFieldLoc + typeLength;
- postFruUpdateFieldLoc++;
- skipToFruUpdateField++;
- fruDataIter = postFruUpdateFieldLoc;
- size_t endLengthLoc = 0;
+ fieldLength = getFieldLength(fruData[fruUpdateFieldLoc]);
+ size_t restFRUFieldsLoc = fruUpdateFieldLoc + fieldLength;
+ restFRUFieldsLoc++;
+ skipToFRUUpdateField++;
+ fruDataIter = restFRUFieldsLoc;
+ size_t endOfFieldsLoc = 0;
size_t fruFieldLoc = 0;
- constexpr uint8_t endLength = 0xC1;
+ constexpr uint8_t endOfFields = 0xC1;
for (size_t i = fruDataIter; i < fruData.size(); i++)
{
- typeLength = getTypeLength(fruData[fruDataIter]);
- fruFieldLoc = fruDataIter + typeLength;
+ fieldLength = getFieldLength(fruData[fruDataIter]);
+ fruFieldLoc = fruDataIter + fieldLength;
fruDataIter = ++fruFieldLoc;
- if (fruData[fruDataIter] == endLength)
+ if (fruData[fruDataIter] == endOfFields)
{
- endLengthLoc = fruDataIter;
+ endOfFieldsLoc = fruDataIter;
break;
}
}
- endLengthLoc++;
+ endOfFieldsLoc++;
- std::vector<uint8_t> postUpdatedFruData;
- std::copy_n(fruData.begin() + postFruUpdateFieldLoc,
- endLengthLoc - postFruUpdateFieldLoc,
- std::back_inserter(postUpdatedFruData));
+ std::vector<uint8_t> restFRUAreaFieldsData;
+ std::copy_n(fruData.begin() + restFRUFieldsLoc,
+ endOfFieldsLoc - restFRUFieldsLoc,
+ std::back_inserter(restFRUAreaFieldsData));
// write new requested property field length and data
constexpr uint8_t newTypeLenMask = 0xC0;
@@ -1660,28 +1657,28 @@
fruData.begin() + fruUpdateFieldLoc);
// Copy remaining data to main fru area - post updated fru field vector
- postFruUpdateFieldLoc = fruUpdateFieldLoc + updatePropertyReqLen;
- size_t fruAreaEndOffset = postFruUpdateFieldLoc + postUpdatedFruData.size();
- if (fruAreaEndOffset > fruData.size())
+ restFRUFieldsLoc = fruUpdateFieldLoc + updatePropertyReqLen;
+ size_t fruAreaDataEnd = restFRUFieldsLoc + restFRUAreaFieldsData.size();
+ if (fruAreaDataEnd > fruData.size())
{
- std::cerr << "Fru area offset: " << fruAreaEndOffset
- << "should not be greater than Fru data size: "
+ std::cerr << "FRU area offset: " << fruAreaDataEnd
+ << "should not be greater than FRU data size: "
<< fruData.size() << std::endl;
throw std::invalid_argument(
- "Fru area offset should not be greater than Fru data size");
+ "FRU area offset should not be greater than FRU data size");
}
- std::copy(postUpdatedFruData.begin(), postUpdatedFruData.end(),
- fruData.begin() + postFruUpdateFieldLoc);
+ std::copy(restFRUAreaFieldsData.begin(), restFRUAreaFieldsData.end(),
+ fruData.begin() + restFRUFieldsLoc);
// Update final fru with new fru area length and checksum
- updateFruAreaLenAndChecksum(fruData, fruAreaStartOffset, fruAreaEndOffset);
+ updateFRUAreaLenAndChecksum(fruData, fruAreaStart, fruAreaDataEnd);
if (fruData.empty())
{
return false;
}
- if (!writeFru(static_cast<uint8_t>(bus), static_cast<uint8_t>(address),
+ if (!writeFRU(static_cast<uint8_t>(bus), static_cast<uint8_t>(address),
fruData))
{
return false;
@@ -1726,12 +1723,12 @@
rescanOneBus(busMap, bus, dbusInterfaceMap, true);
});
- iface->register_method("GetRawFru", getFruInfo);
+ iface->register_method("GetRawFru", getFRUInfo);
iface->register_method("WriteFru", [&](const uint8_t bus,
const uint8_t address,
const std::vector<uint8_t>& data) {
- if (!writeFru(bus, address, data))
+ if (!writeFRU(bus, address, data))
{
throw std::invalid_argument("Invalid Arguments.");
return;