summaryrefslogtreecommitdiff
path: root/src/packet_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/packet_interface.c')
-rw-r--r--src/packet_interface.c8
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) {