diff options
Diffstat (limited to 'src/packet_interface.c')
-rw-r--r-- | src/packet_interface.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/packet_interface.c b/src/packet_interface.c index 319ddd1..441fff9 100644 --- a/src/packet_interface.c +++ b/src/packet_interface.c @@ -2,6 +2,7 @@ #include "packet_interface.h" #include "noise.h" #include "cobs.h" +#include "tracing.h" #include <libopencm3/stm32/usart.h> #include <libopencm3/stm32/dma.h> @@ -25,11 +26,13 @@ struct dma_usart_file usart2_out_s = { struct dma_usart_file *usart2_out = &usart2_out_s; void dma1_stream6_isr(void) { + TRACING_SET(TR_HOST_IF_DMA_IRQ); static unsigned int fifo_errors = 0; /* debug */ if (dma_get_interrupt_flag(usart2_out->dma, usart2_out->stream, DMA_FEIF)) { /* Ignore FIFO errors as they're 100% non-critical for UART applications */ dma_clear_interrupt_flags(usart2_out->dma, usart2_out->stream, DMA_FEIF); fifo_errors++; + TRACING_CLEAR(TR_HOST_IF_DMA_IRQ); return; } @@ -38,15 +41,18 @@ void dma1_stream6_isr(void) { if (usart2_out->buf->wr_pos != usart2_out->buf->xfr_end) /* buffer not empty */ schedule_dma(usart2_out); + TRACING_CLEAR(TR_HOST_IF_DMA_IRQ); } void usart2_isr(void) { + TRACING_SET(TR_HOST_IF_USART_IRQ); static struct cobs_decode_state host_cobs_state = {0}; if (USART2_SR & USART_SR_ORE) { /* Overrun handling */ LOG_PRINTF("USART2 data register overrun\n"); /* Clear interrupt flag */ (void)USART2_DR; /* FIXME make sure this read is not optimized out */ host_packet_length = -1; + TRACING_CLEAR(TR_HOST_IF_USART_IRQ); return; } @@ -55,6 +61,7 @@ void usart2_isr(void) { if (host_packet_length) { LOG_PRINTF("USART2 COBS buffer overrun\n"); host_packet_length = -1; + TRACING_CLEAR(TR_HOST_IF_USART_IRQ); return; } @@ -70,6 +77,7 @@ void usart2_isr(void) { } else if (rv > 0) { host_packet_length = rv; } /* else just return and wait for next byte */ + TRACING_CLEAR(TR_HOST_IF_USART_IRQ); } void send_packet(struct dma_usart_file *f, const uint8_t *data, size_t len) { |