Skip to content

Commit b02596b

Browse files
committed
Simplified peek() - NOT tested
1 parent c7d011e commit b02596b

File tree

3 files changed

+4
-20
lines changed

3 files changed

+4
-20
lines changed

libraries/I2S/examples/InputSerialPlotter/InputSerialPlotter.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void loop() {
4040
// read a sample
4141
int sample = I2S.read();
4242

43-
if (sample && sample != -1 && sample != 1) {
43+
if (abs(sample) > 1) {
4444
Serial.println(sample);
4545
}
4646
}

libraries/I2S/src/I2S.cpp

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ I2SClass::I2SClass(uint8_t deviceIndex, uint8_t clockGenerator, uint8_t sdPin, u
5252
_output_ring_buffer(NULL),
5353
_i2s_dma_buffer_size(128), // Number of frames in each DMA buffer. Frame size = number of channels * Bytes per sample; Must be between 8 and 1024
5454
_driveClock(true),
55-
_peek_buff(0),
56-
_peek_buff_valid(false),
5755
_nesting_counter(0),
5856

5957
_onTransmit(NULL),
@@ -621,11 +619,6 @@ int I2SClass::read(void* buffer, size_t size){
621619
size_t item_size = 0;
622620
void *tmp_buffer;
623621
if(_input_ring_buffer != NULL){
624-
if(_peek_buff_valid){
625-
memcpy(buffer, &_peek_buff, _bitsPerSample/8);
626-
_peek_buff_valid = false;
627-
requested_size -= _bitsPerSample/8;
628-
}
629622
tmp_buffer = xRingbufferReceiveUpTo(_input_ring_buffer, &item_size, pdMS_TO_TICKS(1000), requested_size);
630623
if(tmp_buffer != NULL){
631624
memcpy(buffer, tmp_buffer, item_size);
@@ -758,24 +751,17 @@ size_t I2SClass::write_nonblocking(const void *buffer, size_t size){
758751
*/
759752
int I2SClass::peek(){
760753
_take_if_not_holding();
761-
int ret = 0;
762-
if(_initialized && _input_ring_buffer != NULL && !_peek_buff_valid){
754+
if(_initialized && _input_ring_buffer != NULL){
763755
size_t item_size = 0;
764756
void *item = NULL;
765757

766758
item = xRingbufferReceiveUpTo(_input_ring_buffer, &item_size, 0, _bitsPerSample/8); // fetch 1 sample
767759
if (item != NULL && item_size == _bitsPerSample/8){
768-
_peek_buff = *((int*)item);
769-
vRingbufferReturnItem(_input_ring_buffer, item);
770-
_peek_buff_valid = true;
760+
return *((int*)item);
771761
}
772-
773762
} // if(_initialized)
774-
if(_peek_buff_valid){
775-
ret = _peek_buff;
776-
}
777763
_give_if_top_call();
778-
return ret;
764+
return 0;
779765
}
780766
// Requests data from ring buffer and writes data to I2S module
781767
// note: it is NOT necessary to call the flush after writes. Buffer is flushed automatically after receiveing enough data.

libraries/I2S/src/I2S.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,6 @@ class I2SClass : public Stream
408408
RingbufHandle_t _output_ring_buffer;
409409
int _i2s_dma_buffer_size;
410410
bool _driveClock;
411-
uint32_t _peek_buff;
412-
bool _peek_buff_valid;
413411

414412
void _tx_done_routine(uint8_t* prev_item);
415413
void _rx_done_routine();

0 commit comments

Comments
 (0)