ESPectro32 Library
Library for using ESPectro32 board
 All Classes Functions Variables Enumerations Enumerator Pages
Animator.h
1 /*
2  * WS2812Animation.h
3  *
4  * Created on: May 22, 2017
5  * Author: andri
6  */
7 
8 #ifndef COMPONENTS_MAGICBUTTON_SRC_WS2812ANIMATOR_H_
9 #define COMPONENTS_MAGICBUTTON_SRC_WS2812ANIMATOR_H_
10 
11 #include <Arduino.h>
12 #include <functional>
13 #include "Task.h"
14 
15 class Animator: Task {
16 public:
17 
18  enum AnimationState
19  {
20  AnimationState_Started,
21  AnimationState_Progress,
22  AnimationState_Completed
23  };
24 
26  {
27  float progress;
28  uint16_t duration;
29  uint16_t elapsed = 0;
30  AnimationState state;
31  };
32 
33  typedef std::function<void(const AnimationParam &param)> AnimationUpdateCallback;
34  typedef std::function<void()> AnimationFinishedCallback;
35 
36 
37  Animator();
38  virtual ~Animator();
39 
40  void start(AnimationUpdateCallback animUpdateCallback, AnimationFinishedCallback animFinishedCallback,
41  uint16_t duration = 0, uint16_t updateInterval = 0, bool repeat = false);
42  void stop();
43  void run();
44  void runAsync(void *data);
45  boolean isRunning() {
46  return running_;
47  }
48 
49  int getStep(long elapsed, long t, int v);
50  float getStepFloat(long elapsed, long t, float v);
51 private:
52  AnimationUpdateCallback animationUpdateCallback_ = NULL;
53  AnimationFinishedCallback animationFinishedCallback_ = NULL;
54  boolean running_ = false;
55  uint16_t updateInterval_ = 100, elapsed_ = 0, duration_ = 0;
56  uint32_t lastUpdated_ = 0;
57  bool repeat_ = false;
58  void doRepeat();
59 };
60 
61 #endif /* COMPONENTS_MAGICBUTTON_SRC_WS2812ANIMATOR_H_ */
Definition: Animator.h:25
void runAsync(void *data)
Body of the task to execute.
Definition: Animator.cpp:89
Encapsulate a runnable task.
Definition: Task.h:34
Definition: Animator.h:15