+/**
+ * Logging macros and associated log levels.
+ * The current log level is kept in avr->log.
+ */
+enum {
+ LOG_ERROR = 1,
+ LOG_WARNING,
+ LOG_TRACE,
+};
+typedef void (*logger_t)(avr_t* avr, const int level, const char * format, ... );
+extern logger_t global_logger;
+#ifndef AVR_LOG
+#define AVR_LOG(avr, level, ...) \
+ do { \
+ global_logger( avr, level, __VA_ARGS__); \
+ } while(0)
+#endif
+