Beispiel #1
0
int_fast8_t
usb_read_ep0_setup(void *data, uint_fast8_t max_len)
{
    UENUM = 0;
    uint8_t ueintx = UEINTX;
    if (!(ueintx & ((1<<RXSTPI)))) {
        // No data ready to read
        UEIENX = 1<<RXSTPE;
        return -1;
    }
    usb_read_packet(data, max_len);
    UEINTX = ~((1<<RXSTPI) | (1<<RXOUTI));
    return max_len;
}
Beispiel #2
0
int_fast8_t
usb_read_bulk_out(void *data, uint_fast8_t max_len)
{
    UENUM = USB_CDC_EP_BULK_OUT;
    if (!(UEINTX & (1<<RXOUTI))) {
        // No data ready
        UEIENX = 1<<RXOUTE;
        return -1;
    }
    uint8_t len = UEBCLX;
    usb_read_packet(data, len);
    UEINTX = (uint8_t)~((1<<FIFOCON) | (1<<RXOUTI));
    return len;
}
Beispiel #3
0
int_fast8_t
usb_read_ep0(void *data, uint_fast8_t max_len)
{
    UENUM = 0;
    uint8_t ueintx = UEINTX;
    if (ueintx & (1<<RXSTPI))
        return -2;
    if (!(ueintx & (1<<RXOUTI))) {
        // Not ready to receive data
        UEIENX = (1<<RXSTPE) | (1<<RXOUTE);
        return -1;
    }
    usb_read_packet(data, max_len);
    if (UEINTX & (1<<RXSTPI))
        return -2;
    UEINTX = ~(1<<RXOUTI);
    return max_len;
}
Beispiel #4
0
int_fast8_t
usb_read_setup(void *data, uint_fast8_t max_len)
{
    return usb_read_packet(0, 0, data, max_len);
}
Beispiel #5
0
int_fast8_t
usb_read_bulk_out(void *data, uint_fast8_t max_len)
{
    return usb_read_packet(USB_CDC_EP_BULK_OUT, 0, data, max_len);
}