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

Readme update #34

Merged
merged 9 commits into from
Jan 18, 2022
Merged

Readme update #34

merged 9 commits into from
Jan 18, 2022

Conversation

kripton
Copy link
Member

@kripton kripton commented Jan 8, 2022

I've finally managed to bring the Readme to a state that the current state of the code and hardware design files deserves :)

Since English is not my native language, I'd be happy about a review. Codespell is happy but I prefer humans to give their opinions.

@kripton
Copy link
Member Author

kripton commented Jan 8, 2022

Oh and as you see, I've decided on a new name since "rp2040-donlge" was a bit thin and didn't explain what the dongle does. rp2040-dmxsun might also not explain the purpose but it is at least distinguishable and memorable. The icon already supports this: https://github.com/OpenLightingProject/rp2040-dongle/blob/main/gfx/favicon.png. But of course, I'm open for proposals here as well.

@peternewman
Copy link
Member

Oh and as you see, I've decided on a new name since "rp2040-donlge" was a bit thin and didn't explain what the dongle does. rp2040-dmxsun might also not explain the purpose but it is at least distinguishable and memorable. The icon already supports this: https://github.com/OpenLightingProject/rp2040-dongle/blob/main/gfx/favicon.png. But of course, I'm open for proposals here as well.

It's also easily backronymable, DMX Sixteen UNiverses 😆 !

Copy link
Member

@peternewman peternewman left a comment

Choose a reason for hiding this comment

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

Looks good, mostly minor tidying!

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated

Our next steps are to implement the same protocol as the [ja-rule](https://github.com/OpenLightingProject/ja-rule) device so a more advanced and extensible protocol is in use.
DMX-512-A works in groups called universes and each universe can contain up to 512 channels. dmxsun can transmit up to 16 universes, meaning you can control 8192 channels of DMX data at the same time.
Copy link
Member

Choose a reason for hiding this comment

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

Pedant, I think the official naming is slots rather than channels, but the latter is probably better known by most people.

Copy link
Member Author

Choose a reason for hiding this comment

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

Please be pedantic :) If we do have a standard that uses some specific wording, we should stick to that here as well. In the source code, I might have used "frame" (for a complete DMX packet) and that's not actually in the standard as well.


Currently, a universe can be `teared`. That means that the first half (or so) is already updated, while for the second half, old values are still be sent. This means if you have one fixture on channel 0 and another on channel 512 os the same universe and switch them ON or OFF at the same time, they might actually switch at different times. So another TODO is to add another layer of buffering. It's basically the same problem as with the V-Sync and screen tearing in videos or computer games.
Dmxsun is usually connected to its host via a single USB connection that also powers the device.
To the computer, the dmxsun device looks like a network card (it uses the CDC NCM interface) and the integrated DHCP-server assigns an IP-address to the host machine so they can talk to each other.
Copy link
Member

Choose a reason for hiding this comment

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

Is there actually a DHCP server? Isn't it just using zeroconf, which is more of a standard than a server?

Copy link
Member Author

Choose a reason for hiding this comment

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

It indeed is a real DHCP server running on the device and proposing one IP address if asked for one (which is the standard behaviour of most OSes when they detect previously un-known network devices).
The lwIP stack that is used also supports "AutoIP" as a form of zeroconf. I had a quick look but found DHCP to be more "reliable". Some OSes might treat network connections as non-functional if their DHCP-requests stay unanswered.
However, I agree that some form of unsolicited service announcement (or mDNS) might help. And I should re-try the AutoIP to check if it works everywhere and makes things easier in the end.

Copy link
Member Author

Choose a reason for hiding this comment

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

See #40


## Connecting to real devices
To find out dmxsun's IP address, have a look at your kernel log on Linux (run `dmesg`) or hover over the `Disconnect USB device` icon in Window's task bar or check the network device properties on macOS.
Copy link
Member

Choose a reason for hiding this comment

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

You should add Avahi/Bonjour support to avoid needing to do this!

Copy link
Member Author

Choose a reason for hiding this comment

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

True, mDNS seems to be the way of choice here.
However, the host name the device announces to the host should have some "random ID" in it so there is no problem when more than one device is connected.

Copy link
Member Author

Choose a reason for hiding this comment

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

See #40

Copy link
Member

Choose a reason for hiding this comment

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

Perhaps part of the MAC?

Copy link
Member Author

Choose a reason for hiding this comment

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

Well, the "MAC address" is also a pretty fake one: https://github.com/OpenLightingProject/rp2040-dongle/blob/f5f1d511b9f2d2f3d519904ce44945ea090ec4ae/src/tusb_lwip_glue.c#L42
But here again, I'd stick to the same approach as we currently do: Use one byte of the "unique board ID"

Copy link
Member

Choose a reason for hiding this comment

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

Ah I didn't realise, yeah that should use part of the unique ID. I'd assumed something like that was already built into the library!

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
kripton and others added 3 commits January 11, 2022 19:37
Reword channel -> slot to match the E1.11 standard
Thanks @peternewman for the review!

Co-authored-by: Peter Newman <[email protected]>
Convert some URLs to proper links
@kripton
Copy link
Member Author

kripton commented Jan 11, 2022

It's also easily backronymable, DMX Sixteen UNiverses laughing !

Nice one, didn't even think of it! Want it in the Readme? ;)

@peternewman peternewman mentioned this pull request Jan 13, 2022
@kripton kripton merged commit 5429c5c into OpenLightingProject:main Jan 18, 2022
@kripton kripton deleted the readme branch January 18, 2022 22:22
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.

2 participants