forked from Archive/PX4-Autopilot
PX4:ver Add base type compare
This commit is contained in:
parent
5909dd09f5
commit
c4e8faeacb
|
@ -51,6 +51,9 @@
|
||||||
static const char sz_ver_hw_str[] = "hw";
|
static const char sz_ver_hw_str[] = "hw";
|
||||||
static const char sz_ver_hwcmp_str[] = "hwcmp";
|
static const char sz_ver_hwcmp_str[] = "hwcmp";
|
||||||
static const char sz_ver_hwtypecmp_str[] = "hwtypecmp";
|
static const char sz_ver_hwtypecmp_str[] = "hwtypecmp";
|
||||||
|
#if defined(BOARD_HAS_HW_SPLIT_VERSIONING)
|
||||||
|
static const char sz_ver_hwbasecmp_str[] = "hwbasecmp";
|
||||||
|
#endif
|
||||||
static const char sz_ver_git_str[] = "git";
|
static const char sz_ver_git_str[] = "git";
|
||||||
static const char sz_ver_bdate_str[] = "bdate";
|
static const char sz_ver_bdate_str[] = "bdate";
|
||||||
static const char sz_ver_buri_str[] = "uri";
|
static const char sz_ver_buri_str[] = "uri";
|
||||||
|
@ -84,6 +87,11 @@ static void usage(const char *reason)
|
||||||
PRINT_MODULE_USAGE_COMMAND_DESCR("hwtypecmp", "Compare hardware type (returns 0 on match)");
|
PRINT_MODULE_USAGE_COMMAND_DESCR("hwtypecmp", "Compare hardware type (returns 0 on match)");
|
||||||
PRINT_MODULE_USAGE_ARG("<hwtype> [<hwtype2>]",
|
PRINT_MODULE_USAGE_ARG("<hwtype> [<hwtype2>]",
|
||||||
"Hardware type to compare against (eg. V2). An OR comparison is used if multiple are specified", false);
|
"Hardware type to compare against (eg. V2). An OR comparison is used if multiple are specified", false);
|
||||||
|
#if defined(BOARD_HAS_HW_SPLIT_VERSIONING)
|
||||||
|
PRINT_MODULE_USAGE_COMMAND_DESCR("hwbasecmp", "Compare hardware base (returns 0 on match)");
|
||||||
|
PRINT_MODULE_USAGE_ARG("<hwbase> [<hwbase2>]",
|
||||||
|
"Hardware type to compare against (eg. V2). An OR comparison is used if multiple are specified", false);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" __EXPORT int ver_main(int argc, char *argv[])
|
extern "C" __EXPORT int ver_main(int argc, char *argv[])
|
||||||
|
@ -129,12 +137,50 @@ extern "C" __EXPORT int ver_main(int argc, char *argv[])
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(BOARD_HAS_HW_SPLIT_VERSIONING)
|
||||||
|
|
||||||
|
if (!strncmp(argv[1], sz_ver_hwbasecmp_str, sizeof(sz_ver_hwbasecmp_str))) {
|
||||||
|
if (argc >= 3 && argv[2] != nullptr) {
|
||||||
|
const char *board_type = px4_board_base_type();
|
||||||
|
|
||||||
|
for (int i = 2; i < argc; ++i) {
|
||||||
|
if (strcmp(board_type, argv[i]) == 0) {
|
||||||
|
return 0; // if one of the arguments match, return success
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
PX4_ERR("Not enough arguments, try 'ver hwbasecmp {000...999}[1:*]'");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
/* check if we want to show all */
|
/* check if we want to show all */
|
||||||
bool show_all = !strncmp(argv[1], sz_ver_all_str, sizeof(sz_ver_all_str));
|
bool show_all = !strncmp(argv[1], sz_ver_all_str, sizeof(sz_ver_all_str));
|
||||||
|
|
||||||
if (show_all || !strncmp(argv[1], sz_ver_hw_str, sizeof(sz_ver_hw_str))) {
|
if (show_all || !strncmp(argv[1], sz_ver_hw_str, sizeof(sz_ver_hw_str))) {
|
||||||
PX4_INFO_RAW("HW arch: %s\n", px4_board_name());
|
PX4_INFO_RAW("HW arch: %s\n", px4_board_name());
|
||||||
#if defined(BOARD_HAS_VERSIONING)
|
|
||||||
|
#if defined(BOARD_HAS_HW_SPLIT_VERSIONING)
|
||||||
|
char sbase[14] = "NA";
|
||||||
|
char sfmum[14] = "NA";
|
||||||
|
int base = GET_HW_BASE_ID();
|
||||||
|
int fmu = GET_HW_FMUM_ID();
|
||||||
|
|
||||||
|
if (base >= 0) {
|
||||||
|
snprintf(sbase, sizeof(sbase), "0x%0" STRINGIFY(HW_INFO_VER_DIGITS) "X", base);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fmu >= 0) {
|
||||||
|
snprintf(sfmum, sizeof(sfmum), "0x%0" STRINGIFY(HW_INFO_REV_DIGITS) "X", fmu);
|
||||||
|
}
|
||||||
|
|
||||||
|
PX4_INFO_RAW("HW type: %s\n", strlen(HW_INFO_INIT_PREFIX) ? HW_INFO_INIT_PREFIX : "NA");
|
||||||
|
PX4_INFO_RAW("HW FMUM ID: %s\n", sfmum);
|
||||||
|
PX4_INFO_RAW("HW BASE ID: %s\n", sbase);
|
||||||
|
#elif defined(BOARD_HAS_VERSIONING)
|
||||||
char vb[14] = "NA";
|
char vb[14] = "NA";
|
||||||
char rb[14] = "NA";
|
char rb[14] = "NA";
|
||||||
int v = px4_board_hw_version();
|
int v = px4_board_hw_version();
|
||||||
|
|
Loading…
Reference in New Issue