An easy way to disable this debugging without going through the entire code or using macros is using this simple dummy serial device instead of the real thing.
Usage example:
#ifdef WANT_DEBUG #include <softwareserial.h> SoftwareSerial Debug(4, 5); // RX. TX #else #include "NullSerial.h" NullSerial Debug; #endifNullSerial itself is this:
class NullSerial : public Stream { private: public: // public methods NullSerial() {} ~NullSerial() {} void begin(long speed) {} bool listen() { return true; } void end() {} bool isListening() { return true; } bool overflow() { return false; } int peek() { return -1; } virtual size_t write(uint8_t byte) { return 0; } virtual int read() { return -1; } virtual int available() { return 0; } virtual void flush() {} size_t write(const char *str) { return 0; } size_t write(const uint8_t *buffer, size_t size) { return 0; } size_t print(const __FlashStringHelper *) { return 0; } size_t print(const String &) { return 0; } size_t print(const char[]) { return 0; } size_t print(char) { return 0; } size_t print(unsigned char, int = DEC) { return 0; } size_t print(int, int = DEC) { return 0; } size_t print(unsigned int, int = DEC) { return 0; } size_t print(long, int = DEC) { return 0; } size_t print(unsigned long, int = DEC) { return 0; } size_t print(double, int = 2) { return 0; } size_t print(const Printable&) { return 0; } size_t println(const __FlashStringHelper *) { return 0; } size_t println(const String &s) { return 0; } size_t println(const char[]) { return 0; } size_t println(char) { return 0; } size_t println(unsigned char, int = DEC) { return 0; } size_t println(int, int = DEC) { return 0; } size_t println(unsigned int, int = DEC) { return 0; } size_t println(long, int = DEC) { return 0; } size_t println(unsigned long, int = DEC) { return 0; } size_t println(double, int = 2) { return 0; } size_t println(const Printable&) { return 0; } size_t println(void) { return 0; } // public only for easy access by interrupt handlers static inline void handle_interrupt(); };All this assumes you're not using the return values of the print/println methods.
The full code can be downloaded at github.
No comments:
Post a Comment