-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathArduinoMock.cpp
158 lines (135 loc) · 2.54 KB
/
ArduinoMock.cpp
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <map>
#include <Arduino.h>
#include <Streaming.h>
#include <iostream>
#include "Arduino.hpp"
#include "ArduinoMock.hpp"
/* Mocking implementation */
std::map<int, int> analogReadValues;
void setAnalogRead(int pin, int value)
{
analogReadValues[pin] = value;
}
std::map<int, PinState> digitalReadValues;
void setDigitalRead(int pin, PinState value)
{
digitalReadValues[pin] = value;
}
std::map<int, int> analogWrittenValues;
int getAnalogWrite(int pin)
{
return analogWrittenValues[pin];
}
std::map<int, PinState> digitalWrittenValues;
PinState getDigitalWrite(int pin)
{
return digitalWrittenValues[pin];
}
std::map<int, PinMode> pinModeSettings;
PinMode getPinMode(int pin)
{
return pinModeSettings[pin];
}
unsigned long nextMillis;
void addMillis(unsigned long newMillis)
{
nextMillis += newMillis;
}
void clearArduinoValues()
{
digitalReadValues.clear();
analogWrittenValues.clear();
pinModeSettings.clear();
nextMillis = 0L;
}
/* Arduino methods */
void analogWrite(int pin, int value)
{
analogWrittenValues[pin] = value;
}
int analogRead(int pin)
{
return analogReadValues[pin];
}
void digitalWrite(int pin, PinState value)
{
digitalWrittenValues[pin] = value;
}
byte digitalRead(int pin)
{
return digitalReadValues[pin];
}
void pinMode(int pin, PinMode mode)
{
pinModeSettings[pin] = mode;
}
unsigned long millis()
{
return nextMillis;
}
void delay(unsigned int delayMillis)
{
nextMillis += delayMillis;
}
int map(int value, int fromLower, int fromUpper, int toLower, int toUpper)
{
return (value - fromLower) * (toUpper - toLower) / (fromUpper - fromLower) + toLower;
}
byte highByte(unsigned int i)
{
return i >> 8;
}
byte lowByte(unsigned int i)
{
return i & 0xFF;
}
void Serial_T::begin(int baudRate)
{
}
bool Serial_T::available()
{
return true;
}
char Serial_T::read()
{
return ' ';
}
void Serial_T::println(const char *)
{
}
void Serial_T::flush()
{
}
Serial_T & operator<<(Serial_T & s, int i)
{
std::cout << i;
return s;
}
Serial_T & operator<<(Serial_T & s, unsigned int i)
{
std::cout << i;
return s;
}
Serial_T & operator<<(Serial_T & s, long i)
{
std::cout << i;
return s;
}
Serial_T & operator<<(Serial_T & s, unsigned long i)
{
std::cout << i;
return s;
}
Serial_T & operator<<(Serial_T & s, const char * i)
{
std::cout << i;
return s;
}
Serial_T & operator<<(Serial_T & s, const ENDL_T & e)
{
std::cout << std::endl;
return s;
}
ENDL_T endl;
Serial_T Serial;
//template <typename T> T _HEX(T);