6#include <QtCore/QObject>
7#include <QtCore/QString>
92 QMap<int, QList<RuleItem>>
items;
105 : QObject(parent), _fact(
fact), _label(label), _advanced(
advanced) {}
111 const QString& label()
const {
return _label; }
116 Fact* _fact{
nullptr};
117 const QString _label;
118 const bool _advanced;
121class ChannelConfigInstance;
138 const QString& label()
const {
return _parameter.
param.
label; }
163 void instanceVisibleChanged();
167 const bool _isActuatorTypeConfig;
169 QList<ChannelConfigInstance*> _instances;
192 : QObject(parent),
_fact(
fact), _config(config) {}
203 bool visible()
const {
return _visibleRule && _visibleAxis; }
228 int _ruleApplyIdentifierIdx{-1};
230 bool _visibleRule{
true};
231 bool _enabledRule{
true};
233 bool _visibleAxis{
true};
255 void setFactFromAxes(
bool keepVisible =
false);
256 void setAxesFromFact();
257 void axisVisibleChanged();
258 void axisEnableChanged();
262 bool _ignoreChange{
false};
276 const QString& label()
const {
return _label; }
287 void applyRule(
bool noConstraints =
false);
294 const QString _label;
295 const int _actuatorFunction;
296 const int _paramIndex;
297 const int _actuatorTypeIndex;
301 int _ruleSelectIdentifierIdx{-1};
302 int _currentSelectIdentifierValue{};
303 bool _applyingRule{
false};
311 : QObject(parent), _group(
group) {}
319 const QString& label()
const {
return _group.
groupLabel; }
354 : _parameterManager(parameterManager) {}
363 operator QString()
const {
return label; }
375 QString
title()
const;
396 const QMap<int, OutputFunction>&
functions()
const {
return _functions; }
412 Fact* getFact(
const QString& paramName);
413 void subscribeFact(
Fact* fact,
bool geometry=
false);
414 void unsubscribeFacts();
416 QSet<Fact*> _subscribedFacts{};
417 QSet<Fact*> _subscribedFactsGeometry{};
421 QMap<int, OutputFunction> _functions;
423 QList<Condition> _mixerConditions;
424 int _selectedMixer{-1};
427 QMap<int, QString> _functionsSpecificLabel;
A Fact is used to hold a single value within the system.
void allInstancesInitialized(QmlObjectListModel *configInstances) override
ChannelConfigInstanceVirtualAxis(QObject *parent, ChannelConfig &config)
int ruleApplyIdentifierIdx() const
void setVisibleAxis(bool visible)
virtual void allInstancesInitialized(QmlObjectListModel *configInstances)
ChannelConfigInstance(QObject *parent, Fact *fact, ChannelConfig &config)
void setRuleApplyIdentifierIdx(int idx)
ChannelConfig *config READ channelConfig CONSTANT(Fact *fact READ fact CONSTANT) 1(bool visible READ visible NOTIFY visibleChanged) 1(bool enabled READ enabled NOTIFY enabledChanged) ChannelConfig *channelConfig() const
void setEnabledRule(bool enabled)
void setVisibleRule(bool visible)
ChannelConfigInstance * instantiate(int paramIndex, int actuatorTypeIndex, ParameterManager *parameterManager, std::function< void(Function, Fact *)> factAddedCb) override
ChannelConfigVirtualAxis(QObject *parent, const MixerParameter ¶meter)
ChannelConfig(QObject *parent, const MixerParameter ¶meter, bool isActuatorTypeConfig=false)
bool isActuatorTypeConfig() const
const MixerParameter & config() const
void channelInstanceCreated(ChannelConfigInstance *instance)
Function function() const
const QList< float > & fixedValues() const
QString label READ label CONSTANT(bool visible READ visible NOTIFY visibleChanged) 1(bool advanced READ advanced CONSTANT) const QString &label() const
Parameter::DisplayOption displayOption() const
const QString & identifier() const
virtual ChannelConfigInstance * instantiate(int paramIndex, int actuatorTypeIndex, ParameterManager *parameterManager, std::function< void(Function, Fact *)> factAddedCb)
QString label READ label CONSTANT(Fact *fact READ fact CONSTANT) 1(bool advanced READ advanced CONSTANT) const QString &label() const
ConfigParameter(QObject *parent, Fact *fact, const QString &label, bool advanced)
int actuatorFunction() const
bool getGeometry(const ActuatorTypes &actuatorTypes, const MixerOption::ActuatorGroup &group, ActuatorGeometry &geometry) const
void applyRule(bool noConstraints=false)
Fact * getFact(Function function) const
QString label READ label CONSTANT(QmlObjectListModel *configInstances READ configInstances NOTIFY configInstancesChanged) const QString &label() const
void configInstancesChanged()
QmlObjectListModel * configInstances()
QmlObjectListModel * channelConfigs()
const MixerOption::ActuatorGroup & group() const
void setCountParam(ConfigParameter *param)
QString label READ label CONSTANT(QmlObjectListModel *channels READ channels NOTIFY channelsChanged) 1(QmlObjectListModel *channelConfigs READ channelConfigs NOTIFY channelConfigsChanged) 1(ConfigParameter *countParam READ countParam CONSTANT) 1(QmlObjectListModel *configParams READ configParams CONSTANT) const QString &label() const
ConfigParameter * countParam() const
void addConfigParam(ConfigParameter *param)
void addChannelConfig(ChannelConfig *channelConfig)
QmlObjectListModel * channels()
void channelConfigsChanged()
void addChannel(MixerChannel *channel)
QmlObjectListModel * configParams()
MixerConfigGroup(QObject *parent, const MixerOption::ActuatorGroup &group)
const ActuatorTypes & actuatorTypes() const
Mixers(ParameterManager *parameterManager)
QString configuredType() const
const QMap< int, OutputFunction > & functions() const
void reset(const ActuatorTypes &actuatorTypes, const MixerOptions &mixerOptions, const QMap< int, OutputFunction > &functions, const Rules &rules)
QString getSpecificLabelForFunction(int function) const
void geometryParamChanged()
QSet< int > getFunctions(bool requiredOnly) const
@ SpinDirection
CCW = true or 1.
QList< MixerOption > MixerOptions
QMap< QString, ActuatorType > ActuatorTypes
key is the group name, where 'DEFAULT' is the default group
QList< Parameter > perItemParams
QList< Parameter > parameters
QList< MixerParameter > perItemParameters
QString count
param to configure the amount. If empty, fixedCount is non-zero
QStringList itemLabelPrefix
size = either fixedCount or 1 or 0 items
bool required
if true, actuator has to be configured for a valid setup
QList< ActuatorGroup > actuators
QString type
Mixer type, e.g. multirotor.
QList< float > values
fixed values if not configurable (param.name == "")
QString identifier
optional identifier for rules
bool excludeFromActuatorTesting
QList< QString > applyIdentifiers
QMap< int, QList< RuleItem > > items
DisplayOption displayOption
int indexOffset
extra offset to the ${i} index, or bitset shift offset
bool advanced
whether this should only be shown as advanced option