unleashed-firmware/lib/toolbox/version.c
hedger 241b4ef6e4
[FL-3299] furi_crash: added C2 status; added fw-version gdb command (#2638)
* furi_crash: added C2 status
* debug: Added "fw-version" gdb command; vscode: updated configuration to use new command
* debug: added fw-info command to debug_other session
* Toolbox: versioned structure for Version
* debug: fw-version: no longer needs an ELF file loaded
* debug: flipperversion: removed unused variable
* debug_other: print running fw version

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-05-09 07:31:39 +09:00

74 lines
1.7 KiB
C

#include "version.h"
#include <furi.h>
/* This header is autogenerated by build system */
#include "version.inc.h"
#define VERSION_MAGIC (0xBE40u)
#define VERSION_MAJOR (0x1u)
#define VERSION_MINOR (0x0u)
struct Version {
// Header
const uint16_t magic;
const uint8_t major;
const uint8_t minor;
// Payload
const char* git_hash;
const char* git_branch;
const char* build_date;
const char* version;
// Payload bits and pieces
const uint8_t target;
const bool build_is_dirty;
};
/* version of current running firmware (bootloader/flipper) */
static const Version version = {
.magic = VERSION_MAGIC,
.major = VERSION_MAJOR,
.minor = VERSION_MINOR,
.git_hash = GIT_COMMIT,
.git_branch = GIT_BRANCH,
.build_date = BUILD_DATE,
.version = VERSION
#ifdef FURI_RAM_EXEC
" (RAM)"
#endif
,
.target = TARGET,
.build_is_dirty = BUILD_DIRTY,
};
const Version* version_get(void) {
return &version;
}
const char* version_get_githash(const Version* v) {
return v ? v->git_hash : version.git_hash;
}
const char* version_get_gitbranch(const Version* v) {
return v ? v->git_branch : version.git_branch;
}
const char* version_get_gitbranchnum(const Version* v) {
UNUSED(v);
return "0";
}
const char* version_get_builddate(const Version* v) {
return v ? v->build_date : version.build_date;
}
const char* version_get_version(const Version* v) {
return v ? v->version : version.version;
}
uint8_t version_get_target(const Version* v) {
return v ? v->target : version.target;
}
bool version_get_dirty_flag(const Version* v) {
return v ? v->build_is_dirty : version.build_is_dirty;
}