/* close USB2UART port */ static void USB2UART_close(UART_PORT port, module_type ownerid) { #ifndef __USB_ENABLE__ ASSERT(0); #endif #ifndef __PRODUCTION_RELEASE__ if(ownerid != USB2UARTPort.ownerid) { EXT_ASSERT( 0, (kal_uint32) ownerid, USB2UARTPort.ownerid, 0); } #endif if(INT_Exception_Enter != 0) { drv_trace1(TRACE_FUNC, USBACM_CLOSE, ownerid); // kal_prompt_trace(MOD_USB, "USB Close %d", ownerid); } g_UsbACM.send_Txilm = KAL_FALSE; g_UsbACM.config_send_Txilm = KAL_FALSE; USB2UARTPort.initialized = KAL_FALSE; USB2UARTPort.ownerid = MOD_DRV_HISR; g_UsbACM.threshold_enable = KAL_FALSE; if ((gUsbDevice.device_type == USB_CDC_ACM)&&(gUsbDevice.nDevState==DEVSTATE_CONFIG)) { /* disable endpoint interrupt */ USB_TxEPDis(g_UsbACM.txpipe->byEP, KAL_TRUE); USB_RxEPDis(g_UsbACM.rxpipe->byEP, KAL_FALSE); } Buf_init(&(USB2UARTPort.Rx_Buffer),(kal_uint8 *)(USB2UARTPort.RingBuffers.rx_buffer), g_UsbACM.acm_param->rx_ringbuff_size); Buf_init(&(USB2UARTPort.Tx_Buffer),(kal_uint8 *)(USB2UARTPort.RingBuffers.tx_buffer), g_UsbACM.acm_param->tx_ringbuff_size); Buf_init(&(USB2UARTPort.Tx_Buffer_ISR),(kal_uint8 *)(USB2UARTPort.RingBuffers.txISR_buffer), g_UsbACM.acm_param->txisr_ringbuff_size); if(g_UsbACM.ring_buffer_timer_counting == KAL_TRUE) { GPTI_StopItem(g_UsbACM.ring_buffer_handle); g_UsbACM.ring_buffer_timer_counting = KAL_FALSE; } USB2UART_ConfigEscape(port, 0xff, 0, MOD_DRV_HISR); }
void uart_rb_init(void) { BUFFER_INFO *puart_rb_info = &uart_rb_info; uint8 * puart_rb_addr = uart_rb_addr; Buf_init(puart_rb_info, puart_rb_addr, UART_RX_RING_BUFF_SIZE); return; }
void uart_rxbuf_init(UARTStruct *qp) { PKT_DESC *rx_desc = &(qp->Rx_desc); BUFFER_INFO *rx_ring = &(qp->Rx_Buffer); rx_desc->pkt_num = 0; rx_desc->cur_num = 0; rx_desc->cur_type = PKT_UNKNOWN; Buf_init(rx_ring,(uint8 *)(UARTRxBuf),(uint16)UARTRX_RING_LEN); }
void UARTRx_Buf_Init(UARTStruct *qp, u8 *rxbuf, u16 len) { PKT_DESC *rx_desc = &(qp->Rx_desc); BUFFER_INFO *rx_ring = &(qp->Rx_Buffer); rx_desc->pkt_num = 0; rx_desc->cur_num = 0; rx_desc->cur_type = PKT_UNKNOWN; Buf_init(rx_ring,(rxbuf),(u16)len); }
void iot_uart_init(void) { #if (UARTRX_TO_AIR_LEVEL == 1) uart_rb_init(); #endif #if (UART_INTERRUPT == 1) /*configure ringbuffer*/ Buf_init(&(UARTPort.Tx_Buffer),(uint8 *)(UARTTxBuf),(uint16)UARTTX_RING_LEN); uart_rxbuf_init((UARTStruct*)(&UARTPort)); #endif }
/* open USB2UART port , actually port is no use because only support one USB port */ static kal_bool USB2UART_open(UART_PORT port, module_type owner) { #ifndef __USB_ENABLE__ ASSERT(0); #endif if(g_UsbACM.acm_owner == USB_ACM_OWNER_DSP) { ASSERT(0); } if(g_UsbACM.acm_owner == USB_ACM_OWNER_FT) { #ifdef __USB_DOWNLOAD__ if(gUsbDevice.is_usb_download_mode == KAL_FALSE) ASSERT(0); #else ASSERT(0); #endif } /* It cannot be opened if uart owner did not close it before */ if(USB2UARTPort.ownerid != MOD_DRV_HISR) { return KAL_FALSE; } #ifndef __PRODUCTION_RELEASE__ if(INT_Exception_Enter != 0) { drv_trace0(TRACE_FUNC, USBACM_OPEN); // kal_prompt_trace(MOD_USB, "USB Open"); } #endif /* __PRODUCTION_RELEASE__ */ USB2UARTPort.initialized = KAL_TRUE; USB2UARTPort.ownerid = owner; g_UsbACM.send_Txilm = KAL_FALSE; g_UsbACM.send_Rxilm = KAL_TRUE; if(INT_Exception_Enter != 0) { drv_trace1(TRACE_FUNC, USBACM_OPEN_READY_TO_READ_FLAG, owner); // kal_prompt_trace(MOD_USB, "open RDY R %d", owner); } g_UsbACM.config_send_Txilm = KAL_FALSE; g_UsbACM.threshold_enable = KAL_FALSE; if( (USB2UARTPort.RingBuffers.rx_buffer==NULL) || (USB2UARTPort.RingBuffers.tx_buffer==NULL) || (USB2UARTPort.RingBuffers.txISR_buffer==NULL) ) { EXT_ASSERT(0, (kal_uint32)USB2UARTPort.RingBuffers.rx_buffer, (kal_uint32)USB2UARTPort.RingBuffers.tx_buffer, (kal_uint32)USB2UARTPort.RingBuffers.txISR_buffer); } Buf_init(&(USB2UARTPort.Rx_Buffer),(kal_uint8 *)(USB2UARTPort.RingBuffers.rx_buffer), g_UsbACM.acm_param->rx_ringbuff_size); Buf_init(&(USB2UARTPort.Tx_Buffer),(kal_uint8 *)(USB2UARTPort.RingBuffers.tx_buffer), g_UsbACM.acm_param->tx_ringbuff_size); Buf_init(&(USB2UARTPort.Tx_Buffer_ISR),(kal_uint8 *)(USB2UARTPort.RingBuffers.txISR_buffer), g_UsbACM.acm_param->txisr_ringbuff_size); if(g_UsbACM.ring_buffer_timer_counting == KAL_TRUE) { GPTI_StopItem(g_UsbACM.ring_buffer_handle); g_UsbACM.ring_buffer_timer_counting = KAL_FALSE; } if ((gUsbDevice.device_type == USB_CDC_ACM)&&(gUsbDevice.nDevState==DEVSTATE_CONFIG)) { /* Only out EP needs to be enabled since IN EP will use DMA polling*/ USB_TxEPEn(g_UsbACM.txpipe->byEP, KAL_TRUE); USB_RxEPEn(g_UsbACM.rxpipe->byEP, KAL_FALSE); USB_Set_UnMask_Irq(KAL_TRUE); } return KAL_TRUE; }
/* initialize USB2UART setting, called when driver initialize, no matter user select as UART or not */ void USB2UART_init(void) { #ifndef __USB_ENABLE__ ASSERT(0); #endif /* Setup N81,(UART_WLS_8 | UART_NONE_PARITY | UART_1_STOP) = 0x03 */ /* BaudRate and autoflowcontrol */ UARTDCBStruct UART_DefaultConfig = { UART_BAUD_115200, /* baud; */ len_8, /* dataBits; */ sb_1, /*stopBits; */ pa_none, /* parity; */ fc_none, /*no flow control*/ 0x11, /* xonChar; */ 0x13, /* xoffChar; */ KAL_FALSE }; g_UsbACM.acm_param = USB_GetCustomFunc()->get_acm_param_func(); /* get memory for ring buffer and initialize it */ if (USB2UARTPort.RingBuffers.rx_buffer == NULL) USB2UARTPort.RingBuffers.rx_buffer = (kal_uint8 *)g_UsbACM.acm_param->rx_ringbuff; if (USB2UARTPort.RingBuffers.tx_buffer == NULL) USB2UARTPort.RingBuffers.tx_buffer = (kal_uint8 *)g_UsbACM.acm_param->tx_ringbuff; if (USB2UARTPort.RingBuffers.txISR_buffer == NULL) USB2UARTPort.RingBuffers.txISR_buffer = (kal_uint8 *)g_UsbACM.acm_param->txisr_ringbuff; Buf_init(&(USB2UARTPort.Rx_Buffer),(kal_uint8 *)(USB2UARTPort.RingBuffers.rx_buffer), g_UsbACM.acm_param->rx_ringbuff_size); Buf_init(&(USB2UARTPort.Tx_Buffer),(kal_uint8 *)(USB2UARTPort.RingBuffers.tx_buffer), g_UsbACM.acm_param->tx_ringbuff_size); Buf_init(&(USB2UARTPort.Tx_Buffer_ISR),(kal_uint8 *)(USB2UARTPort.RingBuffers.txISR_buffer), g_UsbACM.acm_param->txisr_ringbuff_size); /* set UART setting to USB2UARTPort.DCB and g_UsbACM.line_coding */ USB2UARTPort.UART_id = MOD_DRV_HISR; kal_mem_cpy(&USB2UARTPort.DCB, &UART_DefaultConfig, sizeof(UARTDCBStruct)); if (USB2UARTPort.ownerid == 0) { USB2UARTPort.ownerid = MOD_DRV_HISR; UART2USB_DCB2LineCoding(&USB2UARTPort.DCB, &g_UsbACM.line_coding); } /* register UART and get GPT handler */ if (USB2UARTPort.handle == 0) GPTI_GetHandle(&USB2UARTPort.handle); UART_Register(uart_port_usb, USB_TYPE, (UartDriver_strcut*)&USB2UartDriver); g_UsbACM.send_Txilm = KAL_FALSE; g_UsbACM.send_Rxilm = KAL_TRUE; drv_trace0(TRACE_FUNC, USBACM_INIT_READY_TO_READ_FLAG); // kal_prompt_trace(MOD_USB, "init RDY R"); g_UsbACM.config_send_Txilm = KAL_FALSE; USB2UARTPort.tx_cb = USB2UART_Dafault_Tx_Callback; USB2UARTPort.rx_cb = USB2UART_Dafault_Rx_Callback; USB2UARTPort.port_no = uart_port_usb; }