[FL-1961] Cli: device_info format versioning. Detach target from firmware name. #765

This commit is contained in:
あく 2021-10-16 14:25:32 +03:00 committed by GitHub
parent 0e14545d48
commit 2255060d52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 79 additions and 52 deletions

View File

@ -110,7 +110,7 @@ static DialogMessageButton fw_version_screen(DialogsApp* dialogs, DialogMessage*
} else { } else {
string_cat_printf( string_cat_printf(
buffer, buffer,
"%s [%s]\n%s [%s]\n[%s] %s", "%s [%s]\n%s [%s]\n[%d] %s",
version_get_version(ver), version_get_version(ver),
version_get_builddate(ver), version_get_builddate(ver),
version_get_githash(ver), version_get_githash(ver),
@ -140,7 +140,7 @@ static DialogMessageButton boot_version_screen(DialogsApp* dialogs, DialogMessag
} else { } else {
string_cat_printf( string_cat_printf(
buffer, buffer,
"%s [%s]\n%s [%s]\n[%s] %s", "%s [%s]\n%s [%s]\n[%d] %s",
version_get_version(ver), version_get_version(ver),
version_get_builddate(ver), version_get_builddate(ver),
version_get_githash(ver), version_get_githash(ver),

View File

@ -55,6 +55,9 @@ static const uint8_t enclave_signature_expected[ENCLAVE_SIGNATURE_KEY_SLOTS][ENC
* Keys and values format MUST NOT BE changed * Keys and values format MUST NOT BE changed
*/ */
void cli_command_device_info(Cli* cli, string_t args, void* context) { void cli_command_device_info(Cli* cli, string_t args, void* context) {
// Device Info version
printf("device_info_major : %d\r\n", 1);
printf("device_info_minor : %d\r\n", 0);
// Model name // Model name
printf("hardware_model : %s\r\n", furi_hal_version_get_model_name()); printf("hardware_model : %s\r\n", furi_hal_version_get_model_name());
@ -88,21 +91,23 @@ void cli_command_device_info(Cli* cli, string_t args, void* context) {
// Bootloader Version // Bootloader Version
const Version* boot_version = furi_hal_version_get_boot_version(); const Version* boot_version = furi_hal_version_get_boot_version();
if(boot_version) { if(boot_version) {
printf("boot_version : %s\r\n", version_get_version(boot_version));
printf("boot_target : %s\r\n", version_get_target(boot_version));
printf("boot_commit : %s\r\n", version_get_githash(boot_version)); printf("boot_commit : %s\r\n", version_get_githash(boot_version));
printf("boot_branch : %s\r\n", version_get_gitbranch(boot_version)); printf("boot_branch : %s\r\n", version_get_gitbranch(boot_version));
printf("boot_branch_num : %s\r\n", version_get_gitbranchnum(boot_version));
printf("boot_version : %s\r\n", version_get_version(boot_version));
printf("boot_build_date : %s\r\n", version_get_builddate(boot_version)); printf("boot_build_date : %s\r\n", version_get_builddate(boot_version));
printf("boot_target : %d\r\n", version_get_target(boot_version));
} }
// Firmware version // Firmware version
const Version* firmware_version = furi_hal_version_get_firmware_version(); const Version* firmware_version = furi_hal_version_get_firmware_version();
if(firmware_version) { if(firmware_version) {
printf("firmware_version : %s\r\n", version_get_version(firmware_version));
printf("firmware_target : %s\r\n", version_get_target(firmware_version));
printf("firmware_commit : %s\r\n", version_get_githash(firmware_version)); printf("firmware_commit : %s\r\n", version_get_githash(firmware_version));
printf("firmware_branch : %s\r\n", version_get_gitbranch(firmware_version)); printf("firmware_branch : %s\r\n", version_get_gitbranch(firmware_version));
printf("firmware_branch_num : %s\r\n", version_get_gitbranchnum(firmware_version));
printf("firmware_version : %s\r\n", version_get_version(firmware_version));
printf("firmware_build_date : %s\r\n", version_get_builddate(firmware_version)); printf("firmware_build_date : %s\r\n", version_get_builddate(firmware_version));
printf("firmware_target : %d\r\n", version_get_target(firmware_version));
} }
WirelessFwInfo_t pWirelessInfo; WirelessFwInfo_t pWirelessInfo;

View File

@ -15,8 +15,9 @@ void desktop_scene_hw_mismatch_on_enter(void* context) {
snprintf( snprintf(
buffer, buffer,
sizeof(buffer), sizeof(buffer),
"HW target: F%d\nFW target: " TARGET, "HW target: %d\nFW target: %d",
furi_hal_version_get_hw_target()); furi_hal_version_get_hw_target(),
version_get_target(NULL));
popup_set_context(popup, desktop); popup_set_context(popup, desktop);
popup_set_header(popup, "!!!! HW Mismatch !!!!", 60, 14, AlignCenter, AlignCenter); popup_set_header(popup, "!!!! HW Mismatch !!!!", 60, 14, AlignCenter, AlignCenter);
popup_set_text(popup, buffer, 60, 37, AlignCenter, AlignCenter); popup_set_text(popup, buffer, 60, 37, AlignCenter, AlignCenter);

View File

@ -67,7 +67,7 @@ void desktop_debug_render(Canvas* canvas, void* model) {
canvas_draw_str(canvas, 5, 43, buffer); canvas_draw_str(canvas, 5, 43, buffer);
snprintf( snprintf(
buffer, sizeof(buffer), "[%s] %s", version_get_target(ver), version_get_gitbranch(ver)); buffer, sizeof(buffer), "[%d] %s", version_get_target(ver), version_get_gitbranch(ver));
canvas_draw_str(canvas, 5, 54, buffer); canvas_draw_str(canvas, 5, 54, buffer);
} else { } else {

View File

@ -12,6 +12,8 @@ MCU_FLAGS = -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard
CFLAGS += $(MCU_FLAGS) $(BOOT_CFLAGS) -DSTM32WB55xx -Wall -fdata-sections -ffunction-sections CFLAGS += $(MCU_FLAGS) $(BOOT_CFLAGS) -DSTM32WB55xx -Wall -fdata-sections -ffunction-sections
LDFLAGS += $(MCU_FLAGS) -specs=nosys.specs -specs=nano.specs LDFLAGS += $(MCU_FLAGS) -specs=nosys.specs -specs=nano.specs
HARDWARE_TARGET = 6
CUBE_DIR = $(PROJECT_ROOT)/lib/STM32CubeWB CUBE_DIR = $(PROJECT_ROOT)/lib/STM32CubeWB
# ST HAL # ST HAL

View File

@ -12,6 +12,8 @@ MCU_FLAGS = -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard
CFLAGS += $(MCU_FLAGS) $(BOOT_CFLAGS) -DSTM32WB55xx -Wall -fdata-sections -ffunction-sections CFLAGS += $(MCU_FLAGS) $(BOOT_CFLAGS) -DSTM32WB55xx -Wall -fdata-sections -ffunction-sections
LDFLAGS += $(MCU_FLAGS) -specs=nosys.specs -specs=nano.specs LDFLAGS += $(MCU_FLAGS) -specs=nosys.specs -specs=nano.specs
HARDWARE_TARGET = 7
CUBE_DIR = $(PROJECT_ROOT)/lib/STM32CubeWB CUBE_DIR = $(PROJECT_ROOT)/lib/STM32CubeWB
# ST HAL # ST HAL

View File

@ -57,3 +57,11 @@
#ifndef ALIGN #ifndef ALIGN
#define ALIGN(n) __attribute__((aligned(n))) #define ALIGN(n) __attribute__((aligned(n)))
#endif #endif
#ifndef STRINGIFY
#define STRINGIFY(x) #x
#endif
#ifndef TOSTRING
#define TOSTRING(x) STRINGIFY(x)
#endif

View File

@ -18,7 +18,7 @@ static DevInfoSvc* dev_info_svc = NULL;
static const char dev_info_man_name[] = "Flipper Devices Inc."; static const char dev_info_man_name[] = "Flipper Devices Inc.";
static const char dev_info_serial_num[] = "1.0"; static const char dev_info_serial_num[] = "1.0";
static const char dev_info_firmware_rev_num[] = TARGET; static const char dev_info_firmware_rev_num[] = TOSTRING(TARGET);
static const char dev_info_software_rev_num[] = GIT_COMMIT " " GIT_BRANCH " " GIT_BRANCH_NUM " " BUILD_DATE; static const char dev_info_software_rev_num[] = GIT_COMMIT " " GIT_BRANCH " " GIT_BRANCH_NUM " " BUILD_DATE;
void dev_info_svc_start() { void dev_info_svc_start() {

View File

@ -24,6 +24,8 @@ LDFLAGS += $(MCU_FLAGS) -specs=nosys.specs -specs=nano.specs
CPPFLAGS += -fno-rtti -fno-use-cxa-atexit -fno-exceptions CPPFLAGS += -fno-rtti -fno-use-cxa-atexit -fno-exceptions
LDFLAGS += -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group LDFLAGS += -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group
HARDWARE_TARGET = 6
MXPROJECT_DIR = $(TARGET_DIR) MXPROJECT_DIR = $(TARGET_DIR)
# Entry Point # Entry Point

View File

@ -18,7 +18,7 @@ static DevInfoSvc* dev_info_svc = NULL;
static const char dev_info_man_name[] = "Flipper Devices Inc."; static const char dev_info_man_name[] = "Flipper Devices Inc.";
static const char dev_info_serial_num[] = "1.0"; static const char dev_info_serial_num[] = "1.0";
static const char dev_info_firmware_rev_num[] = TARGET; static const char dev_info_firmware_rev_num[] = TOSTRING(TARGET);
static const char dev_info_software_rev_num[] = GIT_COMMIT " " GIT_BRANCH " " GIT_BRANCH_NUM " " BUILD_DATE; static const char dev_info_software_rev_num[] = GIT_COMMIT " " GIT_BRANCH " " GIT_BRANCH_NUM " " BUILD_DATE;
void dev_info_svc_start() { void dev_info_svc_start() {

View File

@ -24,6 +24,8 @@ LDFLAGS += $(MCU_FLAGS) -specs=nosys.specs -specs=nano.specs
CPPFLAGS += -fno-rtti -fno-use-cxa-atexit -fno-exceptions CPPFLAGS += -fno-rtti -fno-use-cxa-atexit -fno-exceptions
LDFLAGS += -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group LDFLAGS += -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group
HARDWARE_TARGET = 7
MXPROJECT_DIR = $(TARGET_DIR) MXPROJECT_DIR = $(TARGET_DIR)
# Entry Point # Entry Point

View File

@ -6,7 +6,7 @@ struct Version {
const char* git_branch_num; const char* git_branch_num;
const char* build_date; const char* build_date;
const char* version; const char* version;
const char* target; const uint8_t target;
}; };
/* version of current running firmware (bootloader/flipper) */ /* version of current running firmware (bootloader/flipper) */
@ -44,7 +44,7 @@ const char* version_get_version(const Version* v) {
return v ? v->version : version.version; return v ? v->version : version.version;
} }
const char* version_get_target(const Version* v) { const uint8_t version_get_target(const Version* v) {
return v ? v->target : version.target; return v ? v->target : version.target;
} }

View File

@ -1,71 +1,76 @@
#pragma once #pragma once
#include <stdint.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
typedef struct Version Version; typedef struct Version Version;
/** /** Get current running firmware version handle.
* Gets current running firmware version handle. *
* You can store it somewhere. But if you want to retrieve data, * You can store it somewhere. But if you want to retrieve data, you have to use
* you have to use 'version_*_get()' set of functions. * 'version_*_get()' set of functions. Also, 'version_*_get()' imply to use this
* Also, 'version_*_get()' imply to use this
* handle if no handle (NULL_PTR) provided. * handle if no handle (NULL_PTR) provided.
* *
* @return Handle to version data. * @return pointer to Version data.
*/ */
const Version* version_get(void); const Version* version_get(void);
/** /** Get git commit hash.
* Gets git hash of build commit.
* *
* @param v - ptr to version handle. If zero - gets current running fw info. * @param v pointer to Version data. NULL for currently running
* @return git hash * software.
*
* @return git hash
*/ */
const char* version_get_githash(const Version* v); const char* version_get_githash(const Version* v);
/** /** Get git branch.
* Gets git branch of build commit.
* *
* @param v - ptr to version handle. If zero - gets current running fw info. * @param v pointer to Version data. NULL for currently running
* @return git branch * software.
*
* @return git branch
*/ */
const char* version_get_gitbranch(const Version* v); const char* version_get_gitbranch(const Version* v);
/** /** Get number of commit in git branch.
* Gets git number of build commit.
* *
* @param v - ptr to version handle. If zero - gets current running fw info. * @param v pointer to Version data. NULL for currently running
* @return number of commit * software.
*
* @return number of commit
*/ */
const char* version_get_gitbranchnum(const Version* v); const char* version_get_gitbranchnum(const Version* v);
/** /** Get build date.
* Gets build date.
* *
* @param v - ptr to version handle. If zero - gets current running fw info. * @param v pointer to Version data. NULL for currently running
* @return build date * software.
*
* @return build date
*/ */
const char* version_get_builddate(const Version* v); const char* version_get_builddate(const Version* v);
/** /** Get build version. Build version is last tag in git history.
* Gets build version.
* Build version is last tag in git history.
* *
* @param v - ptr to version handle. If zero - gets current running fw info. * @param v pointer to Version data. NULL for currently running
* @return build date * software.
*
* @return build date
*/ */
const char* version_get_version(const Version* v); const char* version_get_version(const Version* v);
/** /** Get hardware target this firmware was built for
* Gets firmware target.
* Build version is last tag for build commit.
* *
* @param v - ptr to version handle. If zero - gets current running fw info. * @param v pointer to Version data. NULL for currently running
* @return build date * software.
*
* @return build date
*/ */
const char* version_get_target(const Version* v); const uint8_t version_get_target(const Version* v);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -5,9 +5,9 @@ BUILD_DATE := $(shell date '+%d-%m-%Y' || echo 'unknown')
VERSION := $(shell git describe --tags --abbrev=0 --exact-match || echo 'unknown') VERSION := $(shell git describe --tags --abbrev=0 --exact-match || echo 'unknown')
CFLAGS += \ CFLAGS += \
-DGIT_COMMIT="\"$(GIT_COMMIT)\"" \ -DGIT_COMMIT=\"$(GIT_COMMIT)\" \
-DGIT_BRANCH="\"$(GIT_BRANCH)\"" \ -DGIT_BRANCH=\"$(GIT_BRANCH)\" \
-DGIT_BRANCH_NUM="\"$(GIT_BRANCH_NUM)\"" \ -DGIT_BRANCH_NUM=\"$(GIT_BRANCH_NUM)\" \
-DBUILD_DATE="\"$(BUILD_DATE)\"" \ -DBUILD_DATE=\"$(BUILD_DATE)\" \
-DTARGET="\"$(TARGET)\"" \ -DVERSION=\"$(VERSION)\" \
-DVERSION="\"$(VERSION)\"" -DTARGET=$(HARDWARE_TARGET)