From 06f4a1d9bf9a93289ab7d25dc3d29abb10367dbf Mon Sep 17 00:00:00 2001 From: Eric Duminil <eric.duminil@gmail.com> Date: Fri, 16 Apr 2021 19:28:49 +0200 Subject: [PATCH] Adding name to callbacks --- ampel-firmware/sensor_commands.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ampel-firmware/sensor_commands.cpp b/ampel-firmware/sensor_commands.cpp index 8ef85ba..2461912 100644 --- a/ampel-firmware/sensor_commands.cpp +++ b/ampel-firmware/sensor_commands.cpp @@ -7,20 +7,19 @@ namespace sensor_commands { // A callback contains both a function and a pointer to arbitrary data // that will be passed as argument to the function. struct Callback { - Callback(void (*f)(void*) = 0, void *d = 0) : - function(f), data(d) { + Callback(const char *s = 0, void (*f)(void*) = 0, void *d = 0) : + name(s), function(f), data(d) { } + const char *name; void (*function)(void*); void *data; }; Callback callbacks[MAX_CALLBACKS]; - char callback_names[MAX_CALLBACKS][MAX_COMMAND_SIZE]; void defineCallback(const char *command, void (*f)(void*), void *d) { if (callbacks_count < MAX_CALLBACKS) { - callbacks[callbacks_count] = Callback(f, d); - strlcpy(callback_names[callbacks_count], command, MAX_COMMAND_SIZE); + callbacks[callbacks_count] = Callback(command, f, d); callbacks_count++; } else { Serial.println(F("Too many callbacks have been defined.")); @@ -34,7 +33,7 @@ namespace sensor_commands { // Test all the callbacks. for (uint8_t i = 0; i < callbacks_count; i++) { Serial.print("Trying '"); - Serial.print(callback_names[i]); + Serial.print(callbacks[i].name); Serial.println("'"); callbacks[i].function(callbacks[i].data); } -- GitLab