From 32f8968b01917721ee50610c40310f546d4e48c4 Mon Sep 17 00:00:00 2001 From: Eric Duminil Date: Fri, 16 Apr 2021 22:34:44 +0200 Subject: [PATCH] Set CO2 for debugging --- ampel-firmware/co2_sensor.cpp | 11 +++++------ ampel-firmware/led_effects.cpp | 4 ++-- ampel-firmware/sensor_commands.cpp | 18 ++++++++---------- ampel-firmware/sensor_commands.h | 2 +- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/ampel-firmware/co2_sensor.cpp b/ampel-firmware/co2_sensor.cpp index 6707d55..436b36b 100644 --- a/ampel-firmware/co2_sensor.cpp +++ b/ampel-firmware/co2_sensor.cpp @@ -25,11 +25,10 @@ namespace sensor { uint32_t waiting_color = color::blue; bool should_calibrate = false; - void printCO2(void *data) { - int parameter = *(uint16_t*) data; - Serial.print("NICE! HELLO FROM SENSOR."); - Serial.print("CO2 : "); - Serial.println(parameter); + void setCO2forDebugging(int32_t fakeCo2) { + Serial.print(F("DEBUG. Setting CO2 to ")); + co2 = fakeCo2; + Serial.println(co2); } void initialize() { @@ -76,7 +75,7 @@ namespace sensor { Serial.print(F("Auto-calibration is ")); Serial.println(config::auto_calibrate_sensor ? "ON." : "OFF."); - sensor_commands::defineCallback("co2", printCO2, &co2); + sensor_commands::defineCallback("co2", setCO2forDebugging); } //NOTE: should timer deviation be used to adjust measurement_timestep? diff --git a/ampel-firmware/led_effects.cpp b/ampel-firmware/led_effects.cpp index 5aa2d01..cf130ce 100644 --- a/ampel-firmware/led_effects.cpp +++ b/ampel-firmware/led_effects.cpp @@ -70,7 +70,7 @@ namespace led_effects { onBoardLEDOff(); } - void helloRing(void *c) { + void helloRing(int32_t x) { Serial.print("HELLO FROM LED RINGS!"); Serial.print("I have "); Serial.print(NUMPIXELS); @@ -83,7 +83,7 @@ namespace led_effects { pixels.setBrightness(config::max_brightness); LEDsOff(); - sensor_commands::defineCallback("led", helloRing, 0); + sensor_commands::defineCallback("led", helloRing); } void toggleNightMode() { diff --git a/ampel-firmware/sensor_commands.cpp b/ampel-firmware/sensor_commands.cpp index 9108b91..868f37e 100644 --- a/ampel-firmware/sensor_commands.cpp +++ b/ampel-firmware/sensor_commands.cpp @@ -8,19 +8,18 @@ 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(const char *s = 0, void (*f)(void*) = 0, void *d = 0) : - name(s), function(f), data(d) { + Callback(const char *s = 0, void (*f)(int32_t) = 0) : + name(s), function(f) { } const char *name; - void (*function)(void*); - void *data; + void (*function)(int32_t); }; Callback callbacks[MAX_CALLBACKS]; - void defineCallback(const char *n, void (*f)(void*), void *d) { + void defineCallback(const char *n, void (*f)(int32_t)) { if (callbacks_count < MAX_CALLBACKS) { - callbacks[callbacks_count] = Callback(n, f, d); + callbacks[callbacks_count] = Callback(n, f); callbacks_count++; } else { Serial.println(F("Too many callbacks have been defined.")); @@ -31,7 +30,7 @@ namespace sensor_commands { return !strncmp(a, b, strlen(b)); } - bool parseCommand(const char *command, char *function_name, long ¶meter) { + bool parseCommand(const char *command, char *function_name, int32_t ¶meter) { char split_command[MAX_COMMAND_SIZE]; strlcpy(split_command, command, MAX_COMMAND_SIZE); Serial.print(F("Received : '")); @@ -69,7 +68,7 @@ namespace sensor_commands { void run(const char *command) { char function_name[MAX_COMMAND_SIZE]; - long parameter; + int32_t parameter; if (parseCommand(command, function_name, parameter)) { listAvailableCallbacks(); return; @@ -79,14 +78,13 @@ namespace sensor_commands { Serial.print("'. Parameter : "); Serial.println(parameter); - // Test all the callbacks. for (uint8_t i = 0; i < callbacks_count; i++) { if (!strcmp(function_name, callbacks[i].name)) { Serial.print("Function found!!!"); Serial.print("Trying '"); Serial.print(callbacks[i].name); Serial.println("'"); - callbacks[i].function(callbacks[i].data); + callbacks[i].function(parameter); return; } } diff --git a/ampel-firmware/sensor_commands.h b/ampel-firmware/sensor_commands.h index e94ec31..cecbcf3 100644 --- a/ampel-firmware/sensor_commands.h +++ b/ampel-firmware/sensor_commands.h @@ -7,5 +7,5 @@ namespace sensor_commands { void run(const char *command); - void defineCallback(const char *command, void (*f)(void*), void *d); + void defineCallback(const char *command, void (*f)(int32_t)); } -- GitLab