When it comes to this topic, i am wondering about your ides about something.
There are a few features that i wanna add to my machine. This features include sending appropriate messages to the user via error channel. I am implementing this features in iocontrol component in source tree of LinuxCNC(by adding extra hal pins and controlling them in main loop), cross compiling it and integrating new execautable to target platform, which is my machine controller board. At very first times, i didn't want to change the iocontrol component but somehow i thought i need to change iocontrol component because actual software e-stop is depended on iocontrol pins (emc-enable-in, user-enable-out, ...). I was aware of doing it with hal configuration, like chain(might be yours or mine which is formed by or-and-oneshot components) but somehow i thought i need to add it to the core component because i am actually checking the motors to eliminate motor errors, and i don't want a delay in my system. Of course it can be done in hal layer via connections, but why would I do that when I can interfere with the core? (i mean iocontrol component.).
I've added extra lines to iocontrol component as input pins, and checked them in loop. If something is wrong, i am sending the appropriate messages via emcOperatorError like functions to error buffer and making user aware of what happened behind the scenes. These kind of stuff is a way to create a good user experience, this is my thought.
For this features, i've looked at ready-made component and i found message component. It didn't work well and i didn't research the reason. After that, i've decided to compile the iocontrol component again and integrate features into it.
What do you think about my solution? is it appropriate to change the iocontrol component to implement features like these? E-stop safety is very important, you are absolutely right. The reason that i did it in iocontrol component is, i don't want delays. When a motor stops, i don't want a thread gets the value and sends it to the other connection and the iocontrol component gets the command and makes e-stop. The thing i really want is if something critical happened, let iocontrol component handle it.
I would apprecaite if you share your ideas, recommendations with me, thank you again. I am gonna watch your video.
Thanks.