usb_serial: Fixed up the nomenclature for the USB serial interfaces

This commit is contained in:
dragonmux 2022-08-21 16:23:56 +01:00 committed by Piotr Esden-Tempski
parent 0a6621a322
commit 1a7af52edc
10 changed files with 41 additions and 41 deletions

View File

@ -78,7 +78,7 @@ enum BMP_DEBUG {
# define DEBUG_WIRE(...) do {} while(0) # define DEBUG_WIRE(...) do {} while(0)
# define DEBUG_GDB_WIRE(...) do {} while(0) # define DEBUG_GDB_WIRE(...) do {} while(0)
void debug_uart_send_stdout(const uint8_t *data, size_t len); void debug_serial_send_stdout(const uint8_t *data, size_t len);
#else #else
# include <stdarg.h> # include <stdarg.h>
extern int cl_debuglevel; extern int cl_debuglevel;

View File

@ -335,7 +335,7 @@ static void aux_serial_receive_isr(const uint32_t usart, const uint8_t dma_irq)
#ifdef USART_ICR #ifdef USART_ICR
USART_ICR(usart) = USART_ICR_IDLECF; USART_ICR(usart) = USART_ICR_IDLECF;
#endif #endif
debug_uart_run(); debug_serial_run();
} }
nvic_enable_irq(dma_irq); nvic_enable_irq(dma_irq);
@ -370,7 +370,7 @@ static void aux_serial_dma_receive_isr(const uint8_t usart_irq, const uint8_t dm
/* Clear flags and transmit a packet*/ /* Clear flags and transmit a packet*/
dma_clear_interrupt_flags(USBUSART_DMA_BUS, dma_rx_channel, DMA_CGIF); dma_clear_interrupt_flags(USBUSART_DMA_BUS, dma_rx_channel, DMA_CGIF);
debug_uart_run(); debug_serial_run();
nvic_enable_irq(usart_irq); nvic_enable_irq(usart_irq);
} }

View File

