From 41375a0ae2acd846bfbf1fe123aaaa8f055eb561 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Sun, 25 Nov 2018 22:31:44 -0500 Subject: [PATCH] progress --- firmware/util/cli_registry.cpp | 13 +++++++++++++ firmware/util/cli_registry.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/firmware/util/cli_registry.cpp b/firmware/util/cli_registry.cpp index 456c756093..af54948a71 100644 --- a/firmware/util/cli_registry.cpp +++ b/firmware/util/cli_registry.cpp @@ -122,6 +122,10 @@ void addConsoleActionSSSSS(const char *token, VoidCharPtrCharPtrCharPtrCharPtrCh doAddAction(token, STRING5_PARAMETER, (Void) callback, NULL); } +void addConsoleActionNANF(const char *token, VoidFloat callback) { + doAddAction(token, FLOAT_PARAMETER_NAN_ALLOWED, (Void) callback, NULL); +} + void addConsoleActionF(const char *token, VoidFloat callback) { doAddAction(token, FLOAT_PARAMETER, (Void) callback, NULL); } @@ -361,6 +365,15 @@ void handleActionWithParameter(TokenCallback *current, char *parameter) { return; } + if (current->parameterType == FLOAT_PARAMETER_NAN_ALLOWED) { + float value = atoff(parameter); + VoidFloat callbackF = (VoidFloat) current->callback; + + // invoke callback function by reference + (*callbackF)(value); + return; + } + if (current->parameterType == FLOAT_PARAMETER) { float value = atoff(parameter); if (cisnan(value)) { diff --git a/firmware/util/cli_registry.h b/firmware/util/cli_registry.h index 1a06087e87..6ed26c308c 100644 --- a/firmware/util/cli_registry.h +++ b/firmware/util/cli_registry.h @@ -17,6 +17,7 @@ typedef enum { NO_PARAMETER_P, ONE_PARAMETER, ONE_PARAMETER_P, + FLOAT_PARAMETER_NAN_ALLOWED, FLOAT_PARAMETER, FLOAT_PARAMETER_P, STRING_PARAMETER, @@ -64,6 +65,7 @@ void addConsoleActionII(const char *token, VoidIntInt callback); void addConsoleActionIIP(const char *token, VoidIntIntVoidPtr callback, void *param); void addConsoleActionF(const char *token, VoidFloat callback); +void addConsoleActionNANF(const char *token, VoidFloat callback); void addConsoleActionFF(const char *token, VoidFloatFloat callback); void addConsoleActionFFP(const char *token, VoidFloatFloatVoidPtr callback, void *param);