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
Review #6 #11
Review #6 #11
Conversation
…s not needed at all
I just went over the spec and realized that this abstraction should be implemented, after all. I'm going to move it into a new branch. |
… of the transport layer specs
…oved into a section in the chapter 4 - Transport layer
I'm away until 18. August I'm only able to look at the computer every now and then when traveling but will try to look through it before I'm home. I will be able to give a full review when I'm back home. Don't let this block your work, If you need to merge before I'm able to give a review I will create issues/PR on the parts I'm not completely satisfied with once I'm back home. |
[WIP] Transport agnostic spec
Attaching the latest PDF: UAVCAN_Specification.pdf |
Now it's my turn to apologize for slowness, certain things ended up being harder than they appeared. I'd like to iterate faster in the future, because large changes slow things down.
Fixed.
Things pertaining to the application layer are to be reviewed in the chapter 5, which is next. However, before we get to that, I'd like to sort out two things:
Whether we really want to get all generic and split the transport layer specification in two parts: abstract and CAN-specific. There aren't any non-CAN transport on the horizon currently, so I'm not sure if it makes sense doing that now. We can always do that later shall the need for a new transport arise. Please share your thoughts or even open a new ticket for that. (re tickets: it's getting really messy; do we not want to launch an instance of Discourse for discussions? Clearly the mailing list is not working).
Sort out the new set of standard data type definitions. I should start looking into that now.
Fixed.
This was a tough one. I think it's much more sensible now although it's still imperfect. I am very keen on keeping the definition as generic as possible (this closely corresponds to your "relaxed" option from #9).
I think we must allow that; see discussion at #9.
Um, not quite. A message data type does not have to always use single-frame transfers to be usable with anonymous transfers; a good counter-example is the standard node ID allocation message. Clarifications added, better wording welcome.
Fixed.
This is a specification not a textbook on real-time system design, so I suggest keeping it brief. The mnemonics I chose were supposed to convey urgency, not importance; e.g. "critical" stands for "critically urgent", not "critically important", although I see now that this is not sufficiently clear. Let's pick better names. I think the following names should be kept because they are rather unambigous: Foreground, High, Normal, Low, Background. If these are to be kept, we need three more. How about Über. Two more?
Fixed.
Fixed?
Source Node ID is not defined for anonymous message transfers, so I used that wording on purpose. I think it's clear enough, but we can discuss this.
Fixed.
Currently, the text says "A broadcast message is carried by a single message transfer that contains the serialized message data structure."
Would you like to change or amend that?
Removed the sub-sub-section to avoid the confusion. Having "Message broadcasting" inside "Message broadcasting" seems odd.
This info is not new; here's an excerpt from Basic concepts: "A UAVCAN network is a decentralized peer network, where each peer (node) has a unique numeric identifier - \emph{node ID}.".
Fixed.
I'm not sure it's necessary. The concept of the passive mode is not referred to before this point, and it's not particularly important, so I see little value in moving it all the way up to the beginning.
What we have in 4.1 is the actual definition. 4.2 is intended to describe implementation. I think this separation makes sense in that case, especially if we are to split the transport layer spec into generic and CAN-specific parts?
I'm not sure I like the excessive wordiness in this part. The conveyed meaning seems identical in both cases.
I wanted to avoid importing this critical diagram as an image for ease of maintenance, so I coded it up in LaTeX. I tried adding the colors and that turned out to be harder than I'd like to admit. While I agree that the new diagram is harder to read, it seems to be just good enough, so I'm not going to change it as we have more pressing matters to address. That said, feel free to contribute a better solution.
I intended to raise a discussion about this but it kind of slipped out of my mind. The reason I made it a hard requirement is to add more determinism; that might be useful in the future if backward-incompatible changes are to be made to the protocol. Same reason why we require the toggle bit to always start at a particular value even though the protocol doesn't need to care.
Comments from Scott have also been addressed.