@ -57,12 +57,12 @@
#include <libopencm3/stm32/dma.h> #include <libopencm3/stm32/dma.h>
#endif #endif
static bool gdb_uart_dtr = true; static bool gdb_serial_dtr = true;
static void usb_serial_set_state(usbd_device *dev, uint16_t iface, uint8_t ep); static void usb_serial_set_state(usbd_device *dev, uint16_t iface, uint8_t ep);
static void debug_uart_send_callback(usbd_device *dev, uint8_t ep); static void debug_serial_send_callback(usbd_device *dev, uint8_t ep);
static void debug_uart_receive_callback(usbd_device *dev, uint8_t ep); static void debug_serial_receive_callback(usbd_device *dev, uint8_t ep);
static bool debug_serial_send_complete = true; static bool debug_serial_send_complete = true;
@ -80,7 +80,7 @@ static uint8_t debug_serial_debug_write_index;
static uint8_t debug_serial_debug_read_index; static uint8_t debug_serial_debug_read_index;
#endif #endif
static enum usbd_request_return_codes gdb_uart_control_request(usbd_device *dev, struct usb_setup_data *req, static enum usbd_request_return_codes gdb_serial_control_request(usbd_device *dev, struct usb_setup_data *req,
uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req)) uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req))
{ {
(void)buf; (void)buf;
@ -92,7 +92,7 @@ static enum usbd_request_return_codes gdb_uart_control_request(usbd_device *dev,
switch (req->bRequest) { switch (req->bRequest) {
case USB_CDC_REQ_SET_CONTROL_LINE_STATE: case USB_CDC_REQ_SET_CONTROL_LINE_STATE:
usb_serial_set_state(dev, req->wIndex, CDCACM_GDB_ENDPOINT); usb_serial_set_state(dev, req->wIndex, CDCACM_GDB_ENDPOINT);
gdb_uart_dtr = req->wValue & 1; gdb_serial_dtr = req->wValue & 1;
return USBD_REQ_HANDLED; return USBD_REQ_HANDLED;
case USB_CDC_REQ_SET_LINE_CODING: case USB_CDC_REQ_SET_LINE_CODING:
if (*len < sizeof(struct usb_cdc_line_coding)) if (*len < sizeof(struct usb_cdc_line_coding))
@ -102,7 +102,12 @@ static enum usbd_request_return_codes gdb_uart_control_request(usbd_device *dev,
return USBD_REQ_NOTSUPP; return USBD_REQ_NOTSUPP;
} }
static enum usbd_request_return_codes debug_uart_control_request(usbd_device *dev, struct usb_setup_data *req, bool gdb_serial_get_dtr(void)
{
return gdb_serial_dtr;
}
static enum usbd_request_return_codes debug_serial_control_request(usbd_device *dev, struct usb_setup_data *req,
uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req)) uint8_t **buf, uint16_t *const len, void (**complete)(usbd_device *dev, struct usb_setup_data *req))
{ {
(void)complete; (void)complete;
@ -129,11 +134,6 @@ static enum usbd_request_return_codes debug_uart_control_request(usbd_device *de
return USBD_REQ_NOTSUPP; return USBD_REQ_NOTSUPP;
} }
bool gdb_uart_get_dtr(void)
{
return gdb_uart_dtr;
}
void usb_serial_set_state(usbd_device *const dev, const uint16_t iface, const uint8_t ep) void usb_serial_set_state(usbd_device *const dev, const uint16_t iface, const uint8_t ep)
{ {
uint8_t buf[10]; uint8_t buf[10];
@ -163,9 +163,9 @@ void usb_serial_set_config(usbd_device *dev, uint16_t value)
usbd_ep_setup(dev, (CDCACM_GDB_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL); usbd_ep_setup(dev, (CDCACM_GDB_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL);
/* Serial interface */ /* Serial interface */
usbd_ep_setup(dev, CDCACM_UART_ENDPOINT, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE / 2, debug_uart_receive_callback); usbd_ep_setup(dev, CDCACM_UART_ENDPOINT, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE / 2, debug_serial_receive_callback);
usbd_ep_setup( usbd_ep_setup(
dev, CDCACM_UART_ENDPOINT | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE, debug_uart_send_callback); dev, CDCACM_UART_ENDPOINT | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_BULK, CDCACM_PACKET_SIZE, debug_serial_send_callback);
usbd_ep_setup(dev, (CDCACM_UART_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL); usbd_ep_setup(dev, (CDCACM_UART_ENDPOINT + 1) | USB_REQ_TYPE_IN, USB_ENDPOINT_ATTR_INTERRUPT, 16, NULL);
#ifdef PLATFORM_HAS_TRACESWO #ifdef PLATFORM_HAS_TRACESWO
@ -174,9 +174,9 @@ void usb_serial_set_config(usbd_device *dev, uint16_t value)
#endif #endif
usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE, usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, debug_uart_control_request); USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, debug_serial_control_request);
usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE, usbd_register_control_callback(dev, USB_REQ_TYPE_CLASS | USB_REQ_TYPE_INTERFACE,
USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, gdb_uart_control_request); USB_REQ_TYPE_TYPE | USB_REQ_TYPE_RECIPIENT, gdb_serial_control_request);
/* Notify the host that DCD is asserted. /* Notify the host that DCD is asserted.
* Allows the use of /dev/tty* devices on *BSD/MacOS * Allows the use of /dev/tty* devices on *BSD/MacOS
@ -189,7 +189,7 @@ void usb_serial_set_config(usbd_device *dev, uint16_t value)
#endif #endif
} }
void debug_uart_send_stdout(const uint8_t *const data, const size_t len) void debug_serial_send_stdout(const uint8_t *const data, const size_t len)
{ {
for (size_t offset = 0; offset < len; offset += CDCACM_PACKET_SIZE) { for (size_t offset = 0; offset < len; offset += CDCACM_PACKET_SIZE) {
const size_t count = MIN(len - offset, CDCACM_PACKET_SIZE); const size_t count = MIN(len - offset, CDCACM_PACKET_SIZE);
@ -230,7 +230,7 @@ static bool debug_serial_fifo_buffer_empty(void)
* Runs deferred processing for AUX serial RX, draining RX FIFO by sending * Runs deferred processing for AUX serial RX, draining RX FIFO by sending
* characters to host PC via the debug serial interface. * characters to host PC via the debug serial interface.
*/ */
static void debug_uart_send_aux_serial_data(void) static void debug_serial_send_data(void)
{ {
debug_serial_send_complete = false; debug_serial_send_complete = false;
aux_serial_update_receive_buffer_fullness(); aux_serial_update_receive_buffer_fullness();
@ -255,7 +255,7 @@ static void debug_uart_send_aux_serial_data(void)
} }
} }
void debug_uart_run(void) void debug_serial_run(void)
{ {
nvic_disable_irq(USB_IRQ); nvic_disable_irq(USB_IRQ);
@ -264,7 +264,7 @@ void debug_uart_run(void)
/* Try to send a packet if usb is idle */ /* Try to send a packet if usb is idle */
if (debug_serial_send_complete) if (debug_serial_send_complete)
debug_uart_send_aux_serial_data(); debug_serial_send_data();
nvic_enable_irq(USB_IRQ); nvic_enable_irq(USB_IRQ);
} }
@ -277,7 +277,7 @@ static void debug_serial_append_char(const char c)
debug_serial_debug_write_index %= AUX_UART_BUFFER_SIZE; debug_serial_debug_write_index %= AUX_UART_BUFFER_SIZE;
} }
size_t debug_uart_write(const char *buf, const size_t len) size_t debug_serial_debug_write(const char *buf, const size_t len)
{ {
if (nvic_get_active_irq(USB_IRQ) || nvic_get_active_irq(USBUSART_IRQ) || nvic_get_active_irq(USBUSART_DMA_RX_IRQ)) if (nvic_get_active_irq(USB_IRQ) || nvic_get_active_irq(USBUSART_IRQ) || nvic_get_active_irq(USBUSART_DMA_RX_IRQ))
return 0; return 0;
@ -296,21 +296,21 @@ size_t debug_uart_write(const char *buf, const size_t len)
debug_serial_append_char(buf[offset]); debug_serial_append_char(buf[offset]);
} }
debug_uart_run(); debug_serial_run();
return offset; return offset;
} }
static void debug_uart_send_callback(usbd_device *dev, uint8_t ep) static void debug_serial_send_callback(usbd_device *dev, uint8_t ep)
{ {
(void) ep; (void) ep;
(void) dev; (void) dev;
#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32F4) #if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32F4)
debug_uart_send_aux_serial_data(); debug_serial_send_data();
#endif #endif
} }
#ifndef ENABLE_RTT #ifndef ENABLE_RTT
static void debug_uart_receive_callback(usbd_device *dev, uint8_t ep) static void debug_serial_receive_callback(usbd_device *dev, uint8_t ep)
{ {
char *const transmit_buffer = aux_serial_current_transmit_buffer() + aux_serial_transmit_buffer_fullness(); char *const transmit_buffer = aux_serial_current_transmit_buffer() + aux_serial_transmit_buffer_fullness();
const uint16_t len = usbd_ep_read_packet(dev, ep, transmit_buffer, CDCACM_PACKET_SIZE); const uint16_t len = usbd_ep_read_packet(dev, ep, transmit_buffer, CDCACM_PACKET_SIZE);
@ -347,7 +347,7 @@ int _write(const int file, const void *const ptr, const size_t len)
(void)file; (void)file;
#ifdef PLATFORM_HAS_DEBUG #ifdef PLATFORM_HAS_DEBUG
if (debug_bmp) if (debug_bmp)
return debug_uart_write(ptr, len); return debug_serial_debug_write(ptr, len);
#endif #endif
return len; return len;
} }

