diff --git a/oscilloscope.c b/oscilloscope.c index 4f54617f7428665c5144ce782608dd58c111e477..78c23784600a6c71a5cc87563d2ccc28b8569c2f 100644 --- a/oscilloscope.c +++ b/oscilloscope.c @@ -13,7 +13,6 @@ int16_t *raw_buffer_b; bool active_buffer; // 0 for a, 1 for b unsigned int dma_channel; -samples_ready_handler_t samples_ready_handler; volatile int samples_read; int16_t sample_buffer[SAMPLE_BUFFER_SIZE]; @@ -37,7 +36,6 @@ int main() // microphone setup setup_adc(); setup_dma(); - set_samples_ready_handler(on_samples_ready); start_listening(); unsigned int num_samples = 0; @@ -58,7 +56,6 @@ int main() sleep_ms(50); ST7735_FillScreen(ST7735_BLACK); // clean - } } @@ -136,31 +133,20 @@ void dma_handler() // swap buffers active_buffer = !active_buffer; - samples_ready_handler(); - -} - -void set_samples_ready_handler(samples_ready_handler_t handler) -{ - samples_ready_handler = handler; + on_samples_ready(); } -int read_samples(int16_t* buffer, size_t samples) +void on_samples_ready() { uint16_t* in = active_buffer ? raw_buffer_a : raw_buffer_b; - int16_t* out = buffer; + int16_t* out = sample_buffer; - for (size_t i = 0; i < samples; i++) + for (size_t i = 0; i < SAMPLE_BUFFER_SIZE; i++) { *out++ = *in++ - bias; } - return samples; -} - -void on_samples_ready() -{ - samples_read = read_samples(sample_buffer, SAMPLE_BUFFER_SIZE); + samples_read = SAMPLE_BUFFER_SIZE; } void debug_write_to_screen(char debug_string[]) { diff --git a/oscilloscope.h b/oscilloscope.h index c946184888973716028b3e381cd418ce7ee7cbeb..2f81663e82d8182344f9451401dddff78e440d88 100644 --- a/oscilloscope.h +++ b/oscilloscope.h @@ -14,15 +14,12 @@ #include "lib/st7735.h" #include "lib/ICM20948.h" -typedef void (*samples_ready_handler_t)(void); - void setup_adc(); void setup_dma(); void start_listening(); void dma_handler(); -void set_samples_ready_handler(samples_ready_handler_t handler); int read_samples(int16_t* buffer, size_t samples); void on_samples_ready(); diff --git a/oscilloscope_incomplete.c b/oscilloscope_incomplete.c index ab14e4a64f6e17e96a4499daa9cfe5fdb5dfdabb..e6c5ae5b4013ad28935289d1e97cdc547fb4ca7c 100644 --- a/oscilloscope_incomplete.c +++ b/oscilloscope_incomplete.c @@ -62,7 +62,7 @@ void start_listening() void dma_handler() { // TODO: get the samples from DMA into main() - // hint: call samples_ready_handler at the end + // hint: call on_samples_ready at the end } void setup_adc() @@ -112,27 +112,17 @@ void setup_dma() } -void set_samples_ready_handler(samples_ready_handler_t handler) -{ - samples_ready_handler = handler; -} - -int read_samples(int16_t* buffer, size_t samples) +void on_samples_ready() { uint16_t* in = active_buffer ? raw_buffer_a : raw_buffer_b; - int16_t* out = buffer; + int16_t* out = sample_buffer; - for (size_t i = 0; i < samples; i++) + for (size_t i = 0; i < SAMPLE_BUFFER_SIZE; i++) { *out++ = *in++ - bias; } - return samples; -} - -void on_samples_ready() -{ - samples_read = read_samples(sample_buffer, SAMPLE_BUFFER_SIZE); + samples_read = SAMPLE_BUFFER_SIZE; } void debug_write_to_screen(char debug_string[]) {