diff --git a/ampel-firmware/csv_writer.cpp b/ampel-firmware/csv_writer.cpp index 2a673a83b3fbd2eba28297dbd89ebb5629d80fed..db3b22e71713352c92a9be22b6e6ca078d36184f 100644 --- a/ampel-firmware/csv_writer.cpp +++ b/ampel-firmware/csv_writer.cpp @@ -118,7 +118,7 @@ namespace csv_writer { Serial.println(); sensor_commands::defineIntCallback("csv", setCSVinterval, " 60 (Sets CSV writing interval, in s)"); - sensor_commands::defineCallback("format_filesystem", formatFilesystem, "(Deletes the whole filesystem.)"); + sensor_commands::defineCallback("format_filesystem", formatFilesystem, " (Deletes the whole filesystem.)"); } File openOrCreate() { diff --git a/ampel-firmware/sensor_commands.cpp b/ampel-firmware/sensor_commands.cpp index c6bd77cb7e37533f7fe3299ddf2fae7640306707..4401b344c657fdd5435744fad84a1694f5908a5f 100644 --- a/ampel-firmware/sensor_commands.cpp +++ b/ampel-firmware/sensor_commands.cpp @@ -5,24 +5,35 @@ namespace sensor_commands { const uint8_t MAX_COMMAND_SIZE = 30; uint8_t callbacks_count = 0; + struct Callback { - Callback(const char *s = 0, void (*f)(int32_t) = 0, const char *d = 0) : - name(s), function(f), doc(d) { - } const char *name; - void (*function)(int32_t); + union { + void (*intFunction)(int32_t); + void (*voidFunction)(void); + }; const char *doc; }; Callback callbacks[MAX_CALLBACKS]; + //NOTE: Probably possible to DRY void defineCallback(const char *name, void (*function)(void), const char *doc) { - + if (callbacks_count < MAX_CALLBACKS) { + callbacks[callbacks_count].name = name; + callbacks[callbacks_count].voidFunction = function; + callbacks[callbacks_count].doc = doc; + callbacks_count++; + } else { + Serial.println(F("Too many callbacks have been defined.")); + } } void defineIntCallback(const char *name, void (*function)(int32_t), const char *doc) { if (callbacks_count < MAX_CALLBACKS) { - callbacks[callbacks_count] = Callback(name, function, doc); + callbacks[callbacks_count].name = name; + callbacks[callbacks_count].intFunction = function; + callbacks[callbacks_count].doc = doc; callbacks_count++; } else { Serial.println(F("Too many callbacks have been defined.")); @@ -81,7 +92,7 @@ namespace sensor_commands { Serial.print("("); Serial.print(parameter); Serial.println(")"); - callbacks[i].function(parameter); + callbacks[i].intFunction(parameter); return; } }