Sounds like a great plan overall, just one suggestion:
>>> before your update:
initscript.cfg is run after everything else has been initialized, and hence the serialdev parameter has disappeared by then (it disappears because one should not try to change serial device while running).
So instead, you can use params.cfg (in JEVOIS:/config/ on your microSD, source is in ~/jevois/Config/), this one is parsed before any other inits, and in there you can add a line
serialdev=
to not use any serial device in the JeVois Engine. For more info, see the preInit() and postInit() of jevois::Engine, and see the general doc of jevois::Component for init sequence.
In your module, you would then indeed just addSubComponent() with a new Serial component. On the platform hardware, the hardware serial port is /dev/ttyS0
Then I would recommend readSome() and writeString() on the serial to communicate in a non-blocking mode.
>>> after your update:
that is even easier if MAVLink does not conflict with any of the JeVois commands. For example, if it sends "info" or "help", the JeVois Engine would parse that and not forward it to your module. The list of commands parsed by the Engine is here:
http://jevois.org/doc/UserCli.html
and in Engine.C of the jevois github.
If you find some conflicts, we could implement an additional option on Engine which is to just forward everything and to stop parsing (this would be a terminal command until the next reboot). I think it might be useful in a number of scenarios similar to yours.