コード例 #1
0
ファイル: hidd_kbd.c プロジェクト: alexeyk13/rexos
static void hidd_kbd_send_report(USBD* usbd, HIDD_KBD* hidd)
{
    uint8_t* report = io_data(hidd->io);
    if (report == NULL)
        return;
    report[0] = hidd->kbd.modifier;
    report[1] = 0;
    hidd->io->data_size = 2;
    if (hidd->boot_protocol)
        io_data_append(hidd->io, &hidd->kbd.keys, 6);
    else
        io_data_append(hidd->io, &hidd->kbd.leds, sizeof(BOOT_KEYBOARD) - 2);
    usbd_usb_ep_write(usbd, hidd->in_ep, hidd->io);
}
コード例 #2
0
ファイル: lpc_usb.c プロジェクト: roma-jam/stm32_template
static inline void lpc_usb_out(CORE* core, int num)
{
    EP* ep = core->usb.out[USB_EP_NUM(num)];
    unsigned int cnt = ep->mps - (((*USB_EP_LISTSTS(num, 0)) & USB_EP_LISTST_NBYTES_MASK) >> USB_EP_LISTST_NBYTES_POS);

    io_data_append(ep->io, ep->fifo, cnt);
    if (ep->io->data_size >= ep->size || cnt < ep->mps)
    {
        ep->io_active = false;
        iio_complete(core->usb.device, HAL_IO_CMD(HAL_USB, IPC_READ), num, ep->io);
        ep->io = NULL;
    }
    else
        lpc_usb_rx_prepare(core, num);
}