Files
templates/c/firmware-info/src/firmware_info_port.c

28 lines
1.3 KiB
C

/*
* Заполнение описания прошивки из макросов конфигурации конкретного MCU-проекта. Заголовок
* firmware_info_config.h выбирается путями включения; общая библиотека не должна содержать
* версию чужого приложения.
*/
#include "firmware_info_port.h"
firmware_info_status_t firmware_info_port_describe(firmware_info_t *info)
{
firmware_info_status_t status;
if (info == NULL) return FIRMWARE_INFO_INVALID_ARGUMENT;
info->major = (uint16_t)FIRMWARE_VERSION_MAJOR;
info->minor = (uint16_t)FIRMWARE_VERSION_MINOR;
info->patch = (uint16_t)FIRMWARE_VERSION_PATCH;
status = firmware_info_set_build_id(info, FIRMWARE_BUILD_ID);
if (status != FIRMWARE_INFO_OK) return status;
#ifdef FI_YEAR
/* New build pipeline: use the same UTC stamp as the static port/manifest.
* Existing consumers of make_build_id.ps1 keep their compiler-local stamp. */
info->year = FI_YEAR; info->month = FI_MONTH; info->day = FI_DAY;
info->hour = FI_HOUR; info->minute = FI_MINUTE; info->second = FI_SECOND;
return firmware_info_validate(info);
#else
return firmware_info_parse_build_stamp(__DATE__, __TIME__, info);
#endif
}