Skip to content

Conversation

@ismolyakov
Copy link
Contributor

@ismolyakov ismolyakov commented Jan 20, 2023

Description

@swift-nav/devinfra

  • this PR adds the first Starling telemetry message definition (MSG_TEL_SV).
  • the massage definition is validated through Starling prototype; CI and unit testing at Starling side passes.

Related PRs

API compatibility

Upd: no risk to API compatibility as it is a new message, no existing fields are modified.

API compatibility plan

n/a

JIRA Reference

https://swift-nav.atlassian.net/browse/POS-913

@ismolyakov ismolyakov requested review from a team, notoriaga and silverjam as code owners January 20, 2023 19:40
@silverjam
Copy link
Contributor

silverjam commented Jan 21, 2023

API compatibility

Does this change introduce a API compatibility risk? -- not truly sure what I should be looking after to evaluate this risk :)

API compatibility plan

If the above is "Yes", please detail the compatibility (or migration) plan:

  • TBD?

This main thing we're looking for is changes in the wire format of a message (e.g. the number of bytes in a message and/or the format of the bytes in the message). Some discussion on the issues is part of this doc: https://swift-nav.atlassian.net/l/cp/XCuWGumf.

Adding a new message does not affect API compatibility from an SBP message perspective.

Copy link
Contributor

@silverjam silverjam left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ismolyakov I don't see an update to sbp.pdf -- we might need to add telemetry.yaml to the pdf doc generation commands

Comment on lines 118 to 125
desc: Flags to identify Starling component the telemetry is reported from.
fields:
- 0-7:
desc: Starling component
values:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the design doc this is named Filter type instead of Starling component. Why was this changed? It seems very product name specific. I'd suggest keeping the more generic form.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My thinking for using standalone and differential was to keep the names generic and not to include Starling-specific filter names (SPP, RTK and other) since the names are customer-facing.

No strong opinion here though, would you prefer SPP and RTK better @richarddeurloo ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My comment was not about the values, but about the descriptions. I would not include the word Starling in there. My suggestions would be:

Suggested change
desc: Flags to identify Starling component the telemetry is reported from.
fields:
- 0-7:
desc: Starling component
values:
desc: Flags to identify the filter type from which the telemetry is reported.
fields:
- 0-7:
desc: Filter type:
values:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes total sense, thank you for clarification!

Copy link
Contributor

@reimerix reimerix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Just some questions and non-blocking suggestions.

fields:
- az:
type: u8
units: deg * 2g
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo? Should this be deg * 2?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, it is indeed deg * 2: already corrected!

desc: Observation availability at filter update
fields:
- 3-7:
desc: Reserved
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we add a bit for measured Doppler as well?

Comment on lines +43 to +49
- pseudorange_residual:
type: s16
units: 1 dm
desc: Pseudorange observation residual
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have a field for doppler residuals too?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@reimerix , as of now, I am proposing to use phase_residual as one field for both computed-Doppler and carrier-phase since they are (currently) never output from the same filter.

An alternative is to have two additional s16 fields for measured and computed Doppler. This is more robust to future Starling architecture changes, but will increase the message size. How concerning is to add two s16 fields from bandwidth point of view?

Comment on lines 81 to 88
fields:
- 3-7:
desc: Reserved
- 0-2:
desc: Reason for ephemeris invalidity
values:
- 0: Valid
- 1: Invalid (general status, to be extended)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about this instead?

Suggested change
fields:
- 3-7:
desc: Reserved
- 0-2:
desc: Reason for ephemeris invalidity
values:
- 0: Valid
- 1: Invalid (general status, to be extended)
fields:
- 1-7:
desc: Reserved
- 0:
desc: Ephemeris available
values:
- 0: Valid ephemeris available
- 1: No valid ephemeris available (general status, to be extended in reserved fields)

@ismolyakov ismolyakov force-pushed the ivan/po-905/msg-tel-sv branch from 1b1bf3e to 8121add Compare January 23, 2023 17:58
@ismolyakov
Copy link
Contributor Author

@ismolyakov I don't see an update to sbp.pdf -- we might need to add telemetry.yaml to the pdf doc generation commands

@silverjam my bad, it is now generated after running make all

Copy link
Contributor

@silverjam silverjam left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To satisfy test coverage requirements, please add a new test vector to spec/tests/yaml/swiftnav/sbp/telemetry/test_MsgTelSv.yaml (will need to create a new directory).

See the section on "New messages" in HOWTO.md:

image

@silverjam
Copy link
Contributor

New PDF output looks good:

image

image

image

image

@ismolyakov
Copy link
Contributor Author

ismolyakov commented Jan 24, 2023

I am experiencing a failure in test_auto_check_sbp_telemetry_MsgTelSv unit test
/mnt/workspace/c/test/auto_check_sbp_telemetry_MsgTelSv.c:139:F:Automated_Suite_auto_check_sbp_telemetry_MsgTelSv:test_auto_check_sbp_telemetry_MsgTelSv:0: not enough data was written to dummy_buff (expected: 28, actual: 16)
, with no success in attempts to fix it.

@silverjam do you see anything immediately wrong with my generated test_MsgTelSv.yaml? Could it be related to what @Davinco experienced in his PR?

@ismolyakov
Copy link
Contributor Author

I am experiencing a failure in test_auto_check_sbp_telemetry_MsgTelSv unit test /mnt/workspace/c/test/auto_check_sbp_telemetry_MsgTelSv.c:139:F:Automated_Suite_auto_check_sbp_telemetry_MsgTelSv:test_auto_check_sbp_telemetry_MsgTelSv:0: not enough data was written to dummy_buff (expected: 28, actual: 16) , with no success in attempts to fix it.

@silverjam do you see anything immediately wrong with my generated test_MsgTelSv.yaml? Could it be related to what @Davinco experienced in his PR?

trying to add c_decoded_fields: n_sv_tel: 1..

@silverjam
Copy link
Contributor

@silverjam do you see anything immediately wrong with my generated test_MsgTelSv.yaml? Could it be related to what @Davinco experienced in his PR?

trying to add c_decoded_fields: n_sv_tel: 1..

Adding c_decoded_fields should fix this issue.

@ismolyakov
Copy link
Contributor Author

@silverjam do you see anything immediately wrong with my generated test_MsgTelSv.yaml? Could it be related to what @Davinco experienced in his PR?

trying to add c_decoded_fields: n_sv_tel: 1..

Adding c_decoded_fields should fix this issue.

it did! just waiting for hopefully one last make all to finish locally to ensure everything is generated.

@ismolyakov
Copy link
Contributor Author

Thank you everyone for the comments and help! Merging as Benchmark stage fails in a similar way as the latest commits in master.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants