public void CheckAttitudeObject() { MAVLink.mavlink_attitude_t data = new MAVLink.mavlink_attitude_t(); data.pitch = 1; data.pitchspeed = 2; data.roll = 3; data.rollspeed = 4; data.time_boot_ms = 5; data.yaw = 6; data.yawspeed = 7; MavLinkMessage message = createSampleMessage(MAVLink.MAVLINK_MSG_ID.ATTITUDE, data); Attitude obj = new Attitude(message); Assert.AreEqual(data.pitch, obj.pitch); Assert.AreEqual(data.pitchspeed, obj.pitchspeed); Assert.AreEqual(data.roll, obj.roll); Assert.AreEqual(data.rollspeed, obj.rollspeed); Assert.AreEqual(data.time_boot_ms, obj.time_boot_ms); Assert.AreEqual(data.yaw, obj.yaw); Assert.AreEqual(data.yawspeed, obj.yawspeed); AttitudeDTO dto = DTOFactory.createAttitudeDTO(obj); Assert.AreEqual(dto.pitch, obj.pitch); Assert.AreEqual(dto.pitchspeed, obj.pitchspeed); Assert.AreEqual(dto.roll, obj.roll); Assert.AreEqual(dto.rollspeed, obj.rollspeed); Assert.AreEqual(dto.time_boot_ms, obj.time_boot_ms); Assert.AreEqual(dto.yaw, obj.yaw); Assert.AreEqual(dto.yawspeed, obj.yawspeed); }
public Attitude(MavLinkMessage message) : base(null) { if (message.messid == this.MessageID) { MAVLink.mavlink_attitude_t data = (MAVLink.mavlink_attitude_t)message.data_struct; this.pitch = data.pitch; this.pitchspeed = data.pitchspeed; this.roll = data.roll; this.rollspeed = data.rollspeed; this.time_boot_ms = data.time_boot_ms; this.yaw = data.yaw; this.yawspeed = data.yawspeed; } }
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_attitude_t attitude) { mission_attitude = attitude; time = DateTime.Now; }
public posture(MAVLink.mavlink_attitude_t attitude) { mission_attitude = attitude; 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); }