RawSwitch getErSky9xTimerMode(int mode) { if (mode<4) return RawSwitch(SWITCH_TYPE_TIMER_MODE, mode); else return RawSwitch(); }
RawSwitch gruvin9xToSwitch(int8_t sw) { if (sw == 0) return RawSwitch(SWITCH_TYPE_NONE); else if (sw <= 9) return RawSwitch(SWITCH_TYPE_SWITCH, sw); else return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-9 : sw+9); }
t_Open9xMixData_v203::operator MixData () { MixData c9x; c9x.destCh = destCh; c9x.weight = weight; 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) { if (swtch < 0) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, -swtch); c9x.weight = -weight; } else if (swtch > 0) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, swtch); } else { c9x.srcRaw = RawSource(SOURCE_TYPE_MAX); } if (mltpx != MLTPX_REP) c9x.swtch = RawSwitch(SWITCH_TYPE_NONE); } else if (srcRaw <= 12) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-10); } else if (srcRaw <= 20) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-13); } else { c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } // 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; }
void MixerDialog::valuesChanged() { if (!lock) { lock = true; QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; md->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); if (firmware->getCapability(HasNoExpo)) { bool drVisible = (md->srcRaw.type == SOURCE_TYPE_STICK && md->srcRaw.index < NUM_STICKS); ui->MixDR_CB->setEnabled(drVisible); ui->label_MixDR->setEnabled(drVisible); } md->carryTrim = -(ui->trimCB->currentIndex()-1); md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1; md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); md->mixWarn = ui->warningCB->currentIndex(); md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex(); int scale = firmware->getCapability(SlowScale); md->delayDown = round(ui->delayDownSB->value()*scale); md->delayUp = round(ui->delayUpSB->value()*scale); md->speedDown = round(ui->slowDownSB->value()*scale); md->speedUp = round(ui->slowUpSB->value()*scale); strcpy(md->name, ui->mixerName->text().toAscii()); md->flightModes = 0; for (int i=8; i>=0 ; i--) { if (!cb_fp[i]->checkState()) { md->flightModes++; } md->flightModes <<= 1; } md->flightModes >>= 1; lock = false; }
void WizMix::maxMixSwitch(char *name, MixData &mix, int channel, int sw, int weight) { strncpy(mix.name, name, MIXDATA_NAME_LEN); mix.name[MIXDATA_NAME_LEN] = '\0'; mix.destCh = channel; mix.srcRaw = RawSource(SOURCE_TYPE_MAX); mix.swtch = RawSwitch(SWITCH_TYPE_SWITCH, sw); mix.weight = weight; }
void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; RawSource srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); if (ed->srcRaw != srcRaw) { ed->srcRaw = srcRaw; updateScale(); } RawSourceRange range = srcRaw.getRange(&model, generalSettings); ed->scale = round(float(ui->scale->value()) / range.step); ed->carryTrim = 1 - ui->trimCB->currentIndex(); ed->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); ed->mode = ui->sideCB->currentIndex() + 1; strcpy(ed->name, ui->lineName->text().toAscii().data()); if (firmware->getCapability(VirtualInputs)) { inputName = ui->inputName->text(); } ed->flightModes = 0; for (int i=8; i>=0 ; i--) { if (!cb_fp[i]->checkState()) { ed->flightModes++; } ed->flightModes <<= 1; } ed->flightModes >>= 1; if (firmware->getCapability(FlightModes)) { int zeros = 0; int ones = 0; int phtemp = ed->flightModes; for (int i=0; i<firmware->getCapability(FlightModes); i++) { if (phtemp & 1) { ones++; } else { zeros++; } phtemp >>= 1; } if (zeros == 1) { phtemp=ed->flightModes; for (int i=0; i<firmware->getCapability(FlightModes); i++) { if ((phtemp & 1) == 0) { break; } phtemp >>= 1; } }
RawSwitch getEr9xTimerMode(int mode) { /* if (mode <= -33) return TimerMode(TMRMODE_FIRST_NEG_SWITCH+(mode+33)); else if (mode <= -1) return TimerMode(TMRMODE_FIRST_NEG_SWITCH+(mode+1)); else if (mode < 16) return TimerMode(mode); else if (mode < 16+21) return TimerMode(TMRMODE_FIRST_SWITCH+(mode-16)); else return TimerMode(TMRMODE_FIRST_SWITCH+(mode-16-21)); */ return RawSwitch(); }
RawSwitch open9xArmToSwitch(int8_t sw) { uint8_t swa = abs(sw); if (swa == 0) return RawSwitch(SWITCH_TYPE_NONE); else if (swa <= 9) return RawSwitch(SWITCH_TYPE_SWITCH, sw); else if (swa <= 9+32) return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-9 : sw+9); else if (sw == 42) return RawSwitch(SWITCH_TYPE_ON); else if (sw == 84) return RawSwitch(SWITCH_TYPE_ON); else if (sw == -42) return RawSwitch(SWITCH_TYPE_OFF); else if (swa <= 42+9) return RawSwitch(SWITCH_TYPE_SWITCH, sw > 0 ? sw-42 : sw+42); else return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-42-9 : sw+42+9); }
RawSwitch open9xStockToSwitch(int8_t sw) { uint8_t swa = abs(sw); if (swa == 0) return RawSwitch(SWITCH_TYPE_NONE); else if (swa <= 9) return RawSwitch(SWITCH_TYPE_SWITCH, sw); else if (swa <= 21) return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-9 : sw+9); else if (sw == 22) return RawSwitch(SWITCH_TYPE_ON); else if (sw == 44) return RawSwitch(SWITCH_TYPE_ON); else if (sw == -22) return RawSwitch(SWITCH_TYPE_OFF); else if (swa <= 22+9) return RawSwitch(SWITCH_TYPE_SWITCH, sw > 0 ? sw-22 : sw+22); else return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-22-9 : sw+22+9); }
RawSwitch ersky9xToSwitch(int8_t sw) { uint8_t swa = abs(sw); if (swa == 0) return RawSwitch(SWITCH_TYPE_NONE); else if (swa <= 9) return RawSwitch(SWITCH_TYPE_SWITCH, sw); else if (swa <= 33) return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-9 : sw+9); else if (sw == 34) return RawSwitch(SWITCH_TYPE_ON); else if (sw == -34) return RawSwitch(SWITCH_TYPE_OFF); else if (swa <= 34+9) return RawSwitch(SWITCH_TYPE_SWITCH, sw > 0 ? sw-34 : sw+34); else return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-34-9 : sw+34+9); }
void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) { CustomFunctionData & cfn = functions[i]; AssignFunc func = (AssignFunc)fswtchFunc[i]->itemData(fswtchFunc[i]->currentIndex()).toInt(); unsigned int widgetsMask = 0; if (modified) { cfn.swtch = RawSwitch(fswtchSwtch[i]->itemData(fswtchSwtch[i]->currentIndex()).toInt()); cfn.func = func; cfn.enabled = fswtchEnable[i]->isChecked(); cfn.adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex(); } if (func>=FuncOverrideCH1 && func<=FuncOverrideCH32) { if (model) { int channelsMax = model->getChannelsMax(true); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setMinimum(-channelsMax); fswtchParam[i]->setMaximum(channelsMax); if (modified) { cfn.param = fswtchParam[i]->value(); } fswtchParam[i]->setValue(cfn.param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; } } else if (func==FuncLogs) { fswtchParam[i]->setDecimals(1); fswtchParam[i]->setMinimum(0); fswtchParam[i]->setMaximum(25.5); fswtchParam[i]->setSingleStep(0.1); if (modified) cfn.param = fswtchParam[i]->value()*10.0; fswtchParam[i]->setValue(cfn.param/10.0); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; } else if (func>=FuncAdjustGV1 && func<=FuncAdjustGVLast) { if (modified) cfn.adjustMode = fswtchGVmode[i]->currentIndex(); widgetsMask |= CUSTOM_FUNCTION_GV_MODE + CUSTOM_FUNCTION_ENABLE; if (cfn.adjustMode==0) { if (modified) cfn.param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); if (IS_ARM(GetEepromInterface()->getBoard())) { fswtchParam[i]->setMinimum(-500); fswtchParam[i]->setMaximum(500); } else { fswtchParam[i]->setMinimum(-125); fswtchParam[i]->setMaximum(125); } fswtchParam[i]->setValue(cfn.param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; } else { if (modified) cfn.param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], func, cfn.param, cfn.adjustMode); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } } else if (func==FuncReset) { if (modified) cfn.param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], func, cfn.param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM | CUSTOM_FUNCTION_ENABLE; } else if (func>=FuncSetTimer1 && func<=FuncSetTimer3) { if (modified) cfn.param = QTimeS(fswtchParamTime[i]->time()).seconds(); fswtchParamTime[i]->setMinimumTime(QTime(0, 0, 0)); fswtchParamTime[i]->setMaximumTime(firmware->getMaxTimerStart()); fswtchParamTime[i]->setTime(QTimeS(cfn.param)); widgetsMask |= CUSTOM_FUNCTION_TIME_PARAM + CUSTOM_FUNCTION_ENABLE; } else if (func>=FuncSetFailsafeInternalModule && func<=FuncBindExternalModule) { widgetsMask |= CUSTOM_FUNCTION_ENABLE; } else if (func==FuncVolume) { if (modified) cfn.param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], func, cfn.param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE; } else if (func==FuncPlaySound || func==FuncPlayHaptic || func==FuncPlayValue || func==FuncPlayPrompt || func==FuncPlayBoth || func==FuncBackgroundMusic) { if (func != FuncBackgroundMusic) { widgetsMask |= CUSTOM_FUNCTION_REPEAT; fswtchRepeat[i]->update(); } if (func==FuncPlayValue) { if (modified) cfn.param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], func, cfn.param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; } else if (func==FuncPlayPrompt || func==FuncPlayBoth) { if (firmware->getCapability(VoicesAsNumbers)) { fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setMinimum(0); if (func==FuncPlayPrompt) { widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT + CUSTOM_FUNCTION_GV_TOOGLE; } else { widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT; fswtchParamGV[i]->setChecked(false); } fswtchParam[i]->setMaximum(func==FuncPlayBoth ? 254 : 255); if (modified) { if (fswtchParamGV[i]->isChecked()) { fswtchParam[i]->setMinimum(1); cfn.param = std::min(fswtchParam[i]->value(),5.0)+(fswtchParamGV[i]->isChecked() ? 250 : 0); } else { cfn.param = fswtchParam[i]->value(); } } if (cfn.param>250 && (func!=FuncPlayBoth)) { fswtchParamGV[i]->setChecked(true); fswtchParam[i]->setValue(cfn.param-250); fswtchParam[i]->setMaximum(5); } else { fswtchParamGV[i]->setChecked(false); fswtchParam[i]->setValue(cfn.param); } if (cfn.param < 251) widgetsMask |= CUSTOM_FUNCTION_PLAY; } else { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { getFileComboBoxValue(fswtchParamArmT[i], cfn.paramarm, firmware->getCapability(VoicesMaxLength)); } populateFileComboBox(fswtchParamArmT[i], tracksSet, cfn.paramarm); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; } } } else if (func==FuncBackgroundMusic) { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { getFileComboBoxValue(fswtchParamArmT[i], cfn.paramarm, firmware->getCapability(VoicesMaxLength)); } populateFileComboBox(fswtchParamArmT[i], tracksSet, cfn.paramarm); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; } } else if (func==FuncPlaySound) { if (modified) cfn.param = (uint8_t)fswtchParamT[i]->currentIndex(); populateFuncParamCB(fswtchParamT[i], func, cfn.param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } else if (func==FuncPlayHaptic) { if (modified) cfn.param = (uint8_t)fswtchParamT[i]->currentIndex(); populateFuncParamCB(fswtchParamT[i], func, cfn.param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } } else if (func==FuncPlayScript) { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { getFileComboBoxValue(fswtchParamArmT[i], cfn.paramarm, 8); } populateFileComboBox(fswtchParamArmT[i], scriptsSet, cfn.paramarm); } else if (func==FuncBacklight && IS_TARANIS_PLUS(GetEepromInterface()->getBoard())) { if (modified) cfn.param = (uint8_t)fswtchBLcolor[i]->value(); fswtchBLcolor[i]->setValue(cfn.param); widgetsMask |= CUSTOM_FUNCTION_BL_COLOR; } else { if (modified) cfn.param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setValue(cfn.param); if (func <= FuncInstantTrim) { widgetsMask |= CUSTOM_FUNCTION_ENABLE; } } fswtchParam[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_NUMERIC_PARAM); fswtchParamTime[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_TIME_PARAM); fswtchParamGV[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_TOOGLE); fswtchParamT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_SOURCE_PARAM); fswtchParamArmT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_FILE_PARAM); fswtchEnable[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_ENABLE); if (widgetsMask & CUSTOM_FUNCTION_ENABLE) fswtchEnable[i]->setChecked(cfn.enabled); else fswtchEnable[i]->setChecked(false); fswtchRepeat[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_REPEAT); fswtchGVmode[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_MODE); fswtchBLcolor[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_BL_COLOR); #ifdef PHONON playBT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_PLAY); #endif }
t_Ersky9xMixData_v11::operator MixData () { MixData c9x; c9x.destCh = destCh; c9x.weight = weight; c9x.swtch = ersky9xToSwitch(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) { if (swtch < 0) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, swtch < -3 ? -swtch-3 : -swtch); c9x.weight = -weight; } else if (swtch > 0) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, swtch > 3 ? swtch-3 : swtch); } else { c9x.srcRaw = RawSource(SOURCE_TYPE_MAX); } if (mltpx != MLTPX_REP) c9x.swtch = RawSwitch(SWITCH_TYPE_NONE); } else if (srcRaw == 45) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, 0); } else if (srcRaw > 45) { c9x.srcRaw = RawSource(SOURCE_TYPE_GVAR, srcRaw-46); } else if (srcRaw <= 12) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-10); } else if (srcRaw <= 20) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-13); } else { c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } if (curve > 6) { c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; c9x.curve.value = curve - 6; } else if (curve > 0) { c9x.curve.type = CurveReference::CURVE_REF_FUNC; c9x.curve.value = curve; } c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; c9x.speedDown = speedDown; c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; // c9x.enableFmTrim=enableFmTrim; c9x.sOffset = sOffset; return c9x; }
void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) { unsigned int widgetsMask = 0; if (modified) { model.funcSw[i].swtch = RawSwitch(fswtchSwtch[i]->itemData(fswtchSwtch[i]->currentIndex()).toInt()); model.funcSw[i].func = (AssignFunc)fswtchFunc[i]->currentIndex(); model.funcSw[i].enabled = fswtchEnable[i]->isChecked(); model.funcSw[i].adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex(); } int index = fswtchFunc[i]->currentIndex(); if (index>=FuncOverrideCH1 && index<=FuncOverrideCH32) { int channelsMax = model.getChannelsMax(true); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setMinimum(-channelsMax); fswtchParam[i]->setMaximum(channelsMax); if (modified) { model.funcSw[i].param = fswtchParam[i]->value(); } fswtchParam[i]->setValue(model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; } else if (index==FuncLogs) { fswtchParam[i]->setDecimals(1); fswtchParam[i]->setMinimum(0); fswtchParam[i]->setMaximum(25.5); fswtchParam[i]->setSingleStep(0.1); if (modified) model.funcSw[i].param = fswtchParam[i]->value()*10.0; fswtchParam[i]->setValue(model.funcSw[i].param/10.0); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; } else if (index>=FuncAdjustGV1 && index<=FuncAdjustGVLast) { if (modified) model.funcSw[i].adjustMode = fswtchGVmode[i]->currentIndex(); widgetsMask |= CUSTOM_FUNCTION_GV_MODE + CUSTOM_FUNCTION_ENABLE; if (model.funcSw[i].adjustMode==0) { if (modified) model.funcSw[i].param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); if (IS_ARM(GetEepromInterface()->getBoard())) { fswtchParam[i]->setMinimum(-500); fswtchParam[i]->setMaximum(500); } else { fswtchParam[i]->setMinimum(-125); fswtchParam[i]->setMaximum(125); } fswtchParam[i]->setValue(model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; } else { if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param, model.funcSw[i].adjustMode); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } } else if (index==FuncReset) { if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM | CUSTOM_FUNCTION_ENABLE; } else if (index>=FuncSetTimer1 && index<=FuncSetTimer2) { if (modified) model.funcSw[i].param = QTimeS(fswtchParamTime[i]->time()).seconds(); fswtchParamTime[i]->setMinimumTime(QTime(0, 0, 0)); fswtchParamTime[i]->setMaximumTime(QTime(0, 59, 59)); fswtchParamTime[i]->setTime(QTimeS(model.funcSw[i].param)); widgetsMask |= CUSTOM_FUNCTION_TIME_PARAM + CUSTOM_FUNCTION_ENABLE; } else if (index==FuncVolume) { if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE; } else if (index==FuncPlaySound || index==FuncPlayHaptic || index==FuncPlayValue || index==FuncPlayPrompt || index==FuncPlayBoth || index==FuncBackgroundMusic) { if (index != FuncBackgroundMusic) { widgetsMask |= CUSTOM_FUNCTION_REPEAT; fswtchRepeat[i]->update(); } if (index==FuncPlayValue) { if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; } else if (index==FuncPlayPrompt || index==FuncPlayBoth) { if (firmware->getCapability(VoicesAsNumbers)) { fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setMinimum(0); if (index==FuncPlayPrompt) { widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT + CUSTOM_FUNCTION_GV_TOOGLE; } else { widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT; fswtchParamGV[i]->setChecked(false); } fswtchParam[i]->setMaximum(index==FuncPlayBoth ? 254 : 255); if (modified) { if (fswtchParamGV[i]->isChecked()) { fswtchParam[i]->setMinimum(1); model.funcSw[i].param = std::min(fswtchParam[i]->value(),5.0)+(fswtchParamGV[i]->isChecked() ? 250 : 0); } else { model.funcSw[i].param = fswtchParam[i]->value(); } } if (model.funcSw[i].param>250 && (index!=FuncPlayBoth)) { fswtchParamGV[i]->setChecked(true); fswtchParam[i]->setValue(model.funcSw[i].param-250); fswtchParam[i]->setMaximum(5); } else { fswtchParamGV[i]->setChecked(false); fswtchParam[i]->setValue(model.funcSw[i].param); } if (model.funcSw[i].param < 251) widgetsMask |= CUSTOM_FUNCTION_PLAY; } else { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); int vml = firmware->getCapability(VoicesMaxLength); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; for (int j=0; j<std::min(fswtchParamArmT[i]->currentText().length(), vml); j++) { model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); } } } populateFuncParamArmTCB(fswtchParamArmT[i], model.funcSw[i].paramarm, tracksSet); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; } } } else if (index==FuncBackgroundMusic) { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); int vml=firmware->getCapability(VoicesMaxLength); if (fswtchParamArmT[i]->currentText() != "----") { widgetsMask |= CUSTOM_FUNCTION_PLAY; for (int j=0; j<std::min(fswtchParamArmT[i]->currentText().length(),vml); j++) { model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); } } } populateFuncParamArmTCB(fswtchParamArmT[i], model.funcSw[i].paramarm, tracksSet); } else if (index==FuncPlaySound) { if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } else if (index==FuncPlayHaptic) { if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } } else if (index==FuncPlayScript) { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); int vml = 8/*TODO*/; if (fswtchParamArmT[i]->currentText() != "----") { for (int j=0; j<std::min(fswtchParamArmT[i]->currentText().length(), vml); j++) { model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); } } } populateFuncParamArmTCB(fswtchParamArmT[i], model.funcSw[i].paramarm, scriptsSet); } else if (index==FuncBacklight && IS_TARANIS_PLUS(GetEepromInterface()->getBoard())) { if (modified) model.funcSw[i].param = (uint8_t)fswtchBLcolor[i]->value(); fswtchBLcolor[i]->setValue(model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_BL_COLOR; } else { if (modified) model.funcSw[i].param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setValue(model.funcSw[i].param); if (index <= FuncInstantTrim) { widgetsMask |= CUSTOM_FUNCTION_ENABLE; } } fswtchParam[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_NUMERIC_PARAM); fswtchParamTime[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_TIME_PARAM); fswtchParamGV[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_TOOGLE); fswtchParamT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_SOURCE_PARAM); fswtchParamArmT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_FILE_PARAM); fswtchEnable[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_ENABLE); if (widgetsMask & CUSTOM_FUNCTION_ENABLE) fswtchEnable[i]->setChecked(model.funcSw[i].enabled); else fswtchEnable[i]->setChecked(false); fswtchRepeat[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_REPEAT); fswtchGVmode[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_MODE); fswtchBLcolor[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_BL_COLOR); #ifdef PHONON playBT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_PLAY); #endif }
t_Er9xMixData::operator MixData () { MixData c9x; c9x.destCh = destCh; if (abs(weight)>125) { int gvar; if (weight>0) { gvar=weight-125; } else { gvar=weight+131; } gvar+=10000; c9x.weight=gvar; } else { c9x.weight = weight; } if (abs(sOffset)>125) { int gvar; if (sOffset>0) { gvar=sOffset-125; } else { gvar=sOffset+131; } gvar+=10000; c9x.sOffset=gvar; } else { c9x.sOffset=sOffset; } c9x.swtch = er9xToSwitch(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) { if (swtch < 0) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, swtch < -3 ? -swtch-3 : -swtch); c9x.weight = -weight; } else if (swtch > 0) { c9x.srcRaw = RawSource(SOURCE_TYPE_SWITCH, swtch > 3 ? swtch-3 : swtch); } else { c9x.srcRaw = RawSource(SOURCE_TYPE_MAX); } if (mltpx != MLTPX_REP) c9x.swtch = RawSwitch(SWITCH_TYPE_NONE); } else if (srcRaw <= 12) { c9x.srcRaw = RawSource(SOURCE_TYPE_CYC, srcRaw-10); } else if (srcRaw <= 20) { c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-13); } else if (srcRaw <=37) { c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } else { c9x.srcRaw = RawSource(SOURCE_TYPE_GVAR, srcRaw-38); } if (differential==1) { c9x.curve.type = CurveReference::CURVE_REF_DIFF; c9x.curve.value = differential; } else if (curve > 6) { c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; c9x.curve.value = curve - 6; } else if (curve > 0) { c9x.curve.type = CurveReference::CURVE_REF_FUNC; c9x.curve.value = curve; } // c9x.lateOffset=lateOffset; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; c9x.speedDown = speedDown; c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; // c9x.enableFmTrim=enableFmTrim; return c9x; }
QString RawSwitch::toString() { static const QString switches9X[] = { QString("THR"), QString("RUD"), QString("ELE"), QString("ID0"), QString("ID1"), QString("ID2"), QString("AIL"), QString("GEA"), QString("TRN") }; static const QString switchesX9D[] = { SwitchUp('A'), QString::fromUtf8("SA-"), SwitchDn('A'), SwitchUp('B'), QString::fromUtf8("SB-"), SwitchDn('B'), SwitchUp('C'), QString::fromUtf8("SC-"), SwitchDn('C'), SwitchUp('D'), QString::fromUtf8("SD-"), SwitchDn('D'), SwitchUp('E'), QString::fromUtf8("SE-"), SwitchDn('E'), SwitchUp('F'), SwitchDn('F'), SwitchUp('G'), QString::fromUtf8("SG-"), SwitchDn('G'), SwitchUp('H'), SwitchDn('H'), }; static const QString logicalSwitches[] = { QObject::tr("L1"), QObject::tr("L2"), QObject::tr("L3"), QObject::tr("L4"), QObject::tr("L5"), QObject::tr("L6"), QObject::tr("L7"), QObject::tr("L8"), QObject::tr("L9"), QObject::tr("L10"), QObject::tr("L11"), QObject::tr("L12"), QObject::tr("L13"), QObject::tr("L14"), QObject::tr("L15"), QObject::tr("L16"), QObject::tr("L17"), QObject::tr("L18"), QObject::tr("L19"), QObject::tr("L20"), QObject::tr("L21"), QObject::tr("L22"), QObject::tr("L23"), QObject::tr("L24"), QObject::tr("L25"), QObject::tr("L26"), QObject::tr("L27"), QObject::tr("L28"), QObject::tr("L29"), QObject::tr("L30"), QObject::tr("L31"), QObject::tr("L32") }; static const QString flightModes[] = { QObject::tr("FM0"), QObject::tr("FM1"), QObject::tr("FM2"), QObject::tr("FM3"), QObject::tr("FM4"), QObject::tr("FM5"), QObject::tr("FM6"), QObject::tr("FM7"), QObject::tr("FM8") }; static const QString multiposPots[] = { QObject::tr("S11"), QObject::tr("S12"), QObject::tr("S13"), QObject::tr("S14"), QObject::tr("S15"), QObject::tr("S16"), QObject::tr("S21"), QObject::tr("S22"), QObject::tr("S23"), QObject::tr("S24"), QObject::tr("S25"), QObject::tr("S26"), QObject::tr("S31"), QObject::tr("S32"), QObject::tr("S33"), QObject::tr("S34"), QObject::tr("S35"), QObject::tr("S36") }; static const QString trimsSwitches[] = { QObject::tr("RudTrim Left"), QObject::tr("RudTrim Right"), QObject::tr("EleTrim Down"), QObject::tr("EleTrim Up"), QObject::tr("ThrTrim Down"), QObject::tr("ThrTrim Up"), QObject::tr("AilTrim Left"), QObject::tr("AilTrim Right") }; static const QString rotaryEncoders[] = { QObject::tr("REa"), QObject::tr("REb") }; static const QString timerModes[] = { QObject::tr("OFF"), QObject::tr("ABS"), QObject::tr("THs"), QObject::tr("TH%"), QObject::tr("THt") }; if (index < 0) { return QString("!") + RawSwitch(type, -index).toString(); } else { switch(type) { case SWITCH_TYPE_SWITCH: if (IS_TARANIS(GetEepromInterface()->getBoard())) return CHECK_IN_ARRAY(switchesX9D, index-1); else return CHECK_IN_ARRAY(switches9X, index-1); case SWITCH_TYPE_VIRTUAL: return CHECK_IN_ARRAY(logicalSwitches, index-1); case SWITCH_TYPE_MULTIPOS_POT: return CHECK_IN_ARRAY(multiposPots, index-1); case SWITCH_TYPE_TRIM: return CHECK_IN_ARRAY(trimsSwitches, index-1); case SWITCH_TYPE_ROTARY_ENCODER: return CHECK_IN_ARRAY(rotaryEncoders, index-1); case SWITCH_TYPE_ON: return QObject::tr("ON"); case SWITCH_TYPE_OFF: return QObject::tr("OFF"); case SWITCH_TYPE_ONE: return QObject::tr("One"); case SWITCH_TYPE_FLIGHT_MODE: return CHECK_IN_ARRAY(flightModes, index-1); case SWITCH_TYPE_NONE: return QObject::tr("----"); case SWITCH_TYPE_TIMER_MODE: return CHECK_IN_ARRAY(timerModes, index); default: return QObject::tr("???"); } } }
void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; if (ui->curvesCB->currentIndex()==0) { if (GetEepromInterface()->getCapability(ExpoIsCurve)) { ed->curveMode = 0; ui->expoCurveGV->show(); if (ui->expoCurveGV->isChecked()) { ui->expoCurveCB->show(); ui->expoCurveSB->hide(); ed->curveParam = ui->expoCurveCB->itemData(ui->expoCurveCB->currentIndex()).toInt(); } else { ui->expoCurveCB->hide(); ui->expoCurveSB->show(); ed->curveParam = ui->expoCurveSB->value(); } ed->expo = ed->curveParam; } else { ui->expoCurveCB->hide(); ui->expoCurveSB->hide(); ui->expoCurveGV->hide(); ed->curveMode = 0; if (ui->expoGV->isChecked()) { ed->expo = ui->expoCB->itemData(ui->expoCB->currentIndex()).toInt(); } else { ed->expo = ui->expoSB->value(); } ed->curveParam = ed->expo; } } else { if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { ed->curveMode = 1; ed->curveParam = ui->curvesCB->currentIndex(); if (ui->expoGV->isChecked()) { ed->expo = ui->expoCB->itemData(ui->expoCB->currentIndex()).toInt(); } else { ed->expo = ui->expoSB->value(); } } else { ed->curveMode = 1; ed->curveParam = ui->curvesCB->currentIndex(); ed->expo = 0; } ui->expoCurveCB->hide(); ui->expoCurveSB->hide(); ui->expoCurveGV->hide(); } if (ui->weightGV->isChecked()) { ed->weight = ui->weightCB->itemData(ui->weightCB->currentIndex()).toInt(); } else { ed->weight = ui->weightSB->value(); } ed->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); ed->mode = ui->modeCB->currentIndex() + 1; int i=0; for (i=0; i<ui->expoName->text().toAscii().length(); i++) { ed->name[i]=ui->expoName->text().toAscii().at(i); } ed->name[i]=0; ed->phases=0; for (int i=8; i>=0 ; i--) { if (!cb_fp[i]->checkState()) { ed->phases+=1; } ed->phases<<=1; } ed->phases>>=1; if (GetEepromInterface()->getCapability(FlightPhases)) { int zeros=0; int ones=0; int phtemp=ed->phases; for (int i=0; i<GetEepromInterface()->getCapability(FlightPhases); i++) { if (phtemp & 1) { ones++; } else { zeros++; } phtemp >>=1; } if (zeros==1) { phtemp=ed->phases; for (int i=0; i<GetEepromInterface()->getCapability(FlightPhases); i++) { if ((phtemp & 1)==0) { break; } phtemp >>=1; } }
QString ModelPrinter::printLogicalSwitchLine(int idx) { QString result = ""; const LogicalSwitchData & ls = model.logicalSw[idx]; if (!ls.func) return result; if (ls.andsw!=0) { result +="( "; } switch (ls.getFunctionFamily()) { case LS_FAMILY_EDGE: result += tr("Edge(%1, [%2:%3])").arg(RawSwitch(ls.val1).toString()).arg(ValToTim(ls.val2)).arg(ls.val3<0 ? tr("instant") : QString("%1").arg(ValToTim(ls.val2+ls.val3))); break; case LS_FAMILY_STICKY: result += tr("Sticky(%1, %2)").arg(RawSwitch(ls.val1).toString()).arg(RawSwitch(ls.val2).toString()); break; case LS_FAMILY_TIMER: result += tr("Timer(%1, %2)").arg(ValToTim(ls.val1)).arg(ValToTim(ls.val2)); break; case LS_FAMILY_VOFS: { RawSource source = RawSource(ls.val1); RawSourceRange range = source.getRange(&model, generalSettings); QString res; if (ls.val1) res += source.toString(&model); else res += "0"; res.remove(" "); if (ls.func == LS_FN_APOS || ls.func == LS_FN_ANEG) res = "|" + res + "|"; else if (ls.func == LS_FN_DAPOS) res = "|d(" + res + ")|"; else if (ls.func == LS_FN_DPOS) result = "d(" + res + ")"; result += res; if (ls.func == LS_FN_VEQUAL) result += " = "; else if (ls.func == LS_FN_APOS || ls.func == LS_FN_VPOS || ls.func == LS_FN_DPOS || ls.func == LS_FN_DAPOS) result += " > "; else if (ls.func == LS_FN_ANEG || ls.func == LS_FN_VNEG) result += " < "; else if (ls.func == LS_FN_VALMOSTEQUAL) result += " ~ "; else result += " missing"; result += QString::number(range.step * (ls.val2 /*TODO+ source.getRawOffset(model)*/) + range.offset); break; } case LS_FAMILY_VBOOL: result += RawSwitch(ls.val1).toString(); switch (ls.func) { case LS_FN_AND: result += " AND "; break; case LS_FN_OR: result += " OR "; break; case LS_FN_XOR: result += " XOR "; break; default: result += " bar "; break; } result += RawSwitch(ls.val2).toString(); break; case LS_FAMILY_VCOMP: if (ls.val1) result += RawSource(ls.val1).toString(&model); else result += "0"; switch (ls.func) { case LS_FN_EQUAL: case LS_FN_VEQUAL: result += " = "; break; case LS_FN_NEQUAL: result += " != "; break; case LS_FN_GREATER: result += " > "; break; case LS_FN_LESS: result += " < "; break; case LS_FN_EGREATER: result += " >= "; break; case LS_FN_ELESS: result += " <= "; break; default: result += " foo "; break; } if (ls.val2) result += RawSource(ls.val2).toString(&model); else result += "0"; break; } if (ls.andsw != 0) { result +=" ) AND "; result += RawSwitch(ls.andsw).toString(); } if (firmware->getCapability(LogicalSwitchesExt)) { if (ls.duration) result += " " + tr("Duration(%1s)").arg(ls.duration/10.0); if (ls.delay) result += " " + tr("Delay(%1s)").arg(ls.delay/10.0); } return result; }
QString LogicalSwitchData::toString(const ModelData & model, const GeneralSettings & settings) { QString result = ""; if (!func) return result; if (andsw!=0) { result +="( "; } switch (getFunctionFamily()) { case LS_FAMILY_STAY: result += QObject::tr("Edge(%1, [%2:%3])").arg(RawSwitch(val1).toString()).arg(ValToTim(val2)).arg(ValToTim(val2+val3)); break; case LS_FAMILY_STICKY: result += QObject::tr("Sticky(%1, %2)").arg(RawSwitch(val1).toString()).arg(RawSwitch(val2).toString()); break; case LS_FAMILY_TIMER: result += QObject::tr("Timer(%1, %2)").arg(ValToTim(val1)).arg(ValToTim(val2)); break; case LS_FAMILY_VOFS: { RawSource source = RawSource(val1); RawSourceRange range = source.getRange(model, settings); QString res; if (val1) res += source.toString(model); else res += "0"; res.remove(" "); if (func == LS_FN_APOS || func == LS_FN_ANEG) res = "|" + res + "|"; else if (func == LS_FN_DAPOS) res = "|d(" + res + ")|"; else if (func == LS_FN_DPOS) result = "d(" + res + ")"; result += res; if (func == LS_FN_APOS || func == LS_FN_VPOS || func == LS_FN_DPOS || func == LS_FN_DAPOS) result += " > "; else if (func == LS_FN_ANEG || func == LS_FN_VNEG) result += " < "; else if (func == LS_FN_VALMOSTEQUAL) result += " ~ "; else result += " missing"; result += QString::number(range.step * (val2 /*TODO+ source.getRawOffset(model)*/) + range.offset); break; } case LS_FAMILY_VBOOL: result += RawSwitch(val1).toString(); switch (func) { case LS_FN_AND: result += " AND "; break; case LS_FN_OR: result += " OR "; break; case LS_FN_XOR: result += " XOR "; break; default: result += " bar "; break; } result += RawSwitch(val2).toString(); break; case LS_FAMILY_VCOMP: if (val1) result += RawSource(val1).toString(model); else result += "0"; switch (func) { case LS_FN_EQUAL: case LS_FN_VEQUAL: result += " = "; break; case LS_FN_NEQUAL: result += " != "; break; case LS_FN_GREATER: result += " > "; break; case LS_FN_LESS: result += " < "; break; case LS_FN_EGREATER: result += " >= "; break; case LS_FN_ELESS: result += " <= "; break; default: result += " foo "; break; } if (val2) result += RawSource(val2).toString(model); else result += "0"; break; } if (andsw!=0) { result +=" ) AND "; result += RawSwitch(andsw).toString(); } if (GetCurrentFirmware()->getCapability(LogicalSwitchesExt)) { if (duration) result += QObject::tr(" Duration (%1s)").arg(duration/10.0); if (delay) result += QObject::tr(" Delay (%1s)").arg(delay/10.0); } return result; }