OpenThread_app
Loading...
Searching...
No Matches
OneButton.h
Go to the documentation of this file.
1
187
188#ifndef INC_ONEBUTTON_H_
189#define INC_ONEBUTTON_H_
190
191#include "driver/gpio.h" // for esp
192
193
194// #include "main.h"
195
201
205// #define STM_PLATFORM
206
210// #define ESP_PLATFORM
211
215
221
222#ifdef STM_PLATFORM
223
228#define OB_READ_PIN() HAL_GPIO_ReadPin(Btn->GpioPort, Btn->GpioPin)
229
234#define OB_GET_TICK() HAL_GetTick()
235
239#define OB_BUTTON_PRESSED GPIO_PIN_RESET
240
244#define OB_BUTTON_NOT_PRESSED GPIO_PIN_SET
245
246#endif // STM_PLATFORM
247
248#ifdef ESP_PLATFORM
249
250#include "xtimers.h"
251#include "ot_app.h"
252
257#define OB_READ_PIN() gpio_get_level(Btn->GpioPin)
258
264#define OB_GET_TICK() xTim_getTick()
265
269#define OB_BUTTON_PRESSED 0
270
274#define OB_BUTTON_NOT_PRESSED 1
275
276#endif // ESP_PLATFORM
277
281
287
296typedef void(*CallBackFunOneClick_t)(uint16_t btnNum);
297
302typedef void(*CallBackFunDoubleClick_t)(uint16_t btnNum);
303
308typedef void(*CallBackFunLongPressStart_t)(uint16_t btnNum);
309
314typedef void(*CallBackFunLongPressStop_t)(uint16_t btnNum);
315
319
325
352
386
390
396
412#ifdef STM_PLATFORM
419void OneButtonInit(OneButton_t *Btn, GPIO_TypeDef *GpioPort, uint16_t GpioPin);
420#endif
421
422#ifdef ESP_PLATFORM
428void OneButtonInit(OneButton_t *Btn, uint16_t GpioPin);
429#endif
430
450void OneButtonTask(OneButton_t *Btn);
451
455
461
468void OneButtonSetTimerDebounce(OneButton_t *Btn, uint32_t DebounceTime);
469
476void OneButtonSetTimerDoubleClick(OneButton_t *Btn, uint32_t DoubleClickTime);
477
484void OneButtonSetTimerLongPressStart(OneButton_t *Btn, uint32_t LongPressStartTime);
485
492void OneButtonSetTimerLongPressTick(OneButton_t *Btn, uint32_t LongPressTickTime);
493
497
503
510
517
524
531
535
539
540#endif /* INC_ONEBUTTON_H_ */
Btn GpioPin
Definition OneButton.c:216
void(* CallBackFunLongPressStop_t)(uint16_t btnNum)
Callback function type for long-press stop event.
Definition OneButton.h:314
void(* CallBackFunDoubleClick_t)(uint16_t btnNum)
Callback function type for double-click event.
Definition OneButton.h:302
void(* CallBackFunOneClick_t)(uint16_t btnNum)
Callback function type for single-click event.
Definition OneButton.h:296
void(* CallBackFunLongPressStart_t)(uint16_t btnNum)
Callback function type for long-press start event.
Definition OneButton.h:308
void OneButtonTask(OneButton_t *Btn)
Initialize OneButton instance.
Definition OneButton.c:117
void OneButtonCallbackLongPressStart(OneButton_t *Btn, CallBackFunLongPressStart_t LongPressStartCallback)
Register long-press start callback.
Definition OneButton.c:182
void OneButtonCallbackOneClick(OneButton_t *Btn, CallBackFunOneClick_t OneClickCallback)
Register single-click callback.
Definition OneButton.c:172
void OneButtonCallbackLongPressStop(OneButton_t *Btn, CallBackFunLongPressStop_t LongPressStopCallback)
Register long-press stop callback.
Definition OneButton.c:187
void OneButtonCallbackDoubleClick(OneButton_t *Btn, CallBackFunDoubleClick_t DoubleClickCallback)
Register double-click callback.
Definition OneButton.c:177
void OneButtonSetTimerLongPressTick(OneButton_t *Btn, uint32_t LongPressTickTime)
Set long-press tick interval.
Definition OneButton.c:165
void OneButtonSetTimerLongPressStart(OneButton_t *Btn, uint32_t LongPressStartTime)
Set long-press start time.
Definition OneButton.c:160
void OneButtonSetTimerDoubleClick(OneButton_t *Btn, uint32_t DoubleClickTime)
Set double-click detection window.
Definition OneButton.c:155
void OneButtonSetTimerDebounce(OneButton_t *Btn, uint32_t DebounceTime)
Set debounce time.
Definition OneButton.c:150
ButtonState
Button state machine states.
Definition OneButton.h:344
@ DEBOUNCE
Debouncing button press.
Definition OneButton.h:346
@ ONECLICK
Single-click detected.
Definition OneButton.h:348
@ DOUBLECLICK
Double-click detected.
Definition OneButton.h:349
@ LONGPRESS
Long-press detected.
Definition OneButton.h:350
@ DECIDE
Deciding between click types.
Definition OneButton.h:347
@ IDLE
Waiting for button press.
Definition OneButton.h:345
Core types, global configuration macros, and framework initialization routines.
Button instance structure.
Definition OneButton.h:365
uint32_t TimerDoubleClick
Double-click window in milliseconds (default: 350ms).
Definition OneButton.h:377
uint32_t TimerLongPressTick
Repeat interval during long-press (default: 500ms).
Definition OneButton.h:379
CallBackFunLongPressStart_t LongPressStart
Long-press start callback function pointer.
Definition OneButton.h:383
uint16_t GpioPin
GPIO pin number.
Definition OneButton.h:372
ButtonState State
Current state machine state.
Definition OneButton.h:366
uint32_t TimerDebounce
Debounce time in milliseconds (default: 10ms).
Definition OneButton.h:376
CallBackFunDoubleClick_t DoubleClick
Double-click callback function pointer.
Definition OneButton.h:382
uint32_t TimerLongPressStart
Time to trigger long-press start (default: 700ms).
Definition OneButton.h:378
uint32_t LastTick
Last time button state changed (milliseconds).
Definition OneButton.h:374
CallBackFunLongPressStop_t LongPressStop
Long-press stop callback function pointer.
Definition OneButton.h:384
CallBackFunOneClick_t OneClick
Single-click callback function pointer.
Definition OneButton.h:381
uint8_t CoundClick
Click counter for multi-click detection.
Definition OneButton.h:373