Ejemplo n.º 1
0
t_Open9xArmExpoData_v210::operator ExpoData ()
{
  ExpoData c9x;
  c9x.mode = mode;
  c9x.chn = chn;

  if (expo!=0 && curve!=0) {
    EEPROMWarnings.push_back(::QObject::tr("Simultaneous usage of expo and curves is no longer supported"));
  }
  else {
    if (curve == 0) {
      c9x.curve = CurveReference(CurveReference::CURVE_REF_EXPO, expo);
    }
    else {
      // TODO
    }
  }
  c9x.swtch = open9xArmToSwitch(swtch);
  if (phase<0) {
    c9x.phases= 1 << (-phase -1);
  }
  else if (phase==0) {
    c9x.phases=0;
  }
  else {
    c9x.phases=63;
    c9x.phases &= ~(1 << (phase -1));
  }  
  c9x.weight = weight;
  getEEPROMZString(c9x.name, name, sizeof(name));
  return c9x;
}
Ejemplo n.º 2
0
t_Open9xExpoData_v201::operator ExpoData ()
{
  ExpoData c9x;
  c9x.mode = mode;
  c9x.chn = chn;
  if (expo!=0 && curve!=0) {
    EEPROMWarnings += ::QObject::tr("Simultaneous usage of expo and curves is no longer supported in OpenTX") + "\n";
  }
  else {
    if (curve == 0) {
      c9x.curve = CurveReference(CurveReference::CURVE_REF_EXPO, expo);
    }
    else {
      // TODO
    }
  }
  c9x.swtch = open9xStockToSwitch(swtch);
  if (negPhase) {
    c9x.phases= 1 << (phase -1);
  }
  else if (phase==0) {
    c9x.phases=0;
  }
  else {
    c9x.phases=63;
    c9x.phases &= ~(1 << (phase -1));
  }  
  c9x.weight = weight;
  return c9x;
}
Ejemplo n.º 3
0
t_Open9xArmMixData_v212::operator MixData ()
{
  MixData c9x;
  if (srcRaw) {
    c9x.destCh = destCh+1;
    if (srcRaw == 0) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_NONE);
    }
    else if (srcRaw <= 7) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_STICK, srcRaw-1);
    }
    else if (srcRaw <= 8) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_ROTARY_ENCODER, srcRaw-8);
    }
    else if (srcRaw <= 12) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_TRIM, srcRaw-9);
    }
    else if (srcRaw == 13) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_MAX);
    }
    else if (srcRaw == 14) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, 0);
    }
    else if (srcRaw <= 14+9+O9X_ARM_NUM_CSW) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, srcRaw-14);
    }
    else if (srcRaw <= 14+9+O9X_ARM_NUM_CSW+NUM_CYC) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-15-9-O9X_ARM_NUM_CSW);
    }
    else if (srcRaw <= 14+9+O9X_ARM_NUM_CSW+NUM_CYC+8) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-15-9-O9X_ARM_NUM_CSW-NUM_CYC);
    }
    else {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-15-9-O9X_ARM_NUM_CSW-NUM_CYC-8);
    }
    c9x.weight = weight;

    if (curveMode==0) {
      c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, curveParam);
    }
    else {
      // TODO
    }

    c9x.swtch = open9xArmToSwitch(swtch);
    c9x.delayUp = delayUp;
    c9x.delayDown = delayDown;
    c9x.speedUp = speedUp;
    c9x.speedDown = speedDown;
    c9x.carryTrim = carryTrim;
    c9x.noExpo = noExpo;
    c9x.mltpx = (MltpxValue)mltpx;
    c9x.mixWarn = mixWarn;
    c9x.phases = phases;
    c9x.sOffset = sOffset;
    getEEPROMZString(c9x.name, name, sizeof(name));
  }
  return c9x;
}
Ejemplo n.º 4
0
t_Open9xMixData_v211::operator MixData ()
{
  MixData c9x;

  if (srcRaw) {
    c9x.destCh = destCh+1;
    c9x.swtch = open9xStockToSwitch(swtch);

    if (srcRaw == 0) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_NONE);
    }
    else if (srcRaw <= 7) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_STICK, srcRaw-1);
    }
    else if (srcRaw <= 11) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_TRIM, srcRaw-8);
    }
    else if (srcRaw == 12) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_MAX);
    }
    else if (srcRaw == 13) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, 0);
    }
    else if (srcRaw <= 34) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, srcRaw-13);
    }
    else if (srcRaw <= 37) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-35);
    }
    else if (srcRaw <= 45) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-38);
    }
    else {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-46);
    }
    c9x.weight = weight;

    if (curveMode==0) {
      c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, curveParam);
    }
    else {
      // TODO c9x.curve = curve;
    }    

    c9x.delayUp = delayUp;
    c9x.delayDown = delayDown;
    c9x.speedUp = speedUp;
    c9x.speedDown = speedDown;
    c9x.carryTrim = carryTrim;
    c9x.noExpo = noExpo;
    c9x.mltpx = (MltpxValue)mltpx;
    c9x.mixWarn = mixWarn;
    c9x.phases = phases;
    c9x.sOffset = sOffset;
  }
  return c9x;
}
Ejemplo n.º 5
0
Channels::Channels(QWidget * parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware):
  ModelPanel(parent, model, generalSettings, firmware)
{
  QGridLayout * gridLayout = new QGridLayout(this);
  bool minimize = false;

  int col = 1;
  if (firmware->getCapability(ChannelsName)) {
    minimize=true;
    addLabel(gridLayout, tr("Name"), col++);
  }
  addLabel(gridLayout, tr("Subtrim"), col++, minimize);
  addLabel(gridLayout, tr("Min"), col++, minimize);
  addLabel(gridLayout, tr("Max"), col++, minimize);
  addLabel(gridLayout, tr("Direction"), col++, minimize);
  if (IS_TARANIS(GetEepromInterface()->getBoard()))
    addLabel(gridLayout, tr("Curve"), col++, minimize);
  if (firmware->getCapability(PPMCenter))
    addLabel(gridLayout, tr("PPM Center"), col++, minimize);
  if (firmware->getCapability(SYMLimits))
    addLabel(gridLayout, tr("Linear Subtrim"), col++, true);

  for (int i=0; i<firmware->getCapability(Outputs); i++) {
    col = 0;

    // Channel label
    QLabel *label = new QLabel(this);
    label->setText(tr("Channel %1").arg(i+1));
    label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
    gridLayout->addWidget(label, i+1, col++, 1, 1);

    // Channel name
    int nameLen = firmware->getCapability(ChannelsName);
    if (nameLen > 0) {
      QLineEdit * name = new QLineEdit(this);
      name->setProperty("index", i);
      name->setMaxLength(nameLen);
      QRegExp rx(CHAR_FOR_NAMES_REGEX);
      name->setValidator(new QRegExpValidator(rx, this));
      name->setText(model.limitData[i].name);
      connect(name, SIGNAL(editingFinished()), this, SLOT(nameEdited()));
      gridLayout->addWidget(name, i+1, col++, 1, 1);
    }

    // Channel offset
    limitsGroups << new LimitsGroup(firmware, gridLayout, i+1, col++, model.limitData[i].offset, -1000, 1000, 0);

    // Channel min
    limitsGroups << new LimitsGroup(firmware, gridLayout, i+1, col++, model.limitData[i].min, -model.getChannelsMax()*10, 0, -1000);

    // Channel max
    limitsGroups << new LimitsGroup(firmware, gridLayout, i+1, col++, model.limitData[i].max, 0, model.getChannelsMax()*10, 1000);

    // Channel inversion
    QComboBox * invCB = new QComboBox(this);
    invCB->insertItems(0, QStringList() << tr("---") << tr("INV"));
    invCB->setProperty("index", i);
    invCB->setCurrentIndex((model.limitData[i].revert) ? 1 : 0);
    connect(invCB, SIGNAL(currentIndexChanged(int)), this, SLOT(invEdited()));
    gridLayout->addWidget(invCB, i+1, col++, 1, 1);

    // Curve
    if (IS_TARANIS(GetEepromInterface()->getBoard())) {
      QComboBox * curveCB = new QComboBox(this);
      curveCB->setProperty("index", i);
      int numcurves = firmware->getCapability(NumCurves);
      for (int j=-numcurves; j<=numcurves; j++) {
        curveCB->addItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, j).toString(), j);
      }
      curveCB->setCurrentIndex(model.limitData[i].curve.value+numcurves);
      connect(curveCB, SIGNAL(currentIndexChanged(int)), this, SLOT(curveEdited()));
      gridLayout->addWidget(curveCB, i+1, col++, 1, 1);
    }

    // PPM center
    if (firmware->getCapability(PPMCenter)) {
      QSpinBox * center = new QSpinBox(this);
      center->setProperty("index", i);
      center->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
      center->setSuffix("us");
      center->setMinimum(1375);
      center->setMaximum(1625);
      center->setValue(1500);
      center->setValue(model.limitData[i].ppmCenter + 1500);
      connect(center, SIGNAL(editingFinished()), this, SLOT(ppmcenterEdited()));
      gridLayout->addWidget(center, i+1, col++, 1, 1);
    }

    // Symetrical limits
    if (firmware->getCapability(SYMLimits)) {
      QCheckBox * symlimits = new QCheckBox(this);
      symlimits->setProperty("index", i);
      symlimits->setChecked(model.limitData[i].symetrical);
      connect(symlimits, SIGNAL(toggled(bool)), this, SLOT(symlimitsEdited()));
      gridLayout->addWidget(symlimits, i+1, col++, 1, 1);
    }
  }
