/* This call only retrieves data that is already waiting in the USB buffer -- that is, data that has * already been received by the MCU. It assumes a previous, open receive operation (began by a direct * call to USBxxx_receiveData()) is NOT underway on this interface; and no receive operation remains * open after this call returns. It doesn't check for kUSBxxx_busNotAvailable, because it doesn't * matter if it's not. size is the maximum that is allowed to be received before exiting; i.e., it * is the size allotted to dataBuf. Returns the number of bytes received. */ WORD phdcReceiveDataInBuffer (BYTE* dataBuf, WORD size, BYTE intfNum) { WORD bytesInBuf; WORD rxCount = 0; BYTE* currentPos = dataBuf; while (bytesInBuf = USBPHDC_bytesInUSBBuffer(intfNum)){ if ((WORD)(currentPos - dataBuf + bytesInBuf) <= size){ rxCount = bytesInBuf; USBPHDC_receiveData(currentPos,rxCount,intfNum); currentPos += rxCount; } else { rxCount = size - (currentPos - dataBuf); USBPHDC_receiveData(currentPos,rxCount,intfNum); currentPos += rxCount; return (currentPos - dataBuf); } } return (currentPos - dataBuf); }
/* This call only retrieves data that is already waiting in the USB buffer -- that is, data that has * already been received by the MCU. It assumes a previous, open receive operation (began by a direct * call to USBxxx_receiveData()) is NOT underway on this interface; and no receive operation remains * open after this call returns. It doesn't check for kUSBxxx_busNotAvailable, because it doesn't * matter if it's not. size is the maximum that is allowed to be received before exiting; i.e., it * is the size allotted to dataBuf. Returns the number of bytes received. */ uint16_t phdcReceiveDataInBuffer (uint8_t* dataBuf, uint16_t size, uint8_t intfNum) { uint16_t bytesInBuf; uint16_t rxCount = 0; uint8_t* currentPos = dataBuf; while (bytesInBuf = USBPHDC_bytesInUSBBuffer(intfNum)){ if ((uint16_t)(currentPos - dataBuf + bytesInBuf) <= size){ rxCount = bytesInBuf; USBPHDC_receiveData(currentPos,rxCount,intfNum); currentPos += rxCount; } else { rxCount = size - (currentPos - dataBuf); USBPHDC_receiveData(currentPos,rxCount,intfNum); currentPos += rxCount; return (currentPos - dataBuf); } } return (currentPos - dataBuf); }