public mavlink_log_entry_t GetLogEntry(ushort startno = 0, ushort endno = ushort.MaxValue)
{
giveComport = true;
MAVLinkMessage buffer;
mavlink_log_request_list_t req = new mavlink_log_request_list_t();
req.target_component = MAV.compid;
req.target_system = MAV.sysid;
req.start = startno;
req.end = endno;
log.Info("GetLogEntry " + startno + "-" + endno);
// request point
generatePacket((byte) MAVLINK_MSG_ID.LOG_REQUEST_LIST, req);
DateTime start = DateTime.Now;
int retrys = 5;
while (true)
{
if (!(start.AddMilliseconds(2000) > DateTime.Now))
{
if (retrys > 0)
{
log.Info("GetLogEntry Retry " + retrys + " - giv com " + giveComport);
generatePacket((byte) MAVLINK_MSG_ID.LOG_REQUEST_LIST, req);
start = DateTime.Now;
retrys--;
continue;
}
giveComport = false;
throw new TimeoutException("Timeout on read - GetLogEntry");
}
buffer = readPacket();
if (buffer.Length > 5)
{
if (buffer.msgid == (byte) MAVLINK_MSG_ID.LOG_ENTRY)
{
var ans = buffer.ToStructure<mavlink_log_entry_t>();
if (ans.id >= startno && ans.id <= endno)
{
giveComport = false;
return ans;
}
}
if (buffer.msgid == (byte) MAVLINK_MSG_ID.LOG_DATA)
{
throw new Exception("Existing log download already in progress.");
}
}
}
}