OPTIGA Trust M  1.1.0
C++ library for Optiga Trust M Chip Security Controller
fprint.h
Go to the documentation of this file.
1 #ifndef FPRINTTT_H
2 #define FPRINTTT_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "Arduino.h"
9 
10 #ifndef SUPPRESSCOLLORS
11 #define ANSI_COLOR_RED "\x1b[31m"
12 #define ANSI_COLOR_GREEN "\x1b[32m"
13 #define ANSI_COLOR_YELLOW "\x1b[33m"
14 #define ANSI_COLOR_BLUE "\x1b[34m"
15 #define ANSI_COLOR_MAGENTA "\x1b[35m"
16 #define ANSI_COLOR_CYAN "\x1b[36m"
17 #define ANSI_COLOR_RESET "\x1b[0m"
18 #else
19 #define ANSI_COLOR_RED ""
20 #define ANSI_COLOR_GREEN ""
21 #define ANSI_COLOR_YELLOW ""
22 #define ANSI_COLOR_BLUE ""
23 #define ANSI_COLOR_MAGENTA ""
24 #define ANSI_COLOR_CYAN ""
25 #define ANSI_COLOR_RESET ""
26 #endif
27 
28 #define MAXCMD_LEN 255
29 #define HEXDUMP_COLS 16
30 
31 
32 #ifndef SUPPRESSHEXDUMP
33 #define SUPPRESSHEXDUMP 0
34 #endif
35 #define HEXDUMP(a, b) (SUPPRESSHEXDUMP==0) ? __hexdump__(a,b) : (void) 0;
36 
43 inline void printlnGreen(const char c[]) {
44  char tmp[100];
45  sprintf(tmp, "%s%s%s", ANSI_COLOR_GREEN, c, ANSI_COLOR_RESET);
46  Serial.println(tmp);
47 }
48 
56 inline void printlnRed(const char c[]) {
57  char tmp[100];
58  sprintf(tmp, "%s%s%s", ANSI_COLOR_RED, c, ANSI_COLOR_RESET);
59  Serial.println(tmp);
60 }
61 
69 inline void printlnMagenta(const char c[]) {
70  char tmp[100];
71  sprintf(tmp, "%s%s%s", ANSI_COLOR_MAGENTA, c, ANSI_COLOR_RESET);
72  Serial.println(tmp);
73 }
74 
82 inline void printMagenta(const char c[]) {
83  char tmp[100];
84  sprintf(tmp, "%s%s%s", ANSI_COLOR_MAGENTA, c, ANSI_COLOR_RESET);
85  Serial.print(tmp);
86 }
87 
95 inline void printGreen(const char c[]) {
96  char tmp[100];
97  sprintf(tmp, "%s%s%s", ANSI_COLOR_GREEN, c, ANSI_COLOR_RESET);
98  Serial.print(tmp);
99 }
100 
114 inline void __hexdump__(const void* p_buf, uint32_t l_len) {
115  unsigned int i, j;
116  char str[MAXCMD_LEN];
117  for (i = 0; i < l_len + ((l_len % HEXDUMP_COLS) ?
118  ( HEXDUMP_COLS - l_len % HEXDUMP_COLS) : 0);
119  i++) {
120  /* print offset */
121  if (i % HEXDUMP_COLS == 0) {
122  sprintf(str, "0x%06x: ", i);
123  Serial.print(str);
124  }
125 
126  /* print hex data */
127  if (i < l_len) {
128  sprintf(str, "%02x ", 0xFF & ((char*) p_buf)[i]);
129  Serial.print(str);
130  } else /* end of block, just aligning for ASCII dump */
131  {
132  sprintf(str, " ");
133  Serial.print(str);
134  }
135 
136  /* print ASCII dump */
137  if (i % HEXDUMP_COLS == ( HEXDUMP_COLS - 1)) {
138  for (j = i - ( HEXDUMP_COLS - 1); j <= i; j++) {
139  if (j >= l_len) /* end of block, not really printing */
140  {
141  Serial.print(' ');
142  } else if (isprint((int) ((char*) p_buf)[j])) /* printable char */
143  {
144  Serial.print(((char*) p_buf)[j]);
145  } else /* other char */
146  {
147  Serial.print('.');
148  }
149  }
150  Serial.print('\r');
151  Serial.print('\n');
152  }
153  }
154 }
155 
156 #ifdef __cplusplus
157 }
158 #endif
159 #endif
void printlnMagenta(const char c[])
Definition: fprint.h:69
#define ANSI_COLOR_MAGENTA
Definition: fprint.h:15
void printlnGreen(const char c[])
Definition: fprint.h:43
void printGreen(const char c[])
Definition: fprint.h:95
#define MAXCMD_LEN
Definition: fprint.h:28
void __hexdump__(const void *p_buf, uint32_t l_len)
Definition: fprint.h:114
void printMagenta(const char c[])
Definition: fprint.h:82
#define ANSI_COLOR_RESET
Definition: fprint.h:17
#define HEXDUMP_COLS
Definition: fprint.h:29
void printlnRed(const char c[])
Definition: fprint.h:56
#define ANSI_COLOR_GREEN
Definition: fprint.h:12
#define ANSI_COLOR_RED
Definition: fprint.h:11