blob: b0f3a8935c6c8505f24b207c64d2261bcad330f6 [file] [log] [blame]
/*
* Copyright (c) 2019,2020 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/zephyr.h>
#include "psa/error.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief The struct used to persist config data to secure storage.
*
* The first 6 bytes of this struct should remain consistent in any future
* firmware updates, since they can be used to identify to layout of the rest
* of the struct in cases where config data version management becomes
* a necessity.
*/
struct cfg_data {
/**
* @brief Magic number for config data payloads (0x55CFDA7A).
*/
uint32_t magic;
/**
* @brief The version number for the stored config record.
*
* This number should be incremented any time the config_data struct
* definition changes to allow version management of config data at
* the application level.
*/
uint16_t version;
/** @brief 256-byte debug scratch area. */
uint8_t scratch[256];
};
/**
* @brief Creates a new config record in secure storage.
*
* @return #PSA_SUCCESS on success, otherwise a appropriate psa_status_t code.
*/
psa_status_t cfg_create_data(void);
/**
* @brief Attempts to load the config record from secure storage. If the
* record is not found in secure storage, a new record will be created
* using default config settings.
*
* @param p_cfg_data Pointer to the cfg_data struct where the config data
* should be assigned once loaded.
*
* @return #PSA_SUCCESS on success, otherwise a appropriate psa_status_t code.
*/
psa_status_t cfg_load_data(struct cfg_data *p_cfg_data);
#ifdef __cplusplus
}
#endif