Skip to content

Commit c58e95b

Browse files
committed
Avoid overwriting DoubleBuffer size if it is big enough
1 parent 0569965 commit c58e95b

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

libraries/PDM/src/PDM.h

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class PDMClass
4242
//NANO 33 BLE SENSe min 0 max 80
4343
void setGain(int gain);
4444
void setBufferSize(int bufferSize);
45+
size_t getBufferSize();
4546

4647
// private:
4748
void IrqHandler(bool halftranfer);

libraries/PDM/src/stm32/PDM.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ void PDMClass::setBufferSize(int bufferSize)
114114
_doubleBuffer.setSize(bufferSize);
115115
}
116116

117+
size_t PDMClass::getBufferSize()
118+
{
119+
return _doubleBuffer.getSize();
120+
}
121+
117122
void PDMClass::IrqHandler(bool halftranfer)
118123
{
119124
if (_doubleBuffer.available() == 0) {
@@ -136,6 +141,10 @@ void PDMIrqHandler(bool halftranfer)
136141
void PDMsetBufferSize(int size) {
137142
PDM.setBufferSize(size);
138143
}
144+
145+
size_t PDMgetBufferSize() {
146+
return PDM.getBufferSize();
147+
}
139148
}
140149

141150
PDMClass PDM(0, 0, 0);

libraries/PDM/src/stm32/audio.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,11 @@ int py_audio_init(size_t channels, uint32_t frequency, int gain_db, float highpa
303303
PDM_Filter_setConfig(&PDM_FilterHandler[i], &PDM_FilterConfig[i]);
304304
}
305305

306-
PDMsetBufferSize(samples_per_channel * g_o_channels * sizeof(int16_t));
307-
//g_pcmbuf = malloc(samples_per_channel * g_channels * sizeof(int16_t));
306+
uint32_t min_buff_size = samples_per_channel * g_o_channels * sizeof(int16_t);
307+
uint32_t buff_size = PDMgetBufferSize();
308+
if(buff_size < min_buff_size) {
309+
PDMsetBufferSize(min_buff_size);
310+
}
308311

309312
return 1;
310313
}

libraries/PDM/src/utility/PDMDoubleBuffer.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ void PDMDoubleBuffer::setSize(int size)
3737
reset();
3838
}
3939

40+
size_t PDMDoubleBuffer::getSize()
41+
{
42+
return _size;
43+
}
44+
4045
void PDMDoubleBuffer::reset()
4146
{
4247
_buffer[0] = (uint8_t*)realloc(_buffer[0], _size);

libraries/PDM/src/utility/PDMDoubleBuffer.h

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class PDMDoubleBuffer
3131
virtual ~PDMDoubleBuffer();
3232

3333
void setSize(int size);
34+
size_t getSize();
3435

3536
void reset();
3637

0 commit comments

Comments
 (0)