6import QGroundControl.Controls
12 readonly property real _margins: ScreenTools.defaultFontPixelHeight
14 QGCPalette { id: qgcPal; colorGroupEnabled: true }
18 contentWidth: column.width + (_margins * 2)
19 contentHeight: column.height + (_margins * 2)
24 anchors.margins: _margins
25 anchors.left: parent.left
26 anchors.top: parent.top
27 spacing: ScreenTools.defaultFontPixelHeight / 4
31 text: qsTr("Send status text + voice")
35 text: qsTr("Enable camera")
39 text: qsTr("Enable gimbal")
43 text: qsTr("Enable proximity sensors")
47 text: qsTr("Enable ADS-B vehicles")
50 id: apmStartFreshParams
51 text: qsTr("Start with fresh firmware parameters (setup required)")
52 visible: vehicleTypeCombo.apmSelected
62 label: qsTr("Vehicle Type")
63 Layout.fillWidth: true
66 readonly property var _vehicleEntries: {
68 if (QGroundControl.px4ProFirmwareSupported) {
69 entries.push({ name: qsTr("PX4 Vehicle"), linkName: "PX4 MultiRotor MockLink", firmware: MAVLinkEnums.MAV_AUTOPILOT_PX4, vehicle: MAVLinkEnums.MAV_TYPE_QUADROTOR })
71 if (QGroundControl.apmFirmwareSupported) {
72 entries.push({ name: qsTr("APM ArduCopter Vehicle"), linkName: "ArduCopter MockLink", firmware: MAVLinkEnums.MAV_AUTOPILOT_ARDUPILOTMEGA, vehicle: MAVLinkEnums.MAV_TYPE_QUADROTOR })
73 entries.push({ name: qsTr("APM ArduPlane Vehicle"), linkName: "ArduPlane MockLink", firmware: MAVLinkEnums.MAV_AUTOPILOT_ARDUPILOTMEGA, vehicle: MAVLinkEnums.MAV_TYPE_FIXED_WING })
74 entries.push({ name: qsTr("APM ArduSub Vehicle"), linkName: "ArduSub MockLink", firmware: MAVLinkEnums.MAV_AUTOPILOT_ARDUPILOTMEGA, vehicle: MAVLinkEnums.MAV_TYPE_SUBMARINE })
75 entries.push({ name: qsTr("APM ArduRover Vehicle"), linkName: "ArduRover MockLink", firmware: MAVLinkEnums.MAV_AUTOPILOT_ARDUPILOTMEGA, vehicle: MAVLinkEnums.MAV_TYPE_GROUND_ROVER })
77 entries.push({ name: qsTr("Generic Vehicle"), linkName: "Generic MockLink", firmware: MAVLinkEnums.MAV_AUTOPILOT_GENERIC, vehicle: MAVLinkEnums.MAV_TYPE_QUADROTOR })
80 readonly property var _vehicleNames: _vehicleEntries.map(entry => entry.name)
81 // Entries are ordered supported firmwares first, Generic last resort
82 readonly property var selectedEntry: _vehicleEntries[Math.max(currentIndex, 0)]
83 readonly property bool apmSelected: selectedEntry.firmware === MAVLinkEnums.MAV_AUTOPILOT_ARDUPILOTMEGA
87 label: qsTr("Home Location")
88 Layout.fillWidth: true
90 qsTr("PX4 SITL Default"),
91 qsTr("ArduPilot SITL Default"),
96 id: videoStreamTypeCombo
97 label: qsTr("Served Video Stream")
98 Layout.fillWidth: true
99 visible: enableCamera.checked
102 qsTr("RTP/UDP H.264"),
103 qsTr("RTP/UDP H.265"),
104 qsTr("RTSP (H.264)"),
105 qsTr("MPEG-TS (UDP)"),
106 qsTr("MPEG-TS (TCP)")
110 text: qsTr("Start MockLink")
111 Layout.fillWidth: true
113 const entry = vehicleTypeCombo.selectedEntry
114 QGroundControl.startMockLink({
115 name: entry.linkName,
116 firmware: entry.firmware,
117 vehicle: entry.vehicle,
118 sendStatus: sendStatusText.checked,
119 enableCamera: enableCamera.checked,
120 enableGimbal: enableGimbal.checked,
121 enableProximity: enableProximity.checked,
122 enableADSB: enableADSB.checked,
123 apmStartFreshParams: apmStartFreshParams.checked,
124 videoStreamType: videoStreamTypeCombo.currentIndex,
125 homeLocation: homeLocationCombo.currentIndex
130 text: qsTr("Stop One MockLink")
131 Layout.fillWidth: true
132 onClicked: QGroundControl.stopOneMockLink()