Small function to make formatting into memory of uint easier
This commit is contained in:
@@ -334,6 +334,28 @@ bool set_struct_field(const uint8_t *const data)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format an unsigned number up to 32-bit into memory into an ASCII string.
|
||||
*
|
||||
* @param[in] value Value to write in memory
|
||||
* @param[in] max_chars Maximum number of characters that could be written
|
||||
*
|
||||
* @return how many characters have been written in memory
|
||||
*/
|
||||
uint8_t format_uint_into_mem(uint32_t value, uint8_t max_chars)
|
||||
{
|
||||
char *ptr;
|
||||
uint8_t written_chars;
|
||||
|
||||
if ((ptr = mem_alloc(sizeof(char) * max_chars)) == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
written_chars = sprintf(ptr, "%u", value);
|
||||
mem_dealloc(max_chars - written_chars); // in case it ended up being less
|
||||
return written_chars;
|
||||
}
|
||||
|
||||
void get_struct_type_string(const uint8_t *const ptr,
|
||||
const uint8_t *const struct_name,
|
||||
uint8_t struct_name_length)
|
||||
@@ -351,7 +373,6 @@ void get_struct_type_string(const uint8_t *const ptr,
|
||||
uint8_t lvls_count;
|
||||
const uint8_t *lvl_ptr;
|
||||
uint8_t array_size;
|
||||
uint8_t formatted_length;
|
||||
|
||||
// set length
|
||||
typestr_length = mem_alloc(sizeof(uint16_t));
|
||||
@@ -394,9 +415,7 @@ void get_struct_type_string(const uint8_t *const ptr,
|
||||
break;
|
||||
}
|
||||
// max value = 256, 3 characters max
|
||||
formatted_length = sprintf(mem_alloc(sizeof(char) * 3), "%u", field_size);
|
||||
mem_dealloc(3 - formatted_length); // in case it used less
|
||||
*typestr_length += formatted_length;
|
||||
*typestr_length += format_uint_into_mem(field_size, 3);
|
||||
}
|
||||
|
||||
if (struct_field_is_array(field_ptr))
|
||||
@@ -412,9 +431,7 @@ void get_struct_type_string(const uint8_t *const ptr,
|
||||
break;
|
||||
case ARRAY_FIXED_SIZE:
|
||||
// max value = 255, 3 characters max
|
||||
formatted_length = sprintf(mem_alloc(sizeof(char) * 3), "%u", array_size);
|
||||
mem_dealloc(3 - formatted_length);
|
||||
*typestr_length += formatted_length;
|
||||
*typestr_length += format_uint_into_mem(array_size, 3);
|
||||
break;
|
||||
default:
|
||||
// should not be in here :^)
|
||||
|
||||
Reference in New Issue
Block a user