From 64999eaefcb6afb5569f843ddd22dabaab3d4eae Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sun, 13 Dec 2020 22:26:39 +0100 Subject: [PATCH] string config done --- cube/User/Src/configCmds.c | 65 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/cube/User/Src/configCmds.c b/cube/User/Src/configCmds.c index 783462a..dce1813 100644 --- a/cube/User/Src/configCmds.c +++ b/cube/User/Src/configCmds.c @@ -67,7 +67,7 @@ static bool setStringParameterCmd(uint8_t argc, char **args, size_t offset) { sendFormatString("set %s to %s\n\r", parameterName, newParameterValue); eepromReadConfigBlock(&configBlock); - strcpy(((char*) (*(((char*)&configBlock) + offset))), newParameterValue); + strcpy((((char*)&configBlock) + offset), newParameterValue); eepromWriteConfigBlock(&configBlock); } @@ -79,14 +79,63 @@ static bool setDeviceNameCmd(uint8_t argc, char **args) { return setStringParameterCmd(argc, args, offsetof(t_configBlock, deviceName)); } +static bool setBrokerNameCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, brokerName)); +} + +static bool setSyslogServerCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, syslogServerName)); +} + +static bool setWatchdogTopicCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, watchdogTopic)); +} + +static bool setStartupTopicCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, startupTopic)); +} + +static bool setStatusTopicCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, statusTopic)); +} + +static bool setMbusDataTopicCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, mbusDataTopic)); +} + const static cmd_t SET_COMMANDS[] = { { .name = "devicename", .cmdFunc = setDeviceNameCmd, .help = \ "devicename ........................... Name of this device\n\r" }, + { .name = "brokername", .cmdFunc = setBrokerNameCmd, + .help = \ + "brokername ........................... Hostname of the MQTT broker\n\r" + }, + { .name = "syslogserver", .cmdFunc = setSyslogServerCmd, + .help = \ + "syslogserver ......................... Hostname of the Syslog server\n\r" + }, + { .name = "watchdogtopic", .cmdFunc = setWatchdogTopicCmd, + .help = \ + "watchdogtopic ........................ Watchdog Topic\n\r" + }, + { .name = "startuptopic", .cmdFunc = setStartupTopicCmd, + .help = \ + "startuptopic ......................... Startup Topic\n\r" + }, + { .name = "statustopic", .cmdFunc = setStatusTopicCmd, + .help = \ + "statustopic .......................... Status Topic\n\r" + }, + { .name = "mbusdatatopic", .cmdFunc = setMbusDataTopicCmd, + .help = \ + "mbusdatatopic ........................ MBus Data Topic\n\r" + }, { .name = "END_OF_CMDS", .help = "",.cmdFunc = NULL } }; + const static char UNKNOWN_PARAMETER[] = "unknown parameter\n\r"; const static char OK_MSG[] = "OK\n\r"; const static char FAILED_MSG[] = "Failed\n\r"; @@ -97,8 +146,17 @@ static bool setCmd(uint8_t argc, char **args) { char *cmd = args[1]; if (argc >= 2) { - if (0 == strcmp("?", cmd)) { + if (0 == strcmp("help", cmd)) { sendString("You can set the following parameters:\n\r"); + uint8_t cmdIdx = 0; + while (true) { + cmd_t command = SET_COMMANDS[cmdIdx]; + if (0 == strcmp("END_OF_CMDS", command.name)) { + break; + } + sendString(command.help); + cmdIdx++; + } retCode = true; } else { uint8_t cmdIdx = 0; @@ -111,6 +169,7 @@ static bool setCmd(uint8_t argc, char **args) { if (0 == strcmp(cmd, command.name)) { retCode = command.cmdFunc(argc, args); messageToSend = retCode ? (uint8_t*)OK_MSG : (uint8_t*)FAILED_MSG; + sendString("Remember you need to restart to active this change.\n\r"); break; } cmdIdx++; @@ -138,7 +197,7 @@ const cmd_t CONFIG_COMMANDS[] = { { .name = "set", .cmdFunc = setCmd, .help = \ "set .................................. Set configuration parameters\n\r" \ - " Argument ? gives a list of \n\r" \ + " Argument help gives a list of \n\r" \ " parameters\n\r" }, { .name = "restart", .cmdFunc = restartCmd,