2
2
/* *
3
3
* @file NoArduino.h
4
4
* @author Phil Schatzmann
5
- * @brief If you want to use the framework w/o Arduino you need to provide the implementation
6
- * of a couple of classes and methods!
5
+ * @brief If you want to use the framework w/o Arduino you need to provide the
6
+ * implementation of a couple of classes and methods!
7
7
* @version 0.1
8
8
* @date 2022-09-19
9
- *
9
+ *
10
10
* @copyright Copyright (c) 2022
11
- *
11
+ *
12
12
*/
13
+ #include < ctype.h>
13
14
#include < stdint.h>
14
- #include < algorithm> // std::max
15
15
#include < stdio.h>
16
16
#include < stdlib.h>
17
- #include < ctype.h>
18
17
#include < string.h>
18
+
19
+ #include < algorithm> // std::max
19
20
#include < chrono>
21
+
20
22
#include " AudioConfig.h"
21
23
22
24
#define IS_NOARDUINO
23
25
24
26
#ifndef PSTR
25
- # define PSTR (fmt ) fmt
27
+ #define PSTR (fmt ) fmt
26
28
#endif
27
29
28
30
#ifndef PI
29
- # define PI 3 .14159265359f
31
+ #define PI 3 .14159265359f
30
32
#endif
31
33
32
34
#ifndef INPUT
33
- # define INPUT 0x0
35
+ #define INPUT 0x0
34
36
#endif
35
37
36
38
#ifndef OUTPUT
37
- # define OUTPUT 0x1
39
+ #define OUTPUT 0x1
38
40
#endif
39
41
40
42
#ifndef INPUT_PULLUP
41
- # define INPUT_PULLUP 0x2
43
+ #define INPUT_PULLUP 0x2
42
44
#endif
43
45
44
46
#ifndef HIGH
45
47
#define HIGH 0x1
46
- # endif
48
+ #endif
47
49
#ifndef LOW
48
- # define LOW 0x0
50
+ #define LOW 0x0
49
51
#endif
50
52
51
-
52
53
using namespace std ;
53
54
54
- enum PrintCharFmt {DEC, HEX};
55
+ enum PrintCharFmt { DEC, HEX };
55
56
56
57
namespace audio_tools {
57
58
58
59
class Print {
59
- public:
60
+ public:
60
61
#ifndef DOXYGEN
61
- virtual size_t write (uint8_t ch){
62
- // not implememnted: to be overritten
63
- return 0 ;
64
- }
65
-
66
- virtual size_t write (const char *str) {
67
- return write ((const uint8_t *)str, strlen (str));
68
- }
69
-
70
- virtual size_t write (const char *buffer, size_t size) {
71
- return write ((const uint8_t *)buffer, size);
72
- }
73
-
74
- virtual int print (const char * msg){
75
- int result = strlen (msg);
76
- return write (msg, result);
62
+ virtual size_t write (uint8_t ch) {
63
+ // not implememnted: to be overritten
64
+ return 0 ;
65
+ }
66
+
67
+ virtual size_t write (const char *str) {
68
+ return write ((const uint8_t *)str, strlen (str));
69
+ }
70
+
71
+ virtual size_t write (const char *buffer, size_t size) {
72
+ return write ((const uint8_t *)buffer, size);
73
+ }
74
+
75
+ virtual int print (const char *msg) {
76
+ int result = strlen (msg);
77
+ return write (msg, result);
78
+ }
79
+
80
+ virtual int println (const char *msg = " " ) {
81
+ int result = print (msg);
82
+ write (' \n ' );
83
+ return result + 1 ;
84
+ }
85
+
86
+ virtual int println (float number) {
87
+ char buffer[120 ];
88
+ snprintf (buffer, 120 , " %f" , number);
89
+ return println (buffer);
90
+ }
91
+
92
+ virtual int print (float number) {
93
+ char buffer[120 ];
94
+ snprintf (buffer, 120 , " %f" , number);
95
+ return print (buffer);
96
+ }
97
+
98
+ virtual int print (int number) {
99
+ char buffer[80 ];
100
+ snprintf (buffer, 80 , " %d" , number);
101
+ return print (buffer);
102
+ }
103
+
104
+ virtual int print (char c, PrintCharFmt spec) {
105
+ char result[5 ];
106
+ switch (spec) {
107
+ case DEC:
108
+ snprintf (result, 3 , " %c" , c);
109
+ return print (result);
110
+ case HEX:
111
+ snprintf (result, 3 , " %x" , c);
112
+ return print (result);
77
113
}
114
+ return -1 ;
115
+ }
78
116
79
- virtual int println (const char * msg=" " ) {
80
- int result = print (msg);
81
- write (' \n ' );
82
- return result+1 ;
83
- }
84
-
85
- virtual int println (float number){
86
- char buffer[120 ];
87
- snprintf (buffer, 120 , " %f" , number);
88
- return println (buffer);
89
- }
90
-
91
- virtual int print (float number){
92
- char buffer[120 ];
93
- snprintf (buffer, 120 , " %f" , number);
94
- return print (buffer);
95
- }
96
-
97
- virtual int print (int number){
98
- char buffer[80 ];
99
- snprintf (buffer,80 ," %d" , number);
100
- return print (buffer);
101
- }
102
-
103
- virtual int print (char c, PrintCharFmt spec){
104
- char result[5 ];
105
- switch (spec){
106
- case DEC:
107
- snprintf (result, 3 ," %c" , c);
108
- return print (result);
109
- case HEX:
110
- snprintf (result, 3 ," %x" , c);
111
- return print (result);
112
- }
113
- return -1 ;
114
- }
117
+ int println (int value, PrintCharFmt fmt) {
118
+ return print (value, fmt) + println ();
119
+ }
115
120
116
121
#endif
117
122
118
- virtual size_t write (const uint8_t *data, size_t len){
119
- if (data == nullptr ) return 0 ;
120
- for (size_t j=0 ;j<len;j++){
121
- write (data[j]);
122
- }
123
- return len;
123
+ virtual size_t write (const uint8_t *data, size_t len) {
124
+ if (data == nullptr ) return 0 ;
125
+ for (size_t j = 0 ; j < len; j++) {
126
+ write (data[j]);
124
127
}
128
+ return len;
129
+ }
125
130
131
+ virtual int availableForWrite () { return 1024 ; }
126
132
127
- virtual int availableForWrite () { return 1024 ; }
128
-
129
-
130
- virtual void flush () { /* Empty implementation for backward compatibility */ }
131
-
132
- protected:
133
- int _timeout = 10 ;
133
+ virtual void flush () { /* Empty implementation for backward compatibility */ }
134
134
135
+ protected:
136
+ int _timeout = 10 ;
135
137
};
136
138
137
139
class Stream : public Print {
138
- public:
139
- virtual int available (){ return 0 ;}
140
- virtual size_t readBytes (uint8_t * data, size_t len) {return 0 ;}
140
+ public:
141
+ virtual int available () { return 0 ; }
142
+ virtual size_t readBytes (uint8_t * data, size_t len) { return 0 ; }
141
143
#ifndef DOXYGEN
142
- virtual int read (){return -1 ;}
143
- virtual int peek (){return -1 ;}
144
- virtual void setTimeout (size_t t){}
145
- #endif
146
- operator bool (){
147
- return true ;
144
+ virtual int read () { return -1 ; }
145
+ virtual int peek () { return -1 ; }
146
+ virtual void setTimeout (size_t t) {}
147
+ size_t readBytesUntil (char terminator, char *buffer, size_t length) {
148
+ for (int j=0 ;j<length;j++){
149
+ int val = read ();
150
+ if (val == -1 ) return j-1 ;
151
+ if (val == terminator) return j;
152
+ buffer[j] = val;
148
153
}
154
+ return length;
155
+ };
156
+ size_t readBytesUntil (char terminator, uint8_t *buffer, size_t length) {
157
+ return readBytesUntil (terminator, (char *)buffer, length);
158
+ }
159
+
160
+ #endif
161
+ operator bool () { return true ; }
149
162
};
150
163
151
164
class Client : public Stream {
152
- public:
153
- void stop () {};
154
- virtual int read (uint8_t * buffer, size_t len) { return 0 ;};
155
- virtual int read () { return 0 ; };
156
- bool connected () { return false ;};
157
- bool connect (const char * ip, int port) {return false ;}
158
- virtual operator bool () { return false ;}
165
+ public:
166
+ void stop () {};
167
+ virtual int read (uint8_t * buffer, size_t len) { return 0 ; };
168
+ virtual int read () { return 0 ; };
169
+ bool connected () { return false ; };
170
+ bool connect (const char * ip, int port) { return false ; }
171
+ virtual operator bool () { return false ; }
159
172
};
160
173
161
174
class HardwareSerial : public Stream {
162
- public:
163
- size_t write (uint8_t ch) override {
164
- return putchar (ch);
165
- }
166
- virtual operator bool () {
167
- return true ;
168
- }
175
+ public:
176
+ size_t write (uint8_t ch) override { return putchar (ch); }
177
+ virtual operator bool () { return true ; }
169
178
};
170
179
171
180
static HardwareSerial Serial;
@@ -189,10 +198,10 @@ inline long map(long x, long in_min, long in_max, long out_min, long out_max) {
189
198
// /// Returns the milliseconds since the start
190
199
// extern uint32_t micros();
191
200
192
- // #else
201
+ // #else
193
202
194
203
// extern "C" {
195
-
204
+
196
205
// /// Waits for the indicated milliseconds
197
206
// extern void delay(uint32_t ms);
198
207
@@ -207,45 +216,40 @@ inline long map(long x, long in_min, long in_max, long out_min, long out_max) {
207
216
208
217
// }
209
218
210
- // #endif
219
+ // #endif
211
220
221
+ } // namespace audio_tools
212
222
213
- } // namespace
214
-
215
- #if defined(ESP32)
223
+ #if defined(ESP32)
216
224
#include " driver/gpio.h"
217
225
// / e.g. for AudioActions
218
226
static int digitalRead (int pin) {
219
- printf (" digitalRead:%d\n " , pin);
220
- return gpio_get_level ((gpio_num_t )pin);
227
+ printf (" digitalRead:%d\n " , pin);
228
+ return gpio_get_level ((gpio_num_t )pin);
221
229
}
222
230
223
231
static void pinMode (int pin, int mode) {
224
- gpio_num_t gpio_pin= (gpio_num_t )pin;
225
- printf (" pinMode(%d,%d)\n " , pin, mode);
226
-
227
- gpio_reset_pin (gpio_pin);
228
- switch (mode){
229
- case INPUT:
230
- gpio_set_direction (gpio_pin, GPIO_MODE_INPUT);
231
- break ;
232
- case OUTPUT:
233
- gpio_set_direction (gpio_pin, GPIO_MODE_OUTPUT);
234
- break ;
235
- case INPUT_PULLUP:
236
- gpio_set_direction (gpio_pin, GPIO_MODE_INPUT);
237
- gpio_set_pull_mode (gpio_pin, GPIO_PULLUP_ONLY);
238
- break ;
239
- default :
240
- gpio_set_direction (gpio_pin, GPIO_MODE_INPUT_OUTPUT);
241
- break ;
242
- }
232
+ gpio_num_t gpio_pin = (gpio_num_t )pin;
233
+ printf (" pinMode(%d,%d)\n " , pin, mode);
234
+
235
+ gpio_reset_pin (gpio_pin);
236
+ switch (mode) {
237
+ case INPUT:
238
+ gpio_set_direction (gpio_pin, GPIO_MODE_INPUT);
239
+ break ;
240
+ case OUTPUT:
241
+ gpio_set_direction (gpio_pin, GPIO_MODE_OUTPUT);
242
+ break ;
243
+ case INPUT_PULLUP:
244
+ gpio_set_direction (gpio_pin, GPIO_MODE_INPUT);
245
+ gpio_set_pull_mode (gpio_pin, GPIO_PULLUP_ONLY);
246
+ break ;
247
+ default :
248
+ gpio_set_direction (gpio_pin, GPIO_MODE_INPUT_OUTPUT);
249
+ break ;
250
+ }
243
251
}
244
252
245
253
#endif
246
254
247
- // using namespace audio_tools;
248
-
249
-
250
-
251
-
255
+ // using namespace audio_tools;
0 commit comments