Skip to content

Commit 147009a

Browse files
committed
upd
1 parent a398ba6 commit 147009a

File tree

12 files changed

+75
-105
lines changed

12 files changed

+75
-105
lines changed

README.md

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,6 @@
128128
Объявлять до подключения библиотеки
129129

130130
```cpp
131-
// отключить привязку к библиотеке GyverIO и использовать стандартный digitalRead
132-
#define EB_NO_GYVER_IO
133131

134132
// отключить поддержку pressFor/holdFor/stepFor и счётчик степов (экономит 2 байта оперативки)
135133
#define EB_NO_FOR
@@ -143,10 +141,6 @@
143141
// отключить буферизацию энкодера (экономит 2 байта оперативки)
144142
#define EB_NO_BUFFER
145143

146-
// кастомные функции
147-
#define EB_CUSTOM_READ // использовать своё чтение пина
148-
#define EB_CUSTOM_UPTIME // использовать свой таймер
149-
150144
/*
151145
Настройка таймаутов для всех классов
152146
- Заменяет таймауты константами, изменить их из программы (SetXxxTimeout()) будет нельзя
@@ -1214,23 +1208,14 @@ void loop() {
12141208
<a id="custom"></a>
12151209

12161210
### Кастомные функции
1217-
Библиотека поддерживает задание своих функций для чтения пина и получения времени без редактирования файлов библиотеки. Для этого нужно:
1218-
- Объявить соответствующий дефайн перед подключением библиотеки
1219-
- `EB_CUSTOM_READ` - для своей функции чтения пина
1220-
- `EB_CUSTOM_UPTIME` - для своего аналога millis()
1221-
- `EB_CUSTOM_MODE` - для своего аналога pinMode()
1222-
- Реализовать соответствующую функцию в .cpp или .ino файле
1223-
- `EB_read` - для своей функции чтения пина
1224-
- `EB_uptime` - для своего аналога millis()
1225-
- `EB_mode` - для своего аналога pinMode
1211+
Библиотека поддерживает задание своих функций для чтения пина и получения времени без редактирования файлов библиотеки. Для этого нужно реализовать соответствующую функцию в своём .cpp или .ino файле:
1212+
- `bool EB_read(uint8_t pin)` - для своей функции чтения пина
1213+
- `void EB_mode(uint8_t pin, uint8_t mode)` - для своего аналога pinMode
1214+
- `uint32_t EB_uptime()` - для своего аналога millis()
12261215

12271216
Пример:
12281217

12291218
```cpp
1230-
#define EB_CUSTOM_READ
1231-
#define EB_CUSTOM_MODE
1232-
#define EB_CUSTOM_UPTIME
1233-
12341219
#include <EncButton.h>
12351220

