From 940708d0dc1d1fb86e4326488b0c5d8c6d87bdb7 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Thu, 4 Jul 2019 12:48:14 +0200 Subject: [PATCH] fix(epicardium): Reenable cdcacm --- epicardium/cdcacm.c | 12 ++++++++++++ epicardium/serial.c | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/epicardium/cdcacm.c b/epicardium/cdcacm.c index 5bc8f706..fd0f2d86 100644 --- a/epicardium/cdcacm.c +++ b/epicardium/cdcacm.c @@ -172,6 +172,8 @@ void cdcacm_init(void) /* Start with USB in low power mode */ usb_app_sleep(); + /* TODO: Fix priority */ + NVIC_SetPriority(USB_IRQn, 6); NVIC_EnableIRQ(USB_IRQn); } @@ -338,9 +340,19 @@ static int usb_read_callback(void) } /******************************************************************************/ +#include "FreeRTOS.h" +#include "task.h" + +extern TaskHandle_t serial_task_id; void USB_IRQHandler(void) { usb_event_handler(); + + if (serial_task_id != NULL) { + BaseType_t xHigherPriorityTaskWoken = pdFALSE; + vTaskNotifyGiveFromISR(serial_task_id, &xHigherPriorityTaskWoken); + portYIELD_FROM_ISR(xHigherPriorityTaskWoken); + } } /******************************************************************************/ diff --git a/epicardium/serial.c b/epicardium/serial.c index 0b956422..ac9e1ce0 100644 --- a/epicardium/serial.c +++ b/epicardium/serial.c @@ -13,7 +13,7 @@ #include "queue.h" /* Task ID for the serial handler */ -TaskHandle_t serial_task_id; +TaskHandle_t serial_task_id = NULL; /* The serial console in use (UART0) */ extern mxc_uart_regs_t* ConsoleUart; @@ -109,5 +109,9 @@ void vSerialTask(void*pvParameters) while (UART_NumReadAvail(ConsoleUart) > 0) { enqueue_char(UART_ReadByte(ConsoleUart)); } + + while (cdcacm_num_read_avail() > 0) { + enqueue_char(cdcacm_read()); + } } } -- GitLab