Ejemplo n.º 6
0
t_Open9xArmMixData_v210::operator MixData ()
{
  MixData c9x;
  if (srcRaw) {
    c9x.destCh = destCh+1;
    if (srcRaw == 0) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_NONE);
    }
    else if (srcRaw <= 7) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_STICK, srcRaw-1);
    }
    else if (srcRaw <= 11) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_TRIM, srcRaw-8);
    }
    else if (srcRaw == 12) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_MAX);
    }
    else if (srcRaw == 13) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, 0);
    }
    else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, srcRaw-13);
    }
    else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-14-9-O9X_ARM_NUM_CSW);
    }
    else if (srcRaw <= 13+9+O9X_ARM_NUM_CSW+NUM_CYC+8) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC);
    }
    else {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-8);
    }
    c9x.weight = weight;

    if (differential) {
      c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2);
    }
    else {
      // TODO c9x.curve = curve;
    }

    c9x.swtch = open9xArmToSwitch(swtch);
    c9x.delayUp = delayUp;
    c9x.delayDown = delayDown;
    c9x.speedUp = speedUp;
    c9x.speedDown = speedDown;
    c9x.carryTrim = carryTrim;
    c9x.mltpx = (MltpxValue)mltpx;
    c9x.mixWarn = mixWarn;

    if (phase<0) {
      c9x.phases= 1 << (-phase -1);
    }
    else if (phase==0) {
      c9x.phases=0;
    }
    else {
      c9x.phases=511;
      c9x.phases &= ~(1 << (phase -1));
    }

    c9x.sOffset = sOffset;
    getEEPROMZString(c9x.name, name, sizeof(name));
  }
  return c9x;
}
Ejemplo n.º 7
0
t_Open9xArmMixData_v208::operator MixData ()
{
    MixData c9x;
    if (srcRaw) {
        c9x.destCh = destCh+1;
        if (srcRaw == 0) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_NONE);
        }
        else if (srcRaw <= 7) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_STICK, srcRaw-1);
        }
        else if (srcRaw == 8) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_MAX);
        }
        else if (srcRaw == 9) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, 0);
        }
        else if (srcRaw <= 9+9+32) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, srcRaw-9);
        }
        else if (srcRaw <= 9+9+32+NUM_CYC) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-10-9-32);
        }
        else if (srcRaw <= 9+9+32+NUM_CYC+8) {
            c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-10-9-32-NUM_CYC);
        }
        else {
            c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-10-9-32-NUM_CYC-8);
        }
        c9x.weight = weight;
        c9x.swtch = open9xArmToSwitch(swtch);

        if (differential) {
            c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2);
        }
        else {
            // TODO c9x.curve = curve;
        }

        c9x.delayUp = delayUp;
        c9x.delayDown = delayDown;
        c9x.speedUp = speedUp;
        c9x.speedDown = speedDown;
        c9x.carryTrim = carryTrim;
        c9x.mltpx = (MltpxValue)mltpx;
        c9x.mixWarn = mixWarn;

        if (phase<0) {
            c9x.flightModes= 1 << (-phase -1);
        }
        else if (phase==0) {
            c9x.flightModes=0;
        }
        else {
            c9x.flightModes=511;
            c9x.flightModes &= ~(1 << (phase -1));
        }

        c9x.sOffset = sOffset;
    }
    return c9x;
}
Ejemplo n.º 8
0
t_Open9xMixData_v205::operator MixData ()
{
  MixData c9x;

  if (srcRaw) {
    c9x.destCh = destCh+1;
    c9x.swtch = open9xStockToSwitch(swtch);

    if (srcRaw == 0) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_NONE);
    }
    else if (srcRaw <= 7) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_STICK, srcRaw-1);
    }
    else if (srcRaw == 8) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_MAX);
    }
    else if (srcRaw == 9) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, 0);
    }
    else if (srcRaw <= 30) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, srcRaw-9);
    }
    else if (srcRaw <= 33) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-31);
    }
    else if (srcRaw <= 41) {
      c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-34);
    }
    else {
      c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-42);
    }
    c9x.weight = weight;

    if (differential) {
      c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2);
    }
    else {
      // TODO c9x.curve = curve;
    }

    c9x.delayUp = delayUp;
    c9x.delayDown = delayDown;
    c9x.speedUp = speedUp;
    c9x.speedDown = speedDown;
    c9x.carryTrim = carryTrim;
    c9x.mltpx = (MltpxValue)mltpx;
    c9x.mixWarn = mixWarn;

    if (phase<0) {
      c9x.phases= 1 << (-phase -1);
    }
    else if (phase==0) {
      c9x.phases=0;
    }
    else {
      c9x.phases=63;
      c9x.phases &= ~(1 << (phase -1));
    }
    c9x.sOffset = sOffset;
  }
  return c9x;
}