Modified version to work with EventQueue (outside of ISR)
Diff: MultiClick.h
- Revision:
- 8:633350efee38
- Parent:
- 7:7d56935ba84d
--- a/MultiClick.h Thu Jun 16 01:29:43 2016 +0000 +++ b/MultiClick.h Fri Apr 17 22:33:15 2020 +0000 @@ -9,7 +9,8 @@ The MIT License (MIT) -Copyright (c) 2016 Uematsu Electric Co.,Ltd. Toru OHTSUKA <t-ohtsuka@jupiter.ocn.ne.jp> +Copyright (c) 2016 Uematsu Electric Co.,Ltd. Toru OHTSUKA +<t-ohtsuka@jupiter.ocn.ne.jp> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -30,49 +31,47 @@ THE SOFTWARE. */ +/* + * Modified version to work with an EventQueue + * Removed deprecated code + */ + #include "mbed.h" -//#define DEBUG - -#ifdef DEBUG -#define DBG_PRINT(...) printf(__VA_ARGS__) -#else -#define DBG_PRINT(...) -#endif +class MultiClick { +public: + MultiClick(PinName pin, EventQueue *q); + MultiClick(PinName pin, PinMode m, EventQueue *q); + void attach_clicked(void (*function)(void)); + void attach_doubleclicked(void (*function)(void)); + void attach_n_clicked(void (*function)(int)); + void attach_longpressed(void (*function)(void)); -class MultiClick -{ -public: - MultiClick(PinName pin); - MultiClick(PinName pin, PinMode m); - void attach_clicked(void (*function)(void)); - void attach_doubleclicked(void (*function)(void)); - void attach_n_clicked(void (*function)(int)); - void attach_longpressed(void (*function)(void)); - private: - void isr_pressed(void); - void click_detect_timeout( void ); - void press_check_func( void ); + void isr_pressed(void); + void click_detect_timeout(void); + void press_check_func(void); - InterruptIn *_iin; - PinMode _mode; + InterruptIn *_iin; + PinMode _mode; - Ticker *_press_check; - Timeout *_click_detect_timeout; - - int _shortpress_num; - int _longpress_num; + Ticker *_press_check; + Timeout *_click_detect_timeout; + + int _shortpress_num; + int _longpress_num; - int _press_check_interval_us; - int _click_interval_us; - int _click_times; - - int _pressed_count; - bool _longpressed; - - void (*_c_callback_clicked)(void); - void (*_c_callback_doubleclicked)(void); - void (*_c_callback_n_clicked)(int); - void (*_c_callback_longpressed)(void); + int _press_check_interval_us; + int _click_interval_us; + int _click_times; + + int _pressed_count; + bool _longpressed; + + EventQueue *_queue; + + void (*_c_callback_clicked)(void); + void (*_c_callback_doubleclicked)(void); + void (*_c_callback_n_clicked)(int); + void (*_c_callback_longpressed)(void); };