Custom Simulation Bootstrap

Hi everyone! I’m new to MAVLink and am starting to get the general idea of the whole messaging system.

I am doing a really simple cmdline app in C# (using mavlink built to .cs)
I had some basic success with TCP/UDP between PX4 and QGC.

But, trying to move into some more serious workflow like emulating a drone and its sensors then getting back PX4 information is starting to get more difficult.
I’d like to know what are the most basic MAVLink handshaking needed to have both:

QGC - Altitude/Guided/Manual Mode Ready to Fly
and
PX4 - Flight Check Success (allowing the ARM command)