public SystemStatus(MavLinkMessage message) : base(null) { if (message.messid == this.MessageID) { MAVLink.mavlink_sys_status_t raw_data = (MAVLink.mavlink_sys_status_t)message.data_struct; this.voltage_battery = raw_data.voltage_battery; this.current_battery = raw_data.current_battery; this.battery_remaining = raw_data.battery_remaining; this.drop_rate_comm = raw_data.drop_rate_comm; this.errors_comm = raw_data.errors_comm; this.errors_count1 = raw_data.errors_count1; this.errors_count2 = raw_data.errors_count2; this.errors_count3 = raw_data.errors_count3; this.errors_count4 = raw_data.errors_count4; // parse bit masks into lists IEnumerable <MAVLink.MAV_SYS_STATUS_SENSOR> values = EnumValues.GetValues <MAVLink.MAV_SYS_STATUS_SENSOR>(); foreach (MAVLink.MAV_SYS_STATUS_SENSOR sensor in values) { uint sensorMask = (uint)sensor; if ((sensorMask & raw_data.onboard_control_sensors_enabled) == sensorMask) { sensorsEnabled.Add(sensor); } if ((sensorMask & raw_data.onboard_control_sensors_health) == sensorMask) { sensorsHealth.Add(sensor); } if ((sensorMask & raw_data.onboard_control_sensors_present) == sensorMask) { sensorsPresent.Add(sensor); } } } }
void CDroneManager_OnPacket(object packet, int sysId, int compId) { if (packet.GetType() == typeof(MAVLink.mavlink_sys_status_t)) { MAVLink.mavlink_sys_status_t status = (MAVLink.mavlink_sys_status_t)packet; RefreshInfo( (double)status.voltage_battery / 1000, (double)status.current_battery / 100, status.battery_remaining); } }
public void CheckSystemStatusObject() { MAVLink.mavlink_sys_status_t statusStruct = new MAVLink.mavlink_sys_status_t(); statusStruct.voltage_battery = 1; statusStruct.current_battery = 2; statusStruct.battery_remaining = 3; statusStruct.drop_rate_comm = 4; statusStruct.errors_comm = 5; statusStruct.errors_count1 = 6; statusStruct.errors_count2 = 7; statusStruct.errors_count3 = 8; statusStruct.errors_count4 = 9; MavLinkMessage message = new MavLinkMessage(); message.compid = 1; message.messid = MAVLink.MAVLINK_MSG_ID.SYS_STATUS; message.seq = 1; message.sysid = 1; message.data_struct = statusStruct; SystemStatus systemStatus = new SystemStatus(message); Assert.AreEqual(statusStruct.voltage_battery, systemStatus.voltage_battery); Assert.AreEqual(statusStruct.current_battery, systemStatus.current_battery); Assert.AreEqual(statusStruct.battery_remaining, systemStatus.battery_remaining); Assert.AreEqual(statusStruct.drop_rate_comm, systemStatus.drop_rate_comm); Assert.AreEqual(statusStruct.errors_comm, systemStatus.errors_comm); Assert.AreEqual(statusStruct.errors_count1, systemStatus.errors_count1); Assert.AreEqual(statusStruct.errors_count2, systemStatus.errors_count2); Assert.AreEqual(statusStruct.errors_count3, systemStatus.errors_count3); Assert.AreEqual(statusStruct.errors_count4, systemStatus.errors_count4); SystemStatusDTO dto = DTOFactory.createSystemStatusDTO(systemStatus); Assert.AreEqual(dto.voltage_battery, systemStatus.voltage_battery); Assert.AreEqual(dto.current_battery, systemStatus.current_battery); Assert.AreEqual(dto.battery_remaining, systemStatus.battery_remaining); Assert.AreEqual(dto.drop_rate_comm, systemStatus.drop_rate_comm); Assert.AreEqual(dto.errors_comm, systemStatus.errors_comm); Assert.AreEqual(dto.errors_count1, systemStatus.errors_count1); Assert.AreEqual(dto.errors_count2, systemStatus.errors_count2); Assert.AreEqual(dto.errors_count3, systemStatus.errors_count3); Assert.AreEqual(dto.errors_count4, systemStatus.errors_count4); String json = JsonConvert.SerializeObject(dto); }
private void LogPacket(object packet, bool ingoing, int sysId, int compId) { if (threadDone) { return; } if (listViewMessages.InvokeRequired) { try { listViewMessages.Invoke(new Action <object, bool, int, int>(LogPacket), packet, ingoing, sysId, compId); } catch { }; return; } List <string> fields = new List <string>(); fields.Add(sysId.ToString()); fields.Add(compId.ToString()); if ((ingoing && !checkBoxIngoing.Checked) || (!ingoing && !checkBoxOutgoing.Checked)) { return; } string messageName = packet.ToString().Replace("MAVLink+mavlink_", ""); if (IsMessageFilteredOut(messageName)) { return; } if (listViewMessages.IsDisposed) { return; } if (packet.GetType() == typeof(MAVLink.mavlink_gps_raw_int_t)) { MAVLink.mavlink_gps_raw_int_t gps = (MAVLink.mavlink_gps_raw_int_t)packet; fields.Add("GPS Raw Int"); fields.Add(((double)gps.lat / 10000000).ToString()); fields.Add(((double)gps.lon / 10000000).ToString()); fields.Add(gps.alt.ToString()); fields.Add(gps.vel.ToString()); fields.Add(gps.satellites_visible.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_global_position_int_t)) { MAVLink.mavlink_global_position_int_t gps = (MAVLink.mavlink_global_position_int_t)packet; fields.Add("GPS Global Position Int"); fields.Add(((double)gps.lat / 10000000).ToString()); fields.Add(((double)gps.lon / 10000000).ToString()); fields.Add(gps.alt.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_attitude_t)) { MAVLink.mavlink_attitude_t att = (MAVLink.mavlink_attitude_t)packet; fields.Add("Attitude"); fields.Add((att.pitch * 180.0 / Math.PI).ToString()); fields.Add((att.roll * 180.0 / Math.PI).ToString()); fields.Add((att.yaw * 180.0 / Math.PI).ToString()); fields.Add((att.pitchspeed * 180.0 / Math.PI).ToString()); fields.Add((att.rollspeed * 180.0 / Math.PI).ToString()); fields.Add((att.yawspeed * 180.0 / Math.PI).ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_scaled_imu_t)) { MAVLink.mavlink_scaled_imu_t imu = (MAVLink.mavlink_scaled_imu_t)packet; fields.Add("Scaled IMU"); fields.Add(imu.xmag.ToString()); fields.Add(imu.ymag.ToString()); fields.Add(imu.zmag.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_scaled_imu3_t)) { MAVLink.mavlink_scaled_imu3_t imu = (MAVLink.mavlink_scaled_imu3_t)packet; fields.Add("Scaled IMU3"); fields.Add(imu.xmag.ToString()); fields.Add(imu.ymag.ToString()); fields.Add(imu.zmag.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_scaled_imu2_t)) { MAVLink.mavlink_scaled_imu2_t imu = (MAVLink.mavlink_scaled_imu2_t)packet; fields.Add("Scaled IMU2"); fields.Add(imu.xmag.ToString()); fields.Add(imu.ymag.ToString()); fields.Add(imu.zmag.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_sys_status_t)) { MAVLink.mavlink_sys_status_t status = (MAVLink.mavlink_sys_status_t)packet; fields.Add("System Status"); fields.Add(status.voltage_battery.ToString()); } // else if (packet.GetType() == typeof(MAVLink.mavlink_autopilot_version_t)) // { // MAVLink.mavlink_autopilot_version_t ver = (MAVLink.mavlink_autopilot_version_t)packet; // listViewMessages.Items.Add(new ListViewItem(new string[] { // "Autopilot Version", // ver.version.ToString(), // ver.custom_version.ToString(), // ver.capabilities.ToString()})); // } else if (packet.GetType() == typeof(MAVLink.mavlink_heartbeat_t)) { MAVLink.mavlink_heartbeat_t hb = (MAVLink.mavlink_heartbeat_t)packet; fields.Add("Heartbeat"); fields.Add(hb.autopilot.ToString()); fields.Add(hb.system_status.ToString()); fields.Add(hb.mavlink_version.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_statustext_t)) { MAVLink.mavlink_statustext_t status = (MAVLink.mavlink_statustext_t)packet; fields.Add("Status Text"); fields.Add(ASCIIEncoding.ASCII.GetString(status.text)); fields.Add(status.severity.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_param_value_t)) { MAVLink.mavlink_param_value_t paramValue = (MAVLink.mavlink_param_value_t)packet; fields.Add("Param Value"); fields.Add(ASCIIEncoding.ASCII.GetString(paramValue.param_id)); fields.Add(paramValue.param_value.ToString()); fields.Add(paramValue.param_count.ToString()); fields.Add(paramValue.param_index.ToString()); fields.Add(paramValue.param_type.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_param_request_read_t)) { MAVLink.mavlink_param_request_read_t paramReq = (MAVLink.mavlink_param_request_read_t)packet; fields.Add("Param Request Read"); fields.Add(ASCIIEncoding.ASCII.GetString(paramReq.param_id)); } else if (packet.GetType() == typeof(MAVLink.mavlink_param_set_t)) { MAVLink.mavlink_param_set_t paramSet = (MAVLink.mavlink_param_set_t)packet; fields.Add("Param Set"); fields.Add(ASCIIEncoding.ASCII.GetString(paramSet.param_id)); fields.Add(paramSet.param_value.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_mission_count_t)) { MAVLink.mavlink_mission_count_t paramValue = (MAVLink.mavlink_mission_count_t)packet; fields.Add("Mission Count"); fields.Add(paramValue.count.ToString()); fields.Add(paramValue.target_component.ToString()); fields.Add(paramValue.target_system.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_mission_item_t)) { MAVLink.mavlink_mission_item_t item = (MAVLink.mavlink_mission_item_t)packet; fields.Add("Mission Item"); fields.Add(item.seq.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_mission_request_t)) { MAVLink.mavlink_mission_request_t item = (MAVLink.mavlink_mission_request_t)packet; fields.Add("Mission Request Item"); fields.Add(item.seq.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_command_ack_t)) { MAVLink.mavlink_command_ack_t paramValue = (MAVLink.mavlink_command_ack_t)packet; fields.Add("Ack"); fields.Add(((MAVLink.MAV_CMD)paramValue.command).ToString()); fields.Add(((MAVLink.MAV_RESULT)paramValue.result).ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_mission_ack_t)) { MAVLink.mavlink_mission_ack_t paramValue = (MAVLink.mavlink_mission_ack_t)packet; fields.Add("Mission Ack"); fields.Add(paramValue.type.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_radio_status_t)) { MAVLink.mavlink_radio_status_t radio = (MAVLink.mavlink_radio_status_t)packet; fields.Add("Radio Status"); fields.Add(radio.rssi.ToString()); fields.Add(radio.remrssi.ToString()); } else if (packet.GetType() == typeof(MAVLink.mavlink_ekf_status_report_t)) { MAVLink.mavlink_ekf_status_report_t ekf = (MAVLink.mavlink_ekf_status_report_t)packet; fields.Add("EKF Status"); fields.Add(ekf.flags.ToString()); fields.Add(ekf.velocity_variance.ToString()); fields.Add(ekf.pos_horiz_variance.ToString()); fields.Add(ekf.pos_vert_variance.ToString()); fields.Add(ekf.compass_variance.ToString()); fields.Add(ekf.terrain_alt_variance.ToString()); } else { fields.Add(messageName); //Log(packet.ToString()); } if (ingoing) { listViewMessages.Items.Add(INGOING(new ListViewItem(fields.ToArray()))); } else { listViewMessages.Items.Add(OUTGOING(new ListViewItem(fields.ToArray()))); } }
public void SetAttitude(MAVLink.mavlink_sys_status_t sysstatus) { mission_sysstatus = sysstatus; time = DateTime.Now; }
public sysstatus(MAVLink.mavlink_sys_status_t sysstatus) { mission_sysstatus = sysstatus; time = DateTime.Now; }
private int updatedata(int timeout = 5000) { if (ReadHeartBeat()) { DateTime deadline = DateTime.Now.AddMilliseconds(timeout); while (DateTime.Now < deadline) { try { var data = _mavlinkparse.ReadPacket(_datastream); if (data == null) { continue; } switch (data.GetType().ToString()) { case "MAVLink+mavlink_attitude_t": MAVLink.mavlink_attitude_t pack0 = (MAVLink.mavlink_attitude_t)data; Vehicle.Roll = pack0.roll; Vehicle.RollSpeed = pack0.rollspeed; Vehicle.Pitch = pack0.pitch; Vehicle.PitchSpeed = pack0.pitchspeed; Vehicle.Yaw = pack0.yaw; Vehicle.YawSpeed = pack0.yawspeed; Vehicle.BootTime = pack0.time_boot_ms; break; case "MAVLink+_global_position_int_t": MAVLink.mavlink_global_position_int_t pack1 = (MAVLink.mavlink_global_position_int_t)data; Vehicle.Attitude = pack1.alt; Vehicle.Latitude = pack1.lat; Vehicle.Longtitude = pack1.lon; break; case "MAVLink+mavlink_sys_status_t": MAVLink.mavlink_sys_status_t pack2 = (MAVLink.mavlink_sys_status_t)data; Vehicle.BatteryVoltage = pack2.voltage_battery; Vehicle.BatteryCurrent = pack2.current_battery; Vehicle.BatteryRemaining = pack2.battery_remaining; break; case "MAVLink+mavlink_vfr_hud_t": MAVLink.mavlink_vfr_hud_t pack3 = (MAVLink.mavlink_vfr_hud_t)data; Vehicle.AirSpeed = pack3.airspeed; Vehicle.GroungSpeed = pack3.groundspeed; break; case "MAVLink+mavlink_heartbeat_t": ReadHeartBeat(); Vehicle.HeartBeating = true; deadline = DateTime.Now.AddMilliseconds(timeout); break; default: break; } } catch { Vehicle.Connected = false; } } } return(0); }