initial GNSS probe - #28
Conversation
| self.process_metadata() | ||
| if frame.empty: | ||
| return | ||
| self.send_data(frame[["time", "value"]], metric=METRICS.SYNC_HEALTH, reference_type=REF_TYPES.GNSS) |
There was a problem hiding this comment.
So we just get the sync health between the current device and the GNSS? nothing further?
There was a problem hiding this comment.
what other further would you be looking for? I couldn't think of anything else of value from gpspipe - maybe we should engage with some of the timing experts on this one.
There was a problem hiding this comment.
I'll look over the link to gpspipe, I just wasn't sure what was provided haha
There was a problem hiding this comment.
From the looks of it, the json could contain a lot of useful metrics, in particular EPT (estimated timestamp error) and the jamming field seem interesting to us
There was a problem hiding this comment.
yeah I was uncertain of what would be useful for the initial pass. Maybe we could get this in and then determine which metrics we want to collect or have a larger discussion. Additionally, I'm not sure how much gpsd|gpspipe is used in the industry and we may want to consult with the time folks.
Co-authored-by: Midgie MacFarland <160664522+midgemacf@users.noreply.github.com>
| self.process_metadata() | ||
| if frame.empty: | ||
| return | ||
| self.send_data(frame[["time", "value"]], metric=METRICS.SYNC_HEALTH, reference_type=REF_TYPES.GNSS) |
There was a problem hiding this comment.
From the looks of it, the json could contain a lot of useful metrics, in particular EPT (estimated timestamp error) and the jamming field seem interesting to us
| name="Altitude HAE", | ||
| description="Altitude above the reference ellipsoid", |
There was a problem hiding this comment.
I got confused by description since no clear definition for HAE acronym
| name="Altitude MSL", | ||
| description="Altitude above mean sea level", |
There was a problem hiding this comment.
I think mean sea level is the measurement, so it's not above mean sea level
maybe worth giving the altMSL = altHAE - geoidSEP
|
|
||
| vendor = VENDORS.GPSD | ||
| TPV_METRICS: ClassVar[dict[str, MetricType]] = { | ||
| "mode": METRICS.SYNC_HEALTH, |
There was a problem hiding this comment.
gpsd_json mode as defined in the gpsd_json file is one of: 0, 1, 2, 3
distinct from the metrics.sync_health definition of 0 vs 1
I see 3 options:
- cast the mode returned by gpsd_json to be 0 v 1
- add new metric to match the GPSD TPV mode
- Change the definition of the current sync_health metric to be more general
Personally, i prefer 2
| ) | ||
| CLOCK_BIAS = MetricType( | ||
| name="Clock Bias", | ||
| description="Offset of the local GNSS clock relative to UTC", |
There was a problem hiding this comment.
should evaluate which of these keep GNSS in descriptions, and which should be made more general
| class CollectConfig(CollectMixin.CollectConfig): | ||
| """Options passed to ``gpspipe`` for a single GPSD device.""" |
| device = self.metadata.get("device") | ||
| if not device: | ||
| raise ValueError("GPSD artifact metadata is missing a device") | ||
| self.probe_key = ProbeKey( | ||
| ip_address=str(self.metadata.get("gpsd_host", "127.0.0.1")), | ||
| probe_id=str(device), |
There was a problem hiding this comment.
should port + device be included in probe_id?
| metric = self.TPV_METRICS.get(str(field)) | ||
| if metric is None: | ||
| continue | ||
| self.send_data(values[["time", "value"]], metric=metric, reference_type=REF_TYPES.GNSS) |
There was a problem hiding this comment.
So for these metrics, it doesn't actually seem to be giving us referential information...
only some of the status stuff is the status of the relationship between the daemon and the device
the rest is objective data about the device
There was a problem hiding this comment.
edit: the clock bias is "Offset of local GNSS clock relative to UTC, in ns. AKA Clock Offset."
but.... idk how we get that UTC value
No description provided.