Issue #18: Write init of safety memory
This commit is contained in:
@@ -34,6 +34,8 @@
|
||||
*/
|
||||
#define SAFETY_MEMORY_HEADER_ADDRESS 0UL
|
||||
|
||||
#define SAFETY_MEMORY_CONFIG_OVERRIDE_COUNT 512
|
||||
|
||||
/**
|
||||
* @brief Safety memory header
|
||||
*/
|
||||
@@ -52,4 +54,57 @@ struct safety_memory_boot_status {
|
||||
uint32_t code_updated;
|
||||
};
|
||||
|
||||
enum safety_memory_state {
|
||||
SAFETY_MEMORY_INIT_FRESH = 0,
|
||||
SAFETY_MEMORY_INIT_CORRUPTED = 1,
|
||||
SAFETY_MEMORY_INIT_VALID_MEMORY = 2,
|
||||
};
|
||||
|
||||
enum safety_memory_error_entry_type {
|
||||
SAFETY_MEMORY_ERR_ENTRY_FLAG = 1,
|
||||
SAFETY_MEMORY_ERR_ENTRY_NOP = 2,
|
||||
};
|
||||
|
||||
struct error_memory_entry {
|
||||
enum safety_memory_error_entry_type type;
|
||||
uint16_t flag_num;
|
||||
};
|
||||
|
||||
enum config_override_entry_type {
|
||||
SAFETY_MEMORY_CONFIG_OVERRIDE_WEIGHT = 1,
|
||||
SAFETY_MEMORY_CONFIG_OVERRIDE_PERSISTANCE = 2,
|
||||
};
|
||||
|
||||
struct config_override {
|
||||
enum config_override_entry_type type;
|
||||
union {
|
||||
struct {
|
||||
uint16_t flag;
|
||||
uint8_t weight;
|
||||
} weight_override;
|
||||
struct {
|
||||
uint16_t flag;
|
||||
uint8_t persistance;
|
||||
} persistance_override;
|
||||
} entry;
|
||||
};
|
||||
|
||||
int safety_memory_init(enum safety_memory_state *found_state);
|
||||
|
||||
int safety_memory_get_boot_status(struct safety_memory_boot_status *status);
|
||||
|
||||
int safety_memory_get_error_entry_count(uint32_t *count);
|
||||
|
||||
int safety_memory_check(void);
|
||||
|
||||
int safety_memory_get_error_entry(uint32_t idx, struct error_memory_entry *entry);
|
||||
|
||||
int safety_memory_insert_error_entry(struct error_memory_entry *entry);
|
||||
|
||||
int safety_memory_insert_config_override(struct config_override *config_override);
|
||||
|
||||
int safety_memory_get_config_override_count(uint32_t *count);
|
||||
|
||||
int safety_memory_get_config_override(uint32_t idx, struct config_override *config_override);
|
||||
|
||||
#endif /* __SAFETY_MEMORY_H__ */
|
||||
|
@@ -53,3 +53,5 @@ int backup_ram_get_data(uint32_t addr, uint32_t *data, uint32_t count);
|
||||
* @return 0 if successful
|
||||
*/
|
||||
int backup_ram_write_data(uint32_t addr, const uint32_t *data, uint32_t count);
|
||||
|
||||
uint32_t backup_ram_get_size_in_words(void);
|
||||
|
Reference in New Issue
Block a user