Changes to correct repeat playing on a channel

This commit is contained in:
root 2021-05-29 11:55:10 -05:00
parent 24e641a834
commit 760e8c77bd
2 changed files with 8 additions and 0 deletions

View File

@ -352,6 +352,8 @@ bool audio_dma_get_paused(audio_dma_t *dma) {
void audio_dma_init(audio_dma_t *dma) {
dma->first_buffer = NULL;
dma->second_buffer = NULL;
dma->channel[0] = NUM_DMA_CHANNELS;
dma->channel[1] = NUM_DMA_CHANNELS;
}
void audio_dma_deinit(audio_dma_t *dma) {

View File

@ -127,6 +127,12 @@ void common_hal_audiopwmio_pwmaudioout_deinit(audiopwmio_pwmaudioout_obj_t *self
void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self, mp_obj_t sample, bool loop) {
if (self->dma.channel[0] < NUM_DMA_CHANNELS) {
if (common_hal_audiopwmio_pwmaudioout_get_playing(self)) {
common_hal_audiopwmio_pwmaudioout_stop(self);
}
}
// TODO: Share pacing timers based on frequency.
size_t pacing_timer = NUM_DMA_TIMERS;
for (size_t i = 0; i < NUM_DMA_TIMERS; i++) {