@@ -76,35 +76,35 @@ class VirtButton {
76
76
public:
77
77
// ====================== SET ======================
78
78
// установить таймаут удержания, умолч. 600 (макс. 4000 мс)
79
- void setHoldTimeout (const uint16_t & tout) {
79
+ void setHoldTimeout (const uint16_t tout) {
80
80
#ifndef EB_HOLD_TIME
81
81
EB_HOLD_T = tout >> EB_SHIFT;
82
82
#endif
83
83
}
84
84
85
85
// установить таймаут импульсного удержания, умолч. 200 (макс. 4000 мс)
86
- void setStepTimeout (const uint16_t & tout) {
86
+ void setStepTimeout (const uint16_t tout) {
87
87
#ifndef EB_STEP_TIME
88
88
EB_STEP_T = tout >> EB_SHIFT;
89
89
#endif
90
90
}
91
91
92
92
// установить таймаут ожидания кликов, умолч. 500 (макс. 4000 мс)
93
- void setClickTimeout (const uint16_t & tout) {
93
+ void setClickTimeout (const uint16_t tout) {
94
94
#ifndef EB_CLICK_TIME
95
95
EB_CLICK_T = tout >> EB_SHIFT;
96
96
#endif
97
97
}
98
98
99
99
// установить таймаут антидребезга, умолч. 50 (макс. 255 мс)
100
- void setDebTimeout (const uint8_t & tout) {
100
+ void setDebTimeout (const uint8_t tout) {
101
101
#ifndef EB_DEB_TIME
102
102
EB_DEB_T = tout;
103
103
#endif
104
104
}
105
105
106
106
// установить уровень кнопки (HIGH - кнопка замыкает VCC, LOW - замыкает GND)
107
- void setBtnLevel (const bool & level) {
107
+ void setBtnLevel (const bool level) {
108
108
bf.write (EB_INV, !level);
109
109
}
110
110
@@ -149,7 +149,7 @@ class VirtButton {
149
149
}
150
150
151
151
// кнопка нажата с предварительными кликами [событие]
152
- bool press (const uint8_t & num) {
152
+ bool press (const uint8_t num) {
153
153
return (clicks == num) && press ();
154
154
}
155
155
@@ -159,7 +159,7 @@ class VirtButton {
159
159
}
160
160
161
161
// кнопка отпущена (в любом случае) с предварительными кликами [событие]
162
- bool release (const uint8_t & num) {
162
+ bool release (const uint8_t num) {
163
163
return (clicks == num) && release ();
164
164
}
165
165
@@ -169,7 +169,7 @@ class VirtButton {
169
169
}
170
170
171
171
// клик по кнопке (отпущена без удержания) с предварительными кликами [событие]
172
- bool click (const uint8_t & num) {
172
+ bool click (const uint8_t num) {
173
173
return (clicks == num) && click ();
174
174
}
175
175
@@ -179,7 +179,7 @@ class VirtButton {
179
179
}
180
180
181
181
// кнопка зажата (между press() и release()) с предварительными кликами [состояние]
182
- bool pressing (const uint8_t & num) {
182
+ bool pressing (const uint8_t num) {
183
183
return (clicks == num) && pressing ();
184
184
}
185
185
@@ -189,7 +189,7 @@ class VirtButton {
189
189
}
190
190
191
191
// кнопка была удержана (больше таймаута) с предварительными кликами [событие]
192
- bool hold (const uint8_t & num) {
192
+ bool hold (const uint8_t num) {
193
193
return (clicks == num) && hold ();
194
194
}
195
195
@@ -199,7 +199,7 @@ class VirtButton {
199
199
}
200
200
201
201
// кнопка удерживается (больше таймаута) с предварительными кликами [состояние]
202
- bool holding (const uint8_t & num) {
202
+ bool holding (const uint8_t num) {
203
203
return (clicks == num) && holding ();
204
204
}
205
205
@@ -209,7 +209,7 @@ class VirtButton {
209
209
}
210
210
211
211
// импульсное удержание с предварительными кликами [событие]
212
- bool step (const uint8_t & num) {
212
+ bool step (const uint8_t num) {
213
213
return (clicks == num) && step ();
214
214
}
215
215
@@ -219,7 +219,7 @@ class VirtButton {
219
219
}
220
220
221
221
// зафиксировано указанное количество кликов [событие]
222
- bool hasClicks (const uint8_t & num) {
222
+ bool hasClicks (const uint8_t num) {
223
223
return (clicks == num) && hasClicks ();
224
224
}
225
225
@@ -246,7 +246,7 @@ class VirtButton {
246
246
}
247
247
248
248
// кнопка отпущена после удержания с предварительными кликами [событие]
249
- bool releaseHold (const uint8_t & num) {
249
+ bool releaseHold (const uint8_t num) {
250
250
return clicks == num && bf.eq (EB_CLKS_R | EB_HLD | EB_STP, EB_CLKS_R | EB_HLD);
251
251
}
252
252
@@ -256,10 +256,20 @@ class VirtButton {
256
256
}
257
257
258
258
// кнопка отпущена после импульсного удержания с предварительными кликами [событие]
259
- bool releaseStep (const uint8_t & num) {
259
+ bool releaseStep (const uint8_t num) {
260
260
return clicks == num && bf.eq (EB_CLKS_R | EB_STP, EB_CLKS_R | EB_STP);
261
261
}
262
262
263
+ // кнопка отпущена после удержания или импульсного удержания [событие]
264
+ bool releaseHoldStep () {
265
+ return releaseHold () || releaseStep ();
266
+ }
267
+
268
+ // кнопка отпущена после удержания или импульсного удержания с предварительными кликами [событие]
269
+ bool releaseHoldStep (const uint8_t num) {
270
+ return releaseHold (num) || releaseStep (num);
271
+ }
272
+
263
273
// кнопка ожидает повторных кликов [состояние]
264
274
bool waiting () {
265
275
return clicks && bf.eq (EB_PRS | EB_REL, 0 );
@@ -301,7 +311,7 @@ class VirtButton {
301
311
302
312
// ====================== TIME ======================
303
313
// после взаимодействия с кнопкой (или энкодером EncButton) прошло указанное время, мс [событие]
304
- bool timeout (const uint16_t & tout) {
314
+ bool timeout (const uint16_t tout) {
305
315
if (bf.read (EB_TOUT) && (uint16_t )((uint16_t )EB_uptime () - tmr) > tout) {
306
316
bf.clear (EB_TOUT);
307
317
return 1 ;
@@ -318,7 +328,7 @@ class VirtButton {
318
328
}
319
329
320
330
// кнопка удерживается дольше чем (с начала нажатия), мс [состояние]
321
- bool pressFor (const uint16_t & ms) {
331
+ bool pressFor (const uint16_t ms) {
322
332
return pressFor () > ms;
323
333
}
324
334
@@ -337,7 +347,7 @@ class VirtButton {
337
347
}
338
348
339
349
// кнопка удерживается дольше чем (с начала удержания), мс [состояние]
340
- bool holdFor (const uint16_t & ms) {
350
+ bool holdFor (const uint16_t ms) {
341
351
return holdFor () > ms;
342
352
}
343
353
@@ -387,7 +397,7 @@ class VirtButton {
387
397
}
388
398
389
399
// обработка кнопки без сброса событий и вызова коллбэка
390
- bool tickRaw (const bool & s) {
400
+ bool tickRaw (const bool s) {
391
401
return pollBtn (s);
392
402
}
393
403
0 commit comments