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