Modified version to work with EventQueue (outside of ISR)

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);
 };