Skip to content

Commit 6c6d839

Browse files
jackson-cooperdstgloorious
authored andcommitted
LIB: Add support for %X format specifier
Add support for printing hex values in capitals when using the %X format specifier. Change-Id: I5f914164963b704689e388b14c9d96c5c59ee552 Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com> (cherry picked from commit 2b9877121c1e84d2ff1d98c1ec9bdca3d1e205b5) Signed-off-by: Stefan Gloor <stefan.gloor@siemens.com>
1 parent c989414 commit 6c6d839

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

lib/tfm_vprintf/src/tfm_vprintf.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static void output_str_not_formatted(tfm_log_output_str output_func, void *priv,
9595

9696
static void output_val(tfm_log_output_str output_func, void *priv, uint32_t val,
9797
uint16_t num_padding, bool zero_padding, bool left_aligned, uint8_t base,
98-
bool signed_specifier)
98+
bool signed_specifier, bool hex_caps)
9999
{
100100
uint8_t digit;
101101
/* uint32_t has maximum value of 4,294,967,295. Require enough space in buffer
@@ -106,6 +106,7 @@ static void output_val(tfm_log_output_str output_func, void *priv, uint32_t val,
106106
char *buf_ptr = buf_end;
107107
const char pad_char = zero_padding ? '0' : ' ';
108108
const char negative_char = '-';
109+
const char start_hex_char = hex_caps ? 'A' : 'a';
109110
bool negative = false;
110111

111112
if (signed_specifier && ((int32_t)val < 0)) {
@@ -119,7 +120,7 @@ static void output_val(tfm_log_output_str output_func, void *priv, uint32_t val,
119120
if (digit < 10) {
120121
*buf_ptr-- = '0' + digit;
121122
} else {
122-
*buf_ptr-- = 'a' + digit - 10;
123+
*buf_ptr-- = start_hex_char + digit - 10;
123124
}
124125

125126
val /= base;
@@ -173,16 +174,20 @@ static void tfm_vprintf_internal(tfm_log_output_str output_func,
173174
continue;
174175
case 'u':
175176
output_val(output_func, priv, va_arg(args, uint32_t), num_padding, zero_padding,
176-
left_aligned, 10, false);
177+
left_aligned, 10, false, false);
177178
break;
178179
case 'd':
179180
case 'i':
180181
output_val(output_func, priv, va_arg(args, uint32_t), num_padding, zero_padding,
181-
left_aligned, 10, true);
182+
left_aligned, 10, true, false);
182183
break;
183184
case 'x':
184185
output_val(output_func, priv, va_arg(args, uint32_t), num_padding, zero_padding,
185-
left_aligned, 16, false);
186+
left_aligned, 16, false, false);
187+
break;
188+
case 'X':
189+
output_val(output_func, priv, va_arg(args, uint32_t), num_padding, zero_padding,
190+
left_aligned, 16, false, true);
186191
break;
187192
case 's':
188193
output_str(output_func, priv, va_arg(args, char *), 0, num_padding, left_aligned, ' ',

0 commit comments

Comments
 (0)