@@ -1212,16 +1212,6 @@ bool updateFruProperty(
12121212 " updateFruProperty called: FieldName = {NAME}, FieldValue = {VALUE}" ,
12131213 " NAME" , propertyName, " VALUE" , propertyValue);
12141214
1215- // Validate field length: must be 2–63 characters
1216- const size_t len = propertyValue.length ();
1217- if (len == 1 || len > 63 )
1218- {
1219- lg2::error (
1220- " FRU field data must be 0 or between 2 and 63 characters. Invalid Length: {LEN}" ,
1221- " LEN" , len);
1222- return false ;
1223- }
1224-
12251215 std::vector<uint8_t > fruData;
12261216 if (!getFruData (fruData, bus, address))
12271217 {
@@ -1230,69 +1220,12 @@ bool updateFruProperty(
12301220 return false ;
12311221 }
12321222
1233- if (fruData.empty ())
1234- {
1235- lg2::error (" Empty FRU data\n " );
1236- return false ;
1237- }
1238-
1239- // Extract area name (prefix before underscore)
1240- std::string areaName = propertyName.substr (0 , propertyName.find (' _' ));
1241- auto areaIterator =
1242- std::find (fruAreaNames.begin (), fruAreaNames.end (), areaName);
1243- if (areaIterator == fruAreaNames.end ())
1244- {
1245- lg2::error (" Failed to get FRU area for property: {AREA}" , " AREA" ,
1246- areaName);
1247- return false ;
1248- }
1249-
1250- fruAreas fruAreaToUpdate = static_cast <fruAreas>(
1251- std::distance (fruAreaNames.begin (), areaIterator));
1252-
1253- std::vector<std::vector<uint8_t >> areasData;
1254- if (!disassembleFruData (fruData, areasData))
1255- {
1256- lg2::error (" Failed to disassemble Fru Data" );
1257- return false ;
1258- }
1259-
1260- std::vector<uint8_t >& areaData =
1261- areasData[static_cast <size_t >(fruAreaToUpdate)];
1262- if (areaData.empty ())
1223+ bool success = updateAddProperty (propertyValue, propertyName, fruData);
1224+ if (!success)
12631225 {
1264- // If ENABLE_FRU_AREA_RESIZE is not defined then return with failure
1265- #ifndef ENABLE_FRU_AREA_RESIZE
12661226 lg2::error (
1267- " FRU area {AREA} not present and ENABLE_FRU_AREA_RESIZE is not set. "
1268- " Returning failure." ,
1269- " AREA" , areaName);
1270- return false ;
1271- #endif
1272- if (!createDummyArea (fruAreaToUpdate, areaData))
1273- {
1274- lg2::error (" Failed to create dummy area for {AREA}" , " AREA" ,
1275- areaName);
1276- return false ;
1277- }
1278- }
1279-
1280- if (!setField (fruAreaToUpdate, areaData, propertyName, propertyValue))
1281- {
1282- lg2::error (" Failed to set field value for property: {PROPERTY}" ,
1283- " PROPERTY" , propertyName);
1284- return false ;
1285- }
1286-
1287- if (!assembleFruData (fruData, areasData))
1288- {
1289- lg2::error (" Failed to reassemble FRU data" );
1290- return false ;
1291- }
1292-
1293- if (fruData.empty ())
1294- {
1295- lg2::error (" FRU data is empty after assembly" );
1227+ " Failed to update the property on bus {BUS}, address {ADDRESS}" ,
1228+ " BUS" , bus, " ADDRESS" , address);
12961229 return false ;
12971230 }
12981231
0 commit comments