59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
#ifndef FSFW_SERVICEINTERFACE_SERVICEINTERFACEPRINTER
|
|
#define FSFW_SERVICEINTERFACE_SERVICEINTERFACEPRINTER
|
|
|
|
#if FSFW_DISABLE_PRINTOUT == 0
|
|
#include <cstdio>
|
|
#endif
|
|
|
|
//! https://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format
|
|
//! Can be used to print out binary numbers in human-readable format.
|
|
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
|
|
#define BYTE_TO_BINARY(byte) \
|
|
(byte & 0x80 ? '1' : '0'), \
|
|
(byte & 0x40 ? '1' : '0'), \
|
|
(byte & 0x20 ? '1' : '0'), \
|
|
(byte & 0x10 ? '1' : '0'), \
|
|
(byte & 0x08 ? '1' : '0'), \
|
|
(byte & 0x04 ? '1' : '0'), \
|
|
(byte & 0x02 ? '1' : '0'), \
|
|
(byte & 0x01 ? '1' : '0')
|
|
|
|
|
|
namespace sif {
|
|
|
|
enum PrintLevel {
|
|
NONE = 0,
|
|
//! Strange error when using just ERROR..
|
|
ERROR_LEVEL = 1,
|
|
WARNING_LEVEL = 2,
|
|
INFO_LEVEL = 3,
|
|
DEBUG_LEVEL = 4
|
|
};
|
|
|
|
/**
|
|
* Set the print level. All print types with a smaller level will be printed
|
|
* as well. For example, set to PrintLevel::WARNING to only enable error
|
|
* and warning output.
|
|
* @param printLevel
|
|
*/
|
|
void setPrintLevel(PrintLevel printLevel);
|
|
PrintLevel getPrintLevel();
|
|
|
|
void setToAddCrAtEnd(bool addCrAtEnd_);
|
|
|
|
/**
|
|
* These functions can be used like the C stdio printf and forward the
|
|
* supplied formatted string arguments to a printf function.
|
|
* They prepend the string with a color (if enabled), a log preamble and
|
|
* a timestamp.
|
|
* @param fmt Formatted string
|
|
*/
|
|
void printInfo(const char *fmt, ...);
|
|
void printWarning(const char* fmt, ...);
|
|
void printDebug(const char* fmt, ...);
|
|
void printError(const char* fmt, ...);
|
|
|
|
}
|
|
|
|
#endif /* FSFW_SERVICEINTERFACE_SERVICEINTERFACEPRINTER */
|