Exemple #1
0
void
usb_restart(void)
{
	const struct usbd_device *identity = usb.identity;
	/* XXX reset existing functions? */
	memset(&usb, 0, sizeof(usb));
	usb.functions.function = &usb.control_function;
	usb.identity = identity;
	usb_init_ep(&usb.functions, 0, USB_EP_RX, EP0_BUFSIZE);
	usb_init_ep(&usb.functions, 0, USB_EP_TX, EP0_BUFSIZE);
	usb_setup_control();
}
Exemple #2
0
void
cdc_init(void (*data_ready_cb)(uint8_t *, size_t), void (*data_sent_cb)(size_t), struct cdc_ctx *ctx)
{
  usb_attach_function(&cdc_function, &ctx->header);
  ctx->data_ready_cb = data_ready_cb;
  ctx->data_sent_cb = data_sent_cb;
  ctx->out_queued = 0;
  ctx->notice_pipe = usb_init_ep(&ctx->header, CDC_NOTICE_EP, USB_EP_TX, CDC_NOTICE_SIZE);
  ctx->tx_pipe = usb_init_ep(&ctx->header, CDC_TX_EP, USB_EP_TX, CDC_TX_SIZE);
  ctx->rx_pipe = usb_init_ep(&ctx->header, CDC_RX_EP, USB_EP_RX, CDC_RX_SIZE);
  cdc_read_more(ctx);
  cdc_tx_done(ctx->outbuf, -1, ctx);
}
Exemple #3
0
void
usb_restart(void)
{
	const struct usbd_device *identity = usb.identity;
	/* XXX reset existing functions? */
	memset(&usb, 0, sizeof(usb));
	usb.functions.function = &usb.control_function;
	usb.identity = identity;
	usb_init_ep(&usb.functions, 0, USB_EP_RX, EP0_BUFSIZE);
	usb_init_ep(&usb.functions, 0, USB_EP_TX, EP0_BUFSIZE);
	usb_setup_control();

	for (const struct usbd_global *g = usb.identity->global; g != NULL; g = g->next) {
		if (g->init)
			g->init(g, 1);
	}
}
Exemple #4
0
void
hid_init(const struct usbd_function *f, int enable)
{
    const struct hid_function *hidf = (void *)f;
    struct hid_ctx *ctx = hidf->ctx;

    if (enable) {
        ctx->hidf = hidf;
        usb_attach_function(&hidf->usb_func, &ctx->header);
        if (hidf->report_max_size > 0)
            ctx->tx_pipe = usb_init_ep(&ctx->header, HID_TX_EP, USB_EP_TX, hidf->report_max_size);
    }
}