Heartbeat (Draft) - HdrType=1¶
Overview¶
Draft
Heartbeat is draft and subject to change.
This is the structure and behavior of Heartbeat (HdrType=1) in Extended Telemetry
Goals:
- Gives an "I'm alive" message when gps lock not available
- Can be (but not only) sent when a GPS lock is not acquired but the tracker is alive and able to send
- Helps identify flight channel
- This is a tracker-affirmed statement of intended frequency, which helps condition the search for related data
- Helps identify flight start/stop time
- Aids live tracking as well as data mining
- Gives additional useful status
- Tracker health, GPS health
Message Structure¶
The header, as explained in Header Fields, explains the whole message header structure.
The fields below are for when the HdrType=1 indicating a Heartbeat message.
The structure of the Heartbeat fields
| Field | Unit | LowValue | HighValue | StepSize | # Values |
|---|---|---|---|---|---|
| TxFreqHz | Idx | 0 | 200 | 1 | 201 |
| Uptime | Minutes | 0 | 1440 | 10 | 145 |
| GpsLockType | Enum | 0 | 2 | 1 | 3 |
| GpsTryLock | Seconds | 0 | 1200 | 5 | 241 |
| GpsSatsInView | Count | 0 | 50 | 2 | 26 |
Field TxFreqHzIdx¶
TxFreqHzIdx - Intended TX frequency
Values
Value = Which of the 201 frequencies making up the WSPR band is the intended TX frequency?
eg:
20mband has 201 frequencies making up the WSPR band:14,095,600Hz notional Dial frequency14,097,000Hz Low end frequency14,097,200Hz High end frequency
- For a given WSPR Encoded message (where
id13set to, say,Q5):- You know you are looking at channels
500-519 - You can determine
Laneby the FreqHz value falling into that Lane - You can determine
Channelby combination of theHdrSlotandminuteof reception
- You know you are looking at channels
With the above, you can definitively identify the Channel of the transmitter.
Encoding
The TxFreqHzIdx value is an "index" into the list of 201 frequencies possible to transmit on for the given band.
Using the above example:
14,097,000isTxFreqHzIdx = 014,097,001isTxFreqHzIdx = 1- ...
14,097,200isTxFreqHzIdx = 200
Intended purpose
Lets receivers:
- Match up transmitter to intended channel definitively.
- Better understand relationship between TX frequency and RX reports.
Rationale
Q: What channel is a data stream attempting to transmit on?
A: At the moment, we have to infer
Q: Should we pack in the Channel then to identify?
A: No, we can do better, cheaper.
When you have data in the WSPR Encoded format, the id13=Q/0/1 already tells you a "column" in the Channel Map, so actually we only have to identify "Lane."
However, "Lane" may later change/expand, and we don't think "Lane" or even the strict concept of "Channels" are a hard requirement, and may change quantity in the future.
What will remain, though, is the WSPR Encoded format. And, also remaining, the fact that you're in a band with only 200Hz of possible intended frequencies to transmit on.
So ... indicate a value 0-200 inclusive, the literal intended Hz of transmission as an index offset from the lowest frequency to the highest within the given band.
This tells you: The channel (because today, sites can interpret the FreqHzIdx as being within one of the "Lanes" Later, if the scheme changes, the tracker is still going to intend to transmit on a given Hz, this identifies it
Field UptimeMinutes¶
Values
Uptime is in minutes since last reboot.
Max value is 24 hours.
Granularity at 10 minute intervals because that's the interval of transmission windows, so not much point having finer than that.
Intended purpose
Help diagnose health of tracker by being able to determin reboots during periods where that may not be expected.
Field GpsLockTypeEnum¶
GpsLockTypeEnum - Whether GPS is locked at this moment or not
Values
Distinguish between 3 states:
- 0 = NoLock
- 1 = TimeLock
- 2 = LocationLock
Intended purpose
Trackers are not always dependent on GPS to know the current time, and to therefore know when to transmit data.
It is possible that a tracker has achieved some amount of GPS data (time, position), or none at all.
This field distinguishes.
Field GpsTryLockSeconds¶
GpsTryLockSeconds - Latest GPS lock attempt duration so far
Values
Number of seconds that the most current GPS lock attempt took to get to the stated GpsLockTypeEnum state.
Field GpsSatsInViewCount¶
GpsSatsInViewCount - Latest GPS lock attempt duration so far
Values
Just a count of the number of satellites in view.
This does not distinguish by constellation type. Meant to be sum total of satellites that contribute to the ability to get a GPS lock.
When this message can be sent¶
Send whenever
Suitable to replace Slot 0 Type1 Callsign message when no GPS lock available.
Suitable to use as a frequency reference for fingerprinting.
Can send in any window, any slot, in as many slots as you want (all 5 is valid).
Ok to send in Slot 2 in one window and Slot 3 in another. Or any combination.
Example Use Cases¶
| When | What |
|---|---|
| No GPS Location lock | Send to indicate proof of life. |
| Periodically | Send to establish frequency linking, stats, start/end of flight. eg 1-5 times per day. |