diff --git a/src/QmlControls/QGroundControlQmlGlobal.cc b/src/QmlControls/QGroundControlQmlGlobal.cc index 2f892c185d8e2be0fdfb5256c6c6f62a88c0f2f4..6aa715eca91af0880ece9128b87bfa51d5ca47e0 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.cc +++ b/src/QmlControls/QGroundControlQmlGlobal.cc @@ -144,6 +144,15 @@ void QGroundControlQmlGlobal::startAPMArduSubMockLink(bool sendStatusText) #endif } +void QGroundControlQmlGlobal::startAPMArduRoverMockLink(bool sendStatusText) +{ +#ifdef QT_DEBUG + MockLink::startAPMArduRoverMockLink(sendStatusText); +#else + Q_UNUSED(sendStatusText); +#endif +} + void QGroundControlQmlGlobal::stopOneMockLink(void) { #ifdef QT_DEBUG diff --git a/src/QmlControls/QGroundControlQmlGlobal.h b/src/QmlControls/QGroundControlQmlGlobal.h index e49ace26cf725b6131f8fabe2def0869a9a3e803..366128dc7c1097541b00f42d4b60478f35f0e428 100644 --- a/src/QmlControls/QGroundControlQmlGlobal.h +++ b/src/QmlControls/QGroundControlQmlGlobal.h @@ -112,6 +112,7 @@ public: Q_INVOKABLE void startAPMArduCopterMockLink (bool sendStatusText); Q_INVOKABLE void startAPMArduPlaneMockLink (bool sendStatusText); Q_INVOKABLE void startAPMArduSubMockLink (bool sendStatusText); + Q_INVOKABLE void startAPMArduRoverMockLink (bool sendStatusText); Q_INVOKABLE void stopOneMockLink (void); /// Converts from meters to the user specified distance unit diff --git a/src/comm/MockLink.cc b/src/comm/MockLink.cc index 9edc2f30c3ed36b27b2783023e1283dc29053343..d24da50c8545eaba8fa5fdc12f73c55c037beda4 100644 --- a/src/comm/MockLink.cc +++ b/src/comm/MockLink.cc @@ -1159,64 +1159,46 @@ MockLink* MockLink::_startMockLink(MockConfiguration* mockConfig) return qobject_cast(linkMgr->createConnectedLink(config)); } -MockLink* MockLink::startPX4MockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +MockLink* MockLink::_startMockLinkWorker(QString configName, MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType, bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("PX4 MockLink"); + MockConfiguration* mockConfig = new MockConfiguration(configName); - mockConfig->setFirmwareType(MAV_AUTOPILOT_PX4); - mockConfig->setVehicleType(MAV_TYPE_QUADROTOR); + mockConfig->setFirmwareType(firmwareType); + mockConfig->setVehicleType(vehicleType); mockConfig->setSendStatusText(sendStatusText); mockConfig->setFailureMode(failureMode); return _startMockLink(mockConfig); } -MockLink* MockLink::startGenericMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +MockLink* MockLink::startPX4MockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("Generic MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_GENERIC); - mockConfig->setVehicleType(MAV_TYPE_QUADROTOR); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); + return _startMockLinkWorker("PX4 MultiRotor MockLink", MAV_AUTOPILOT_PX4, MAV_TYPE_QUADROTOR, sendStatusText, failureMode); +} - return _startMockLink(mockConfig); +MockLink* MockLink::startGenericMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +{ + return _startMockLinkWorker("Generic MockLink", MAV_AUTOPILOT_GENERIC, MAV_TYPE_QUADROTOR, sendStatusText, failureMode); } MockLink* MockLink::startAPMArduCopterMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("APM ArduCopter MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_ARDUPILOTMEGA); - mockConfig->setVehicleType(MAV_TYPE_QUADROTOR); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); - - return _startMockLink(mockConfig); + return _startMockLinkWorker("ArduCopter MockLink",MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_QUADROTOR, sendStatusText, failureMode); } MockLink* MockLink::startAPMArduPlaneMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("APM ArduPlane MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_ARDUPILOTMEGA); - mockConfig->setVehicleType(MAV_TYPE_FIXED_WING); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); - - return _startMockLink(mockConfig); + return _startMockLinkWorker("ArduPlane MockLink", MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_FIXED_WING, sendStatusText, failureMode); } MockLink* MockLink::startAPMArduSubMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) { - MockConfiguration* mockConfig = new MockConfiguration("APM ArduSub MockLink"); - - mockConfig->setFirmwareType(MAV_AUTOPILOT_ARDUPILOTMEGA); - mockConfig->setVehicleType(MAV_TYPE_SUBMARINE); - mockConfig->setSendStatusText(sendStatusText); - mockConfig->setFailureMode(failureMode); + return _startMockLinkWorker("ArduSub MockLink", MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_SUBMARINE, sendStatusText, failureMode); +} - return _startMockLink(mockConfig); +MockLink* MockLink::startAPMArduRoverMockLink(bool sendStatusText, MockConfiguration::FailureMode_t failureMode) +{ + return _startMockLinkWorker("ArduRover MockLink", MAV_AUTOPILOT_ARDUPILOTMEGA, MAV_TYPE_GROUND_ROVER, sendStatusText, failureMode); } void MockLink::_sendRCChannels(void) diff --git a/src/comm/MockLink.h b/src/comm/MockLink.h index e771cd6a2888aa0878eb4018a917a5d4168140a7..0d3bee32345a7c84e21645e57777604cf4d8dd3d 100644 --- a/src/comm/MockLink.h +++ b/src/comm/MockLink.h @@ -156,6 +156,7 @@ public: static MockLink* startAPMArduCopterMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); static MockLink* startAPMArduPlaneMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); static MockLink* startAPMArduSubMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); + static MockLink* startAPMArduRoverMockLink (bool sendStatusText, MockConfiguration::FailureMode_t failureMode = MockConfiguration::FailNone); private slots: virtual void _writeBytes(const QByteArray bytes); @@ -203,6 +204,7 @@ private: void _sendADSBVehicles(void); void _moveADSBVehicle(void); + static MockLink* _startMockLinkWorker(QString configName, MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType, bool sendStatusText, MockConfiguration::FailureMode_t failureMode); static MockLink* _startMockLink(MockConfiguration* mockConfig); MockLinkMissionItemHandler _missionItemHandler; diff --git a/src/ui/preferences/MockLink.qml b/src/ui/preferences/MockLink.qml index ed1073d0b48011d0a8c0eff213ff49cda8f4f6a6..753336e038bcb7f21cb120ef099f8df55331c88f 100644 --- a/src/ui/preferences/MockLink.qml +++ b/src/ui/preferences/MockLink.qml @@ -52,6 +52,10 @@ Rectangle { text: qsTr("APM ArduSub Vehicle") onClicked: QGroundControl.startAPMArduSubMockLink(sendStatusText.checked) } + QGCButton { + text: qsTr("APM ArduRover Vehicle") + onClicked: QGroundControl.startAPMArduRoverMockLink(sendStatusText.checked) + } QGCButton { text: qsTr("Generic Vehicle") onClicked: QGroundControl.startGenericMockLink(sendStatusText.checked)