Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

polling is slow #3

Closed
Closed
@tve

Description

@tve

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions