diff --git a/SerialPorts.c b/SerialPorts.c index b3b29cf..b7cbbb5 100644 --- a/SerialPorts.c +++ b/SerialPorts.c @@ -8,57 +8,20 @@ tSerialPorts SERIAL_PORTS; uint8_t buf_USART2_TRANSMITTED[256]; -ALIGN(256) uint8_t buf_USART2_DMA[6]; +ALIGN(256) uint8_t buf_USART2_DMA[128]; -//static void DMA_USART2_ErrorCallbackTx() { -// while (1) { -// __asm("nop"); -// } -//} static void DMA_USART2_TransferCompleteCallbackTx() { -// DMA_StopChannel(DMA_INSTANCE_0, DMA_CHANNEL_6); SerialPort_TxEndTransmitted(SERIAL_PORTS.SerialPortLog_IO.env, 1); asm("nop"); } -//static void DMA_USART2_ErrorCallbackRx() { -// while (1) { -// __asm("nop"); -// } -//} - static void DMA_USART2_TransferCompleteCallbackRx() { - ++SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF; - -// 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; - SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF = 0; - 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))); + SerialPort_RxDmaBufToQueue(SERIAL_PORTS.SerialPortLog_IO.env, true,buf_USART2_DMA); } static void FCUART_IldeInterrupt_CallBack(uint8_t u8UartIndex) { - - 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; - SERIAL_PORTS.SerialPortLog.UART_DMA_RECEIVED_LEN_BUF = 0; - 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))); - + SerialPort_RxDmaBufToQueue(SERIAL_PORTS.SerialPortLog_IO.env, false,buf_USART2_DMA); PROCESS_UNUSED_VAR(u8UartIndex) } @@ -115,7 +78,7 @@ static void vSerialPort_InitUSART2(tSerialPortFlagchip *env) { env, FCUART2, - 2000000,//115200, + 921600,//115200, 2, // UART0 = 0 ... UART7 = 7 FCUART2_IRQn, // FCUART0_IRQn ... FCUART7_IRQn @@ -142,7 +105,7 @@ static void vSerialPort_InitUSART2(tSerialPortFlagchip *env) { 1024, - 0, + 1024, DMA_USART2_TransferCompleteCallbackRx, NULL, @@ -162,7 +125,6 @@ static void vSerialPort_InitUSART2(tSerialPortFlagchip *env) { } -///конец------------------------------------------Модем----------------------------------------------------------------- void SerialPorts_Init() { @@ -173,8 +135,8 @@ void SerialPorts_Init() { SerialPortVirt_Init(&env->cliVirtualPortOut, 4096); env->cliVirtualPortOut_Io = SerialPortVirt_GetIo(&env->cliVirtualPortOut); - SerialPortVirt_Init(&env->cliVirtualPortIn, 128); - env->cliVirtualPortIn_Io = SerialPortVirt_GetIo(&env->cliVirtualPortIn); +// 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); @@ -182,6 +144,7 @@ void SerialPorts_Init() { vSerialPort_InitUSART2(&env->SerialPortLog); SERIAL_PORTS.SerialPortLog_IO = vSerialPortGetIo(&env->SerialPortLog); + SERIAL_PORTS.SerialPortLog_Sniffer_IO = vSerialPortGetSnifferIo(&env->SerialPortLog); } diff --git a/SerialPorts.h b/SerialPorts.h index 08e5b55..0b760ad 100644 --- a/SerialPorts.h +++ b/SerialPorts.h @@ -11,13 +11,12 @@ typedef struct { tSerialPortFlagchip SerialPortLog; tSerialPortIO SerialPortLog_IO; + tSerialPortIO SerialPortLog_Sniffer_IO; + tSerialPortVirt cliVirtualPortOut; tSerialPortIO cliVirtualPortOut_Io; - tSerialPortVirt cliVirtualPortIn; - tSerialPortIO cliVirtualPortIn_Io; - } tSerialPorts; extern tSerialPorts SERIAL_PORTS;