#ifndef FSFW_SERVICEINTERFACE_SERVICEINTERFACEPRINTER #define FSFW_SERVICEINTERFACE_SERVICEINTERFACEPRINTER #if FSFW_DISABLE_PRINTOUT == 0 #include #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. //! Example usage: //! sif::printInfo("Status register: " BYTE_TO_BINARY_PATTERN "\n",BYTE_TO_BINARY(0x1f)); #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 */