/* * Copyright (C) OpenTX * * Based on code named * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include "radiodata.h" #include "eeprominterface.h" // TODO here we will move a lot of functions from eeprominterface.cpp when no merge risk RawSource RawSource::convert(Board::Type before, Board::Type after) { if (type == SOURCE_TYPE_STICK && index >= 4 + getBoardCapability(before, Board::Pots)) { // 1st slider alignment index += getBoardCapability(after, Board::Pots) - getBoardCapability(before, Board::Pots); } if (IS_HORUS(after)) { if (IS_TARANIS_X9D(before) || IS_TARANIS_X7(before)) { if (type == SOURCE_TYPE_STICK && index >= 7) { // LS and RS on Horus are after sliders L1 and L2 index += 2; } } } // SWI to SWR don't exist on !X9E board if (!IS_TARANIS_X9E(after) && IS_TARANIS_X9E(before)) { if (type == SOURCE_TYPE_SWITCH && index >= 8) { index = index % 8; } } // No SE and SG on X7 board if (IS_TARANIS_X7(after)) { if (IS_TARANIS_X9(before) || IS_HORUS(before)) { if (type == SOURCE_TYPE_SWITCH && index >= 6) { index -= 2; } else if (type == SOURCE_TYPE_SWITCH && index >= 4) { index -= 1; } } } return *this; } RawSwitch RawSwitch::convert(Board::Type before, Board::Type after) { // SWI to SWR don't exist on !X9E board if (!IS_TARANIS_X9E(after) && IS_TARANIS_X9E(before)) { if (type == SWITCH_TYPE_SWITCH && index >= 24) { index = index % 24; } } // No SE and SG on X7 board if (IS_TARANIS_X7(after)) { if (IS_TARANIS_X9(before) || IS_HORUS(before)) { if (type == SWITCH_TYPE_SWITCH && index >= 18) { index -= 6; } else if (type == SWITCH_TYPE_SWITCH && index >= 12) { index -= 3; } } } return *this; } void ExpoData::convert(Board::Type before, Board::Type after) { swtch.convert(before, after); } void MixData::convert(Board::Type before, Board::Type after) { srcRaw.convert(before, after); swtch.convert(before, after); } void LogicalSwitchData::convert(Board::Type before, Board::Type after) { CSFunctionFamily family = getFunctionFamily(); switch(family) { case LS_FAMILY_VOFS: val1 = RawSource(val1).convert(before, after).toValue(); break; case LS_FAMILY_STICKY: case LS_FAMILY_VBOOL: val1 = RawSwitch(val1).convert(before, after).toValue(); val2 = RawSwitch(val2).convert(before, after).toValue(); break; case LS_FAMILY_EDGE: val1 = RawSwitch(val1).convert(before, after).toValue(); break; case LS_FAMILY_VCOMP: val1 = RawSource(val1).convert(before, after).toValue(); val2 = RawSource(val2).convert(before, after).toValue(); break; default: break; } andsw = RawSwitch(andsw).convert(before, after).toValue(); } void CustomFunctionData::convert(Board::Type before, Board::Type after) { swtch.convert(before, after); } void FlightModeData::convert(Board::Type before, Board::Type after) { swtch.convert(before, after); } void ModelData::convert(Board::Type before, Board::Type after) { // Here we can add explicit conversions when moving from one board to another for (int i=0; i 0) { ok = false; } } if (ok) { for (unsigned i=0; i