diff --git a/src/cmnds/cmd_if.c b/src/cmnds/cmd_if.c index 5c719d482..826fe5df6 100644 --- a/src/cmnds/cmd_if.c +++ b/src/cmnds/cmd_if.c @@ -383,7 +383,7 @@ float CMD_EvaluateExpression(const char *s, const char *stop) { } // if MQTTOnline then "qq" else "qq" -int CMD_If(const void *context, const char *cmd, const char *args, int cmdFlags){ +commandResult_t CMD_If(const void *context, const char *cmd, const char *args, int cmdFlags){ const char *cmdA; const char *cmdB; const char *condition; @@ -393,24 +393,24 @@ int CMD_If(const void *context, const char *cmd, const char *args, int cmdFlags) if(args==0||*args==0) { ADDLOG_INFO(LOG_FEATURE_EVENT, "CMD_If: command require at least 3 args"); - return 1; + return CMD_RES_NOT_ENOUGH_ARGUMENTS; } Tokenizer_TokenizeString(args, TOKENIZER_ALLOW_QUOTES | TOKENIZER_DONT_EXPAND); if(Tokenizer_GetArgsCount() < 3) { ADDLOG_INFO(LOG_FEATURE_EVENT, "CMD_If: command require at least 3 args, you gave %i",Tokenizer_GetArgsCount()); - return 1; + return CMD_RES_NOT_ENOUGH_ARGUMENTS; } condition = Tokenizer_GetArg(0); if(stricmp(Tokenizer_GetArg(1),"then")) { ADDLOG_INFO(LOG_FEATURE_EVENT, "CMD_If: second argument always must be 'then', but it's '%s'",Tokenizer_GetArg(1)); - return 1; + return CMD_RES_BAD_ARGUMENT; } argsCount = Tokenizer_GetArgsCount(); if(argsCount >= 5) { cmdA = Tokenizer_GetArg(2); if(stricmp(Tokenizer_GetArg(3),"else")) { ADDLOG_INFO(LOG_FEATURE_EVENT, "CMD_If: fourth argument always must be 'else', but it's '%s'",Tokenizer_GetArg(3)); - return 1; + return CMD_RES_BAD_ARGUMENT; } cmdB = Tokenizer_GetArg(4); } else { @@ -441,6 +441,6 @@ int CMD_If(const void *context, const char *cmd, const char *args, int cmdFlags) } } - return 1; + return CMD_RES_OK; } diff --git a/src/cmnds/cmd_local.h b/src/cmnds/cmd_local.h index 50c71480a..3ae08c911 100644 --- a/src/cmnds/cmd_local.h +++ b/src/cmnds/cmd_local.h @@ -19,9 +19,8 @@ int get_cmd(const char *s, char *dest, int maxlen, int stripnum); bool isWhiteSpace(char ch); -const char *CMD_ExpandingStrdup(const char *in); float CMD_EvaluateExpression(const char *s, const char *stop); -int CMD_If(const void *context, const char *cmd, const char *args, int cmdFlags); +commandResult_t CMD_If(const void *context, const char *cmd, const char *args, int cmdFlags); void CMD_ExpandConstantsWithinString(const char *in, char *out, int outLen); #endif // __CMD_LOCAL_H__ diff --git a/src/cmnds/cmd_newLEDDriver.c b/src/cmnds/cmd_newLEDDriver.c index 73ab88ed7..40317d49c 100644 --- a/src/cmnds/cmd_newLEDDriver.c +++ b/src/cmnds/cmd_newLEDDriver.c @@ -461,7 +461,7 @@ void LED_SetTemperature(int tmpInteger, bool bApply) { } -static int temperature(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t temperature(const void *context, const char *cmd, const char *args, int cmdFlags){ int tmp; //if (!wal_strnicmp(cmd, "POWERALL", 8)){ @@ -496,7 +496,7 @@ void LED_SetEnableAll(int bEnable) { int LED_GetEnableAll() { return g_lightEnableAll; } -static int enableAll(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t enableAll(const void *context, const char *cmd, const char *args, int cmdFlags){ //if (!wal_strnicmp(cmd, "POWERALL", 8)){ int bEnable; ADDLOG_DEBUG(LOG_FEATURE_CMD, " enableAll (%s) received with args %s",cmd,args); diff --git a/src/cmnds/cmd_public.h b/src/cmnds/cmd_public.h index ee5fb1502..43de3c0fe 100644 --- a/src/cmnds/cmd_public.h +++ b/src/cmnds/cmd_public.h @@ -35,6 +35,7 @@ void CMD_Init_Delayed(); void CMD_RegisterCommand(const char* name, const char* args, commandHandler_t handler, const char* userDesc, void* context); commandResult_t CMD_ExecuteCommand(const char* s, int cmdFlags); commandResult_t CMD_ExecuteCommandArgs(const char* cmd, const char* args, int cmdFlags); +const char *CMD_ExpandingStrdup(const char *in); enum EventCode { CMD_EVENT_NONE, diff --git a/src/driver/drv_bl_shared.c b/src/driver/drv_bl_shared.c index b94b71a71..3d49f3d6e 100644 --- a/src/driver/drv_bl_shared.c +++ b/src/driver/drv_bl_shared.c @@ -164,7 +164,7 @@ void BL09XX_SaveEmeteringStatistics() HAL_SetEnergyMeterStatus(&data); } -int BL09XX_ResetEnergyCounter(const void *context, const char *cmd, const char *args, int cmdFlags) +commandResult_t BL09XX_ResetEnergyCounter(const void *context, const char *cmd, const char *args, int cmdFlags) { float value; int i; @@ -206,10 +206,10 @@ int BL09XX_ResetEnergyCounter(const void *context, const char *cmd, const char * BL09XX_SaveEmeteringStatistics(); lastConsumptionSaveStamp = xTaskGetTickCount(); } - return 0; + return CMD_RES_OK; } -int BL09XX_SetupEnergyStatistic(const void *context, const char *cmd, const char *args, int cmdFlags) +commandResult_t BL09XX_SetupEnergyStatistic(const void *context, const char *cmd, const char *args, int cmdFlags) { // SetupEnergyStats enable sample_time sample_count int enable; @@ -222,7 +222,7 @@ int BL09XX_SetupEnergyStatistic(const void *context, const char *cmd, const char if(Tokenizer_GetArgsCount() < 3) { addLogAdv(LOG_INFO, LOG_FEATURE_ENERGYMETER, "BL09XX_SetupEnergyStatistic: requires 3 arguments (enable, sample_time, sample_count)\n"); - return -1; + return CMD_RES_NOT_ENOUGH_ARGUMENTS; } enable = Tokenizer_GetArgInteger(0); @@ -296,10 +296,10 @@ int BL09XX_SetupEnergyStatistic(const void *context, const char *cmd, const char energyCounterStatsJSONEnable = (json_enable != 0) ? true : false; - return 0; + return CMD_RES_OK; } -int BL09XX_SetupConsumptionThreshold(const void *context, const char *cmd, const char *args, int cmdFlags) +commandResult_t BL09XX_SetupConsumptionThreshold(const void *context, const char *cmd, const char *args, int cmdFlags) { float threshold; Tokenizer_TokenizeString(args,0); @@ -307,7 +307,7 @@ int BL09XX_SetupConsumptionThreshold(const void *context, const char *cmd, const if(Tokenizer_GetArgsCount() < 1) { addLogAdv(LOG_INFO, LOG_FEATURE_ENERGYMETER, "BL09XX_SetupConsumptionThreshold: requires argument (threshold)\n"); - return -1; + return CMD_RES_NOT_ENOUGH_ARGUMENTS; } threshold = atof(Tokenizer_GetArg(0)); @@ -319,7 +319,7 @@ int BL09XX_SetupConsumptionThreshold(const void *context, const char *cmd, const changeSavedThresholdEnergy = threshold; addLogAdv(LOG_INFO, LOG_FEATURE_ENERGYMETER, "ConsumptionThreshold: %1.1f\n", changeSavedThresholdEnergy); - return 0; + return CMD_RES_OK; } void BL_ProcessUpdate(float voltage, float current, float power) diff --git a/src/driver/drv_ntp.c b/src/driver/drv_ntp.c index 6b2ca3365..ece947312 100644 --- a/src/driver/drv_ntp.c +++ b/src/driver/drv_ntp.c @@ -68,36 +68,36 @@ int NTP_GetTimesZoneOfs() return g_timeOffsetHours; } -int NTP_SetTimeZoneOfs(const void *context, const char *cmd, const char *args, int cmdFlags) { +commandResult_t NTP_SetTimeZoneOfs(const void *context, const char *cmd, const char *args, int cmdFlags) { Tokenizer_TokenizeString(args,0); if(Tokenizer_GetArgsCount() < 1) { addLogAdv(LOG_INFO, LOG_FEATURE_NTP,"Command requires one argument\n"); - return 0; + return CMD_RES_NOT_ENOUGH_ARGUMENTS; } g_timeOffsetHours = Tokenizer_GetArgInteger(0) * 60 * 60; addLogAdv(LOG_INFO, LOG_FEATURE_NTP,"NTP offset set, wait for next ntp packet to apply changes\n"); - return 1; + return CMD_RES_OK; } //Set custom NTP server -int NTP_SetServer(const void *context, const char *cmd, const char *args, int cmdFlags) { +commandResult_t NTP_SetServer(const void *context, const char *cmd, const char *args, int cmdFlags) { const char *newValue; Tokenizer_TokenizeString(args,0); if(Tokenizer_GetArgsCount() < 1) { addLogAdv(LOG_INFO, LOG_FEATURE_NTP,"Argument missing e.g. ntp_setServer ipAddress\n"); - return 0; + return CMD_RES_NOT_ENOUGH_ARGUMENTS; } newValue = Tokenizer_GetArg(0); CFG_SetNTPServer(newValue); addLogAdv(LOG_INFO, LOG_FEATURE_NTP, "NTP server set to %s\n", newValue); - return 1; + return CMD_RES_OK; } //Display settings used by the NTP driver -int NTP_Info(const void *context, const char *cmd, const char *args, int cmdFlags) { +commandResult_t NTP_Info(const void *context, const char *cmd, const char *args, int cmdFlags) { addLogAdv(LOG_INFO, LOG_FEATURE_NTP, "Server=%s, Time offset=%d\n", CFG_GetNTPServer(), g_timeOffsetHours); - return 1; + return CMD_RES_OK; } void NTP_Init() { diff --git a/src/driver/drv_sm16703P.c b/src/driver/drv_sm16703P.c index c02064d73..010c566c7 100644 --- a/src/driver/drv_sm16703P.c +++ b/src/driver/drv_sm16703P.c @@ -129,7 +129,7 @@ static void SM16703P_Send(byte *data, int dataSize){ // For P12, it says 0 addLogAdv(LOG_INFO, LOG_FEATURE_ENERGYMETER, "Reg val is %i", reg_val); } -static int SM16703P_Test(const void *context, const char *cmd, const char *args, int flags){ +static commandResult_t SM16703P_Test(const void *context, const char *cmd, const char *args, int flags){ byte test[3]; int i; @@ -138,11 +138,11 @@ static int SM16703P_Test(const void *context, const char *cmd, const char *args, } SM16703P_Send(test,3); - return 1; + return CMD_RES_OK; } // backlog startDriver SM16703P; SM16703P_Test_3xZero -static int SM16703P_Test_3xZero(const void *context, const char *cmd, const char *args, int flags) { +static commandResult_t SM16703P_Test_3xZero(const void *context, const char *cmd, const char *args, int flags) { byte test[3]; int i; @@ -152,10 +152,10 @@ static int SM16703P_Test_3xZero(const void *context, const char *cmd, const char SM16703P_Send(test, 3); - return 1; + return CMD_RES_OK; } // backlog startDriver SM16703P; SM16703P_Test_3xOne -static int SM16703P_Test_3xOne(const void *context, const char *cmd, const char *args, int flags) { +static commandResult_t SM16703P_Test_3xOne(const void *context, const char *cmd, const char *args, int flags) { byte test[3]; int i; @@ -165,9 +165,9 @@ static int SM16703P_Test_3xOne(const void *context, const char *cmd, const char SM16703P_Send(test, 3); - return 1; + return CMD_RES_OK; } -static int SM16703P_Send_Cmd(const void *context, const char *cmd, const char *args, int flags) { +static commandResult_t SM16703P_Send_Cmd(const void *context, const char *cmd, const char *args, int flags) { byte test[32]; int i; const char *c; @@ -199,7 +199,7 @@ static int SM16703P_Send_Cmd(const void *context, const char *cmd, const char *a SM16703P_Send(test, numBytes); - return 1; + return CMD_RES_OK; } // startDriver SM16703P // backlog startDriver SM16703P; SM16703P_Test diff --git a/src/driver/drv_ssdp.c b/src/driver/drv_ssdp.c index 7ef80b536..b4d1396a2 100644 --- a/src/driver/drv_ssdp.c +++ b/src/driver/drv_ssdp.c @@ -397,9 +397,9 @@ static int DRV_SSDP_Service_Http(http_request_t* request){ // end private functions /////////////////////////////// -static int Cmd_obkDeviceList(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t Cmd_obkDeviceList(const void *context, const char *cmd, const char *args, int cmdFlags){ obkDeviceList(); - return 1; + return CMD_RES_OK; } /////////////////////////////////////////////// diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index daeca5ffe..25f748ffd 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -1265,23 +1265,36 @@ int http_fn_flash_read_tool(http_request_t* request) { poststr(request, NULL); return 0; } - +const char *CMD_GetResultString(commandResult_t r) { + if (r == CMD_RES_OK) + return "OK"; + if (r == CMD_RES_EMPTY_STRING) + return "No command entered"; + if (r == CMD_RES_ERROR) + return "Command found but returned error"; + if (r == CMD_RES_NOT_ENOUGH_ARGUMENTS) + return "Not enough arguments for this command"; + if (r == CMD_RES_UNKNOWN_COMMAND) + return "Unknown command"; + if (r == CMD_RES_BAD_ARGUMENT) + return "Bad argument"; + return "Unknown error"; +} int http_fn_cmd_tool(http_request_t* request) { - int i; + commandResult_t res; + const char *resStr; char tmpA[128]; http_setup(request, httpMimeTypeHTML); http_html_start(request, "Command tool"); poststr(request, "