From 3d44514b24d3f4a519baedba3ca3a1eb8e9b14e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 30 Aug 2023 13:20:00 +0800 Subject: [PATCH] Board: support Json printing --- src/modules/board/board.c | 33 +++++++++++++++++++++++++++++++++ src/modules/board/board.h | 1 + 2 files changed, 34 insertions(+) diff --git a/src/modules/board/board.c b/src/modules/board/board.c index 7ec518c26..4c94ac3bd 100644 --- a/src/modules/board/board.c +++ b/src/modules/board/board.c @@ -86,3 +86,36 @@ void ffParseBoardJsonObject(FFBoardOptions* options, yyjson_val* module) ffPrintError(FF_BOARD_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key); } } + +void ffGenerateBoardJson(FF_MAYBE_UNUSED FFBoardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module) +{ + FFBoardResult board; + ffStrbufInit(&board.name); + ffStrbufInit(&board.vendor); + ffStrbufInit(&board.version); + + const char* error = ffDetectBoard(&board); + + if (error) + { + yyjson_mut_obj_add_str(doc, module, "error", error); + goto exit; + } + + if (board.name.length == 0) + { + yyjson_mut_obj_add_str(doc, module, "error", "board_name is not set."); + goto exit; + } + + yyjson_mut_val* obj = yyjson_mut_obj(doc); + yyjson_mut_obj_add_val(doc, module, "result", obj); + 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); + +exit: + ffStrbufDestroy(&board.name); + ffStrbufDestroy(&board.vendor); + ffStrbufDestroy(&board.version); +} diff --git a/src/modules/board/board.h b/src/modules/board/board.h index f5531368e..0e1dabbab 100644 --- a/src/modules/board/board.h +++ b/src/modules/board/board.h @@ -9,3 +9,4 @@ void ffInitBoardOptions(FFBoardOptions* options); bool ffParseBoardCommandOptions(FFBoardOptions* options, const char* key, const char* value); void ffDestroyBoardOptions(FFBoardOptions* options); void ffParseBoardJsonObject(FFBoardOptions* options, yyjson_val* module); +void ffGenerateBoardJson(FFBoardOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module);