static rt_size_t wrtnode2r_spi_bridge_write(rt_device_t dev,
                                            rt_off_t pos,
                                            const void* buffer,
                                            rt_size_t size)
{
    return rt_ringbuffer_put(&spi_bridge.write_buf, buffer, size);
}
/**
 * This function will handle cdc bulk out endpoint request.
 *
 * @param func the usb function object.
 * @param size request size.
 *
 * @return RT_EOK.
 */
static rt_err_t _ep_out_handler(ufunction_t func, rt_size_t size)
{
    rt_uint32_t level;
    struct vcom *data;

    RT_ASSERT(func != RT_NULL);

    RT_DEBUG_LOG(RT_DEBUG_USB, ("_ep_out_handler %d\n", size));
    
    data = (struct vcom*)func->user_data;
    /* receive data from USB VCOM */
    level = rt_hw_interrupt_disable();

    rt_ringbuffer_put(&data->rx_ringbuffer, data->ep_out->buffer, size);
    rt_hw_interrupt_enable(level);

    /* notify receive data */
    rt_hw_serial_isr(&data->serial);

    data->ep_out->request.buffer = data->ep_out->buffer;
    data->ep_out->request.size = EP_MAXPACKET(data->ep_out);
    data->ep_out->request.req_type = UIO_REQUEST_READ_MOST;    
    rt_usbd_io_request(func->device, data->ep_out, &data->ep_out->request);

    return RT_EOK;
}
Example #3
0
/* send telnet option to remote */
static void send_option_to_client(struct telnet_session* telnet, rt_uint8_t option, rt_uint8_t value)
{
    rt_uint8_t optbuf[4];

    optbuf[0] = TELNET_IAC;
    optbuf[1] = option;
    optbuf[2] = value;
    optbuf[3] = 0;

    rt_mutex_take(telnet->tx_ringbuffer_lock, RT_WAITING_FOREVER);
    rt_ringbuffer_put(&telnet->tx_ringbuffer, optbuf, 3);
    rt_mutex_release(telnet->tx_ringbuffer_lock);

    send_to_client(telnet);
}
Example #4
0
/**
 * This function will handle cdc bulk out endpoint request.
 *
 * @param device the usb device object.
 * @param size request size.
 *
 * @return RT_EOK.
 */
static rt_err_t _ep_out_handler(udevice_t device, rt_size_t size)
{
    rt_uint32_t level;

    RT_ASSERT(device != RT_NULL);

    /* receive data from USB VCOM */
    level = rt_hw_interrupt_disable();
    rt_ringbuffer_put(&rx_ringbuffer, ep_out->buffer, size);
    rt_hw_interrupt_enable(level);

    /* notify receive data */
    rt_hw_serial_isr(&vcom_serial);

    dcd_ep_read(device->dcd, ep_out, ep_out->buffer,
                ep_out->ep_desc->wMaxPacketSize);

    return RT_EOK;
}
Example #5
0
/*******************************************************************************
* Function Name  : EP3_OUT_Callback
* Description    :
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void EP3_OUT_Callback(void)
{
  rt_uint32_t level;
  rt_uint16_t size;

  /* receive data from USB VCOM */
    level = rt_hw_interrupt_disable();

	size = USB_SIL_Read(EP3_OUT, rx_buf);
    rt_ringbuffer_put(&rx_ringbuffer, rx_buf, size);
    rt_hw_interrupt_enable(level);
	/* Enable the receive of data on EP3 */
  	SetEPRxValid(ENDP3);

    /* notify receive data */
    rt_hw_serial_isr(&vcom_serial);

    //return RT_EOK;

}