// see pic18_usb.h for documentation int1 usb_flush_in(int8 endpoint, int16 len, USB_DTS_BIT tgl) { unsigned int8 i; debug_usb(debug_putc,"\r\nPUT %X %U %LU",endpoint, tgl, len); if (usb_tbe(endpoint)) { EP_BDxCNT_I(endpoint)=len; debug_display_ram(len, EP_BDxADR_I(endpoint)); #if USB_IGNORE_TX_DTS i=0x80; #else if (tgl == USB_DTS_TOGGLE) { i = EP_BDxST_I(endpoint); if (bit_test(i,6)) tgl = USB_DTS_DATA0; //was DATA1, goto DATA0 else tgl = USB_DTS_DATA1; //was DATA0, goto DATA1 } else if (tgl == USB_DTS_USERX) { i = EP_BDxST_O(endpoint); if (bit_test(i,6)) tgl = USB_DTS_DATA1; else tgl = USB_DTS_DATA0; } if (tgl == USB_DTS_DATA1) i=0xC8; //DATA1, UOWN else //if (tgl == USB_DTS_DATA0) i=0x88; //DATA0, UOWN #endif //set BC8 and BC9 if (bit_test(len,8)) {bit_set(i,0);} if (bit_test(len,9)) {bit_set(i,1);} debug_usb(debug_putc, " %X", i); EP_BDxST_I(endpoint) = i;//save changes //putc('!'); return(1); } else { //putc('_'); debug_usb(debug_putc,"\r\nPUT ERR"); } return(0); }
// see pic18_usb.h for documentation int1 usb_flush_in(int8 endpoint, int16 len, USB_DTS_BIT tgl) { int8 i; if (usb_tbe(endpoint)) { EP_BDxCNT_I(endpoint)=len; #if USB_IGNORE_TX_DTS i=0x80; #else if (tgl == USB_DTS_TOGGLE) { i = EP_BDxST_I(endpoint); if (bit_test(i,6)) tgl = USB_DTS_DATA0; //was DATA1, goto DATA0 else tgl = USB_DTS_DATA1; //was DATA0, goto DATA1 } else if (tgl == USB_DTS_USERX) { i = EP_BDxST_O(endpoint); if (bit_test(i,6)) tgl = USB_DTS_DATA1; else tgl = USB_DTS_DATA0; } if (tgl == USB_DTS_DATA1) i=0xC8; //DATA1, UOWN else //if (tgl == USB_DTS_DATA0) i=0x88; //DATA0, UOWN #endif //set BC8 and BC9 if (bit_test(len,8)) {bit_set(i,0);} if (bit_test(len,9)) {bit_set(i,1);} EP_BDxST_I(endpoint) = i;//save changes //putc('!'); return(1); } return(0); }