ot-ns
ot-ns copied to clipboard
Task: integrating the new OTNS2 code into OTNS main branch
This issue is created to coordinate the inclusion of the new OTNS2 code (from https://github.com/EskoDijk/ot-ns) into the OTNS project main branch.
Possible methods to update: (nr 2 looks best perhaps, nr 1 is also fine)
- PR that is squash-merged into main (and loose all the detailed commits that led from OTNS to OTNS2)
- PR that is normal-merged into main (keep all the detailed commits history - even though some are a bit sloppy)
- push new code directly into main branch
Important goals of first inclusion of new code:
-
- Don't break the OpenThread CI which relies on checking out OTNS and running the new code in standard set of OTNS simulations.
-
- Have a usable simulator that people can use (with GUI) - running on Linux and MacOS
Less important goals for first inclusion -- these could be addressed later with PRs and fixes if needed.
-
- Docker builds
-
- Have a complete tutorial/guide ready to work with OTNS2
Important design aspects of OTNS2 (to be evaluated here if okay to include!):
- OTNS2 supports simulation of Thread 1.1, 1.2, 1.3 legacy nodes by means of including as subproject a few repository-branches that have the right code for this. This means the number of subprojects now increased from 1 to 4. The nice benefit of this design (using separate subprojects) is that as part of CI of OpenThread, some simulations can be added where the new OT node has to interoperate with legacy OpenThread nodes.
- The project now includes C/C++ code with a custom platform for RF simulations. This is in the directory
ot-rfsim
. This code is not intended to replace, or compete with, thesimulation
platform code in theopenthread
repo. In the future some merge/combine might be considered, but it's rather complex to do this already now. Note that the co-development of OTNS simulator code and C/C++ platform code in single repo, and single PRs/commits, has been very beneficial so far - usually some simulator features requires some handling code on the platform side and vice versa.