Fix ESP RTOS WDT corner case

This commit is contained in:
Andrew J. Kroll 2018-01-13 22:36:01 -05:00
parent 08121e1701
commit 9546dcb722

View file

@ -382,11 +382,17 @@ uint8_t USB::dispatchPkt(uint8_t token, uint8_t ep, uint16_t nak_limit) {
uint16_t nak_count = 0; uint16_t nak_count = 0;
while((int32_t)((uint32_t)millis() - timeout) < 0L) { while((int32_t)((uint32_t)millis() - timeout) < 0L) {
#ifdef ESP8266
yield(); // needed in order to reset the watchdog timer on the ESP8266
#endif
regWr(rHXFR, (token | ep)); //launch the transfer regWr(rHXFR, (token | ep)); //launch the transfer
rcode = USB_ERROR_TRANSFER_TIMEOUT; rcode = USB_ERROR_TRANSFER_TIMEOUT;
while((int32_t)((uint32_t)millis() - timeout) < 0L) //wait for transfer completion while((int32_t)((uint32_t)millis() - timeout) < 0L) //wait for transfer completion
{ {
#ifdef ESP8266
yield(); // needed in order to reset the watchdog timer on the ESP8266
#endif
tmpdata = regRd(rHIRQ); tmpdata = regRd(rHIRQ);
if(tmpdata & bmHXFRDNIRQ) { if(tmpdata & bmHXFRDNIRQ) {