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, "

Command Tool

"); + poststr(request, "This is a basic command line.
"); + poststr(request, "Please consider using 'Web Application' console with more options and real time log view.
"); if (http_getArg(request->url, "cmd", tmpA, sizeof(tmpA))) { - i = CMD_ExecuteCommand(tmpA, COMMAND_FLAG_SOURCE_CONSOLE); - if (i == 0) { - poststr(request, "Command not found"); - } - else { - poststr(request, "Executed"); - } + res = CMD_ExecuteCommand(tmpA, COMMAND_FLAG_SOURCE_CONSOLE); + resStr = CMD_GetResultString(res); + hprintf255(request, "

%s

", resStr); poststr(request, "
"); } add_label_text_field(request, "Command", "cmd", tmpA, "
"); diff --git a/src/littlefs/our_lfs.c b/src/littlefs/our_lfs.c index b0f6f19f8..7bf437714 100644 --- a/src/littlefs/our_lfs.c +++ b/src/littlefs/our_lfs.c @@ -86,7 +86,7 @@ int lfs_present(){ return lfs_initialised; } -static int CMD_LFS_Size(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t CMD_LFS_Size(const void *context, const char *cmd, const char *args, int cmdFlags){ if (!args || !args[0]){ ADDLOG_INFO(LOG_FEATURE_CMD, "unchanged LFS size 0x%X configured 0x%X", LFS_Size, CFG_GetLFS_Size()); return 1; @@ -105,48 +105,48 @@ static int CMD_LFS_Size(const void *context, const char *cmd, const char *args, LFS_BLOCKS_MIN_LEN, LFS_BLOCKS_MAX_LEN ); - return 1; + return CMD_RES_ERROR; } // double check again that we're within bounds - don't want // boot overwrite or anything nasty.... if ((newstart < LFS_BLOCKS_START_MIN) || (newstart >= LFS_BLOCKS_END)){ ADDLOG_ERROR(LOG_FEATURE_CMD, "LFSSize OUT OF BOUNDS start 0x%X ", newstart); - return 1; + return CMD_RES_ERROR; } if ((newstart + newsize > LFS_BLOCKS_END) || (newstart + newsize < LFS_BLOCKS_START_MIN)){ ADDLOG_ERROR(LOG_FEATURE_CMD, "LFSSize OUT OF BOUNDS end 0x%X", newstart + newsize); - return 1; + return CMD_RES_ERROR; } CFG_SetLFS_Size(newsize); ADDLOG_INFO(LOG_FEATURE_CMD, "LFS size 0x%X new configured 0x%X", LFS_Size, CFG_GetLFS_Size()); - return 1; + return CMD_RES_OK; } -static int CMD_LFS_Unmount(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t CMD_LFS_Unmount(const void *context, const char *cmd, const char *args, int cmdFlags){ if (lfs_initialised){ release_lfs(); ADDLOG_INFO(LOG_FEATURE_CMD, "unmounted LFS size 0x%X", LFS_Size); } else { ADDLOG_INFO(LOG_FEATURE_CMD, "LFS was not mounted - size 0x%X", LFS_Size); } - return 1; + return CMD_RES_OK; } -static int CMD_LFS_Mount(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t CMD_LFS_Mount(const void *context, const char *cmd, const char *args, int cmdFlags){ if (lfs_initialised){ ADDLOG_INFO(LOG_FEATURE_CMD, "LFS already mounted size 0x%X", LFS_Size); } else { init_lfs(1); ADDLOG_INFO(LOG_FEATURE_CMD, "LFS mounted size 0x%X", LFS_Size); } - return 1; + return CMD_RES_OK; } -static int CMD_LFS_Format(const void *context, const char *cmd, const char *args, int cmdFlags){ +static commandResult_t CMD_LFS_Format(const void *context, const char *cmd, const char *args, int cmdFlags){ if (lfs_initialised){ release_lfs(); ADDLOG_INFO(LOG_FEATURE_CMD, "LFS released size 0x%X", LFS_Size); @@ -175,12 +175,12 @@ static int CMD_LFS_Format(const void *context, const char *cmd, const char *args // boot overwrite or anything nasty.... if (newstart < LFS_BLOCKS_START_MIN){ ADDLOG_ERROR(LOG_FEATURE_CMD, "LFS OUT OF BOUNDS start 0x%X too small", newstart); - return 1; + return CMD_RES_ERROR; } if ((newstart + newsize > LFS_BLOCKS_END) || (newstart + newsize < LFS_BLOCKS_START_MIN)){ ADDLOG_ERROR(LOG_FEATURE_CMD, "LFS OUT OF BOUNDS end 0x%X too big", newstart + newsize); - return 1; + return CMD_RES_ERROR; } LFS_Start = newstart; @@ -195,7 +195,7 @@ static int CMD_LFS_Format(const void *context, const char *cmd, const char *args } else { ADDLOG_INFO(LOG_FEATURE_CMD, "LFS mounted"); } - return 1; + return CMD_RES_OK; } void LFSAddCmds(){ diff --git a/src/mqtt/new_mqtt.c b/src/mqtt/new_mqtt.c index 62b0a97ce..95c447ce6 100644 --- a/src/mqtt/new_mqtt.c +++ b/src/mqtt/new_mqtt.c @@ -1335,7 +1335,7 @@ OBK_Publish_Result MQTT_DoItemPublishString(const char* sChannel, const char* va OBK_Publish_Result MQTT_DoItemPublish(int idx) { - int type; + //int type; char dataStr[3 * 6 + 1]; //This is sufficient to hold mac value bool bWantsToPublish;