Repository navigation
server more changes to content and design - #6
Conversation
jancona
left a comment
There was a problem hiding this comment.
Claude-detected typos:
"can be use by other developers" → "used"
"and entire M17 ecosystem" → "and the entire"
"rasing" → "raising"
"group.io" → "groups.io"
"behave as legacy reflector" → "reflectors"
"DISC packet is send" → "sent" (not from by this PR, but maybe fix it while you're in there)
Thanks for doing this, it definitely adds to the spec!
|
|
||
| M17 is designed with this use in mind, and has native IP framing to support it. | ||
| In competing radio protocols, a repeater or some other RF to IP bridge is required for linking, | ||
| leading to the use of hot-spots (tiny simplex RF bridges). |
There was a problem hiding this comment.
I kind of like this paragraph. It says how M17 is different and why this document exists. Can it still be included in purpose?
| This part of the specification is where M17 over-the-air engineering is translated to Internet Protocol (IP) capabilities that M17 users want. In the spirit of true Open-Source innovation, M17 developers are encouraged to document their M17 contributions here so that their M17 programs and tools can be use by other developers and entire M17 ecosystem can be used and enjoyed by all M17 users. | ||
|
|
||
|
|
||
| ### Where to get involved |
There was a problem hiding this comment.
This doesn't feel very "spec-like," plus we don't want to change the spec if a Discord channel name changes. Maybe the text should be in the README or a CONTRIBUTING file, with a pointer to that here.
There was a problem hiding this comment.
agreed. the other info was moved to README.md.
|
|
||
| ### Where to get involved | ||
|
|
||
| 1. Casual discussion or simple questions on any M17 Specification related topic from anyone can be started on the #m17-specification channel of the [M17 Discord](https://discord.com/). |
There was a problem hiding this comment.
Probably want the Discord invitation URL: https://discord.gg/TYby5jq8u
Also two spaces before [Discord].
There was a problem hiding this comment.
This takes me to "Jim has invited you to join the M17 discord". I'm going to leave the simpler url.
|
|
||
| 1. Legacy reflector are all *urfd* reflectors as well as any *mrefd* reflector with a version number less than 1.0.0. Legacy reflectors **do not** forward any packet mode data. | ||
| 2. Any *mrefd* reflector with a version number greater or equal to 1.0.0, will forward both stream data and packet data from any client on any particular node to all nodes connected to that same module, except if the data is packet mode data and if that node is an interlinked, legacy reflector. | ||
| 1. Legacy reflector any *mrefd* reflector with a version number less than 1.0.0. Legacy reflectors **do not** forward any packet mode data. All known *urfd* reflectors behave as legacy reflector, but evolution of *urfd* is possible. |
There was a problem hiding this comment.
s/Legacy reflector any/Legacy reflectors are any/
s/behave as legacy reflector,/behave as legacy reflectors,/
| #### Enforcing the "one hop" policy by appending a byte | ||
|
|
||
| Also be aware that both *urfd* and *mrefd* enforce a "one hop policy" for any incoming packet from a regular client. Fundamentally that means that any packet received from an interlinked reflector will not be forwarded to any other reflector. Therefore any number of reflectors that share a channel must be interlinked to all reflectors in that same group. That's the only way any client can hear every other client on that interlinked module. | ||
| It is important to note that interlinking methods both *urfd* and *mrefd* are based on [*xlxd*](https://github.com/LX3JL/xlxd) and enforce a "one hop policy" for any incoming packet from a regular client. Fundamentally that means that any packet received from an interlinked reflector will not be forwarded to any other reflector. Therefore any number of reflectors that share a channel must be interlinked to all reflectors in that same group. That's the only way any client can hear every other client on that interlinked module. |
There was a problem hiding this comment.
s/interlinking methods both/interlinking methods in both/
| 1. Casual discussion or simple questions on any M17 Specification related topic from anyone can be started on the #m17-specification channel of the [M17 Discord](https://discord.com/). | ||
| 1. More serious discussion that warrants a permanent record should take place by either rasing an issue on [this repo](https://github.com/M17-Project/M17_inet), or posting a message to the [M17-Users group.io](https://groups.io/g/M17-Users/topics) website. | ||
| 1. Developers can submit a pull request (PR) to [this repo](https://github.com/M17-Project/M17_inet) to add information about their M17 application(s). They only need to supply the information in a new `##` Chapter in the `M17 Internet Interface.md` file. If they want to make sure the PDF is rendered properly, instructions for making the PDF are in the `README.md` file. | ||
| 1. Even skilled M17 users can submit a PR if they already have an account on github.com and see a problem with either specification document and know how to fix it. Many have done so already. |
There was a problem hiding this comment.
"Even skilled M17 users can submit a PR" might sound condescending. Maybe something like "M17 users who aren't developers can submit a PR".
| 1. Any *mrefd* reflector with a version number greater or equal to 1.0.0, will forward both stream data and packet data from any client on any particular node to all nodes connected to that same module, except if the data is packet mode data and if that node is an interlinked, legacy reflector. | ||
|
|
||
| Importantly, legacy reflectors will only forward stream data if the destination in the packet is addressed to the module to which it is linked. For example, the destination address must decode to `M17-XYZ m` or `URFXYZ m`, where `m` is an appropriate module letter, A-Z. In both cases, please note that these destinations fill the maximum width of an M17 callsign, there are two spaces before the module in the *urfd* address! Further, legacy reflectors will readdress the destination address to be the encoded callsign of the client receiving the data. Whenever a reflector modifies a packet, any CRCs affected by that modification will be recalculated. | ||
| Importantly, legacy reflectors will only forward stream data if the destination in the packet is addressed to the module to which it is linked. For example, the destination address must decode to `"M17-XYZ m"` or `"URFXYZ m"`, where `m` is an appropriate module letter, A-Z. In both cases, please note that these destinations fill the maximum width of an M17 callsign, there are two spaces before the module in the *urfd* address! Further, legacy reflectors will readdress the destination address to be the encoded callsign of the client receiving the data. Whenever a reflector modifies a packet, any CRCs affected by that modification will be recalculated. |
There was a problem hiding this comment.
The PDF rendering of the spaces in the destination address examples looks a little weird. I'm not sure what to do about it.
There was a problem hiding this comment.
agreed. I rewrote this, as I couldn't find a way to do this either. This seems to be a limitation with the transcriber.
| | Field | Size | Description | | ||
| |:---------------|:---------|:-------------------------| | ||
| | Field | Size | Description | | ||
| |:-----:|:----:|:-------------------------| |
There was a problem hiding this comment.
Do we want the Field column centered? It looks a little funny to me.
There was a problem hiding this comment.
I like centered better than left justified. You can change it with your next PR!
I have: