liberatedsystems / RNode_Firmware_CE

RNode is an open, free and flexible digital radio interface with many uses
https://unsigned.io/rnode
GNU General Public License v3.0
51 stars 11 forks source link

Add multi-interface support #11

Closed jacobeva closed 4 months ago

jacobeva commented 5 months ago

Solves issue https://github.com/liberatedsystems/RNode_Firmware_CE/issues/3

A lot has been changed in this PR. Here is a list of what has been changed:

I'm pretty happy with how this has turned out.

In order to utilise RNodes with multiple interfaces effectively, the user must be using the RNodeMultiInterface in RNS. It can be found here. However, by default there is a fallback to use the interface on virtual port 0 (meaning, the default interface) for the regular RNodeInterface. This will allow users who have not updated RNS to get the RNodeMultiInterface to still use their RNode (albeit with only one interface active), and also allow those who only have one interface on their RNode to continue using it as before with no disruption.

Performance VS the current master should be investigated, it is possible the overall bitrate has dropped as a result of all these changes. Optimisation will most likely be required to get things running flat out again.

Testing would be much appreciated. I am soon going to overhaul the ESP32 build system to allow for this easily. To have users to test both on the RAK4631 and the various ESP32 boards on this build would be incredibly helpful.