polling is slow #3
Description
I'm not very happy with the performance of the library due to the polling mechanism being used. Specifically, when calling getPVT I'm seeing delays of 400ms and up before the GPS responds. It looks to me like it waits until the internal timer driven by NavFrequency fires and it produces a fresh fix. In my app, I can't handle delays that long, so I'm looking for alternatives.
As far as I can tell, the I2C interface is actually nice in that the GPS has a fairly large internal buffer, so if one turns periodic reporting on it can actually buffer things nicely until the arduino comes and polls. But this requires some changes in the library.
The way I would change things around is to allow enabling periodic reports and to store the last one so it can be queried without delay. For this to work I would move the parsing of UBX_NAV_PVT (and possibly other messages) into processUBXpacket and then:
- add
setAutoPVT(bool PVT)
which enables periodic UBX_NAV_PVT reporting in the GPS - modify getPVT such that it doesn't send a poll request if periodic reports are enabled and instead returns false if no new report has come in.
The rest of the interface would remain the same. Thoughts?