84 lines
2.8 KiB
C++
84 lines
2.8 KiB
C++
#pragma once
|
|
|
|
template <typename T>
|
|
inline void serial_print(HardwareSerial* serial, T v){
|
|
serial->print(v);
|
|
}
|
|
|
|
template <typename T>
|
|
inline void serial_println(HardwareSerial* serial, T v){
|
|
serial->println(v);
|
|
}
|
|
|
|
template <typename T>
|
|
static inline char hex_conv(T val){
|
|
return val < 10 ? '0' + val : 'A' + (val-10);
|
|
}
|
|
|
|
static char eol[3] = "\r\n";
|
|
inline void serial_print_eol(HardwareSerial* serial){
|
|
serial->write((const uint8_t*)eol, sizeof(eol));
|
|
}
|
|
|
|
inline void serial_print_hex(HardwareSerial* serial, int32_t n){
|
|
constexpr const int SIZE_BUFF_HEX = 2*4+2;
|
|
char buff[SIZE_BUFF_HEX];
|
|
buff[0] = '0';
|
|
buff[1] = 'x';
|
|
buff[2] = hex_conv((n & 0xF0000000) >> 7*4 );
|
|
buff[3] = hex_conv((n & 0x0F000000) >> 6*4 );
|
|
buff[4] = hex_conv((n & 0x00F00000) >> 5*4 );
|
|
buff[5] = hex_conv((n & 0x000F0000) >> 4*4 );
|
|
buff[6] = hex_conv((n & 0x0000F000) >> 3*4 );
|
|
buff[7] = hex_conv((n & 0x00000F00) >> 2*4 );
|
|
buff[8] = hex_conv((n & 0x000000F0) >> 1*4 );
|
|
buff[9] = hex_conv((n & 0x0000000F) );
|
|
serial->write((const uint8_t*)&buff, SIZE_BUFF_HEX);
|
|
}
|
|
inline void serial_print_hex(HardwareSerial* serial, int64_t n){
|
|
constexpr const int SIZE_BUFF_HEX = 4*4+2;
|
|
char buff[SIZE_BUFF_HEX];
|
|
buff[0] = '0';
|
|
buff[1] = 'x';
|
|
buff[2] = hex_conv((n & 0xF000000000000000) >> 15*4 );
|
|
buff[3] = hex_conv((n & 0x0F00000000000000) >> 14*4 );
|
|
buff[4] = hex_conv((n & 0x00F0000000000000) >> 13*4 );
|
|
buff[5] = hex_conv((n & 0x000F000000000000) >> 12*4 );
|
|
buff[6] = hex_conv((n & 0x0000F00000000000) >> 11*4 );
|
|
buff[7] = hex_conv((n & 0x00000F0000000000) >> 10*4 );
|
|
buff[8] = hex_conv((n & 0x000000F000000000) >> 9*4 );
|
|
buff[9] = hex_conv((n & 0x0000000F00000000) >> 8*4 );
|
|
buff[10] = hex_conv((n & 0x00000000F0000000) >> 7*4 );
|
|
buff[11] = hex_conv((n & 0x000000000F000000) >> 6*4 );
|
|
buff[12] = hex_conv((n & 0x0000000000F00000) >> 5*4 );
|
|
buff[13] = hex_conv((n & 0x00000000000F0000) >> 4*4 );
|
|
buff[14] = hex_conv((n & 0x000000000000F000) >> 3*4 );
|
|
buff[15] = hex_conv((n & 0x0000000000000F00) >> 2*4 );
|
|
buff[16] = hex_conv((n & 0x00000000000000F0) >> 1*4 );
|
|
buff[17] = hex_conv((n & 0x000000000000000F) );
|
|
serial->write((const uint8_t*)&buff, SIZE_BUFF_HEX);
|
|
}
|
|
|
|
inline void serial_println_hex(HardwareSerial* serial, int32_t n){
|
|
serial_print_hex(serial, n);
|
|
serial_print_eol(serial);
|
|
}
|
|
|
|
inline void serial_print_hex(HardwareSerial* serial, uint32_t number){
|
|
serial->print(number);
|
|
}
|
|
inline void serial_println_hex(HardwareSerial* serial, uint32_t number){
|
|
serial->println(number);
|
|
}
|
|
inline void serial_println_hex(HardwareSerial* serial, int64_t n){
|
|
serial_print_hex(serial, n);
|
|
serial_print_eol(serial);
|
|
}
|
|
|
|
inline void serial_print_hex(HardwareSerial* serial, uint64_t number){
|
|
serial->print(number);
|
|
}
|
|
inline void serial_println_hex(HardwareSerial* serial, uint64_t number){
|
|
serial->println(number);
|
|
}
|