Пример #1
0
void usb_handle_transaction(void) {

    usbrequesterrorflag = 0;

    trn_status = GetUsbTransaction();
    EP0_Outbdp = &usb_bdt[USB_USTAT2BD(trn_status)];
    EP0_Inbdp = &usb_bdt[USB_USTAT2BD(trn_status | DIRBIT)]; // All replies in IN direction

    switch (EP0_Outbdp->BDSTAT & USB_TOKEN_Mask) {
        case USB_TOKEN_SETUP:
            usb_handle_setup();
            break;
        case USB_TOKEN_OUT:
            usb_handle_out();
            break;
        case USB_TOKEN_IN:
            usb_handle_in();
            break;
            //default:
            /* Default case of unknown TOKEN - discard */
    }
}
Пример #2
0
void usb_handle_transaction(void) {
    uLedToggle();
    trn_status = GetUsbTransaction();
    bdp = &usb_bdt[USB_USTAT2BD(trn_status)];
    // JTR PIC24 fixup Added DIRBIT as it is different for PIC24F ( and different again for the PIC24E/dsPIC33E)
    // the USB_USTAT2BD macro is also altered to shift the result the correct number of places.

    rbdp = &usb_bdt[USB_USTAT2BD(trn_status | DIRBIT)]; // All replies in IN direction

    switch (bdp->BDSTAT & USB_TOKEN_Mask) {
        case USB_TOKEN_SETUP:
            usb_handle_setup();
            break;
        case USB_TOKEN_OUT:
            usb_handle_out();
            break;
        case USB_TOKEN_IN:
            usb_handle_in();
            break;
            //default:
            /* Default case of unknown TOKEN - discard */
    }
}
Пример #3
0
void handle_irq_usb_irq(void) {
	unsigned status = readl(USB_INTSTAT);

        status &= readl(USB_INTEN);

	if (status & USB_INT_FRAME_INT) {
		usb_frames++;
		writel(USB_INT_FRAME_INT, USB_INTEN);
	}


	if (status & USB_INT_DEV_INT)
		usb_handle_dev_int();
	if (status & USB_INT_EP0OUT)
		usb_handle_ep0out();
	if (status & USB_INT_EP0IN)
		usb_handle_ep0in();
	if (status & USB_INT_EP1OUT)
		usb_handle_out(&usb_ep_data[1], USB_INT_EP1OUT);
	if (status & USB_INT_EP1IN)
		usb_handle_in(&usb_ep_data[1], USB_INT_EP1IN);


}