aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/e300/rev_c/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/e300/rev_c/debug.h')
-rw-r--r--firmware/e300/rev_c/debug.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/firmware/e300/rev_c/debug.h b/firmware/e300/rev_c/debug.h
new file mode 100644
index 000000000..5e6435972
--- /dev/null
+++ b/firmware/e300/rev_c/debug.h
@@ -0,0 +1,90 @@
+/*
+ * debug.h
+ */
+
+#ifndef DEBUG_H_
+#define DEBUG_H_
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/pgmspace.h>
+
+#include "io.h"
+
+#ifdef DEBUG
+#define DEBUG_INLINE
+#define DEBUG_NOOP ;
+#define LED_ON false
+#define LED_OFF true
+#else
+#define DEBUG_INLINE inline
+#define DEBUG_NOOP {}
+#define LED_ON true
+#define LED_OFF false
+#endif // DEBUG
+
+//#define DEBUG_VOID
+#define DEBUG_SAFETY
+
+#ifdef DEBUG_VOID
+
+//#define debug_init (void)
+#define debug_set (void)
+#define debug_blink (void)
+#define debug_blink_rev (void)
+#define debug_blink2 (void)
+#define debug_wait (void)
+
+#else
+
+//DEBUG_INLINE void debug_init(void) DEBUG_NOOP
+DEBUG_INLINE void debug_set(io_pin_t pin, bool enable) DEBUG_NOOP
+DEBUG_INLINE void debug_blink(uint8_t count) DEBUG_NOOP
+//DEBUG_INLINE void debug_blink_rev(uint8_t count) DEBUG_NOOP
+void debug_blink_rev(uint8_t count);
+DEBUG_INLINE void debug_blink2(uint8_t count) DEBUG_NOOP
+DEBUG_INLINE void debug_wait(void) DEBUG_NOOP
+
+#endif // DEBUG_VOID
+
+#if defined(DEBUG) && !defined(ENABLE_SERIAL)
+#define ENABLE_SERIAL
+#endif // DEBUG && !ENABLE_SERIAL
+
+/*DEBUG_INLINE */void debug_init(void)/* DEBUG_NOOP*/;
+
+#ifdef ENABLE_SERIAL
+
+void debug_log_ex_P(const char* message, bool new_line);
+void debug_log_hex_ex(uint8_t n, bool new_line);
+void debug_log_byte_ex(uint8_t n, bool new_line);
+void _debug_log_ex(const char* message, bool new_line);
+
+// Prototypes to silence avr-gcc
+inline void debug_log_P(const char* message);
+inline void debug_log_hex(uint8_t n);
+inline void debug_log_byte(uint8_t n);
+inline void _debug_log(const char* message);
+
+inline void debug_log_P(const char* message) { debug_log_ex_P(message, true); }
+inline void debug_log_hex(uint8_t n) { debug_log_hex_ex(n, true); }
+inline void debug_log_byte(uint8_t n) { debug_log_byte_ex(n, true); }
+inline void _debug_log(const char* message) { _debug_log_ex(message, true); }
+
+#else
+
+inline void debug_log_ex_P (const char* message, bool new_line) {};
+inline void debug_log_hex_ex (uint8_t n, bool new_line) {};
+inline void debug_log_byte_ex (uint8_t n, bool new_line) {};
+inline void _debug_log_ex (const char* message, bool new_line) {};
+
+#define debug_log_P (void)
+#define debug_log_hex (void)
+#define debug_log_byte (void)
+#define _debug_log (void)
+#endif // ENABLE_SERIAL
+
+#define debug_log(x) debug_log_P(PSTR(x))
+#define debug_log_ex(x,nl) debug_log_ex_P(PSTR(x), nl)
+
+#endif /* DEBUG_H_ */