diff --git a/SerialPort_USB.c b/SerialPort_USB.c index cf52382..650c904 100644 --- a/SerialPort_USB.c +++ b/SerialPort_USB.c @@ -7,12 +7,31 @@ otg_core_type otg_core_struct; +tSerialPortUsbArtery *SerialPortUsbArteryOtg1 = NULL; + void usb_delay_ms(uint32_t ms) { SystemDelayMs(ms); } void OTG_IRQ_HANDLER(void) { usbd_irq_handler(&otg_core_struct); + + if (SerialPortUsbArteryOtg1 != NULL) { + uint16_t data_len = usb_vcp_get_rxdata(&otg_core_struct.dev, SerialPortUsbArteryOtg1->usb_buffer); + + if (data_len > 0) { + for (uint16_t i = 0; i < data_len; ++i) { + osMessageQueuePut(SerialPortUsbArteryOtg1->rxDataQueue, &SerialPortUsbArteryOtg1->usb_buffer[i], 0x0, 0U); + + if (SerialPortUsbArteryOtg1->rxDataSnifferQueue) { + osMessageQueuePut(SerialPortUsbArteryOtg1->rxDataSnifferQueue, &SerialPortUsbArteryOtg1->usb_buffer[i], 0x0, 0U); + } + + } + } + + } + } void usb_clock48m_select(usb_clk48_s clk_s) { @@ -252,6 +271,8 @@ void SerialPortUsb_Init( env->rxDataSnifferQueue = 0; } + SerialPortUsbArteryOtg1 = env; + // usb gpio config usb_gpio_config(); @@ -280,7 +301,7 @@ void SerialPortUsb_Init( InitThreadAtrStatic(&env->thread.attr, "UsbDriver", env->thread.controlBlock, env->thread.stack, osPriorityNormal); env->thread.id = 0; - UsbDriver_StartThread(env); + //UsbDriver_StartThread(env); } tSerialPortIO SerialPortUsb_GetIo(tSerialPortUsbArtery *env) {