#if FSFW_DISABLE_PRINTOUT == 0
#include <cstdio>
#endif

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, ...);

}