-
Notifications
You must be signed in to change notification settings - Fork 57
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
[NEW FEATURE] Native step 2 : Multiple nodes running #291
Comments
@AltayAkkus made a proposition on #292 then we plan a call to discuss about it. In this comment I will try to resume this discussion and define more precisely how we plan to develop this. First considered solutionOne of the big challenge is that unlike half-duplex serial, websockets are point to point. Robus communication highly rely on the broadcasting aspect so to make it work the same we have to find a way to do that with WebSockets. Kept solution based on @AltayAkkus propositionInstead of trying to emulate how Robus connections are made on each node we could centralise this emulation in a dedicated program: CommunicationEach received messages will be re-sent to other nodes. DetectionPTP signals will be emulated by specific PTP messages between nodes and Robus_emulator network representationNodes will be represented as a chained list allowing to add and remove nodes dynamically and reshaping the virtual network easily. |
There are existing MQTT libs in C (such as this one : https://github.com/LiamBindle/MQTT-C). |
What about ISR emulation ? To simulate critical sections and realistic robus network messages, it could be great to have such a feature. Well, it's interesting for QA ! But users don't care about that. |
I personally would refrain from MQTT as service discovery. WebSockets are very performant, not Gigabit performant, but like 4k messages a second performant, I don't think there is a need for optimization. @JeromeGalan can you elaborate on the ISR emulation? Injecting a fault, that one Node stops responding/broadcasting? Excuse me for being absent so long, I am back to work and have a lot of things to do unfortunately |
@AltayAkkus , for sure ISR emulation mocking can be a usefull feature for testing, monitoring and injecting strange behaviour. I'd already have such a need in a past life. But it's more interesting in embedded. For native, the question is open. |
Welcome back to work @AltayAkkus, to be honest we don't had any time either to work on this. |
In this second step of the Native development, our goal is to be able to run multiple Luos_engine binaries (nodes) to be able to list them during detection, and to make them communicate. We consider the step 1 ( #290 ) as completed
Or final goal will be to have the button running on another node that the Gate and still be able to catch it on the pyluos side :
To do that, our main focus will be on the Robus HAL.
Communication
To exchange information it could be great to rely on WebSocket and to be able to broadcast to all off them information. For broadcasting we could use MQTT with a broadcast topic.
This part is open to contribution and brainstorming
Detection
We will need to find a way to list other services and to send them node ID. To send them Id we need to be able to send a non broadcast message. If We use MQTT each node could create a topic with it's node name allowing anyone to reach this specific service.
This part is open to contribution and brainstorming
The text was updated successfully, but these errors were encountered: