diff --git a/SerialPorts.c b/SerialPorts.c index 4e586ac..e4c5539 100644 --- a/SerialPorts.c +++ b/SerialPorts.c @@ -20,7 +20,9 @@ static void DMA_USART2_ErrorCallback() { static void DMA_USART2_TransferCompleteCallback() { ++SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF; - SerialPortTransmit(&SERIAL_PORTS.cliVirtualInIo, +// SerialPort_RxDmaBufToQueue(SERIAL_PORTS.SerialPortLog_IO.env, buf_USART2_DMA); + + SerialPortTransmit(&SERIAL_PORTS.cliVirtualPortIn_Io, (uint8_t *) &buf_USART2_DMA[SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_POINTER_BUF], SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF, 0); SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_POINTER_BUF += SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF; @@ -34,7 +36,9 @@ static void DMA_USART2_TransferCompleteCallback() { static void FCUART_IldeInterrupt_CallBack(uint8_t u8UartIndex) { - SerialPortTransmit(&SERIAL_PORTS.cliVirtualInIo, + SerialPort_RxDmaBufToQueue(SERIAL_PORTS.SerialPortLog_IO.env, buf_USART2_DMA); + + SerialPortTransmit(&SERIAL_PORTS.cliVirtualPortIn_Io, (uint8_t *) &buf_USART2_DMA[SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_POINTER_BUF], SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF, 0); SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_POINTER_BUF += SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF; @@ -42,7 +46,7 @@ static void FCUART_IldeInterrupt_CallBack(uint8_t u8UartIndex) { if (SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_POINTER_BUF >= SERIAL_PORTS.SerialPortLog.DMA_BUF_LEN) SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_POINTER_BUF = 0; -// DMA_ModifyAddress(DMA_INSTANCE_0, SERIAL_PORTS.SerialPortLog.RX_DMA_CHANNEL, &(SERIAL_PORTS.SerialPortLog.UART->DATA), (void *)((uint32_t)(buf_USART2_DMA))); + // DMA_ModifyAddress(DMA_INSTANCE_0, SERIAL_PORTS.SerialPortLog.RX_DMA_CHANNEL, &(SERIAL_PORTS.SerialPortLog.UART->DATA), (void *)((uint32_t)(buf_USART2_DMA))); PROCESS_UNUSED_VAR(u8UartIndex) } @@ -143,9 +147,16 @@ void SerialPorts_Init() { tSerialPorts *env = &SERIAL_PORTS; //// Виртуальный сериал порт - SerialPortP2p_Init(&env->cliVirtualPort, 4 * 1024, 1024); - env->cliVirtualInIo = SerialPortP2p_GetIoFirst(&env->cliVirtualPort); - env->cliVirtualOutIo = SerialPortP2p_GetIoSecond(&env->cliVirtualPort); + + SerialPortVirt_Init(&env->cliVirtualPortOut, 1024); + env->cliVirtualPortOut_Io = SerialPortVirt_GetIo(&env->cliVirtualPortOut); + + SerialPortVirt_Init(&env->cliVirtualPortIn, 128); + env->cliVirtualPortIn_Io = SerialPortVirt_GetIo(&env->cliVirtualPortIn); + +// SerialPortP2p_Init(&env->cliVirtualPort, 4 * 1024, 1024); +// env->cliVirtualInIo = SerialPortP2p_GetIoFirst(&env->cliVirtualPort); +// env->cliVirtualOutIo = SerialPortP2p_GetIoSecond(&env->cliVirtualPort); vSerialPort_InitUSART2(&env->SerialPortLog); SERIAL_PORTS.SerialPortLog_IO = vSerialPortGetIo(&env->SerialPortLog); diff --git a/SerialPorts.h b/SerialPorts.h index 89f3c64..08e5b55 100644 --- a/SerialPorts.h +++ b/SerialPorts.h @@ -6,16 +6,17 @@ #define HVAC_M7_SERIALPORTS_H #include "SerialPortFlagchip.h" -#include "SerialPortP2p.h" +#include "SerialPortVirt.h" typedef struct { tSerialPortFlagchip SerialPortLog; tSerialPortIO SerialPortLog_IO; + tSerialPortVirt cliVirtualPortOut; + tSerialPortIO cliVirtualPortOut_Io; - tSerialPortP2p cliVirtualPort; - tSerialPortIO cliVirtualInIo; - tSerialPortIO cliVirtualOutIo; + tSerialPortVirt cliVirtualPortIn; + tSerialPortIO cliVirtualPortIn_Io; } tSerialPorts;