5
5
#else
6
6
// remove yield statment if used outside of arduino
7
7
#define yield ()
8
+ // #define delay(ms)
8
9
#include < stdint.h>
9
10
#endif
10
11
@@ -114,12 +115,15 @@ class CommonHelix {
114
115
// we can not write more then the AAC_MAX_FRAME_SIZE
115
116
size_t write_len = min (in_size, static_cast <size_t >(maxFrameSize ()-buffer_size));
116
117
while (start<in_size){
117
- // we have some space left in the buffer
118
+ // we have some space left in the buffer
118
119
int written_len = writeFrame (ptr8+start, write_len);
119
120
start += written_len;
120
121
LOG (Info," -> Written %zu of %zu - Counter %zu" , start, in_size, frame_counter);
121
122
write_len = min (in_size - start, static_cast <size_t >(maxFrameSize ()-buffer_size));
122
- yield ();
123
+ // add delay - e.g. needed by esp32 and esp8266
124
+ if (delay_ms>0 ){
125
+ delay (delay_ms);
126
+ }
123
127
}
124
128
} else {
125
129
LOG (Warning, " CommonHelix not active" );
@@ -131,7 +135,12 @@ class CommonHelix {
131
135
// / returns true if active
132
136
operator bool () {
133
137
return active;
134
- }
138
+ }
139
+
140
+ // / Defines the delay that is added at each segment
141
+ virtual void setDelay (int delayMs){
142
+ delay_ms = delayMs;
143
+ }
135
144
136
145
protected:
137
146
bool active = false ;
@@ -141,6 +150,7 @@ class CommonHelix {
141
150
size_t max_frame_size = 0 ;
142
151
size_t max_pwm_size = 0 ;
143
152
size_t frame_counter = 0 ;
153
+ int delay_ms = -1 ;
144
154
145
155
#ifdef ARDUINO
146
156
Print *out = nullptr ;
@@ -197,7 +207,6 @@ class CommonHelix {
197
207
} else {
198
208
LOG (Warning, " -> invalid frame size: %d / max: %d" , (int ) r.end -r.start , (int ) maxFrameSize ());
199
209
}
200
- yield ();
201
210
frame_counter++;
202
211
return result;
203
212
}
0 commit comments