This commit is contained in:
2026-02-25 11:41:07 +01:00
parent fa58fe5f20
commit e7aa562c0b
4 changed files with 21 additions and 1 deletions

View File

@@ -1,4 +1,5 @@
# config.yaml # config.yaml
serial: serial:
port: "COM15" port: "COM15"
baudrate: 112500 baudrate: 112500
timeout: 20

View File

@@ -208,6 +208,7 @@ void execute_current_command(void)
} }
else else
{ {
usb_flush_rx();
send_error(rc); send_error(rc);
} }
break; break;
@@ -222,6 +223,7 @@ protocol_state_t waiting_for_command(uint8_t byte)
{ {
if (byte < 'a' || byte > 'z') if (byte < 'a' || byte > 'z')
{ {
LOG_DBG("Ignoring non-command byte: 0x%02x", byte); // Nur aktivieren, wenn nötig!
rx_index = 0; rx_index = 0;
return PS_WAITING_FOR_COMMAND; return PS_WAITING_FOR_COMMAND;
} }

View File

@@ -95,6 +95,18 @@ void usb_write_buffer(const uint8_t *buf, size_t len)
} }
} }
void usb_flush_rx(void)
{
uint8_t dummy;
if (!device_is_ready(cdc_dev)) return;
// Alles lesen, was gerade im Hardware-FIFO liegt
while (uart_fifo_read(cdc_dev, &dummy, 1) > 0);
// Semaphore zurücksetzen, falls sie gesetzt war
k_sem_reset(&usb_rx_sem);
}
static void usb_status_cb(enum usb_dc_status_code cb_status, const uint8_t *param) static void usb_status_cb(enum usb_dc_status_code cb_status, const uint8_t *param)
{ {
switch (cb_status) { switch (cb_status) {

View File

@@ -47,4 +47,9 @@ void usb_write_char(uint8_t c);
*/ */
void usb_write_buffer(const uint8_t *buf, size_t len); void usb_write_buffer(const uint8_t *buf, size_t len);
/**
* @brief Flushes the USB RX FIFO
*/
void usb_flush_rx(void);
#endif // USB_CDC_ACM_H #endif // USB_CDC_ACM_H