Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plans on PTPv1 support? #382

Open
teodly opened this issue Jan 28, 2024 · 2 comments
Open

Plans on PTPv1 support? #382

teodly opened this issue Jan 28, 2024 · 2 comments

Comments

@teodly
Copy link
Contributor

teodly commented Jan 28, 2024

Hello,

I'm developing an unofficial, reverse engineered implementation of Dante Audio over IP protocol - Inferno. It uses PTPv1 (IEEE1588-2002) so I really need to support it despite it being deprecated (technically speaking, Dante supports PTPv2, too, but not on all devices and it needs to be enabled manually).

I've already started working on implementing it in Statime, but it looks like PTPv2 assumptions and data structures are deeply rooted in the codebase (which is not surprising as the standard defines algorithms and data structures pretty precisely). So I have 2 options:

  • write converters that will translate PTPv2 to v1 messages when sending them, and v1 to v2 when receiving, and patch Message serialize and deserialize methods to use the converters. I am aware that not all data can be converted losslessly - it would probably suffice for my use case but wouldn't be compliant to the standard.
  • integrate PTPv1 into all the codebase - less hacky, but requires more work and the code will become more complicated.

I just want to know your opinion on PTPv1 support.

If you don't want it upstream, I will probably go the converters route to make upstream changes easier to merge for me.

If you do, I don't think I will be able to contribute a complete PTPv1 support myself, as I'm doing it in my free time and don't have much experience of working with clock synchronization. But I can help with development (I've already implemented serialize & deserialize functions) and testing (I have 2 Dante devices which are PTPv1 and PTPv2 capable).

@davidv1992
Copy link
Member

My instinct would be to try and mould the codebase into a form where it could also do PTPv1. However, I don't currently have access to a version of the specification to see what this would entail. I will come back to you once I have taken a look at the PTPv1 spec and have a better idea of what this would entail.

@davidv1992
Copy link
Member

Apologies, it took me way too long to get back to you on this. Having had a look at ptpv1 and the statements on this in the ptpv2.0 spec I think the PTPv1 integration is going to be the way if you want this integrated. Feel free to make a start on this if you want, we won't in the near future start work on this however so it would most likely be mostly your implementation.

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

No branches or pull requests

2 participants