--- /dev/null
+#ifndef LOGGING_H__
+#define LOGGING_H__ 1
+
+#define USE_LOGGING 1 // comment out to disable logging
+
+#define LOG_EE_BUF_SIZE 64 // log buffer size in EEPROM
+#define LOG_RAM_BUF_SIZE 16 // log double buffer size
+
+#define LOG_RATELIMIT_BOOTCOUNT 5 // limit logging to first five boots
+ // if commented out, logs after each boot (beware the EEPROM wear!)
+
+#ifdef USE_LOGGING
+
+void log_init();
+void log_byte(unsigned char byte);
+void log_word(uint16_t word);
+void log_flush();
+
+#else /* !USE_LOGGING */
+
+#define init_log(dummy) do { } while(0)
+#define log_byte(dummy) do { } while(0)
+#define log_word(dummy) do { } while(0)
+#define log_flush() do { } while(0)
+
+#endif /* USE_LOGGING */
+
+#endif /* !LOGGING_H__ */