Update softserial bytes waiting calculation to use the same logic that

the uart code uses.
This commit is contained in:
Dominic Clifton 2014-05-21 19:27:51 +01:00
parent 582cf5ad00
commit f374b01ca7
1 changed files with 2 additions and 11 deletions

View File

@ -359,18 +359,9 @@ uint8_t softSerialTotalBytesWaiting(serialPort_t *instance)
return 0;
}
int availableBytes;
softSerial_t *softSerial = (softSerial_t *)instance;
if (softSerial->port.rxBufferTail == softSerial->port.rxBufferHead) {
return 0;
}
softSerial_t *s = (softSerial_t *)instance;
if (softSerial->port.rxBufferTail > softSerial->port.rxBufferHead) {
availableBytes = softSerial->port.rxBufferTail - softSerial->port.rxBufferHead;
} else {
availableBytes = softSerial->port.rxBufferTail + softSerial->port.rxBufferSize - softSerial->port.rxBufferHead;
}
return availableBytes;
return (s->port.rxBufferHead - s->port.rxBufferTail) & (s->port.txBufferSize - 1);
}
static void moveHeadToNextByte(softSerial_t *softSerial)