Implement saftey memory dump feature and increase heap space

This commit is contained in:
2020-11-01 20:43:59 +01:00
parent 10596cdbf0
commit 7aa0b62012
7 changed files with 121 additions and 2 deletions

View File

@@ -22,6 +22,7 @@
#include <helper-macros/helper-macros.h>
#include <stm-periph/crc-unit.h>
#include <stm-periph/backup-ram.h>
#include <base64-lib/base64-lib.h>
static int word_to_error_memory_entry(uint32_t entry_data, struct error_memory_entry *out)
{
@@ -481,3 +482,29 @@ 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);
int safety_memory_dump_base64(char *buffer, size_t buffsize, size_t *used_size)
{
uint32_t safety_mem_size;
size_t output_size;
const char *backup_mem_ptr;
int res;
if (!buffer)
return -1000;
safety_mem_size = backup_ram_get_size_in_words() * 4U;
output_size = base64_calculate_encoded_size(safety_mem_size);
if (output_size + 1 > buffsize)
return -1001;
backup_mem_ptr = (const char *)backup_ram_get_base_ptr();
res = base64_encode(backup_mem_ptr, buffer, safety_mem_size, buffsize, &output_size);
if (res)
return -1;
buffer[output_size] = '\0';
if (used_size)
*used_size = output_size + 1u;
return 0;
}