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

Implement RDM responder #61

Merged
merged 355 commits into from
Jun 23, 2023
Merged

Implement RDM responder #61

merged 355 commits into from
Jun 23, 2023

Conversation

someweisguy
Copy link
Owner

This adds the feature for the DMX library to respond to RDM requests using custom callbacks.

@someweisguy someweisguy mentioned this pull request Apr 8, 2023
@someweisguy
Copy link
Owner Author

RDM response is working! The code still needs polish. Furthermore, the RDM response is useless for end-users; users are not able to configure settings on the RDM responder. This means that the RDM responder will always respond to messages the same way. But it supports the minimum required RDM responses, which is a pretty big milestone.

The driver currently does not respond to invalid RDM requests, which would mean that RDM response is not yet fully supported in this library, but this should be trivial to implement.

@someweisguy
Copy link
Owner Author

I ran into some roadblocks with getting RDM response working so I decided to try a different solution.

The new solution is a pretty big paradigm shift from how I was originally trying to implement RDM response. It took some work, but I got it working! It not only works, but the new paradigm is user-friendly enough for me to be happy. I am not quite finished with response, but I got enough of it working to see that it works very well.

Unfortunately, due to the big conceptual changes made, I've had to break the RDM controller code. I am planning on re-implementing it before merging this PR. In any case, there is still lots of work that needs to be done before I can call RDM response finished.

@netmindz
Copy link

Sounds like good progress though

@someweisguy
Copy link
Owner Author

Discovery is working again. It's taking some time, but RDM is finally starting to come together.

This PR is introducing a few breaking changes here and there so I am going to probably tag the next version v3.1 and officially take it out of beta. :)

@netmindz
Copy link

netmindz commented May 3, 2023

Let me know when the interface is stable enough for me to start trying to start trying to integrate

@someweisguy
Copy link
Owner Author

Okay, this is more or less feature complete for this PR. I'm working on documentation and polish now. But you are welcome to start messing around with code now - I won't be changing much from now on!

@netmindz
Copy link

Can you update the examples please?

@someweisguy
Copy link
Owner Author

someweisguy commented Jun 21, 2023

Arduino examples are up! The examples are very messy. I will clean them up soon.

I also had the opportunity to test the RDM responder code using an ETC Colorsource 20. The Colorsource was able to detect and automatically patch the ESP32. The Colorsource was not able to send an IDENTIFY_DEVICE command to the ESP32, which was bizarre. After some testing, it appears that the Colorsource performed RDM discovery, sent requests for the ESP32's DEVICE_INFO, SOFTWARE_VERSION_LABEL, and MANUFACTURER_LABEL. I was able to quickly implement a response for the MANUFACTURER_LABEL so each of those requests were fine. The Colorsource also sent an RDM QUEUED_MESSAGE request, which this library does not currently support. I suspect that because the Colorsource did not receive the expected response to the QUEUED_MESSAGE request, it labelled the ESP32 as defective and refused to send the IDENTIFY_DEVICE request when prompted.

@akares
Copy link

akares commented Jun 21, 2023

For testing I recommend this tool: https://www.openlighting.org/rdm-tools/rdm-responder-tests/
It has more than 500 tests and nice coverage report. Saves lots of time during development.

This looks stellar. I have been using openlighting's RDM tools for testing, but I did not see that they have a bonafide RDM responder tester. I might have to shell out the cash to get a USB->DMX/RDM and try out the tester!

We are using ENTTEC DMX USB Pro and it works smoothly with the OLA software.
Are you located in US? I can ask my US colleague to order the USB->DMX adapter to your address.

@someweisguy
Copy link
Owner Author

For testing I recommend this tool: https://www.openlighting.org/rdm-tools/rdm-responder-tests/
It has more than 500 tests and nice coverage report. Saves lots of time during development.

This looks stellar. I have been using openlighting's RDM tools for testing, but I did not see that they have a bonafide RDM responder tester. I might have to shell out the cash to get a USB->DMX/RDM and try out the tester!

We are using ENTTEC DMX USB Pro and it works smoothly with the OLA software. Are you located in US? I can ask my US colleague to order the USB->DMX adapter to your address.

I am in the US. That is super generous of you! Thank you! You or your colleague can reach out to me at [email protected] and I can send my mailing address.

@someweisguy someweisguy changed the base branch from release/v3.0 to dev June 23, 2023 00:45
@someweisguy someweisguy changed the base branch from dev to release/v3.0 June 23, 2023 01:07
@someweisguy someweisguy merged commit 00a4f4a into release/v3.0 Jun 23, 2023
@someweisguy someweisguy deleted the feature/rdm-rx branch June 23, 2023 01:10
@someweisguy
Copy link
Owner Author

Merged! There is still plenty of work to do on RDM. I'll be submitting more PRs to further polish up the RDM responder soon. For now I would say that RDM response is (minimally) supported.

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.

DMX RDM
3 participants