From 5adb4421ef9b414f8f1df3e6df928942a3a4ebc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Wed, 17 Apr 2024 07:47:46 +0200 Subject: [PATCH] add build date --- examples/device/hid_cdc_passkey/src/date.h | 65 ++++++++++++++++++++++ examples/device/hid_cdc_passkey/src/main.c | 5 +- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 examples/device/hid_cdc_passkey/src/date.h diff --git a/examples/device/hid_cdc_passkey/src/date.h b/examples/device/hid_cdc_passkey/src/date.h new file mode 100644 index 000000000..6922b4e37 --- /dev/null +++ b/examples/device/hid_cdc_passkey/src/date.h @@ -0,0 +1,65 @@ +#pragma once + +/** build year as number */ +#define COMPUTE_BUILD_YEAR \ + ( \ + (__DATE__[ 7] - '0') * 1000 + \ + (__DATE__[ 8] - '0') * 100 + \ + (__DATE__[ 9] - '0') * 10 + \ + (__DATE__[10] - '0') \ + ) +/** build day as number */ +#define COMPUTE_BUILD_DAY \ + ( \ + ((__DATE__[4] >= '0') ? (__DATE__[4] - '0') * 10 : 0) + \ + (__DATE__[5] - '0') \ + ) +/** check if build month is January */ +#define BUILD_MONTH_IS_JAN (__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n') +/** check if build month is February */ +#define BUILD_MONTH_IS_FEB (__DATE__[0] == 'F') +/** check if build month is March */ +#define BUILD_MONTH_IS_MAR (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'r') +/** check if build month is April */ +#define BUILD_MONTH_IS_APR (__DATE__[0] == 'A' && __DATE__[1] == 'p') +/** check if build month is May */ +#define BUILD_MONTH_IS_MAY (__DATE__[0] == 'M' && __DATE__[1] == 'a' && __DATE__[2] == 'y') +/** check if build month is June */ +#define BUILD_MONTH_IS_JUN (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n') +/** check if build month is July */ +#define BUILD_MONTH_IS_JUL (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l') +/** check if build month is August */ +#define BUILD_MONTH_IS_AUG (__DATE__[0] == 'A' && __DATE__[1] == 'u') +/** check if build month is September */ +#define BUILD_MONTH_IS_SEP (__DATE__[0] == 'S') +/** check if build month is October */ +#define BUILD_MONTH_IS_OCT (__DATE__[0] == 'O') +/** check if build month is November */ +#define BUILD_MONTH_IS_NOV (__DATE__[0] == 'N') +/** check if build month is December */ +#define BUILD_MONTH_IS_DEC (__DATE__[0] == 'D') +/** build month as number */ +#define COMPUTE_BUILD_MONTH \ + ( \ + (BUILD_MONTH_IS_JAN) ? 1 : \ + (BUILD_MONTH_IS_FEB) ? 2 : \ + (BUILD_MONTH_IS_MAR) ? 3 : \ + (BUILD_MONTH_IS_APR) ? 4 : \ + (BUILD_MONTH_IS_MAY) ? 5 : \ + (BUILD_MONTH_IS_JUN) ? 6 : \ + (BUILD_MONTH_IS_JUL) ? 7 : \ + (BUILD_MONTH_IS_AUG) ? 8 : \ + (BUILD_MONTH_IS_SEP) ? 9 : \ + (BUILD_MONTH_IS_OCT) ? 10 : \ + (BUILD_MONTH_IS_NOV) ? 11 : \ + (BUILD_MONTH_IS_DEC) ? 12 : \ + /* error default */ 99 \ + ) +/** check if build date is unknown */ +#define BUILD_DATE_IS_BAD (__DATE__[0] == '?') +/** build year as number if known, or 0 if unknown */ +#define BUILD_YEAR ((BUILD_DATE_IS_BAD) ? 0 : COMPUTE_BUILD_YEAR) +/** build month as number if known, or 0 if unknown */ +#define BUILD_MONTH ((BUILD_DATE_IS_BAD) ? 99 : COMPUTE_BUILD_MONTH) +/** build day as number if known, or 0 if unknown */ +#define BUILD_DAY ((BUILD_DATE_IS_BAD) ? 99 : COMPUTE_BUILD_DAY) diff --git a/examples/device/hid_cdc_passkey/src/main.c b/examples/device/hid_cdc_passkey/src/main.c index 62bdeb414..2b6612db2 100644 --- a/examples/device/hid_cdc_passkey/src/main.c +++ b/examples/device/hid_cdc_passkey/src/main.c @@ -13,6 +13,7 @@ #include "usb_descriptors.h" #include "keylayouts.h" #include "WjCryptLib_Sha256.h" +#include "date.h" // get the length of an array #define LENGTH(x) (sizeof(x) / sizeof((x)[0])) @@ -266,7 +267,9 @@ int main(void) // init device stack on configured roothub port tud_init(BOARD_TUD_RHPORT); - printf("\r\npasskey v2\r\n"); + printf("\r\npasskey\r\n"); + printf("hardware version: 2\r\n"); // for now we just have version 2 + printf("firmware date: %04u-%02u-%02u\r\n", BUILD_YEAR, BUILD_MONTH, BUILD_DAY); // show firmware build date load_config(); FLASH_OBProgramInitTypeDef ob;