Board: detect serial number

This commit is contained in:
李通洲
2024-01-06 18:12:51 +08:00
parent 640fa146c1
commit c0c32456e8
6 changed files with 16 additions and 2 deletions
+1
View File
@@ -7,6 +7,7 @@ typedef struct FFBoardResult
FFstrbuf name;
FFstrbuf vendor;
FFstrbuf version;
FFstrbuf serial;
} FFBoardResult;
const char* ffDetectBoard(FFBoardResult* board);
+2
View File
@@ -6,6 +6,8 @@ const char* ffDetectBoard(FFBoardResult* result)
{
ffSettingsGetFreeBSDKenv("smbios.planar.product", &result->name);
ffCleanUpSmbiosValue(&result->name);
ffSettingsGetFreeBSDKenv("smbios.planar.serial", &result->serial);
ffCleanUpSmbiosValue(&result->serial);
ffSettingsGetFreeBSDKenv("smbios.planar.maker", &result->vendor);
ffCleanUpSmbiosValue(&result->vendor);
ffSettingsGetFreeBSDKenv("smbios.planar.version", &result->version);
+1
View File
@@ -7,6 +7,7 @@
const char* ffDetectBoard(FFBoardResult* board)
{
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_name", "/sys/class/dmi/id/board_name", &board->name);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_serial", "/sys/class/dmi/id/board_serial", &board->serial);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_vendor", "/sys/class/dmi/id/board_vendor", &board->vendor);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/board_version", "/sys/class/dmi/id/board_version", &board->version);
return NULL;
+2
View File
@@ -28,6 +28,8 @@ const char* ffDetectBoard(FFBoardResult* board)
ffStrbufSetStatic(&board->name, ffSmbiosLocateString(strings, data->Product));
ffCleanUpSmbiosValue(&board->name);
ffStrbufSetStatic(&board->serial, ffSmbiosLocateString(strings, data->SerialNumber));
ffCleanUpSmbiosValue(&board->serial);
ffStrbufSetStatic(&board->vendor, ffSmbiosLocateString(strings, data->Manufacturer));
ffCleanUpSmbiosValue(&board->vendor);
ffStrbufSetStatic(&board->version, ffSmbiosLocateString(strings, data->Version));
+9 -2
View File
@@ -12,8 +12,9 @@ void ffPrintBoard(FFBoardOptions* options)
ffStrbufInit(&result.name);
ffStrbufInit(&result.vendor);
ffStrbufInit(&result.version);
const char* error = ffDetectBoard(&result);
ffStrbufInit(&result.serial);
const char* error = ffDetectBoard(&result);
if(error)
{
ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "%s", error);
@@ -40,6 +41,7 @@ void ffPrintBoard(FFBoardOptions* options)
{FF_FORMAT_ARG_TYPE_STRBUF, &result.name},
{FF_FORMAT_ARG_TYPE_STRBUF, &result.vendor},
{FF_FORMAT_ARG_TYPE_STRBUF, &result.version},
{FF_FORMAT_ARG_TYPE_STRBUF, &result.serial},
});
}
@@ -47,6 +49,7 @@ exit:
ffStrbufDestroy(&result.name);
ffStrbufDestroy(&result.vendor);
ffStrbufDestroy(&result.version);
ffStrbufDestroy(&result.serial);
}
bool ffParseBoardCommandOptions(FFBoardOptions* options, const char* key, const char* value)
@@ -90,6 +93,7 @@ void ffGenerateBoardJsonResult(FF_MAYBE_UNUSED FFBoardOptions* options, yyjson_m
ffStrbufInit(&board.name);
ffStrbufInit(&board.vendor);
ffStrbufInit(&board.version);
ffStrbufInit(&board.serial);
const char* error = ffDetectBoard(&board);
@@ -109,11 +113,13 @@ void ffGenerateBoardJsonResult(FF_MAYBE_UNUSED FFBoardOptions* options, yyjson_m
yyjson_mut_obj_add_strbuf(doc, obj, "name", &board.name);
yyjson_mut_obj_add_strbuf(doc, obj, "vendor", &board.vendor);
yyjson_mut_obj_add_strbuf(doc, obj, "version", &board.version);
yyjson_mut_obj_add_strbuf(doc, obj, "serial", &board.serial);
exit:
ffStrbufDestroy(&board.name);
ffStrbufDestroy(&board.vendor);
ffStrbufDestroy(&board.version);
ffStrbufDestroy(&board.serial);
}
void ffPrintBoardHelpFormat(void)
@@ -121,7 +127,8 @@ void ffPrintBoardHelpFormat(void)
ffPrintModuleFormatHelp(FF_BOARD_MODULE_NAME, "{1} ({3})", FF_BOARD_NUM_FORMAT_ARGS, (const char* []) {
"board name",
"board vendor",
"board version"
"board version",
"board serial number",
});
}
+1
View File
@@ -23,6 +23,7 @@ bool ffIsSmbiosValueSet(FFstrbuf* value)
!ffStrbufIgnCaseEqualS(value, "Not Available") &&
!ffStrbufIgnCaseEqualS(value, "INVALID") &&
!ffStrbufIgnCaseEqualS(value, "Type1ProductConfigId") &&
!ffStrbufIgnCaseEqualS(value, "No Enclosure") &&
!ffStrbufIgnCaseEqualS(value, "All Series") &&
!ffStrbufIgnCaseEqualS(value, "N/A")
;