Loom 4 v4.5
Arduino library for Internet of Things Rapid Prototyping in environmental sensing
Loading...
Searching...
No Matches
Loom_Digital.h
1#pragma once
2
3#include <vector>
4#include <map>
5
6#include "Module.h"
7#include "Loom_Manager.h"
8
14class Loom_Digital : public Module{
15 protected:
16 /* These aren't used by Analog */
17 void power_up() override {};
18 void power_down() override {};
19 void initialize() override {};
20
21
22 public:
29 template<typename T, typename... Args>
30 Loom_Digital(Manager& man, T firstPin , Args... additionalPins) : Module("Digital"){
31 get_variadic_parameters(firstPin, additionalPins...);
32 manInst = &man;
33
34 // Set pin mode on digital pins
35 for(int i = 0; i < digitalPins.size(); i++){
36 pinMode(digitalPins[i], INPUT);
37 }
38
39 // Register the module with the manager
40 manInst->registerModule(this);
41 };
42
48 template<typename T>
49 Loom_Digital(Manager& man, T firstPin) : Module("Digital"){
50 digitalPins.push_back(firstPin);
51 manInst = &man;
52
53 for(int i = 0; i < digitalPins.size(); i++){
54 pinMode(digitalPins[i], INPUT);
55 }
56
57 // Register the module with the manager
58 manInst->registerModule(this);
59 };
60
61 void measure() override;
62 void package() override;
63
64 private:
65 Manager* manInst; // Instance of the manager
66 std::vector<int> digitalPins; // Holds a list of the digital pins we want to read
67 std::map<int, int> pinToData; // Map pin number to pin data
68
74 template<typename T>
75 T get_variadic_parameters(T v) {
76 digitalPins.push_back(v);
77 return v;
78 };
79
80 template<typename T, typename... Args>
81 T get_variadic_parameters(T first, Args... args) {
82 digitalPins.push_back(first);
83 return get_variadic_parameters(args...);
84 };
85
86
87};
Definition: Loom_Digital.h:14
Loom_Digital(Manager &man, T firstPin)
Definition: Loom_Digital.h:49
Loom_Digital(Manager &man, T firstPin, Args... additionalPins)
Definition: Loom_Digital.h:30
Definition: Loom_Manager.h:18
void registerModule(Module *module)
Definition: Loom_Manager.cpp:13
Definition: Module.h:30