@@ -14,7 +14,7 @@ namespace audio_tools {
14
14
*/
15
15
16
16
class AnalogDriverMBED : public AnalogDriverBase {
17
- public:
17
+ public:
18
18
// / Default constructor
19
19
AnalogDriverMBED () = default ;
20
20
@@ -37,20 +37,20 @@ class AnalogDriverMBED : public AnalogDriverBase {
37
37
return false ;
38
38
}
39
39
info = cfg;
40
- auto_center.begin (config .channels , config. bits_per . sample );
40
+ auto_center.begin (cfg .channels , cfg. bits_per_sample );
41
41
int n_samples = cfg.buffer_size / (cfg.bits_per_sample / 8 );
42
42
ring_buffer.resize (n_samples);
43
43
switch (info.channels ) {
44
- case 1 :
45
- dac1.begin (AN_RESOLUTION_12, info.sample_rate , n_samples,
46
- cfg.buffer_count );
47
- break ;
48
- case 2 :
49
- dac1.begin (AN_RESOLUTION_12, info.sample_rate , n_samples / 2 ,
50
- cfg.buffer_count );
51
- dac2.begin (AN_RESOLUTION_12, info.sample_rate , n_samples / 2 ,
52
- cfg.buffer_count );
53
- break ;
44
+ case 1 :
45
+ dac1.begin (AN_RESOLUTION_12, info.sample_rate , n_samples,
46
+ cfg.buffer_count );
47
+ break ;
48
+ case 2 :
49
+ dac1.begin (AN_RESOLUTION_12, info.sample_rate , n_samples / 2 ,
50
+ cfg.buffer_count );
51
+ dac2.begin (AN_RESOLUTION_12, info.sample_rate , n_samples / 2 ,
52
+ cfg.buffer_count );
53
+ break ;
54
54
}
55
55
return true ;
56
56
}
@@ -64,15 +64,12 @@ class AnalogDriverMBED : public AnalogDriverBase {
64
64
adc2.stop ();
65
65
}
66
66
67
- int availableForWrite () {
68
- return dac1.available () ? info.buffer_size : 0 ;
69
- }
67
+ int availableForWrite () { return dac1.available () ? info.buffer_size : 0 ; }
70
68
71
69
// / writes the data to the I2S interface
72
70
size_t write (const uint8_t *src, size_t size_bytes) override {
73
71
TRACED ();
74
- if (!dac1.available ())
75
- return 0 ;
72
+ if (!dac1.available ()) return 0 ;
76
73
77
74
// collect data in ringbuffer
78
75
size_t result = 0 ;
@@ -101,32 +98,32 @@ class AnalogDriverMBED : public AnalogDriverBase {
101
98
int16_t *data = (int16_t *)dest;
102
99
size_t samples = size_bytes / 2 ;
103
100
switch (info.channels ) {
104
- case 1 :
105
- for (int j = 0 ; j < samples; j++) {
106
- data[j] = adc1.read ();
107
- result += 2 ;
108
- }
109
- break ;
110
- case 2 :
111
- for (int j = 0 ; j < samples; j += 2 ) {
112
- data[j] = adc1.read ();
113
- data[j + 1 ] = adc2.read ();
114
- result += 4 ;
115
- }
116
- break ;
101
+ case 1 :
102
+ for (int j = 0 ; j < samples; j++) {
103
+ data[j] = adc1.read ();
104
+ result += 2 ;
105
+ }
106
+ break ;
107
+ case 2 :
108
+ for (int j = 0 ; j < samples; j += 2 ) {
109
+ data[j] = adc1.read ();
110
+ data[j + 1 ] =adc2.read ();
111
+ result += 4 ;
112
+ }
113
+ break ;
117
114
}
118
115
119
116
// make sure that the center is at 0
120
- if (adc_config .is_auto_center_read ){
121
- auto_center.convert (dest, result);
117
+ if (info .is_auto_center_read ) {
118
+ auto_center.convert (dest, result);
122
119
}
123
120
124
121
return result;
125
122
}
126
123
127
124
virtual int available () override { return info.buffer_size ; }
128
125
129
- protected:
126
+ protected:
130
127
audio_tools::RingBuffer<Sample> ring_buffer{0 };
131
128
AnalogConfig info;
132
129
ConverterAutoCenter auto_center;
@@ -140,25 +137,25 @@ class AnalogDriverMBED : public AnalogDriverBase {
140
137
size_t writeBuffer () {
141
138
size_t result = 0 ;
142
139
switch (info.channels ) {
143
- case 1 : {
144
- SampleBuffer buf = dac1.dequeue ();
145
- for (size_t i = 0 ; i < buf.size (); i++) {
146
- buf[i] = ring_buffer.read ();
147
- result += 2 ;
148
- }
149
- dac1.write (buf);
150
- } break ;
151
- case 2 : {
152
- SampleBuffer buf1 = dac1.dequeue ();
153
- SampleBuffer buf2 = dac2.dequeue ();
154
- for (size_t i = 0 ; i < buf1.size (); i += 2 ) {
155
- buf1[i] = ring_buffer.read ();
156
- buf2[i] = ring_buffer.read ();
157
- result += 4 ;
158
- }
159
- dac1.write (buf1);
160
- dac2.write (buf2);
161
- } break ;
140
+ case 1 : {
141
+ SampleBuffer buf = dac1.dequeue ();
142
+ for (size_t i = 0 ; i < buf.size (); i++) {
143
+ ring_buffer.read (buf[i] );
144
+ result += 2 ;
145
+ }
146
+ dac1.write (buf);
147
+ } break ;
148
+ case 2 : {
149
+ SampleBuffer buf1 = dac1.dequeue ();
150
+ SampleBuffer buf2 = dac2.dequeue ();
151
+ for (size_t i = 0 ; i < buf1.size (); i += 2 ) {
152
+ ring_buffer.read (buf1[i] );
153
+ ring_buffer.read (buf2[i] );
154
+ result += 4 ;
155
+ }
156
+ dac1.write (buf1);
157
+ dac2.write (buf2);
158
+ } break ;
162
159
}
163
160
assert (ring_buffer.isEmpty ());
164
161
return result;
@@ -168,6 +165,6 @@ class AnalogDriverMBED : public AnalogDriverBase {
168
165
// / @brief AnalogAudioStream
169
166
using AnalogDriver = AnalogDriverMBED;
170
167
171
- } // namespace audio_tools
168
+ } // namespace audio_tools
172
169
173
- #endif // USE_ANALOG
170
+ #endif // USE_ANALOG
0 commit comments