Add reusable firmware info module
This commit is contained in:
48
c/firmware-info/include/firmware_info.h
Normal file
48
c/firmware-info/include/firmware_info.h
Normal file
@@ -0,0 +1,48 @@
|
||||
#ifndef FIRMWARE_INFO_H
|
||||
#define FIRMWARE_INFO_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define FIRMWARE_INFO_CONTRACT_VERSION 1U
|
||||
#define FIRMWARE_INFO_REGISTER_COUNT 12U
|
||||
#define FIRMWARE_INFO_PAYLOAD_SIZE (FIRMWARE_INFO_REGISTER_COUNT * 2U)
|
||||
#define FIRMWARE_INFO_BUILD_ID_SIZE 8U
|
||||
|
||||
typedef struct {
|
||||
uint16_t major;
|
||||
uint16_t minor;
|
||||
uint16_t patch;
|
||||
uint16_t year;
|
||||
uint8_t month;
|
||||
uint8_t day;
|
||||
uint8_t hour;
|
||||
uint8_t minute;
|
||||
uint8_t second;
|
||||
char build_id[FIRMWARE_INFO_BUILD_ID_SIZE + 1U];
|
||||
} firmware_info_t;
|
||||
|
||||
typedef enum {
|
||||
FIRMWARE_INFO_OK = 0,
|
||||
FIRMWARE_INFO_INVALID_ARGUMENT,
|
||||
FIRMWARE_INFO_OUT_OF_RANGE
|
||||
} firmware_info_status_t;
|
||||
|
||||
firmware_info_status_t firmware_info_validate(const firmware_info_t *info);
|
||||
firmware_info_status_t firmware_info_parse_build_stamp(
|
||||
const char *date_text, const char *time_text, firmware_info_t *info);
|
||||
firmware_info_status_t firmware_info_set_build_id(
|
||||
firmware_info_t *info, const char *build_id);
|
||||
firmware_info_status_t firmware_info_to_registers(
|
||||
const firmware_info_t *info, uint16_t *registers, size_t count);
|
||||
firmware_info_status_t firmware_info_to_le_bytes(
|
||||
const firmware_info_t *info, uint8_t *payload, size_t size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
18
c/firmware-info/include/firmware_info_port.h
Normal file
18
c/firmware-info/include/firmware_info_port.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef FIRMWARE_INFO_PORT_H
|
||||
#define FIRMWARE_INFO_PORT_H
|
||||
|
||||
#include "firmware_info.h"
|
||||
|
||||
/* Include-path selects one MCU project configuration named firmware_info_config.h. */
|
||||
#include "firmware_info_config.h"
|
||||
|
||||
#ifndef FIRMWARE_VERSION_PATCH
|
||||
#define FIRMWARE_VERSION_PATCH 0U
|
||||
#endif
|
||||
#ifndef FIRMWARE_BUILD_ID
|
||||
#define FIRMWARE_BUILD_ID "LOCALDEV"
|
||||
#endif
|
||||
|
||||
firmware_info_status_t firmware_info_port_describe(firmware_info_t *info);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user