-
Notifications
You must be signed in to change notification settings - Fork 0
/
Control.h
56 lines (45 loc) · 1.32 KB
/
Control.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#ifndef CONTROL_H
#define CONTROL_H
#include <Arduino.h>
#include <iostream>
#include <ArduinoJson.h>
#include "Action.h"
#include "StreamPrint.h"
#define DEFAULT_PINS 4, 0, 2, 15
#define DEFAULT_SAMPLE_RATE 25
#include "config.h"
#define NULF *[](int arg) { }
enum ControlType { CTL_DIGITAL, CTL_ANALOG, CTL_TOUCH };
class Control {
protected:
String _name;
ControlType _type;
int _sampleRate;
friend std::ostream& operator<< (std::ostream& os, ControlType &ctlType);
public:
Control() :
_name { "Control" },
_type { CTL_DIGITAL },
_sampleRate { DEFAULT_SAMPLE_RATE }
{ };
Control(String name, ControlType type, int sampleRate) :
_name { name },
_type { type },
_sampleRate { sampleRate }
{ };
Control(JsonObject obj) :
_name { obj["name"].as<String>() },
_type { obj["type"].as<ControlType>() },
_sampleRate { obj["sampleRate"].as<int>() }
{
Serial << obj["name"].as<String>();
};
String getName();
ControlType getType();
virtual int getState() = 0;
int getSampleRate();
void setName(String name);
void setSampleRate(int sampleRate);
virtual void update() = 0;
};
#endif // CONTROL_H