Large Vehicle Cali by Plugin Code?


I’m beginner on programming and have lots of interest in mission planner plugin.

I have programmed several plugins with SITL and have saw many possibilities.

I have question as belows :

mission planner have “large vehicle cali” function.

I will connect boat(ardurover) and VTOL(arduplane) to one mission planner.

I will make one dropdown list button and if I click the button

I want to pop up the dialogue and manually calibrate ardurover(it should not calibrate arduplane!!!)

is there way to acheive this?

you don’t need to give me dialogue or button UI code…

I just want to know which mavlink message number can calibrate ardurover magnetic compass manually…

below is my example code :

foreach (MAVLinkInterface mav in MainV2.Comports)
                if (mav.sysidcurrent != 0) 

                    if (mav.MAV.cs.firmware == MissionPlanner.ArduPilot.Firmwares.ArduPlane)
                        plane_lat = mav.MAV.cs.Location.Lat;
                        plane_lng = mav.MAV.cs.Location.Lng;
                        plane_alt = mav.MAV.cs.Location.Alt;
                        plane_home_lat = mav.MAV.cs.HomeLocation.Lat;
                        plane_home_lng = mav.MAV.cs.HomeLocation.Lng;
                        plane_voltage = mav.MAV.cs.battery_voltage;
                        MAVLink.mavlink_command_long_t cmd = new MAVLink.mavlink_command_long_t
                            target_system = mav.MAV.sysid,
                            target_component = mav.MAV.compid,
                            command = (ushort)MAVLink.MAV_CMD.DO_SET_HOME,
                            param1 = 0,
                            param5 = (float)ship_lat,
                            param6 = (float)ship_lng,
                            param7 = (float)0
                        if ((ship_sysid != 0) && (ship_compid != 0) && (is_home_updating_running))
                            mav.sendPacket(cmd, mav.sysidcurrent, mav.compidcurrent);
                            Console.WriteLine("Home position updated.");

                        if (mav.MAV.cs.armed)
                            // Update the armed time only once when the vehicle is armed
                            if (armed_time == DateTime.MinValue)
                                armed_time = DateTime.Now;
                        elapsed_after_arming = DateTime.Now - armed_time;
                    else if (mav.MAV.cs.firmware == MissionPlanner.ArduPilot.Firmwares.ArduRover) 
                        ship_sysid = mav.sysidcurrent;
                        ship_compid = mav.compidcurrent;
                        ship_lat = mav.MAV.cs.Location.Lat;
                        ship_lng = mav.MAV.cs.Location.Lng;

Thank you very much in advance…

I have limited internet connectivity because I’m on the ship now. I will be on deep sea for more than 2 months. that is why I post this on the article rather than I search and study mavlink by myself… sorry about this.