6
6
#include " AudioTools/AudioStreams.h"
7
7
#include " AudioBasic/Int24.h"
8
8
9
- #define MAX_SINGLE_CHARS 8
10
-
11
9
namespace audio_tools {
12
10
13
11
#if !defined(ARDUINO) || defined(IS_DESKTOP)
@@ -28,11 +26,10 @@ class AudioPrint : public Print, public AudioBaseInfoDependent, public AudioBase
28
26
size_t write (const uint8_t *buffer, size_t size) override = 0;
29
27
30
28
virtual size_t write (uint8_t ch) override {
31
- tmp[tmpPos++] = ch;
32
- if (tmpPos>MAX_SINGLE_CHARS){
29
+ if (tmp.isFull ()){
33
30
flush ();
34
- }
35
- return 1 ;
31
+ }
32
+ return tmp. write (ch) ;
36
33
}
37
34
38
35
virtual int availableForWrite () override {
@@ -41,8 +38,9 @@ class AudioPrint : public Print, public AudioBaseInfoDependent, public AudioBase
41
38
42
39
// removed override because some old implementation did not define this method as virtual
43
40
virtual void flush () FLUSH_OVERRIDE {
44
- write ((const uint8_t *)tmp, tmpPos-1 );
45
- tmpPos=0 ;
41
+ if (tmp.available ()>0 ){
42
+ write ((const uint8_t *)tmp.address (), tmp.available ());
43
+ }
46
44
}
47
45
48
46
// overwrite to do something useful
@@ -78,11 +76,10 @@ class AudioPrint : public Print, public AudioBaseInfoDependent, public AudioBase
78
76
}
79
77
80
78
protected:
81
- uint8_t tmp[MAX_SINGLE_CHARS];
82
79
int tmpPos=0 ;
83
80
AudioBaseInfoDependent *p_notify=nullptr ;
84
81
AudioBaseInfo cfg;
85
-
82
+ SingleBuffer< uint8_t > tmp{MAX_SINGLE_CHARS};
86
83
};
87
84
88
85
0 commit comments