This has been a hard problem to diagnose, so I hope I'm giving enough info here. I'm trying to write a program for the Arduino (a lighting controller) using a bit of OO. There are several classes in my library, and some extend others. I'm a long-time programmer (mostly Java) but this is my first big Arduino project.
I'm using the Logging library at various points in the main program, as well as the objects, and that's where it get complicated. Depending on where I put calls to the logging library, or even Serial.print(), it either all works, or what gets sent to the serial port is a bit garbled, and the board never enters loop() (I'm not sure if that means that it's crashing in setup() or not). This library hasn't been touched in 4 years and there are pending merge requests, so I don't think I'll get answers from the developer.
I have a sneaking suspicion that the root of the problem is that Logging.h ends with instantiating the logger ("Logging Log = Logging();") so multiple instances of the logger may be created and the serial port is being reset several times, possibly at different port speeds. I thought it was bad form to initialize object, or even have any running code, in a .h file. Is this a possibility, and do I have any options to fix this?
Are there any good alternatives for printing outputs at different debug levels?
I would hate to have to pass the logger instance in as a parameter to my classes, or have to write setLogger() methods for all my classes.