Пример #1
0
/* 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);
}
Пример #2
0
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;
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
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
}
Пример #6
0
/* 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;
}
Пример #7
0
/* 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;
}