@@ -15,6 +15,90 @@ local function runOperator(instance)
1515 local result
1616 if parameters [instance ][' logic' ] == ' EQUAL' then
1717 result = tostring (parameters [instance ][' values' ][' 1' ]) == parameters [instance ][' criteria' ][' 1' ]
18+
19+ elseif parameters [instance ][' logic' ] == ' ADD' then
20+ if parameters [instance ][' values' ][' 1' ] ~= ' ' and parameters [instance ][' values' ][' 2' ] ~= ' ' then
21+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
22+ local val2 = tonumber (parameters [instance ][' values' ][' 2' ])
23+ if val1 ~= nil and val2 ~= nil then
24+ result = true
25+ parameters [instance ][' values' ][' 1' ] = val1 + val2
26+ end
27+ elseif parameters [instance ][' values' ][' 1' ] ~= ' ' then
28+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
29+ local val2 = tonumber (parameters [instance ][' criteria' ][' 1' ])
30+ if val1 ~= nil and val2 ~= nil then
31+ result = true
32+ parameters [instance ][' values' ][' 1' ] = val1 + val2
33+ end
34+ end
35+
36+ elseif parameters [instance ][' logic' ] == ' SUBTRACT' then
37+ if parameters [instance ][' values' ][' 1' ] ~= ' ' and parameters [instance ][' values' ][' 2' ] ~= ' ' then
38+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
39+ local val2 = tonumber (parameters [instance ][' values' ][' 2' ])
40+ if val1 ~= nil and val2 ~= nil then
41+ result = true
42+ parameters [instance ][' values' ][' 1' ] = val1 + val2
43+ end
44+ elseif parameters [instance ][' values' ][' 1' ] ~= ' ' then
45+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
46+ local val2 = tonumber (parameters [instance ][' criteria' ][' 1' ])
47+ if val1 ~= nil and val2 ~= nil then
48+ result = true
49+ parameters [instance ][' values' ][' 1' ] = val1 - val2
50+ end
51+ end
52+
53+ elseif parameters [instance ][' logic' ] == ' MULTIPLY' then
54+ if parameters [instance ][' values' ][' 1' ] ~= ' ' and parameters [instance ][' values' ][' 2' ] ~= ' ' then
55+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
56+ local val2 = tonumber (parameters [instance ][' values' ][' 2' ])
57+ if val1 ~= nil and val2 ~= nil then
58+ result = true
59+ parameters [instance ][' values' ][' 1' ] = val1 + val2
60+ end
61+ elseif parameters [instance ][' values' ][' 1' ] ~= ' ' then
62+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
63+ local val2 = tonumber (parameters [instance ][' criteria' ][' 1' ])
64+ if val1 ~= nil and val2 ~= nil then
65+ result = true
66+ parameters [instance ][' values' ][' 1' ] = val1 * val2
67+ end
68+ end
69+
70+ elseif parameters [instance ][' logic' ] == ' DIVIDE' then
71+ if parameters [instance ][' values' ][' 1' ] ~= ' ' and parameters [instance ][' values' ][' 2' ] ~= ' ' then
72+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
73+ local val2 = tonumber (parameters [instance ][' values' ][' 2' ])
74+ if val1 ~= nil and val2 ~= nil then
75+ result = true
76+ parameters [instance ][' values' ][' 1' ] = val1 + val2
77+ end
78+ elseif parameters [instance ][' values' ][' 1' ] ~= ' ' then
79+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
80+ local val2 = tonumber (parameters [instance ][' criteria' ][' 1' ])
81+ if val1 ~= nil and val2 ~= nil then
82+ result = true
83+ parameters [instance ][' values' ][' 1' ] = val1 / val2
84+ end
85+ end
86+
87+ elseif parameters [instance ][' logic' ] == ' FLOOR' then
88+ if parameters [instance ][' values' ][' 1' ] ~= ' ' then
89+ local val1 = tonumber (parameters [instance ][' values' ][' 1' ])
90+ if val1 ~= nil then
91+ local roundingValue = tonumber (parameters [instance ][' criteria' ][' 1' ])
92+ if roundingValue ~= nil and roundingValue >= 1 then
93+ result = true
94+ parameters [instance ][' values' ][' 1' ] = math.floor (val1 * 10 ^ roundingValue + 0.5 )/ 10 ^ roundingValue
95+ else
96+ result = true
97+ parameters [instance ][' values' ][' 1' ] = math.floor (val1 + 0.5 )
98+ end
99+ end
100+ end
101+
18102 elseif parameters [instance ][' logic' ] == ' AND' then
19103 if type (parameters [instance ][' values' ][' 1' ]) == ' boolean' and type (parameters [instance ][' values' ][' 2' ]) == ' boolean' then
20104 result = parameters [instance ][' values' ][' 1' ] and parameters [instance ][' values' ][' 2' ]
@@ -61,6 +145,20 @@ local function runOperator(instance)
61145 if type (parameters [instance ][' values' ][' 1' ]) == ' number' then
62146 result = parameters [instance ][' values' ][' 1' ] <= tonumber (parameters [instance ][' criteria' ][' 1' ])
63147 end
148+ elseif parameters [instance ][' logic' ] == ' FALLING_EDGE' then
149+ if type (parameters [instance ][' values' ][' 1' ]) == ' boolean' then
150+ if parameters [instance ][' values' ][' 1' ] == false then
151+ if parameters [instance ][' values' ][' 2' ] == true then
152+ result = true
153+ else
154+ result = false
155+ end
156+ parameters [instance ][' values' ][' 2' ] = false
157+ else
158+ result = false
159+ parameters [instance ][' values' ][' 2' ] = true
160+ end
161+ end
64162 elseif parameters [instance ][' logic' ] == ' RISING_EDGE' then
65163 if type (parameters [instance ][' values' ][' 1' ]) == ' boolean' then
66164 if parameters [instance ][' values' ][' 1' ] == true then
@@ -107,7 +205,7 @@ local function runOperator(instance)
107205 if result == nil then
108206 _G .logger :warning (" CSK_FlowConfig: Error within operartor" )
109207 else
110- if parameters [instance ][' logic' ] == ' RISING_EDGE' then
208+ if parameters [instance ][' logic' ] == ' RISING_EDGE' or parameters [ instance ][ ' logic ' ] == ' FALLING_EDGE ' then
111209 if result == true then
112210 Script .notifyEvent (parameters [instance ][' event' ], true )
113211 end
@@ -116,15 +214,15 @@ local function runOperator(instance)
116214 end
117215
118216 if result == true then
119- if parameters [instance ][' logic' ] == ' EQUAL' or parameters [instance ][' logic' ] == ' GREATER' or parameters [instance ][' logic' ] == ' GREATER_EQUAL' or parameters [instance ][' logic' ] == ' SMALLER' or parameters [instance ][' logic' ] == ' SMALLER_EQUAL' or parameters [instance ][' logic' ] == ' WITHIN_RANGE' or parameters [instance ][' logic' ] == ' OUT_OF_RANGE' or parameters [instance ][' logic' ] == ' CHANGED' or parameters [instance ][' logic' ] == ' TO_NUMBER' or parameters [instance ][' logic' ] == ' TO_STRING' then
217+ if parameters [instance ][' logic' ] == ' EQUAL' or parameters [instance ][' logic' ] == ' GREATER' or parameters [instance ][' logic' ] == ' GREATER_EQUAL' or parameters [instance ][' logic' ] == ' SMALLER' or parameters [instance ][' logic' ] == ' SMALLER_EQUAL' or parameters [instance ][' logic' ] == ' WITHIN_RANGE' or parameters [instance ][' logic' ] == ' OUT_OF_RANGE' or parameters [instance ][' logic' ] == ' CHANGED' or parameters [instance ][' logic' ] == ' TO_NUMBER' or parameters [instance ][' logic' ] == ' TO_STRING' or parameters [ instance ][ ' logic ' ] == ' ADD ' or parameters [ instance ][ ' logic ' ] == ' SUBTRACT ' or parameters [ instance ][ ' logic ' ] == ' MULTIPLY ' or parameters [ instance ][ ' logic ' ] == ' DIVIDE ' or parameters [ instance ][ ' logic ' ] == ' FLOOR ' then
120218 Script .notifyEvent (parameters [instance ][' forwardEvent' ], parameters [instance ][' values' ][' 1' ])
121219 end
122220 end
123221 end
124222
125223 if parameters [instance ][' logic' ] ~= ' AND_PREV' and parameters [instance ][' logic' ] ~= ' OR_PREV' then
126224 parameters [instance ][' values' ][' 1' ] = ' '
127- if parameters [instance ][' logic' ] ~= ' RISING_EDGE' then
225+ if parameters [instance ][' logic' ] ~= ' RISING_EDGE' and parameters [ instance ][ ' logic ' ] ~= ' FALLING_EDGE ' then
128226 parameters [instance ][' values' ][' 2' ] = ' '
129227 end
130228 end
@@ -156,7 +254,7 @@ local function addLogicBlock(instance, logic, source1, source2, criteriaA, crite
156254 parameters [instance ][' values' ][' 1' ] = ' '
157255 parameters [instance ][' values' ][' 2' ] = ' '
158256
159- if logic == ' RISING_EDGE' then
257+ if logic == ' RISING_EDGE' or logic == ' FALLING_EDGE ' then
160258 parameters [instance ][' values' ][' 2' ] = false
161259 end
162260
0 commit comments