[all] support for OT Posix node with RCP using realtime UART V2#769
[all] support for OT Posix node with RCP using realtime UART V2#769EskoDijk wants to merge 2 commits intoopenthread:mainfrom
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the simulation environment by introducing a real-time mode and enabling the integration of OpenThread Posix nodes with RCPs via real-time UART. These changes allow for more realistic and complex simulation scenarios, particularly for future OpenThread Border Router deployments. The underlying dispatcher and node communication mechanisms have been updated to seamlessly support both real-time and virtual-time interactions, improving the robustness and flexibility of the simulation platform. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Ignored Files
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
43bd5c4 to
fac8b06
Compare
There was a problem hiding this comment.
Code Review
This pull request introduces significant new functionality by adding support for OT Posix nodes with RCP in a real-time simulation. The changes are extensive and well-structured, including a new real-time simulation loop, dual support for virtual and real-time UART, and the necessary build scripts, tests, and documentation updates. Several refactorings, such as in the simulation loop and UART data processing, have also improved code quality and maintainability. The implementation appears solid, but I have a couple of suggestions to improve code clarity by replacing magic numbers with named constants in the new real-time simulation logic.
Note: Security Review did not run due to the size of the PR.
8b66aea to
c0176d4
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces comprehensive support for running OT Posix nodes with RCP using real-time UART communication, enhancing the simulation's realism and flexibility through significant refactoring and new features across various packages. However, it also introduces security risks related to arbitrary executable execution and insecure URL construction. Specifically, the exe command allows users to specify arbitrary paths for executables, and the Spinel URL is constructed without proper escaping of user-controlled components. These issues should be addressed by implementing path validation for executable paths and proper URL encoding for user-controlled components in the Spinel URL.
c0176d4 to
9afddc6
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces significant new functionality to support real-time simulation with RCP nodes. The changes are extensive, touching the dispatcher, simulation core, node implementation, build scripts, and tests. The refactoring to support both virtual-time and real-time simulation modes is well-executed, and the introduction of waitForSimulation simplifies the event processing logic considerably. The code quality is high, and the new features are accompanied by corresponding tests. I have a couple of minor suggestions to improve code clarity and maintainability.
9afddc6 to
846fb79
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces significant new functionality by adding support for real-time simulation with OT Posix RCP nodes. The changes are extensive, touching the dispatcher, simulation core, node implementation, build scripts, and tests. The implementation appears robust and well-designed, with a new real-time dispatcher loop, real-time UART handling over stdio, and several refactorings that improve code clarity and maintainability, such as the introduction of waitForSimulation. The new feature is also accompanied by corresponding documentation updates and new unit tests. I have one minor suggestion regarding a comment.
80273e0 to
927735e
Compare
This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds like virtual-time simulation. A method waitForSimulation() is introduced to avoid the need for custom simulation event processing loops at different places in the code. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. Close openthread#769 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
bc6b961 to
bba807a
Compare
francoismichel
left a comment
There was a problem hiding this comment.
Thank you @EskoDijk for putting all this together!
Also thanks @francoismichel for showing it's possible! I'll start soon with adding the OTBR on top of this, there's the Github issue #739 for tracking the work (needs updating also). Feel free to comment there as well. |
bba807a to
3019eda
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces significant new functionality by adding support for real-time simulations and OT Posix nodes with RCPs. The changes are extensive, touching the simulation core, dispatcher, command-line interface, and node implementation. The introduction of a real-time simulation mode with a new time-keeping mechanism is a major enhancement. The code is well-structured, and the changes include corresponding updates to documentation and new unit tests to cover the new features. Overall, this is a solid contribution. I have found one issue in the UART data processing logic that could be improved for robustness.
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces support for Radio Control Protocol (RCP) nodes and a real-time simulation mode. Key changes include the implementation of a real-time dispatcher loop, support for external host processes driving RCP nodes via PTY/UART, and updated CLI and documentation to reflect these new capabilities. Additionally, the PR refactors event handling and UART processing to accommodate both virtual-time and real-time environments. Feedback from the review highlights potential issues in the new UART implementation where read and write calls could be prematurely terminated by signals (EINTR), suggesting more robust retry logic.
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com> WIP
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
1d626b4 to
3333bc1
Compare
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com> WIP
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
3333bc1 to
e97383e
Compare
|
The latest push (May 9) resolves bugs found in prior commit during a simulated OTBR testing event with multiple participants, and resolves Gemini review bugs found:
|
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com> WIP
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
e97383e to
525ed4a
Compare
|
Latest push (May 10) resolve a visual error that gave warnings about unknown event type just after an RCP node was deleted. A new deleted nodes management is introduced to resolve that: deleted nodes are stored in the Dispatcher |
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
525ed4a to
276793c
Compare
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
276793c to
cf98fe6
Compare
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
cf98fe6 to
cb95ffc
Compare
…ead#769) This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker. The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds - like virtual-time simulation is. Deletion of nodes is updated in real-time mode: it is ongoing in the background in a separate goroutine, to ensure the simulation doesn't halt upon node deletion and that all final log messages of the exiting node are captured also. A method waitForSimulation() is introduced to be more clear when command processing needs to wait for simulation events to be processed first. It simplifies the code in expectEvent() and expectLine() functions also. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug. The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be echo. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional. The RFSIM radio C code is updated to avoid going to sleep when there are still OTNS events in the queue, received via the Unix socket. This ensures faster overall processing with less events being sent, relevant for nodes to keep up in real-time mode. Finally, previous build errors for the rcp target (Issue openthread#758) are now resolved. Close openthread#758 Co-authored-by: François Michel <francoismichel.dev@gmail.com>
The usage of global vars and 'extern' in the RFSIM platform was hard to disentangle. This fixes the issue by placing all 'extern' references in the header file along with comments as to what these variables do. This way, all the relevant sources have access to these global vars.
cb95ffc to
797630e
Compare
|
Last push (May 11) corrects code that's used to suppress displaying of the final 'exit' CLI command that's sent when deleting a node. |
This adds support for running a standard OT Posix node in a realtime simulation, where the Posix process performs realtime SPINEL/HDLC UART communication with an RCP process. Support for RCPs is the basis for upcoming features like including real OTBRs in a simulation, either running on the local host or running in a Docker.
The dispatcher/simulation core is updated to allow handling of both 'realtime UART' (stdout) based CLI and logging interactions and 'virtual-time UART' interactions by nodes, in the same simulation. The real-time simulation mode now has a different time keeping mechanism that is synced to the host's clock and processes continuously, not based on discrete time periods or different speeds like virtual-time simulation.
A method waitForSimulation() is introduced to avoid the need for custom simulation event processing loops at different places in the code. Also, the queueing and filtering of UART/log output of OT nodes is simplified to make the code better readable and the UART data flow easier to understand and debug.
The CLI (over PTY/UART/...) echo behavior differs for Linux Posix nodes that are controlled via stdin/stdout: there is no 'echo' behavior. Depending on OS, there could be. To handle all possible combinations of platform/node-type, there is a new function 'setupCli' added that autodetects whether echo is used for a node, or not, and whether the CLI connection is functional.
Co-authored-by: François Michel francoismichel.dev@gmail.com