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