public ushort getWPCount()
{
giveComport = true;
MAVLinkMessage buffer;
mavlink_mission_request_list_t req = new mavlink_mission_request_list_t();
req.target_system = MAV.sysid;
req.target_component = MAV.compid;
// request list
generatePacket((byte) MAVLINK_MSG_ID.MISSION_REQUEST_LIST, req);
DateTime start = DateTime.Now;
int retrys = 6;
while (true)
{
if (!(start.AddMilliseconds(700) > DateTime.Now))
{
if (retrys > 0)
{
log.Info("getWPCount Retry " + retrys + " - giv com " + giveComport);
generatePacket((byte) MAVLINK_MSG_ID.MISSION_REQUEST_LIST, req);
start = DateTime.Now;
retrys--;
continue;
}
giveComport = false;
//return (byte)int.Parse(param["WP_TOTAL"].ToString());
throw new TimeoutException("Timeout on read - getWPCount");
}
buffer = readPacket();
if (buffer.Length > 5)
{
if (buffer.msgid == (byte) MAVLINK_MSG_ID.MISSION_COUNT)
{
var count = buffer.ToStructure<mavlink_mission_count_t>();
log.Info("wpcount: " + count.count);
giveComport = false;
return count.count; // should be ushort, but apm has limited wp count < byte
}
}
}
}