mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-26 09:45:33 +03:00
CLI interface for setting min and max of global variables
This commit is contained in:
parent
87d4713dab
commit
5142023509
1 changed files with 79 additions and 0 deletions
|
@ -44,6 +44,7 @@ extern uint8_t __config_end;
|
||||||
#include "common/time.h"
|
#include "common/time.h"
|
||||||
#include "common/typeconversion.h"
|
#include "common/typeconversion.h"
|
||||||
#include "common/global_functions.h"
|
#include "common/global_functions.h"
|
||||||
|
#include "common/global_variables.h"
|
||||||
|
|
||||||
#include "config/config_eeprom.h"
|
#include "config/config_eeprom.h"
|
||||||
#include "config/feature.h"
|
#include "config/feature.h"
|
||||||
|
@ -1829,6 +1830,77 @@ static void cliLogic(char *cmdline) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void printGvar(uint8_t dumpMask, const globalVariableConfig_t *gvars, const globalVariableConfig_t *defaultGvars)
|
||||||
|
{
|
||||||
|
const char *format = "gvar %d %d %d";
|
||||||
|
for (uint32_t i = 0; i < MAX_GLOBAL_VARIABLES; i++) {
|
||||||
|
const globalVariableConfig_t gvar = gvars[i];
|
||||||
|
|
||||||
|
bool equalsDefault = false;
|
||||||
|
if (defaultGvars) {
|
||||||
|
globalVariableConfig_t defaultValue = defaultGvars[i];
|
||||||
|
equalsDefault =
|
||||||
|
gvar.min == defaultValue.min &&
|
||||||
|
gvar.max == defaultValue.max;
|
||||||
|
|
||||||
|
cliDefaultPrintLinef(dumpMask, equalsDefault, format,
|
||||||
|
i,
|
||||||
|
gvar.min,
|
||||||
|
gvar.max
|
||||||
|
);
|
||||||
|
}
|
||||||
|
cliDumpPrintLinef(dumpMask, equalsDefault, format,
|
||||||
|
i,
|
||||||
|
gvar.min,
|
||||||
|
gvar.max
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cliGvar(char *cmdline) {
|
||||||
|
char * saveptr;
|
||||||
|
int args[3], check = 0;
|
||||||
|
uint8_t len = strlen(cmdline);
|
||||||
|
|
||||||
|
if (len == 0) {
|
||||||
|
printGvar(DUMP_MASTER, globalVariableConfigs(0), NULL);
|
||||||
|
} else if (sl_strncasecmp(cmdline, "reset", 5) == 0) {
|
||||||
|
pgResetCopy(globalVariableConfigsMutable(0), PG_GLOBAL_VARIABLE_CONFIG);
|
||||||
|
} else {
|
||||||
|
enum {
|
||||||
|
INDEX = 0,
|
||||||
|
MIN,
|
||||||
|
MAX,
|
||||||
|
ARGS_COUNT
|
||||||
|
};
|
||||||
|
char *ptr = strtok_r(cmdline, " ", &saveptr);
|
||||||
|
while (ptr != NULL && check < ARGS_COUNT) {
|
||||||
|
args[check++] = fastA2I(ptr);
|
||||||
|
ptr = strtok_r(NULL, " ", &saveptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ptr != NULL || check != ARGS_COUNT) {
|
||||||
|
cliShowParseError();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t i = args[INDEX];
|
||||||
|
if (
|
||||||
|
i >= 0 && i < MAX_GLOBAL_VARIABLES &&
|
||||||
|
args[MIN] >= INT32_MIN && args[MIN] <= INT32_MAX &&
|
||||||
|
args[MAX] >= INT32_MIN && args[MAX] <= INT32_MAX
|
||||||
|
) {
|
||||||
|
globalVariableConfigsMutable(i)->min = args[MIN];
|
||||||
|
globalVariableConfigsMutable(i)->max = args[MAX];
|
||||||
|
|
||||||
|
cliGvar("");
|
||||||
|
} else {
|
||||||
|
cliShowParseError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_GLOBAL_FUNCTIONS
|
#ifdef USE_GLOBAL_FUNCTIONS
|
||||||
|
@ -3162,6 +3234,9 @@ static void printConfig(const char *cmdline, bool doDiff)
|
||||||
#ifdef USE_LOGIC_CONDITIONS
|
#ifdef USE_LOGIC_CONDITIONS
|
||||||
cliPrintHashLine("logic");
|
cliPrintHashLine("logic");
|
||||||
printLogic(dumpMask, logicConditions_CopyArray, logicConditions(0));
|
printLogic(dumpMask, logicConditions_CopyArray, logicConditions(0));
|
||||||
|
|
||||||
|
cliPrintHashLine("gvar");
|
||||||
|
printGvar(dumpMask, globalVariableConfigs_CopyArray, globalVariableConfigs(0));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_GLOBAL_FUNCTIONS
|
#ifdef USE_GLOBAL_FUNCTIONS
|
||||||
|
@ -3419,6 +3494,10 @@ const clicmd_t cmdTable[] = {
|
||||||
CLI_COMMAND_DEF("logic", "configure logic conditions",
|
CLI_COMMAND_DEF("logic", "configure logic conditions",
|
||||||
"<rule> <enabled> <operation> <operand A type> <operand A value> <operand B type> <operand B value> <flags>\r\n"
|
"<rule> <enabled> <operation> <operand A type> <operand A value> <operand B type> <operand B value> <flags>\r\n"
|
||||||
"\treset\r\n", cliLogic),
|
"\treset\r\n", cliLogic),
|
||||||
|
|
||||||
|
CLI_COMMAND_DEF("gvar", "configure global variables",
|
||||||
|
"<gvar> <min> <max>\r\n"
|
||||||
|
"\treset\r\n", cliGvar),
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_GLOBAL_FUNCTIONS
|
#ifdef USE_GLOBAL_FUNCTIONS
|
||||||
CLI_COMMAND_DEF("gf", "configure global functions",
|
CLI_COMMAND_DEF("gf", "configure global functions",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue