diff --git a/tasmota/xdrv_15_pca9685.ino b/tasmota/xdrv_15_pca9685.ino index 950a7df2b..254103d0a 100644 --- a/tasmota/xdrv_15_pca9685.ino +++ b/tasmota/xdrv_15_pca9685.ino @@ -119,20 +119,20 @@ bool PCA9685_Command(void) serviced = false; return serviced; } - char sub_string[XdrvMailbox.data_len]; + char argument[XdrvMailbox.data_len]; for (uint32_t ca=0;ca 1) { - uint16_t new_freq = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint16_t new_freq = atoi(ArgV(argument, 2)); if ((new_freq >= 24) && (new_freq <= 1526)) { PCA9685_SetPWMfreq(new_freq); Response_P(PSTR("{\"PCA9685\":{\"PWMF\":%i, \"Result\":\"OK\"}}"),new_freq); @@ -143,23 +143,23 @@ bool PCA9685_Command(void) return serviced; } } - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"PWM")) { + if (!strcmp(ArgV(argument, 1),"PWM")) { if (paramcount > 1) { - uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint8_t pin = atoi(ArgV(argument, 2)); if (paramcount > 2) { - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "ON")) { + if (!strcmp(ArgV(argument, 3), "ON")) { PCA9685_SetPWM(pin, 4096, false); Response_P(PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,4096); serviced = true; return serviced; } - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "OFF")) { + if (!strcmp(ArgV(argument, 3), "OFF")) { PCA9685_SetPWM(pin, 0, false); Response_P(PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,0); serviced = true; return serviced; } - uint16_t pwm = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); + uint16_t pwm = atoi(ArgV(argument, 3)); if ((pin >= 0 && pin <= 15) && (pwm >= 0 && pwm <= 4096)) { PCA9685_SetPWM(pin, pwm, false); Response_P(PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,pwm); diff --git a/tasmota/xsns_29_mcp230xx.ino b/tasmota/xsns_29_mcp230xx.ino index d973f1b77..b450d63d7 100644 --- a/tasmota/xsns_29_mcp230xx.ino +++ b/tasmota/xsns_29_mcp230xx.ino @@ -451,25 +451,25 @@ bool MCP230xx_Command(void) serviced = false; return serviced; } - char sub_string[XdrvMailbox.data_len]; + char argument[XdrvMailbox.data_len]; for (uint32_t ca=0;ca 1) { - uint8_t intpri = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint8_t intpri = atoi(ArgV(argument, 2)); if ((intpri >= 0) && (intpri <= 20)) { Settings.mcp230xx_int_prio = intpri; Response_P(MCP230XX_INTCFG_RESPONSE,"PRI",99,Settings.mcp230xx_int_prio); // "{\"MCP230xx_INT%s\":{\"D_%i\":%i}}"; @@ -481,9 +481,9 @@ bool MCP230xx_Command(void) } } - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTTIMER")) { + if (!strcmp(ArgV(argument, 1),"INTTIMER")) { if (paramcount > 1) { - uint8_t inttim = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint8_t inttim = atoi(ArgV(argument, 2)); if ((inttim >= 0) && (inttim <= 3600)) { Settings.mcp230xx_int_timer = inttim; MCP230xx_CheckForIntCounter(); // update register on whether or not we should be counting interrupts @@ -496,19 +496,19 @@ bool MCP230xx_Command(void) } } - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTDEF")) { + if (!strcmp(ArgV(argument, 1),"INTDEF")) { if (paramcount > 1) { - uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint8_t pin = atoi(ArgV(argument, 2)); if (pin < mcp230xx_pincount) { if (pin == 0) { - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "0")) validpin=true; + if (!strcmp(ArgV(argument, 2), "0")) validpin=true; } else { validpin = true; } } if (validpin) { if (paramcount > 2) { - uint8_t intdef = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); + uint8_t intdef = atoi(ArgV(argument, 3)); if ((intdef >= 0) && (intdef <= 15)) { Settings.mcp230xx_config[pin].int_report_defer=intdef; if (Settings.mcp230xx_config[pin].int_count_en) { @@ -535,19 +535,19 @@ bool MCP230xx_Command(void) } } - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTCNT")) { + if (!strcmp(ArgV(argument, 1),"INTCNT")) { if (paramcount > 1) { - uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint8_t pin = atoi(ArgV(argument, 2)); if (pin < mcp230xx_pincount) { if (pin == 0) { - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "0")) validpin=true; + if (!strcmp(ArgV(argument, 2), "0")) validpin=true; } else { validpin = true; } } if (validpin) { if (paramcount > 2) { - uint8_t intcnt = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); + uint8_t intcnt = atoi(ArgV(argument, 3)); if ((intcnt >= 0) && (intcnt <= 1)) { Settings.mcp230xx_config[pin].int_count_en=intcnt; if (Settings.mcp230xx_config[pin].int_report_defer) { @@ -581,19 +581,19 @@ bool MCP230xx_Command(void) } } - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTRETAIN")) { + if (!strcmp(ArgV(argument, 1),"INTRETAIN")) { if (paramcount > 1) { - uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + uint8_t pin = atoi(ArgV(argument, 2)); if (pin < mcp230xx_pincount) { if (pin == 0) { - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "0")) validpin=true; + if (!strcmp(ArgV(argument, 2), "0")) validpin=true; } else { validpin = true; } } if (validpin) { if (paramcount > 2) { - uint8_t int_retain = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); + uint8_t int_retain = atoi(ArgV(argument, 3)); if ((int_retain >= 0) && (int_retain <= 1)) { Settings.mcp230xx_config[pin].int_retain_flag=int_retain; Response_P(MCP230XX_INTCFG_RESPONSE,"INT_RETAIN",pin,Settings.mcp230xx_config[pin].int_retain_flag); @@ -616,17 +616,17 @@ bool MCP230xx_Command(void) } } - uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 1)); + uint8_t pin = atoi(ArgV(argument, 1)); if (pin < mcp230xx_pincount) { if (0 == pin) { - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1), "0")) validpin=true; + if (!strcmp(ArgV(argument, 1), "0")) validpin=true; } else { validpin=true; } } if (validpin && (paramcount > 1)) { - if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "?")) { + if (!strcmp(ArgV(argument, 2), "?")) { uint8_t port = 0; if (pin > 7) { port = 1; } uint8_t portdata = MCP230xx_readGPIO(port); @@ -652,15 +652,15 @@ bool MCP230xx_Command(void) if ( mcp230xx_outpinmapping[relay_no] == pin) break; } relay_no = TasmotaGlobal.devices_present - mcp230xx_oldoutpincount + relay_no +1; - if ((!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "ON")) || (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "1"))) { + if ((!strcmp(ArgV(argument, 2), "ON")) || (!strcmp(ArgV(argument, 2), "1"))) { ExecuteCommandPower(relay_no, 1, SRC_IGNORE); return serviced; } - if ((!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "OFF")) || (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "0"))) { + if ((!strcmp(ArgV(argument, 2), "OFF")) || (!strcmp(ArgV(argument, 2), "0"))) { ExecuteCommandPower(relay_no, 0, SRC_IGNORE); return serviced; } - if ((!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "T")) || (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "2"))) { + if ((!strcmp(ArgV(argument, 2), "T")) || (!strcmp(ArgV(argument, 2), "2"))) { ExecuteCommandPower(relay_no, 2, SRC_IGNORE); return serviced; } @@ -670,13 +670,13 @@ bool MCP230xx_Command(void) uint8_t pullup = 0; uint8_t intmode = 0; if (paramcount > 1) { - pinmode = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + pinmode = atoi(ArgV(argument, 2)); } if (paramcount > 2) { - pullup = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); + pullup = atoi(ArgV(argument, 3)); } if (paramcount > 3) { - intmode = atoi(subStr(sub_string, XdrvMailbox.data, ",", 4)); + intmode = atoi(ArgV(argument, 4)); } #ifdef USE_MCP230xx_OUTPUT if ((pin < mcp230xx_pincount) && (pinmode > 0) && (pinmode < 7) && (pullup < 2) && (paramcount > 2)) { diff --git a/tasmota/xsns_34_hx711.ino b/tasmota/xsns_34_hx711.ino index aeb54f542..db89f432e 100644 --- a/tasmota/xsns_34_hx711.ino +++ b/tasmota/xsns_34_hx711.ino @@ -193,7 +193,7 @@ bool HxCommand(void) { bool serviced = true; bool show_parms = false; - char sub_string[XdrvMailbox.data_len +1]; + char argument[XdrvMailbox.data_len]; for (uint32_t ca = 0; ca < XdrvMailbox.data_len; ca++) { if ((' ' == XdrvMailbox.data[ca]) || ('=' == XdrvMailbox.data[ca])) { XdrvMailbox.data[ca] = ','; } @@ -206,7 +206,7 @@ bool HxCommand(void) break; case 2: // Calibrate if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.weight_reference = strtol(subStr(sub_string, XdrvMailbox.data, ",", 2), nullptr, 10); + Settings.weight_reference = strtol(ArgV(argument, 2), nullptr, 10); } Hx.scale = 1; HxReset(); @@ -216,26 +216,26 @@ bool HxCommand(void) break; case 3: // WeightRef to user reference if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.weight_reference = strtol(subStr(sub_string, XdrvMailbox.data, ",", 2), nullptr, 10); + Settings.weight_reference = strtol(ArgV(argument, 2), nullptr, 10); } show_parms = true; break; case 4: // WeightCal to user calculated value if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.weight_calibration = strtol(subStr(sub_string, XdrvMailbox.data, ",", 2), nullptr, 10); + Settings.weight_calibration = strtol(ArgV(argument, 2), nullptr, 10); Hx.scale = Settings.weight_calibration; } show_parms = true; break; case 5: // WeightMax if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.weight_max = strtol(subStr(sub_string, XdrvMailbox.data, ",", 2), nullptr, 10) / 1000; + Settings.weight_max = strtol(ArgV(argument, 2), nullptr, 10) / 1000; } show_parms = true; break; case 6: // WeightItem if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.weight_item = (unsigned long)(CharToFloat(subStr(sub_string, XdrvMailbox.data, ",", 2)) * 10); + Settings.weight_item = (unsigned long)(CharToFloat(ArgV(argument, 2)) * 10); } show_parms = true; break; @@ -245,13 +245,13 @@ bool HxCommand(void) break; case 8: // Json on weight change if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.SensorBits1.hx711_json_weight_change = strtol(subStr(sub_string, XdrvMailbox.data, ",", 2), nullptr, 10) & 1; + Settings.SensorBits1.hx711_json_weight_change = strtol(ArgV(argument, 2), nullptr, 10) & 1; } show_parms = true; break; case 9: // WeightDelta if (strchr(XdrvMailbox.data, ',') != nullptr) { - Settings.weight_change = strtol(subStr(sub_string, XdrvMailbox.data, ",", 2), nullptr, 10); + Settings.weight_change = strtol(ArgV(argument, 2), nullptr, 10); SetWeightDelta(); } show_parms = true; diff --git a/tasmota/xsns_40_pn532.ino b/tasmota/xsns_40_pn532.ino index 4f03f185d..03eba20c7 100644 --- a/tasmota/xsns_40_pn532.ino +++ b/tasmota/xsns_40_pn532.ino @@ -500,29 +500,28 @@ bool PN532_Command(void) { serviced = false; return serviced; } - char sub_string[XdrvMailbox.data_len]; - char sub_string_tmp[XdrvMailbox.data_len]; + char argument[XdrvMailbox.data_len]; for (uint32_t ca=0;ca 1) { if (XdrvMailbox.data[XdrvMailbox.data_len-1] == ',') { serviced = false; return serviced; } - sprintf(sub_string_tmp,subStr(sub_string, XdrvMailbox.data, ",", 2)); - Pn532.newdata_len = strlen(sub_string_tmp); + ArgV(argument, 2); + Pn532.newdata_len = strlen(argument); if (Pn532.newdata_len > 15) { Pn532.newdata_len = 15; } - memcpy(&Pn532.newdata,&sub_string_tmp,Pn532.newdata_len); + memcpy(&Pn532.newdata,&argument,Pn532.newdata_len); Pn532.newdata[Pn532.newdata_len] = 0x00; // Null terminate the string Pn532.function = 2; AddLog(LOG_LEVEL_INFO, PSTR("NFC: PN532 NFC - Next scanned tag data block 1 will be set to '%s'"), Pn532.newdata);