/** * @brief ConfigOutputWidget::assignOutputChannels Sets the output channel form text and min/max values * @param actuatorSettings UAVO input */ void ConfigOutputWidget::assignOutputChannels(UAVObject *obj) { Q_UNUSED(obj); // Get UAVO ActuatorSettings *actuatorSettings = ActuatorSettings::GetInstance(getObjectManager()); ActuatorSettings::DataFields actuatorSettingsData = actuatorSettings->getData(); // Get channel descriptions QStringList ChannelDesc = ConfigVehicleTypeWidget::getChannelDescriptions(); // Find all output forms in the tab, and set the text and min/max values QList<OutputChannelForm*> outputChannelForms = findChildren<OutputChannelForm*>(); foreach(OutputChannelForm *outputChannelForm, outputChannelForms) { outputChannelForm->setAssignment(ChannelDesc[outputChannelForm->index()]); // init min,max,neutral quint32 minValue = actuatorSettingsData.ChannelMin[outputChannelForm->index()]; quint32 maxValue = actuatorSettingsData.ChannelMax[outputChannelForm->index()]; outputChannelForm->setMinmax(minValue, maxValue); quint32 neutral = actuatorSettingsData.ChannelNeutral[outputChannelForm->index()]; outputChannelForm->setNeutral(neutral); // init type quint16 type = actuatorSettingsData.ChannelType[outputChannelForm->index()]; outputChannelForm->setType(type); }
void VehicleConfigurationHelper::applyActuatorConfiguration() { ActuatorSettings *actSettings = ActuatorSettings::GetInstance(m_uavoManager); switch (m_configSource->getVehicleType()) { case VehicleConfigurationSource::VEHICLE_MULTI: { ActuatorSettings::DataFields data = actSettings->getData(); QList<actuatorChannelSettings> actuatorSettings = m_configSource->getActuatorSettings(); for (quint16 i = 0; i < ActuatorSettings::CHANNELMAX_NUMELEM; i++) { data.ChannelType[i] = ActuatorSettings::CHANNELTYPE_PWM; data.ChannelAddr[i] = i; data.ChannelMin[i] = actuatorSettings[i].channelMin; data.ChannelNeutral[i] = actuatorSettings[i].channelNeutral; data.ChannelMax[i] = actuatorSettings[i].channelMax; } data.MotorsSpinWhileArmed = ActuatorSettings::MOTORSSPINWHILEARMED_FALSE; for (quint16 i = 0; i < ActuatorSettings::CHANNELUPDATEFREQ_NUMELEM; i++) { data.ChannelUpdateFreq[i] = LEGACY_ESC_FREQUENCE; } qint16 updateFrequence = LEGACY_ESC_FREQUENCE; switch (m_configSource->getESCType()) { case VehicleConfigurationSource::ESC_LEGACY: updateFrequence = LEGACY_ESC_FREQUENCE; break; case VehicleConfigurationSource::ESC_RAPID: updateFrequence = RAPID_ESC_FREQUENCE; break; default: break; } // TOOD: vehicle specific sets of update frequencies switch (m_configSource->getVehicleSubType()) { case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y: data.ChannelUpdateFreq[0] = updateFrequence; data.ChannelUpdateFreq[1] = updateFrequence; break; case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X: case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS: data.ChannelUpdateFreq[0] = updateFrequence; data.ChannelUpdateFreq[1] = updateFrequence; data.ChannelUpdateFreq[2] = updateFrequence; break; case VehicleConfigurationSource::MULTI_ROTOR_HEXA: case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y: case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H: case VehicleConfigurationSource::MULTI_ROTOR_OCTO: case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_X: case VehicleConfigurationSource::MULTI_ROTOR_OCTO_COAX_PLUS: case VehicleConfigurationSource::MULTI_ROTOR_OCTO_V: data.ChannelUpdateFreq[0] = updateFrequence; data.ChannelUpdateFreq[1] = updateFrequence; data.ChannelUpdateFreq[2] = updateFrequence; data.ChannelUpdateFreq[3] = updateFrequence; break; default: break; } actSettings->setData(data); addModifiedObject(actSettings, tr("Writing actuator settings")); break; } case VehicleConfigurationSource::VEHICLE_FIXEDWING: case VehicleConfigurationSource::VEHICLE_HELI: case VehicleConfigurationSource::VEHICLE_SURFACE: // TODO: Implement settings for other vehicle types? break; default: break; } }