12361221
bool EB_read(uint8_t pin) {
@@ -1780,6 +1765,10 @@ void loop() {
17801765
- v3.5
17811766
- Добавлена зависимость GyverIO (ускорен опрос пинов)
17821767
- Добавлена возможность задать свои функции аптайма и чтения пина
1768+
- v3.5.2
1769+
- Оптимизация
1770+
- Упрощена замена кастомных функций
1771+
- Исправлена ошибка компиляции при использовании библиотеки в нескольких .cpp файлах
17831772
17841773
<a id="feedback"></a>
17851774
## Баги и обратная связь

keywords.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ EB_HOLD_TIME KEYWORD1
2424
EB_STEP_TIME KEYWORD1
2525
EB_FAST_TIME KEYWORD1
2626

27-
EB_NO_GYVER_IO KEYWORD1
28-
EB_CUSTOM_READ KEYWORD1
29-
EB_CUSTOM_MODE KEYWORD1
30-
EB_CUSTOM_UPTIME KEYWORD1
31-
3227
#######################################
3328
# Methods and Functions (KEYWORD2)
3429
#######################################

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=EncButton
2-
version=3.5.1
2+
version=3.5.2
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Light and powerful library for button and encoder operation for Arduino

src/core/Button.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#include <Arduino.h>
33

44
#include "VirtButton.h"
5-
#include "utils.h"
5+
#include "io.h"
66

77
// ============= VAR PIN =============
88
class Button : public VirtButton {

src/core/EncButton.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#include <Arduino.h>
33

44
#include "VirtEncButton.h"
5-
#include "utils.h"
5+
#include "io.h"
66

77
// ===================== CLASS =====================
88
class EncButton : public VirtEncButton {

src/core/Encoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#include <Arduino.h>
33

44
#include "VirtEncoder.h"
5-
#include "utils.h"
5+
#include "io.h"
66

77
// ============= VAR PIN =============
88
class Encoder : public VirtEncoder {

src/core/VirtButton.h

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22
#include <Arduino.h>
33

4-
#include "utils.h"
4+
#include "io.h"
55

66
// ===================== FLAGS ======================
77
#define EB_PRESS (1 << 0) // нажатие на кнопку
@@ -67,35 +67,35 @@ class VirtButton {
6767
public:
6868
// ====================== SET ======================
6969
// установить таймаут удержания, умолч. 600 (макс. 4000 мс)
70-
void setHoldTimeout(uint16_t tout) {
70+
void setHoldTimeout(const uint16_t& tout) {
7171
#ifndef EB_HOLD_TIME
7272
EB_HOLD_T = tout >> EB_SHIFT;
7373
#endif
7474
}
7575

7676
// установить таймаут импульсного удержания, умолч. 200 (макс. 4000 мс)
77-
void setStepTimeout(uint16_t tout) {
77+
void setStepTimeout(const uint16_t& tout) {
7878
#ifndef EB_STEP_TIME
7979
EB_STEP_T = tout >> EB_SHIFT;
8080
#endif
8181
}
8282

8383
// установить таймаут ожидания кликов, умолч. 500 (макс. 4000 мс)
84-
void setClickTimeout(uint16_t tout) {
84+
void setClickTimeout(const uint16_t& tout) {
8585
#ifndef EB_CLICK_TIME
8686
EB_CLICK_T = tout >> EB_SHIFT;
8787
#endif
8888
}
8989

9090
// установить таймаут антидребезга, умолч. 50 (макс. 255 мс)
91-
void setDebTimeout(uint8_t tout) {
91+
void setDebTimeout(const uint8_t& tout) {
9292
#ifndef EB_DEB_TIME
9393
EB_DEB_T = tout;
9494
#endif
9595
}
9696

9797
// установить уровень кнопки (HIGH - кнопка замыкает VCC, LOW - замыкает GND)
98-
void setBtnLevel(bool level) {
98+
void setBtnLevel(const bool& level) {
9999
write_bf(EB_INV, !level);
100100
}
101101

@@ -160,7 +160,7 @@ class VirtButton {
160160
}
161161

162162
// кнопка была удержана (больше таймаута) с предварительными кликами [событие]
163-
bool hold(uint8_t num) {
163+
bool hold(const uint8_t& num) {
164164
return clicks == num && hold();
165165
}
166166

@@ -170,7 +170,7 @@ class VirtButton {
170170
}
171171

172172
// кнопка удерживается (больше таймаута) с предварительными кликами [состояние]
173-
bool holding(uint8_t num) {
173+
bool holding(const uint8_t& num) {
174174
return clicks == num && holding();
175175
}
176176

@@ -180,7 +180,7 @@ class VirtButton {
180180
}
181181

182182
// импульсное удержание с предварительными кликами [событие]
183-
bool step(uint8_t num) {
183+
bool step(const uint8_t& num) {
184184
return clicks == num && step();
185185
}
186186

@@ -190,7 +190,7 @@ class VirtButton {
190190
}
191191

192192
// зафиксировано указанное количество кликов [событие]
193-
bool hasClicks(uint8_t num) {
193+
bool hasClicks(const uint8_t& num) {
194194
return clicks == num && hasClicks();
195195
}
196196

@@ -217,7 +217,7 @@ class VirtButton {
217217
}
218218

219219
// кнопка отпущена после удержания с предварительными кликами [событие]
220-
bool releaseHold(uint8_t num) {
220+
bool releaseHold(const uint8_t& num) {
221221
return clicks == num && eq_bf(EB_CLKS_R | EB_HLD | EB_STP, EB_CLKS_R | EB_HLD);
222222
}
223223

@@ -227,7 +227,7 @@ class VirtButton {
227227
}
228228

229229
// кнопка отпущена после импульсного удержания с предварительными кликами [событие]
230-
bool releaseStep(uint8_t num) {
230+
bool releaseStep(const uint8_t& num) {
231231
return clicks == num && eq_bf(EB_CLKS_R | EB_STP, EB_CLKS_R | EB_STP);
232232
}
233233

@@ -272,7 +272,7 @@ class VirtButton {
272272

273273
// ====================== TIME ======================
274274
// после взаимодействия с кнопкой (или энкодером EncButton) прошло указанное время, мс [событие]
275-
bool timeout(uint16_t tout) {
275+
bool timeout(const uint16_t& tout) {
276276
if (read_bf(EB_TOUT) && (uint16_t)((uint16_t)EB_uptime() - tmr) > tout) {
277277
clr_bf(EB_TOUT);
278278
return 1;
@@ -289,7 +289,7 @@ class VirtButton {
289289
}
290290

291291
// кнопка удерживается дольше чем (с начала нажатия), мс [состояние]
292-
bool pressFor(uint16_t ms) {
292+
bool pressFor(const uint16_t& ms) {
293293
return pressFor() > ms;
294294
}
295295

@@ -308,7 +308,7 @@ class VirtButton {
308308
}
309309

310310
// кнопка удерживается дольше чем (с начала удержания), мс [состояние]
311-
bool holdFor(uint16_t ms) {
311+
bool holdFor(const uint16_t& ms) {
312312
return holdFor() > ms;
313313
}
314314

@@ -358,7 +358,7 @@ class VirtButton {
358358
}
359359

360360
// обработка кнопки без сброса событий и вызова коллбэка
361-
bool tickRaw(bool s) {
361+
bool tickRaw(const bool& s) {
362362
return pollBtn(s);
363363
}
364364

@@ -480,20 +480,20 @@ class VirtButton {
480480
uint8_t EB_STEP_T = (200 >> EB_SHIFT);
481481
#endif
482482

483-
inline void set_bf(const uint16_t x) __attribute__((always_inline)) {
483+
inline void set_bf(const uint16_t& x) __attribute__((always_inline)) {
484484
flags |= x;
485485
}
486-
inline void clr_bf(const uint16_t x) __attribute__((always_inline)) {
486+
inline void clr_bf(const uint16_t& x) __attribute__((always_inline)) {
487487
flags &= ~x;
488488
}
489-
inline bool read_bf(const uint16_t x) __attribute__((always_inline)) {
489+
inline bool read_bf(const uint16_t& x) __attribute__((always_inline)) {
490490
return flags & x;
491491
}
492-
inline void write_bf(const uint16_t x, bool v) __attribute__((always_inline)) {
492+
inline void write_bf(const uint16_t& x, const bool& v) __attribute__((always_inline)) {
493493
if (v) set_bf(x);
494494
else clr_bf(x);
495495
}
496-
inline bool eq_bf(const uint16_t x, const uint16_t y) __attribute__((always_inline)) {
496+
inline bool eq_bf(const uint16_t& x, const uint16_t& y) __attribute__((always_inline)) {
497497
return (flags & x) == y;
498498
}
499499

src/core/VirtEncButton.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#include "VirtButton.h"
55
#include "VirtEncoder.h"
6-
#include "utils.h"
6+
#include "io.h"
77

88
#ifdef EB_FAST_TIME
99
#define EB_FAST_T (EB_FAST_TIME)
@@ -14,7 +14,7 @@ class VirtEncButton : public VirtButton, public VirtEncoder {
1414
public:
1515
// ====================== SET ======================
1616
// установить таймаут быстрого поворота, мс
17-
void setFastTimeout(uint8_t tout) {
17+
void setFastTimeout(const uint8_t& tout) {
1818
#ifndef EB_FAST_TIME
1919
EB_FAST_T = tout;
2020
#endif
@@ -71,7 +71,7 @@ class VirtEncButton : public VirtButton, public VirtEncoder {
7171
// ====================== POLL ======================
7272
// ISR
7373
// обработка в прерывании (только энкодер). Вернёт 0 в покое, 1 или -1 при повороте
74-
int8_t tickISR(bool e0, bool e1) {
74+
int8_t tickISR(const bool& e0, const bool& e1) {
7575
return tickISR(e0 | (e1 << 1));
7676
}
7777

@@ -99,12 +99,12 @@ class VirtEncButton : public VirtButton, public VirtEncoder {
9999

100100
// TICK
101101
// обработка энкодера и кнопки
102-
bool tick(bool e0, bool e1, bool btn) {
102+
bool tick(const bool& e0, const bool& e1, const bool& btn) {
103103
return tick(e0 | (e1 << 1), btn);
104104
}
105105

106106
// обработка энкодера и кнопки. state = -1 для пропуска обработки энкодера
107-
bool tick(int8_t state, bool btn) {
107+
bool tick(const int8_t& state, const bool& btn) {
108108
clear();
109109
bool f = tickRaw(state, btn);
110110

@@ -115,13 +115,13 @@ class VirtEncButton : public VirtButton, public VirtEncoder {
115115
}
116116

117117
// обработка энкодера (в прерывании) и кнопки
118-
bool tick(bool btn) {
118+
bool tick(const bool& btn) {
119119
return tick(-1, btn);
120120
}
121121

122122
// RAW
123123
// обработка без сброса событий и вызова коллбэка
124-
bool tickRaw(bool e0, bool e1, bool btn) {
124+
bool tickRaw(const bool& e0, const bool& e1, const bool& btn) {
125125
return tickRaw(e0 | (e1 << 1), btn);
126126
}
127127

@@ -158,7 +158,7 @@ class VirtEncButton : public VirtButton, public VirtEncoder {
158158
}
159159

160160
// обработка без сброса событий и вызова коллбэка (кнопка)
161-
bool tickRaw(bool btn) {
161+
bool tickRaw(const bool& btn) {
162162
return tickRaw(-1, btn);
163163
}
164164

0 commit comments

Comments
 (0)