mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-25 17:25:18 +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/typeconversion.h"
|
||||
#include "common/global_functions.h"
|
||||
#include "common/global_variables.h"
|
||||
|
||||
#include "config/config_eeprom.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
|
||||
|
||||
#ifdef USE_GLOBAL_FUNCTIONS
|
||||
|
@ -3162,6 +3234,9 @@ static void printConfig(const char *cmdline, bool doDiff)
|
|||
#ifdef USE_LOGIC_CONDITIONS
|
||||
cliPrintHashLine("logic");
|
||||
printLogic(dumpMask, logicConditions_CopyArray, logicConditions(0));
|
||||
|
||||
cliPrintHashLine("gvar");
|
||||
printGvar(dumpMask, globalVariableConfigs_CopyArray, globalVariableConfigs(0));
|
||||
#endif
|
||||
|
||||
#ifdef USE_GLOBAL_FUNCTIONS
|
||||
|
@ -3419,6 +3494,10 @@ const clicmd_t cmdTable[] = {
|
|||
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"
|
||||
"\treset\r\n", cliLogic),
|
||||
|
||||
CLI_COMMAND_DEF("gvar", "configure global variables",
|
||||
"<gvar> <min> <max>\r\n"
|
||||
"\treset\r\n", cliGvar),
|
||||
#endif
|
||||
#ifdef USE_GLOBAL_FUNCTIONS
|
||||
CLI_COMMAND_DEF("gf", "configure global functions",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue