Added HELP command

This commit is contained in:
2026-04-09 21:34:59 +02:00
parent 8a9dd8f27a
commit 40e892a7c4
3 changed files with 74 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
#include "cmd.h" #include "cmd.h"
#include "help.h"
#include <string.h> #include <string.h>
#include "data/track_store.h" #include "data/track_store.h"
@@ -132,6 +133,10 @@ Cmd::CommandId Cmd::parseCommandName(const char *input) {
return ThermoSetHigh; return ThermoSetHigh;
} }
if (strcmp(input, "HELP") == 0) {
return HelpGlobal;
}
return Unknown; return Unknown;
} }
@@ -507,6 +512,46 @@ int Cmd::handleThermoSetHigh(unsigned short argc, char* argv[]) {
return result; return result;
} }
int Cmd::handleHelpGlobal(unsigned short argc) {
if (argc != 1) {
#ifdef ERROR
if (logger_ != nullptr) {
logger_->error("HELP expects no arguments");
}
#endif
return 1;
}
#ifdef INFO
if (logger_ != nullptr) {
String line;
line.reserve(96);
for (size_t idx = 0; cmd_help::kGlobalHelpText[idx] != '\0'; idx++) {
char c = cmd_help::kGlobalHelpText[idx];
if (c == '\r') {
continue;
}
if (c == '\n') {
if (line.length() > 0) {
logger_->info(line);
line = "";
}
continue;
}
line += c;
}
if (line.length() > 0) {
logger_->info(line);
}
}
#endif
return 0;
}
int Cmd::handleUnknownCommand(unsigned short argc, char *argv[]) { int Cmd::handleUnknownCommand(unsigned short argc, char *argv[]) {
#ifdef ERROR #ifdef ERROR
if (logger_ != nullptr) { if (logger_ != nullptr) {
@@ -564,6 +609,9 @@ int Cmd::dispatchCommand(CommandId command, unsigned short argc, char *argv[]) {
case ThermoSetHigh: case ThermoSetHigh:
return this->handleThermoSetHigh(argc, argv); return this->handleThermoSetHigh(argc, argv);
case HelpGlobal:
return this->handleHelpGlobal(argc);
case Unknown: case Unknown:
default: default:
return this->handleUnknownCommand(argc, argv); return this->handleUnknownCommand(argc, argv);

View File

@@ -30,6 +30,7 @@ private:
BatterySetLow, BatterySetLow,
ThermoSetLow, ThermoSetLow,
ThermoSetHigh, ThermoSetHigh,
HelpGlobal,
}; };
HardwareSerial *data_stream_; HardwareSerial *data_stream_;
@@ -62,6 +63,7 @@ private:
int handleBatterySetLow(unsigned short argc, char *argv[]); int handleBatterySetLow(unsigned short argc, char *argv[]);
int handleThermoSetLow(unsigned short argc, char *argv[]); int handleThermoSetLow(unsigned short argc, char *argv[]);
int handleThermoSetHigh(unsigned short argc, char *argv[]); int handleThermoSetHigh(unsigned short argc, char *argv[]);
int handleHelpGlobal(unsigned short argc);
int handleUnknownCommand(unsigned short argc, char *argv[]); int handleUnknownCommand(unsigned short argc, char *argv[]);
public: public:

24
src/modules/cmd/help.h Normal file
View File

@@ -0,0 +1,24 @@
// Copyright (C) 2026 Hector van der Aa <hector@h3cx.dev>
// Copyright (C) 2026 Association Exergie <association.exergie@gmail.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
namespace cmd_help {
static constexpr char kGlobalHelpText[] =
"Available commands:\n"
" HELP\n"
" REBOOT\n"
" CFG_DUMP\n"
" CFG_RESET\n"
" TRACK_PUT,<slot>,<name>,<point_a_lat>,<point_a_lng>,<point_b_lat>,<point_b_lng>\n"
" TRACK_DELETE,<slot>\n"
" TRACK_DUMP,<slot>\n"
" TRACK_AUTODETECT\n"
" DISPLAY_GPS_DEBUG\n"
" DISPLAY_DRIVER_PRIMARY\n"
" BATTERY_CAL,<actual_voltage>\n"
" BATTERY_PRINT_VBAT\n"
" BATTERY_SET_LOW,<voltage>\n"
" THERMO_SET_LOW,<temperature>\n"
" THERMO_SET_HIGH,<temperature>\n";
} // namespace cmd_help