mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-28 13:16:32 +00:00
Update xdrv_10_rules.ino
Move const to flash
This commit is contained in:
parent
3cb39bec24
commit
ee2660b2bc
@ -78,26 +78,17 @@
|
|||||||
|
|
||||||
#define D_JSON_INITIATED "Initiated"
|
#define D_JSON_INITIATED "Initiated"
|
||||||
|
|
||||||
#define COMPARE_OPERATOR_NONE -1
|
#define COMPARE_OPERATOR_NONE -1
|
||||||
#define COMPARE_OPERATOR_EQUAL 0
|
#define COMPARE_OPERATOR_EQUAL 0
|
||||||
#define COMPARE_OPERATOR_BIGGER 1
|
#define COMPARE_OPERATOR_BIGGER 1
|
||||||
#define COMPARE_OPERATOR_SMALLER 2
|
#define COMPARE_OPERATOR_SMALLER 2
|
||||||
#define COMPARE_OPERATOR_EXACT_DIVISION 3
|
#define COMPARE_OPERATOR_EXACT_DIVISION 3
|
||||||
#define COMPARE_OPERATOR_NUMBER_EQUAL 4
|
#define COMPARE_OPERATOR_NUMBER_EQUAL 4
|
||||||
#define COMPARE_OPERATOR_NOT_EQUAL 5
|
#define COMPARE_OPERATOR_NOT_EQUAL 5
|
||||||
#define COMPARE_OPERATOR_BIGGER_EQUAL 6
|
#define COMPARE_OPERATOR_BIGGER_EQUAL 6
|
||||||
#define COMPARE_OPERATOR_SMALLER_EQUAL 7
|
#define COMPARE_OPERATOR_SMALLER_EQUAL 7
|
||||||
#define MAXIMUM_COMPARE_OPERATOR COMPARE_OPERATOR_SMALLER_EQUAL
|
#define MAXIMUM_COMPARE_OPERATOR COMPARE_OPERATOR_SMALLER_EQUAL
|
||||||
char* compare_operators[] = {
|
const char kCompareOperators[] PROGMEM = "=\0>\0<\0|\0==!=>=<=";
|
||||||
"=",
|
|
||||||
">",
|
|
||||||
"<",
|
|
||||||
"|",
|
|
||||||
"==",
|
|
||||||
"!=",
|
|
||||||
">=",
|
|
||||||
"<="
|
|
||||||
};
|
|
||||||
|
|
||||||
enum RulesCommands { CMND_RULE, CMND_RULETIMER, CMND_EVENT, CMND_VAR, CMND_MEM, CMND_ADD, CMND_SUB, CMND_MULT, CMND_SCALE, CMND_CALC_RESOLUTION };
|
enum RulesCommands { CMND_RULE, CMND_RULETIMER, CMND_EVENT, CMND_VAR, CMND_MEM, CMND_ADD, CMND_SUB, CMND_MULT, CMND_SCALE, CMND_CALC_RESOLUTION };
|
||||||
const char kRulesCommands[] PROGMEM = D_CMND_RULE "|" D_CMND_RULETIMER "|" D_CMND_EVENT "|" D_CMND_VAR "|" D_CMND_MEM "|" D_CMND_ADD "|" D_CMND_SUB "|" D_CMND_MULT "|" D_CMND_SCALE "|" D_CMND_CALC_RESOLUTION ;
|
const char kRulesCommands[] PROGMEM = D_CMND_RULE "|" D_CMND_RULETIMER "|" D_CMND_EVENT "|" D_CMND_VAR "|" D_CMND_MEM "|" D_CMND_ADD "|" D_CMND_SUB "|" D_CMND_MULT "|" D_CMND_SCALE "|" D_CMND_CALC_RESOLUTION ;
|
||||||
@ -149,9 +140,11 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule)
|
|||||||
|
|
||||||
String rule_name = rule.substring(pos +1); // "CURRENT>0.100" or "BOOT" or "%var1%" or "MINUTE|5"
|
String rule_name = rule.substring(pos +1); // "CURRENT>0.100" or "BOOT" or "%var1%" or "MINUTE|5"
|
||||||
|
|
||||||
|
char compare_operator[3];
|
||||||
int8_t compare = COMPARE_OPERATOR_NONE;
|
int8_t compare = COMPARE_OPERATOR_NONE;
|
||||||
for (int8_t i=MAXIMUM_COMPARE_OPERATOR; i>=0; i--) {
|
for (int8_t i = MAXIMUM_COMPARE_OPERATOR; i >= 0; i--) {
|
||||||
if ((pos = rule_name.indexOf(compare_operators[i])) > 0) {
|
snprintf_P(compare_operator, sizeof(compare_operator), kCompareOperators + (i *2));
|
||||||
|
if ((pos = rule_name.indexOf(compare_operator)) > 0) {
|
||||||
compare = i;
|
compare = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -160,7 +153,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule)
|
|||||||
char rule_svalue[CMDSZ] = { 0 };
|
char rule_svalue[CMDSZ] = { 0 };
|
||||||
double rule_value = 0;
|
double rule_value = 0;
|
||||||
if (compare != COMPARE_OPERATOR_NONE) {
|
if (compare != COMPARE_OPERATOR_NONE) {
|
||||||
String rule_param = rule_name.substring(pos + strlen(compare_operators[compare]));
|
String rule_param = rule_name.substring(pos + strlen(compare_operator));
|
||||||
for (uint8_t i = 0; i < MAX_RULE_VARS; i++) {
|
for (uint8_t i = 0; i < MAX_RULE_VARS; i++) {
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR("%%VAR%d%%"), i +1);
|
snprintf_P(stemp, sizeof(stemp), PSTR("%%VAR%d%%"), i +1);
|
||||||
if (rule_param.startsWith(stemp)) {
|
if (rule_param.startsWith(stemp)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user