From 9225de70e9dccc5a126dcdcd739efff1924ab105 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sat, 12 Dec 2020 22:40:56 +0100 Subject: [PATCH] not yet working offsetof stuff --- cube/User/Src/configCmds.c | 17 ++++++++++------- cube/User/Src/main2.c | 8 ++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/cube/User/Src/configCmds.c b/cube/User/Src/configCmds.c index 6bc5547..783462a 100644 --- a/cube/User/Src/configCmds.c +++ b/cube/User/Src/configCmds.c @@ -53,30 +53,33 @@ static bool showConfigCmd(uint8_t argc, char **args) { -static bool setDeviceNameCmd(uint8_t argc, char **args) { - return setStringParameterCmd(argc, args, ) -} - -static bool setStringParameterCmd(uint8_t argc, char **args) { +static bool setStringParameterCmd(uint8_t argc, char **args, size_t offset) { bool retCode = true; t_configBlock configBlock; char *parameterName = args[1]; char *newParameterValue = args[2]; if (strlen(newParameterValue) >= sizeof(configBlock.deviceName)) { - sendFormatString("given new value for %s is too long\n\r", parameterMeter); + sendFormatString("given new value for %s is too long\n\r", parameterName); retCode = false; } else { sendFormatString("set %s to %s\n\r", parameterName, newParameterValue); eepromReadConfigBlock(&configBlock); - strcpy(configBlock.deviceName, newParameterValue); + strcpy(((char*) (*(((char*)&configBlock) + offset))), newParameterValue); eepromWriteConfigBlock(&configBlock); } return retCode; } + + +static bool setDeviceNameCmd(uint8_t argc, char **args) { + return setStringParameterCmd(argc, args, offsetof(t_configBlock, deviceName)); +} + + const static cmd_t SET_COMMANDS[] = { { .name = "devicename", .cmdFunc = setDeviceNameCmd, .help = \ diff --git a/cube/User/Src/main2.c b/cube/User/Src/main2.c index f6ca942..f902c82 100644 --- a/cube/User/Src/main2.c +++ b/cube/User/Src/main2.c @@ -58,11 +58,11 @@ void my_setup_2() { cmdHandlerInit(); oledPrint(OLED_SCREEN0, "cmdhandler init"); - //frontendInit(); - //oledPrint(OLED_SCREEN0, "frontend init"); + frontendInit(); + oledPrint(OLED_SCREEN0, "frontend init"); - //mbusCommInit(); - //oledPrint(OLED_SCREEN0, "Meterbus init"); + mbusCommInit(); + oledPrint(OLED_SCREEN0, "Meterbus init"); oledPrint(OLED_SCREEN0, "App running"); }