mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
OP-1216 fixes as suggested in OPReview-645
This commit is contained in:
parent
696baff1e2
commit
dbbb8d5e0d
@ -125,11 +125,13 @@ int32_t ActuatorInitialize()
|
||||
MixerSettingsConnectCallback(MixerSettingsUpdatedCb);
|
||||
|
||||
// Listen for ActuatorDesired updates (Primary input to this module)
|
||||
AccessoryDesiredInitialize();
|
||||
ActuatorDesiredInitialize();
|
||||
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
|
||||
ActuatorDesiredConnectQueue(queue);
|
||||
|
||||
// Register AccessoryDesired (Secondary input to this module)
|
||||
AccessoryDesiredInitialize();
|
||||
|
||||
// Primary output of this module
|
||||
ActuatorCommandInitialize();
|
||||
|
||||
|
@ -228,7 +228,7 @@ void armHandler(bool newinit)
|
||||
|
||||
case ARM_STATE_DISARMING_MANUAL:
|
||||
// arming switch disarms immediately,
|
||||
if (manualDisarm && (armSwitch || (timeDifferenceMs(armedDisarmStart, sysTime) > settings.DisarmingSequenceTime))) {
|
||||
if (manualDisarm && (timeDifferenceMs(armedDisarmStart, sysTime) > settings.DisarmingSequenceTime)) {
|
||||
armState = ARM_STATE_DISARMED;
|
||||
} else if (!manualDisarm) {
|
||||
armState = ARM_STATE_ARMED;
|
||||
|
@ -94,12 +94,12 @@ ManualControlCommand *GCSControlGadget::getManualControlCommand()
|
||||
return dynamic_cast<ManualControlCommand *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
}
|
||||
|
||||
void GCSControlGadget::manualControlCommandUpdated(UAVObject *obj)
|
||||
void GCSControlGadget::manualControlCommandUpdated(UAVObject *manualControlCommand)
|
||||
{
|
||||
double roll = obj->getField("Roll")->getDouble();
|
||||
double pitch = obj->getField("Pitch")->getDouble();
|
||||
double yaw = obj->getField("Yaw")->getDouble();
|
||||
double throttle = obj->getField("Throttle")->getDouble();
|
||||
double roll = manualControlCommand->getField("Roll")->getDouble();
|
||||
double pitch = manualControlCommand->getField("Pitch")->getDouble();
|
||||
double yaw = manualControlCommand->getField("Yaw")->getDouble();
|
||||
double throttle = manualControlCommand->getField("Throttle")->getDouble();
|
||||
|
||||
// necessary against having the wrong joystick profile chosen, which shows weird values
|
||||
if (throttle > -1.0 && throttle <= 1.0) {
|
||||
@ -140,11 +140,11 @@ void GCSControlGadget::manualControlCommandUpdated(UAVObject *obj)
|
||||
*/
|
||||
void GCSControlGadget::sticksChangedLocally(double leftX, double leftY, double rightX, double rightY)
|
||||
{
|
||||
ManualControlCommand *obj = getManualControlCommand();
|
||||
double oldRoll = obj->getField("Roll")->getDouble();
|
||||
double oldPitch = obj->getField("Pitch")->getDouble();
|
||||
double oldYaw = obj->getField("Yaw")->getDouble();
|
||||
double oldThrottle = obj->getField("Throttle")->getDouble();
|
||||
ManualControlCommand *manualControlCommand = getManualControlCommand();
|
||||
double oldRoll = manualControlCommand->getField("Roll")->getDouble();
|
||||
double oldPitch = manualControlCommand->getField("Pitch")->getDouble();
|
||||
double oldYaw = manualControlCommand->getField("Yaw")->getDouble();
|
||||
double oldThrottle = manualControlCommand->getField("Throttle")->getDouble();
|
||||
|
||||
double newRoll;
|
||||
double newPitch;
|
||||
@ -221,20 +221,20 @@ void GCSControlGadget::sticksChangedLocally(double leftX, double leftY, double r
|
||||
|
||||
if ((newThrottle != oldThrottle) || (newPitch != oldPitch) || (newYaw != oldYaw) || (newRoll != oldRoll)) {
|
||||
if (buttonRollControl == 0) {
|
||||
obj->getField("Roll")->setDouble(newRoll);
|
||||
manualControlCommand->getField("Roll")->setDouble(newRoll);
|
||||
}
|
||||
if (buttonPitchControl == 0) {
|
||||
obj->getField("Pitch")->setDouble(newPitch);
|
||||
manualControlCommand->getField("Pitch")->setDouble(newPitch);
|
||||
}
|
||||
if (buttonYawControl == 0) {
|
||||
obj->getField("Yaw")->setDouble(newYaw);
|
||||
manualControlCommand->getField("Yaw")->setDouble(newYaw);
|
||||
}
|
||||
if (buttonThrottleControl == 0) {
|
||||
obj->getField("Throttle")->setDouble(newThrottle);
|
||||
obj->getField("Thrust")->setDouble(newThrottle);
|
||||
manualControlCommand->getField("Throttle")->setDouble(newThrottle);
|
||||
manualControlCommand->getField("Thrust")->setDouble(newThrottle);
|
||||
}
|
||||
obj->getField("Connected")->setValue("True");
|
||||
obj->updated();
|
||||
manualControlCommand->getField("Connected")->setValue("True");
|
||||
manualControlCommand->updated();
|
||||
}
|
||||
}
|
||||
|
||||
@ -293,29 +293,29 @@ void GCSControlGadget::readUDPCommand()
|
||||
}
|
||||
}
|
||||
if (!badPack && ((GCSControlGadgetWidget *)m_widget)->getUDPControl()) {
|
||||
ManualControlCommand *obj = getManualControlCommand();
|
||||
ManualControlCommand *manualControlCommand = getManualControlCommand();
|
||||
bool update = false;
|
||||
|
||||
if (pitch != obj->getField("Pitch")->getDouble()) {
|
||||
obj->getField("Pitch")->setDouble(constrain(pitch));
|
||||
if (pitch != manualControlCommand->getField("Pitch")->getDouble()) {
|
||||
manualControlCommand->getField("Pitch")->setDouble(constrain(pitch));
|
||||
update = true;
|
||||
}
|
||||
if (yaw != obj->getField("Yaw")->getDouble()) {
|
||||
obj->getField("Yaw")->setDouble(constrain(yaw));
|
||||
if (yaw != manualControlCommand->getField("Yaw")->getDouble()) {
|
||||
manualControlCommand->getField("Yaw")->setDouble(constrain(yaw));
|
||||
update = true;
|
||||
}
|
||||
if (roll != obj->getField("Roll")->getDouble()) {
|
||||
obj->getField("Roll")->setDouble(constrain(roll));
|
||||
if (roll != manualControlCommand->getField("Roll")->getDouble()) {
|
||||
manualControlCommand->getField("Roll")->setDouble(constrain(roll));
|
||||
update = true;
|
||||
}
|
||||
if (throttle != obj->getField("Throttle")->getDouble()) {
|
||||
obj->getField("Throttle")->setDouble(constrain(throttle));
|
||||
obj->getField("Thrust")->setDouble(constrain(throttle));
|
||||
if (throttle != manualControlCommand->getField("Throttle")->getDouble()) {
|
||||
manualControlCommand->getField("Throttle")->setDouble(constrain(throttle));
|
||||
manualControlCommand->getField("Thrust")->setDouble(constrain(throttle));
|
||||
update = true;
|
||||
}
|
||||
if (update) {
|
||||
obj->getField("Connected")->setValue("True");
|
||||
obj->updated();
|
||||
manualControlCommand->getField("Connected")->setValue("True");
|
||||
manualControlCommand->updated();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -339,7 +339,7 @@ void GCSControlGadget::buttonState(ButtonNumber number, bool pressed)
|
||||
if ((buttonSettings[number].ActionID > 0) && (buttonSettings[number].FunctionID > 0) && (pressed)) { // this button is configured
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
UAVDataObject *manualControlCommand = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
bool currentCGSControl = ((GCSControlGadgetWidget *)m_widget)->getGCSControl();
|
||||
bool currentUDPControl = ((GCSControlGadgetWidget *)m_widget)->getUDPControl();
|
||||
|
||||
@ -348,17 +348,17 @@ void GCSControlGadget::buttonState(ButtonNumber number, bool pressed)
|
||||
if (currentCGSControl) {
|
||||
switch (buttonSettings[number].FunctionID) {
|
||||
case 1: // Roll
|
||||
obj->getField("Roll")->setValue(bound(obj->getField("Roll")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Roll")->setValue(bound(manualControlCommand->getField("Roll")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
break;
|
||||
case 2: // Pitch
|
||||
obj->getField("Pitch")->setValue(bound(obj->getField("Pitch")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Pitch")->setValue(bound(manualControlCommand->getField("Pitch")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
break;
|
||||
case 3: // Yaw
|
||||
obj->getField("Yaw")->setValue(wrap(obj->getField("Yaw")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Yaw")->setValue(wrap(manualControlCommand->getField("Yaw")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
break;
|
||||
case 4: // Throttle
|
||||
obj->getField("Throttle")->setValue(bound(obj->getField("Throttle")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
obj->getField("Thrust")->setValue(bound(obj->getField("Thrust")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Throttle")->setValue(bound(manualControlCommand->getField("Throttle")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Thrust")->setValue(bound(manualControlCommand->getField("Thrust")->getValue().toDouble() + buttonSettings[number].Amount));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -367,17 +367,17 @@ void GCSControlGadget::buttonState(ButtonNumber number, bool pressed)
|
||||
if (currentCGSControl) {
|
||||
switch (buttonSettings[number].FunctionID) {
|
||||
case 1: // Roll
|
||||
obj->getField("Roll")->setValue(bound(obj->getField("Roll")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Roll")->setValue(bound(manualControlCommand->getField("Roll")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
break;
|
||||
case 2: // Pitch
|
||||
obj->getField("Pitch")->setValue(bound(obj->getField("Pitch")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Pitch")->setValue(bound(manualControlCommand->getField("Pitch")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
break;
|
||||
case 3: // Yaw
|
||||
obj->getField("Yaw")->setValue(wrap(obj->getField("Yaw")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Yaw")->setValue(wrap(manualControlCommand->getField("Yaw")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
break;
|
||||
case 4: // Throttle
|
||||
obj->getField("Throttle")->setValue(bound(obj->getField("Throttle")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
obj->getField("Thrust")->setValue(bound(obj->getField("Thrust")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Throttle")->setValue(bound(manualControlCommand->getField("Throttle")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
manualControlCommand->getField("Thrust")->setValue(bound(manualControlCommand->getField("Thrust")->getValue().toDouble() - buttonSettings[number].Amount));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -409,8 +409,8 @@ void GCSControlGadget::buttonState(ButtonNumber number, bool pressed)
|
||||
break;
|
||||
}
|
||||
|
||||
obj->getField("Connected")->setValue("True");
|
||||
obj->updated();
|
||||
manualControlCommand->getField("Connected")->setValue("True");
|
||||
manualControlCommand->updated();
|
||||
}
|
||||
// buttonSettings[number].ActionID NIDT
|
||||
// buttonSettings[number].FunctionID -RPYTAC
|
||||
|
@ -48,8 +48,8 @@ GCSControlGadgetWidget::GCSControlGadgetWidget(QWidget *parent) : QLabel(parent)
|
||||
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
UAVObject::Metadata mdata = obj->getMetadata();
|
||||
UAVDataObject *manualControlCommand = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
UAVObject::Metadata mdata = manualControlCommand->getMetadata();
|
||||
m_gcscontrol->checkBoxGcsControl->setChecked(UAVObject::GetFlightAccess(mdata) == UAVObject::ACCESS_READONLY);
|
||||
|
||||
// Set up the drop down box for the flightmode
|
||||
@ -73,7 +73,7 @@ GCSControlGadgetWidget::GCSControlGadgetWidget(QWidget *parent) : QLabel(parent)
|
||||
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(obj, SIGNAL(objectUpdated(UAVObject *)), this, SLOT(mccChanged(UAVObject *)));
|
||||
connect(manualControlCommand, SIGNAL(objectUpdated(UAVObject *)), this, SLOT(mccChanged(UAVObject *)));
|
||||
|
||||
leftX = 0;
|
||||
leftY = 0;
|
||||
@ -122,10 +122,10 @@ void GCSControlGadgetWidget::toggleControl(int state)
|
||||
{
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
UAVDataObject *obj2 = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("AccessoryDesired"), 0));
|
||||
UAVDataObject *manualControlCommand = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
UAVDataObject *accessoryDesired = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("AccessoryDesired"), 0));
|
||||
|
||||
UAVObject::Metadata mdata = obj->getMetadata();
|
||||
UAVObject::Metadata mdata = manualControlCommand->getMetadata();
|
||||
|
||||
if (state) {
|
||||
mccInitialData = mdata;
|
||||
@ -140,29 +140,27 @@ void GCSControlGadgetWidget::toggleControl(int state)
|
||||
toggleUDPControl(false);
|
||||
m_gcscontrol->checkBoxUDPControl->setEnabled(false);
|
||||
}
|
||||
obj->setMetadata(mdata);
|
||||
obj2->setMetadata(mdata);
|
||||
manualControlCommand->setMetadata(mdata);
|
||||
accessoryDesired->setMetadata(mdata);
|
||||
}
|
||||
|
||||
void GCSControlGadgetWidget::toggleArmed(int state)
|
||||
{
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("AccessoryDesired"), 0));
|
||||
UAVDataObject *accessoryDesired = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("AccessoryDesired"), 0));
|
||||
|
||||
if (state) {
|
||||
obj->getField("AccessoryVal")->setValue(1);
|
||||
accessoryDesired->getField("AccessoryVal")->setValue(1);
|
||||
} else {
|
||||
obj->getField("AccessoryVal")->setValue(-1);
|
||||
accessoryDesired->getField("AccessoryVal")->setValue(-1);
|
||||
}
|
||||
obj->updated();
|
||||
accessoryDesired->updated();
|
||||
}
|
||||
|
||||
void GCSControlGadgetWidget::mccChanged(UAVObject *obj)
|
||||
void GCSControlGadgetWidget::mccChanged(UAVObject *manualControlCommand)
|
||||
{
|
||||
Q_UNUSED(obj);
|
||||
|
||||
m_gcscontrol->comboBoxFlightMode->setCurrentIndex(obj->getField("FlightModeSwitchPosition")->getValue().toInt());
|
||||
m_gcscontrol->comboBoxFlightMode->setCurrentIndex(manualControlCommand->getField("FlightModeSwitchPosition")->getValue().toInt());
|
||||
}
|
||||
|
||||
void GCSControlGadgetWidget::toggleUDPControl(int state)
|
||||
@ -181,10 +179,10 @@ void GCSControlGadgetWidget::selectFlightMode(int state)
|
||||
{
|
||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
||||
UAVDataObject *obj = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
UAVDataObject *manualControlCommand = dynamic_cast<UAVDataObject *>(objManager->getObject(QString("ManualControlCommand")));
|
||||
|
||||
obj->getField("FlightModeSwitchPosition")->setValue(state);
|
||||
obj->updated();
|
||||
manualControlCommand->getField("FlightModeSwitchPosition")->setValue(state);
|
||||
manualControlCommand->updated();
|
||||
}
|
||||
|
||||
void GCSControlGadgetWidget::setGCSControl(bool newState)
|
||||
|
Loading…
Reference in New Issue
Block a user