Skip to content

Commit 1aaf4f1

Browse files
committed
Return number of samples recorded.
1 parent c8499a5 commit 1aaf4f1

3 files changed

Lines changed: 8 additions & 4 deletions

File tree

  • ports/raspberrypi/common-hal/audiobusio
  • shared-bindings/audiobusio

ports/raspberrypi/common-hal/audiobusio/I2S.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ void common_hal_audiobusio_i2s_deinit(audiobusio_i2s_obj_t *self) {
166166

167167
// output_buffer may be a byte buffer or a halfword buffer.
168168
// output_buffer_length is the number of slots, not the number of bytes.
169-
void common_hal_audiobusio_i2s_record_to_buffer(audiobusio_i2s_obj_t *self,
169+
uint32_t common_hal_audiobusio_i2s_record_to_buffer(audiobusio_i2s_obj_t *self,
170170
int16_t *output_buffer, uint32_t output_buffer_length) {
171171
if (!self->state_machine.in) {
172172
mp_raise_RuntimeError(MP_ERROR_TEXT("No data in"));
@@ -199,6 +199,8 @@ void common_hal_audiobusio_i2s_record_to_buffer(audiobusio_i2s_obj_t *self,
199199

200200
output_count += buffer_length;
201201
}
202+
203+
return output_count;
202204
}
203205

204206
void common_hal_audiobusio_i2s_play(audiobusio_i2s_obj_t *self,

shared-bindings/audiobusio/I2S.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ static mp_obj_t audiobusio_i2s_obj___exit__(size_t n_args, const mp_obj_t *args)
179179
}
180180
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audiobusio_i2s___exit___obj, 4, 4, audiobusio_i2s_obj___exit__);
181181

182-
//| def record(self, destination: WriteableBuffer, destination_length: int) -> None:
182+
//| def record(self, destination: WriteableBuffer, destination_length: int) -> int:
183183
//| """Records destination_length bytes of samples to destination. This is
184184
//| blocking.
185185
//|
@@ -210,7 +210,9 @@ static mp_obj_t audiobusio_i2s_obj_record(mp_obj_t self_obj, mp_obj_t destinatio
210210
mp_raise_ValueError(MP_ERROR_TEXT("destination buffer must be a bytearray or array of type 'B' for bit_depth = 8"));
211211
}
212212
// length is the buffer length in slots, not bytes.
213-
common_hal_audiobusio_i2s_record_to_buffer(self, bufinfo.buf, length);
213+
uint32_t length_written =
214+
common_hal_audiobusio_i2s_record_to_buffer(self, bufinfo.buf, length);
215+
return MP_OBJ_NEW_SMALL_INT(length_written);
214216
}
215217
return mp_const_none;
216218
}

shared-bindings/audiobusio/I2S.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void common_hal_audiobusio_i2s_construct(audiobusio_i2s_obj_t *self,
2323
void common_hal_audiobusio_i2s_deinit(audiobusio_i2s_obj_t *self);
2424
bool common_hal_audiobusio_i2s_deinited(audiobusio_i2s_obj_t *self);
2525

26-
void common_hal_audiobusio_i2s_record_to_buffer(audiobusio_i2s_obj_t *self,
26+
uint32_t common_hal_audiobusio_i2s_record_to_buffer(audiobusio_i2s_obj_t *self,
2727
int16_t *buffer, uint32_t length);
2828

2929
void common_hal_audiobusio_i2s_play(audiobusio_i2s_obj_t *self, mp_obj_t sample, bool loop);

0 commit comments

Comments
 (0)