GCSControlGadgetWidget::GCSControlGadgetWidget(QWidget *parent) : QLabel(parent) { m_gcscontrol = new Ui_GCSControl(); m_gcscontrol->setupUi(this); ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); UAVObjectManager *objManager = pm->getObject<UAVObjectManager>(); // Set up the drop down box for the flightmode FlightStatus* flightStatus = FlightStatus::GetInstance(objManager);; m_gcscontrol->comboBoxFlightMode->addItems(flightStatus->getField("FlightMode")->getOptions()); // Set up slots and signals for joysticks connect(m_gcscontrol->widgetLeftStick,SIGNAL(positionClicked(double,double)),this,SLOT(leftStickClicked(double,double))); connect(m_gcscontrol->widgetRightStick,SIGNAL(positionClicked(double,double)),this,SLOT(rightStickClicked(double,double))); // Connect misc controls connect(m_gcscontrol->checkBoxGcsControl, SIGNAL(clicked(bool)), this, SLOT(toggleControl(bool))); connect(m_gcscontrol->comboBoxFlightMode, SIGNAL(currentIndexChanged(int)), this, SLOT(selectFlightMode(int))); connect(m_gcscontrol->checkBoxUDPControl, SIGNAL(stateChanged(int)),this,SLOT(toggleUDPControl(int))); //UDP control checkbox // Connect object updated event from UAVObject to also update check boxes and dropdown connect(flightStatus,SIGNAL(FlightModeChanged(quint8)), this, SLOT(flightModeChanged(quint8))); connect(flightStatus,SIGNAL(ArmedChanged(quint8)), this, SLOT(armedChanged(quint8))); leftX = 0; leftY = 0; rightX = 0; rightY = 0; }
void FlightStatus::setFlightMode(quint8 value) { mutex->lock(); bool changed = data.FlightMode != value; data.FlightMode = value; mutex->unlock(); if (changed) emit FlightModeChanged(value); }
void FlightStatus::emitNotifications() { //if (data.Armed != oldData.Armed) emit ArmedChanged(data.Armed); //if (data.FlightMode != oldData.FlightMode) emit FlightModeChanged(data.FlightMode); //if (data.ControlChain[0] != oldData.ControlChain[0]) emit ControlChain_StabilizationChanged(data.ControlChain[0]); //if (data.ControlChain[1] != oldData.ControlChain[1]) emit ControlChain_PathFollowerChanged(data.ControlChain[1]); //if (data.ControlChain[2] != oldData.ControlChain[2]) emit ControlChain_PathPlannerChanged(data.ControlChain[2]); }