Brief description of class still missing. More...
#include <TimeMasterBuffer.h>
Public Member Functions | |
| TimeMasterBuffer (int fileDescriptor, UbxDevice *device) | |
| ~TimeMasterBuffer () | |
Protected Member Functions | |
| virtual int | bytesAvailable (char *buffer, int bytesCount) |
Brief description of class still missing.
Full description of class still missing
| TimeMasterBuffer::TimeMasterBuffer | ( | int | fileDescriptor, |
| UbxDevice * | device | ||
| ) |
Description of constructor still missing
References TRACE.
: DynamicBuffer(fileDescriptor) { TRACE; _device=device; }
| int TimeMasterBuffer::bytesAvailable | ( | char * | buffer, |
| int | bytesCount | ||
| ) | [protected, virtual] |
Implements GpCoreTools::DynamicBuffer.
References GpCoreTools::MessageRawHeader::isValid(), GpCoreTools::MessageRawHeader::lengthLittleEndian(), GpCoreTools::DynamicBuffer::read(), and TRACE.
{
TRACE;
// If less bytes are available, just wait for more data.
int readBytes=MessageRawHeader::SynchronizationSize+
MessageRawHeader::HeaderSize+
MessageRawHeader::CheckSumSize;
if(byteCount<readBytes) {
return 0;
}
MessageRawHeader * hdr=reinterpret_cast<MessageRawHeader *>(buffer);
if(!hdr->isValid()) {
return 1;
}
unsigned short length=hdr->lengthLittleEndian();
readBytes+=length;
if(byteCount<readBytes) {
return 0;
}
buffer+=MessageRawHeader::SynchronizationSize+MessageRawHeader::HeaderSize;
char * payload=buffer;
buffer+=length;
if(hdr->isValid(*reinterpret_cast<const FletcherChecksum *>(buffer), payload, length)) {
read(payload, length);
}
return readBytes;
}