below is my plugin code :
public override bool Loop()
{
String text_to_overlay = "";
foreach (MAVLinkInterface mav in MainV2.Comports)
{
if (mav.sysidcurrent != 0) //nothing connected
{
//var paramList = mav.getParamList((byte)mav.sysidcurrent, (byte)mav.compidcurrent);
//foreach(var param in paramList)
//mav = comport object
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;
Console.WriteLine("RCVD Plane PSN.");
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)30 //altitude
};
if ((ship_sysid != 0) && (ship_compid != 0) && (is_home_updating_running))
{
mav.sendPacket(cmd, mav.sysidcurrent, mav.compidcurrent);
Console.WriteLine("Home position updated.");
Console.WriteLine(ship_lat);
}
}
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;
Console.WriteLine("RCVD Boat PSN.");
//Console.WriteLine("Ship Lat : " + mav.MAV.cs.Location.Lat);
}
}
}
this code updates home position with altitude 30m.
because I have to operate VTOL on moving ships in deep sea for far long distance, I need this plugin deadly.
if I use this plugin I experience mission planner altitude goes -17m when the plane is on the ground.
this is the relavant link :