Implement saftey memory dump feature and increase heap space
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user