-
Notifications
You must be signed in to change notification settings - Fork 28
feat: Adds frame type 0x26 RC Extended Channels Packed Payload #28
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
base: main
Are you sure you want to change the base?
Conversation
Extends the CRSF protocol specification to transport (optionally) up to 32 proportional 11-bit wide channels.
…PR#28 tbs-fpv/tbs-crsf-spec#28 ). To be paired with EdgeTX PR <TODO! fill number>
…PR#28 tbs-fpv/tbs-crsf-spec#28 ). To be paired with EdgeTX PR#6504 EdgeTX/edgetx#6504
…PR#28 tbs-fpv/tbs-crsf-spec#28 ). To be paired with EdgeTX PR#6504 EdgeTX/edgetx#6504
This would be very valuable to all the function-/ship-modelists. There is an even growing community that uses CRSF-based RF-links. These people are eagerly looking for solutions transporting 32 rc-channels. As a side not: they do not only need more than 16 rc-channels, they also need up to 64 (or more) binary switch states to be transported over the rf-link (this is a clear benefit of the rc-systems that use e.g. SumDV3 protocol like Gr/SJ Hott). So, it would be also very helpful to add a package type for that purpose. The channel data and the switch data may be transported in OTA packages with different update rates (like Hott does). |
fantastic to see efforts into this direction. Extending beyong 16 channels is certainly much desired for ground based vehicles. however, I'm not convinced the proposed message is the right step forward, and I'm not convinced it even is needed. There is the message 0x17 Subset RC Channels Packed which is quite flexible and - as much as I can see - perfectly can do that. It is also already implemented in e.g. ArduPilot, so no additional mess also on this side. |
Here is the direct link to the For the reference, here the (IMHO suboptimal) ArduPilot implementation of the CRSF 0x17 frame: https://github.com/ArduPilot/ardupilot/blob/ceb5ad848a5c41820c2bf37b1908a7b54600a346/libraries/AP_RCProtocol/AP_RCProtocol_CRSF.h#L246-L257 In addition, note the incomplete handling of CRSF 0x17 frame by ArduPilot: https://github.com/ArduPilot/ardupilot/blob/ceb5ad848a5c41820c2bf37b1908a7b54600a346/libraries/AP_RCProtocol/AP_RCProtocol_CRSF.h#L253-L256 |
That would be a great addition for INAV as well. The change to support CRSF with 32CH could be easily done since INAV supports up to 32+2 channels total already for Futaba SBUS2. There are a lot of applications that can require more than 16 available channels. |
I don't want to disturb this discussion, but afaik the SBUS2 proto is a bidi extension of SBUS to query telemetry data, but sticks to 16 channels. Maybe I'm wrong here? |
My understanding of that flag is, that it indicates the meaning of the following data: channel-values (with the specified resolution) or binary switches state (each bit resembles a binary switch). |
My point was that the specs should make it clear, without a shadow of a doubt, what each bit/byte does or is it for. Presently the usage of |
Absolutely. |
@tbs-trappy / @Dazza0 Can we have an executive decision please, either to rework/update |
|
Folks, pinging people over and over again will not make it go faster or make it more likely for anything to accepted, so I kindly ask to refrain from doing that. 0x17 Is discouraged because we are aware of ambiguities and because most of the additional functionality there was never implemented both on the producing and receiving side. However as the CRSF spec now expands far beyond TBS product line, I am of the opinion that changing it will only add to the mess.
As much as I appreciate that you are actively trying to improve the situation here, I don’t think this is a „either or“ type of situation. Seems to me there is many more possible solutions to this problem and I also don’t see any reason to be rushing this, especially considering this Proposal has not even made it through the 2 weeks grace period we usually impose. I will bring this PR to the attention of the team today and get back to you as soon as time permits. TLDR: good shit, but daddy chill. |
first, many thanks for responding, much appreciated
many thanks for the insight. I may not know all these ambiguities but it seems to me it should be possible to fix them in a backwards compatible way. The fact that the additional functionality was never implemenetd IMHO does not imply that it's a badly designed message. And, let's be fair, it may also have to do with that the specs wasn't official. We at mLRS have discussion of the >16 topic since long and I recall having suggested it as a natural way to go 2 years ago. As regards the functionality itself, I think it's a good idea. For instance, the native resolution of EdgeTx is 12 bits (if I'm not wrong), so it would make perfect sense to send with that resolution from radio to tx module. The link could then do what it wants, inlcuding using that full 12 bit or not, and send it out on the receiver as it wants. Why always the restriction to 11 bits. Mavlink can handle 13 bits.
point is that I see this dicussion for long floating through the different places, and if "no reason to rush" means to give it a good thought then I guess we are all with you but if it means not so important then I guess we would want to disagree. |
i think that is for the receiving end to judge :)
i don't necessarily disagree, but that will need much more careful consideration than a new frame and i wonder if that is "worth it" considering we could just as easily add a new frame that has similar functionality. i am purposely leaving that up discussion. i thought i made it more than clear that i meant to state my personal opinion on the matter.
that's just puzzling to me. yes, of course that means to say "good thought". |
…-crsf-spec#28) (cherry picked from commit ea78554)
@tbs-trappy |
EdgeTX supports internally 32 channels across all radio types:
This PR extends the CRSF protocol specification to transport (optionally) up to 32 proportional 11-bit wide channels in order for the CRSF protocol not to be a limiting factor.
As the 11-bit proportional channels 17 to 32 are transported in a dedicated 0x26 frame, it's frame rate could easily differ from the std. 0x16 RC Channels Packed Payload framerate.
Tested successfully with rotorman/CyberBrick_ESPNOW#8 paired with EdgeTX/edgetx#6504.