View File

@ -34,6 +34,6 @@
void usb_serial_set_config(usbd_device *dev, uint16_t value); void usb_serial_set_config(usbd_device *dev, uint16_t value);
bool gdb_uart_get_dtr(void); bool gdb_serial_get_dtr(void);
#endif /*USB_SERIAL_H*/ #endif /*USB_SERIAL_H*/

View File

@ -22,7 +22,7 @@
#include "general.h" #include "general.h"
void debug_uart_run(void); void debug_serial_run(void);
uint32_t debug_serial_fifo_send(const char *const fifo, const uint32_t fifo_begin, const uint32_t fifo_end); uint32_t debug_serial_fifo_send(const char *const fifo, const uint32_t fifo_begin, const uint32_t fifo_end);
#define TX_LED_ACT (1 << 0) #define TX_LED_ACT (1 << 0)

View File

@ -45,7 +45,7 @@ void gdb_if_putchar(unsigned char c, int flush)
if (flush || (count_in == CDCACM_PACKET_SIZE)) { if (flush || (count_in == CDCACM_PACKET_SIZE)) {
/* Refuse to send if USB isn't configured, and /* Refuse to send if USB isn't configured, and
* don't bother if nobody's listening */ * don't bother if nobody's listening */
if (usb_get_config() != 1 || !gdb_uart_get_dtr()) { if (usb_get_config() != 1 || !gdb_serial_get_dtr()) {
count_in = 0; count_in = 0;
return; return;
} }
@ -107,7 +107,7 @@ unsigned char gdb_if_getchar(void)
while (!(out_ptr < count_out)) { while (!(out_ptr < count_out)) {
/* Detach if port closed */ /* Detach if port closed */
if (!gdb_uart_get_dtr()) { if (!gdb_serial_get_dtr()) {
__WFI(); __WFI();
return 0x04; return 0x04;
} }
@ -125,7 +125,7 @@ unsigned char gdb_if_getchar_to(int timeout)
if (!(out_ptr < count_out)) do { if (!(out_ptr < count_out)) do {
/* Detach if port closed */ /* Detach if port closed */
if (!gdb_uart_get_dtr()) { if (!gdb_serial_get_dtr()) {
__WFI(); /* systick will wake up too!*/ __WFI(); /* systick will wake up too!*/
return 0x04; return 0x04;
} }

View File

@ -59,10 +59,10 @@ inline static bool recv_set_nak()
return recv_bytes_free() < 2 * CDCACM_PACKET_SIZE; return recv_bytes_free() < 2 * CDCACM_PACKET_SIZE;
} }
/* debug_uart_receive_callback is called when usb uart has received new data for target. /* debug_serial_receive_callback is called when usb uart has received new data for target.
this routine has to be fast */ this routine has to be fast */
void debug_uart_receive_callback(usbd_device *dev, uint8_t ep) void debug_serial_receive_callback(usbd_device *dev, uint8_t ep)
{ {
(void)dev; (void)dev;
(void)ep; (void)ep;
@ -121,7 +121,7 @@ bool rtt_nodata()
/* rtt target to host: write string */ /* rtt target to host: write string */
uint32_t rtt_write(const char *buf, uint32_t len) uint32_t rtt_write(const char *buf, uint32_t len)
{ {
if (len != 0 && usbdev && usb_get_config() && gdb_uart_get_dtr()) { if (len != 0 && usbdev && usb_get_config() && gdb_serial_get_dtr()) {
for (uint32_t p = 0; p < len; p += CDCACM_PACKET_SIZE) { for (uint32_t p = 0; p < len; p += CDCACM_PACKET_SIZE) {
uint32_t plen = MIN(CDCACM_PACKET_SIZE, len - p); uint32_t plen = MIN(CDCACM_PACKET_SIZE, len - p);
while(usbd_ep_write_packet(usbdev, CDCACM_UART_ENDPOINT, buf + p, plen) <= 0); while(usbd_ep_write_packet(usbdev, CDCACM_UART_ENDPOINT, buf + p, plen) <= 0);

View File

@ -47,7 +47,7 @@ uint16_t traceswo_decode(usbd_device *usbd_dev, uint8_t addr,
if (swo_print) { if (swo_print) {
swo_buf[swo_buf_len++]=ch; swo_buf[swo_buf_len++]=ch;
if (swo_buf_len == sizeof(swo_buf)) { if (swo_buf_len == sizeof(swo_buf)) {
if (usb_get_config() && gdb_uart_get_dtr()) /* silently drop if usb not ready */ if (usb_get_config() && gdb_serial_get_dtr()) /* silently drop if usb not ready */
usbd_ep_write_packet(usbd_dev, addr, swo_buf, swo_buf_len); usbd_ep_write_packet(usbd_dev, addr, swo_buf, swo_buf_len);
swo_buf_len=0; swo_buf_len=0;
} }

View File

@ -40,7 +40,7 @@ void gdb_if_putchar(unsigned char c, int flush)
if (flush || count_in == CDCACM_PACKET_SIZE) { if (flush || count_in == CDCACM_PACKET_SIZE) {
/* Refuse to send if USB isn't configured, and /* Refuse to send if USB isn't configured, and
* don't bother if nobody's listening */ * don't bother if nobody's listening */
if (usb_get_config() != 1 || !gdb_uart_get_dtr()) { if (usb_get_config() != 1 || !gdb_serial_get_dtr()) {
count_in = 0; count_in = 0;
return; return;
} }
@ -68,7 +68,7 @@ unsigned char gdb_if_getchar(void)
{ {
while (tail_out == head_out) { while (tail_out == head_out) {
/* Detach if port closed */ /* Detach if port closed */
if (!gdb_uart_get_dtr()) if (!gdb_serial_get_dtr())
return 0x04; return 0x04;
while (usb_get_config() != 1) while (usb_get_config() != 1)
@ -86,7 +86,7 @@ unsigned char gdb_if_getchar_to(int timeout)
if (head_out == tail_out) if (head_out == tail_out)
do { do {
/* Detach if port closed */ /* Detach if port closed */
if (!gdb_uart_get_dtr()) if (!gdb_serial_get_dtr())
return 0x04; return 0x04;
while (usb_get_config() != 1) while (usb_get_config() != 1)

View File

@ -702,7 +702,7 @@ int tc_write(target *t, int fd, target_addr buf, unsigned int count)
if (cnt > count) if (cnt > count)
cnt = count; cnt = count;
target_mem_read(t, tmp, buf, cnt); target_mem_read(t, tmp, buf, cnt);
debug_uart_send_stdout(tmp, cnt); debug_serial_send_stdout(tmp, cnt);
count -= cnt; count -= cnt;
buf += cnt; buf += cnt;
} }