Resolved conflicts in Printable classes

This commit is contained in:
dario 2024-02-09 14:35:47 +01:00
parent 4490c68ee3
commit 63c8d06525
5 changed files with 37 additions and 36 deletions

View File

@ -1,4 +1,5 @@
#include <sta/devices/arduino/mcu/common.hpp> #include <sta/devices/arduino/mcu/common.hpp>
#define STA_PRINTF_USE_STDLIB #define STA_PRINTF_USE_STDLIB
#define STA_STDLIB_DISABLE #define STA_STDLIB_DISABLE
#define STA_DEBUGGING_ENABLED

View File

@ -8,7 +8,7 @@
namespace sta namespace sta
{ {
extern Printable * Debug; extern BasePrintable * Debug;
} // namespace sta } // namespace sta

View File

@ -23,9 +23,9 @@ namespace sta
*/ */
enum class IntegerBase enum class IntegerBase
{ {
DEC, /**< Decimal */ BASE_DEC, /**< Decimal */
BIN, /**< Binary */ BASE_BIN, /**< Binary */
HEX /**< Hexadecimal */ BASE_HEX /**< Hexadecimal */
}; };
/** /**
@ -69,7 +69,7 @@ namespace sta
* @param num 8-bit unsigned integer * @param num 8-bit unsigned integer
* @param base Integer base * @param base Integer base
*/ */
void print(uint8_t num, IntegerBase base = IntegerBase::DEC); void print(uint8_t num, IntegerBase base = IntegerBase::BASE_DEC);
/** /**
* @brief Print integer in selected base. * @brief Print integer in selected base.
@ -77,7 +77,7 @@ namespace sta
* @param num 16-bit unsigned integer * @param num 16-bit unsigned integer
* @param base Integer base * @param base Integer base
*/ */
void print(uint16_t num, IntegerBase base = IntegerBase::DEC); void print(uint16_t num, IntegerBase base = IntegerBase::BASE_DEC);
/** /**
* @brief Print integer in selected base. * @brief Print integer in selected base.
@ -85,7 +85,7 @@ namespace sta
* @param num 32-bit unsigned integer * @param num 32-bit unsigned integer
* @param base Integer base * @param base Integer base
*/ */
void print(uint32_t num, IntegerBase base = IntegerBase::DEC); void print(uint32_t num, IntegerBase base = IntegerBase::BASE_DEC);
/** /**
* @brief Print c-string. * @brief Print c-string.
@ -134,7 +134,7 @@ namespace sta
* @param num 8-bit unsigned integer * @param num 8-bit unsigned integer
* @param base Integer base * @param base Integer base
*/ */
void println(uint8_t num, IntegerBase base = IntegerBase::DEC); void println(uint8_t num, IntegerBase base = IntegerBase::BASE_DEC);
/** /**
* @brief Print integer in selected base followed by a new-line. * @brief Print integer in selected base followed by a new-line.
@ -142,7 +142,7 @@ namespace sta
* @param num 16-bit unsigned integer * @param num 16-bit unsigned integer
* @param base Integer base * @param base Integer base
*/ */
void println(uint16_t num, IntegerBase base = IntegerBase::DEC); void println(uint16_t num, IntegerBase base = IntegerBase::BASE_DEC);
/** /**
* @brief Print integer in selected base followed by a new-line. * @brief Print integer in selected base followed by a new-line.
@ -150,7 +150,7 @@ namespace sta
* @param num 32-bit unsigned integer * @param num 32-bit unsigned integer
* @param base Integer base * @param base Integer base
*/ */
void println(uint32_t num, IntegerBase base = IntegerBase::DEC); void println(uint32_t num, IntegerBase base = IntegerBase::BASE_DEC);
/** /**
* @brief Print c-string followed by a new-line. * @brief Print c-string followed by a new-line.

View File

@ -25,7 +25,7 @@ namespace sta
* *
* @ingroup sta_core * @ingroup sta_core
*/ */
class PrintableUART : public Printable class PrintableUART : public BasePrintable
{ {
public: public:
/** /**

View File

@ -17,7 +17,7 @@
namespace sta namespace sta
{ {
void Printable::printf(const char * fmt, ...) void BasePrintable::printf(const char * fmt, ...)
{ {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
@ -33,109 +33,109 @@ namespace sta
println(str); println(str);
} }
void Printable::print(char c) void BasePrintable::print(char c)
{ {
print(&c, 1); print(&c, 1);
} }
void Printable::print(bool b) void BasePrintable::print(bool b)
{ {
print(b ? "true" : "false"); print(b ? "true" : "false");
} }
void Printable::print(double d) void BasePrintable::print(double d)
{ {
char buffer[64]; char buffer[64];
snprintf(buffer, sizeof(buffer), "%f", d); snprintf(buffer, sizeof(buffer), "%f", d);
print(buffer); print(buffer);
} }
void Printable::print(uint8_t num, IntegerBase base) void BasePrintable::print(uint8_t num, IntegerBase base)
{ {
printBase(num, base, "%" PRIu8, sizeof(num)); printBase(num, base, "%" PRIu8, sizeof(num));
} }
void Printable::print(uint16_t num, IntegerBase base) void BasePrintable::print(uint16_t num, IntegerBase base)
{ {
printBase(num, base, "%" PRIu16, sizeof(num)); printBase(num, base, "%" PRIu16, sizeof(num));
} }
void Printable::print(uint32_t num, IntegerBase base) void BasePrintable::print(uint32_t num, IntegerBase base)
{ {
printBase(num, base, "%" PRIu32, sizeof(num)); printBase(num, base, "%" PRIu32, sizeof(num));
} }
void Printable::print(const char * str) void BasePrintable::print(const char * str)
{ {
print(str, strlen(str)); print(str, strlen(str));
} }
void Printable::println() void BasePrintable::println()
{ {
print("\r\n", 2); print("\r\n", 2);
} }
void Printable::println(char c) void BasePrintable::println(char c)
{ {
print(&c, 1); print(&c, 1);
println(); println();
} }
void Printable::println(bool b) void BasePrintable::println(bool b)
{ {
print(b); print(b);
println(); println();
} }
void Printable::println(double d) void BasePrintable::println(double d)
{ {
print(d); print(d);
println(); println();
} }
void Printable::println(uint8_t num, IntegerBase base) void BasePrintable::println(uint8_t num, IntegerBase base)
{ {
print(num, base); print(num, base);
println(); println();
} }
void Printable::println(uint16_t num, IntegerBase base) void BasePrintable::println(uint16_t num, IntegerBase base)
{ {
print(num, base); print(num, base);
println(); println();
} }
void Printable::println(uint32_t num, IntegerBase base) void BasePrintable::println(uint32_t num, IntegerBase base)
{ {
print(num, base); print(num, base);
println(); println();
} }
void Printable::println(const char * str) void BasePrintable::println(const char * str)
{ {
println(str, strlen(str)); println(str, strlen(str));
} }
void Printable::println(const char * str, size_t length) void BasePrintable::println(const char * str, size_t length)
{ {
print(str, length); print(str, length);
println(); println();
} }
void Printable::printBase(uintmax_t num, IntegerBase base, const char * fmt, size_t size) void BasePrintable::printBase(uintmax_t num, IntegerBase base, const char * fmt, size_t size)
{ {
switch (base) switch (base)
{ {
case IntegerBase::DEC: case IntegerBase::BASE_DEC:
printDec(num, fmt); printDec(num, fmt);
break; break;
case IntegerBase::BIN: case IntegerBase::BASE_BIN:
// Digits in base 2 = size in bytes * 8 // Digits in base 2 = size in bytes * 8
printBin(num, size * 8); printBin(num, size * 8);
break; break;
case IntegerBase::HEX: case IntegerBase::BASE_HEX:
// Digits in base 16 = size in bytes * 2 // Digits in base 16 = size in bytes * 2
printHex(num, size * 2); printHex(num, size * 2);
break; break;
@ -145,14 +145,14 @@ namespace sta
} }
} }
void Printable::printDec(uintmax_t num, const char * fmt) void BasePrintable::printDec(uintmax_t num, const char * fmt)
{ {
char buffer[64]; char buffer[64];
snprintf(buffer, sizeof(buffer), fmt, static_cast<uint32_t>(num)); snprintf(buffer, sizeof(buffer), fmt, static_cast<uint32_t>(num));
print(buffer); print(buffer);
} }
void Printable::printBin(uintmax_t value, size_t digits) void BasePrintable::printBin(uintmax_t value, size_t digits)
{ {
// Need 8 digits for every byte // Need 8 digits for every byte
char buffer[sizeof(value) * 8]; char buffer[sizeof(value) * 8];
@ -177,7 +177,7 @@ namespace sta
print(buffer, digits); print(buffer, digits);
} }
void Printable::printHex(uintmax_t value, size_t digits) void BasePrintable::printHex(uintmax_t value, size_t digits)
{ {
// Need 2 digits for every byte // Need 2 digits for every byte
char buffer[sizeof(value) * 2]; char buffer[sizeof(value) * 2];