2.4 continued (#8092)

Quite a bit of work on 2.4

Co-authored-by: 3djc <Th1sisfmyofmyo>
This commit is contained in:
3djc
2020-11-14 14:55:37 +04:00
committed by GitHub
co-authored by 3djc <Th1sisfmyofmyo>
parent cd6aa7af00
commit 87cd9047b1
238 changed files with 5164 additions and 2755 deletions
+2
View File
@@ -511,6 +511,8 @@ IF(APPLE)
# Use a non standard Info.plist that adds Retina support flags
set_target_properties(${COMPANION_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/companion/targets/mac/MacOSXBundleInfo.plist.in)
set_target_properties(${SIMULATOR_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/companion/targets/mac/MacOSXBundleInfo.plist.in)
set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.opentx.companion")
INSTALL(TARGETS ${COMPANION_NAME}
BUNDLE DESTINATION . COMPONENT Runtime
@@ -151,6 +151,7 @@ enum Capability {
DangerousFunctions,
HasModelCategories,
HasSwitchableJack,
HasSportConnector,
PwrButtonPress,
Sensors
};
@@ -103,6 +103,7 @@ class GeneralSettings {
bool disableRssiPoweroffAlarm;
unsigned int usbMode;
unsigned int jackMode;
bool sportPower;
BeeperMode hapticMode;
unsigned int stickMode; // TODO enum
int timezone;
@@ -1544,7 +1544,7 @@ class ArmCustomFunctionField: public TransformedField {
value = fn.param;
*((uint16_t *)_param) = value;
}
else if (fn.func == FuncPlayValue || fn.func == FuncVolume) {
else if (fn.func == FuncPlayValue || fn.func == FuncVolume || fn.func == FuncBacklight) {
unsigned int value;
sourcesConversionTable->exportValue(fn.param, (int &)value);
*((uint16_t *)_param) = value;
@@ -1587,7 +1587,7 @@ class ArmCustomFunctionField: public TransformedField {
else if (fn.func == FuncPlayPrompt || fn.func == FuncBackgroundMusic || fn.func == FuncPlayScript) {
memcpy(fn.paramarm, _param, sizeof(fn.paramarm));
}
else if (fn.func == FuncVolume) {
else if (fn.func == FuncVolume || fn.func == FuncBacklight) {
sourcesConversionTable->importValue(value, (int &)fn.param);
}
else if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGVLast) {
@@ -2720,7 +2720,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type
internalField.Append(new BoolField<1>(this, generalData.disableRssiPoweroffAlarm));
internalField.Append(new UnsignedField<2>(this, generalData.usbMode));
internalField.Append(new UnsignedField<2>(this, generalData.jackMode));
internalField.Append(new SpareBitsField<1>(this));
internalField.Append(new BoolField<1>(this, generalData.sportPower));
}
else {
internalField.Append(new SpareBitsField<7>(this));
@@ -696,6 +696,8 @@ int OpenTxFirmware::getCapability(::Capability capability)
return IS_FAMILY_HORUS_OR_T16(board);
case HasSwitchableJack:
return IS_TARANIS_XLITES(board);
case HasSportConnector:
return IS_ACCESS_RADIO(board, id) || IS_TARANIS_X7(board) || IS_HORUS_X10(board) || IS_TARANIS_XLITE(board);
case PwrButtonPress:
return IS_HORUS_OR_TARANIS(board) && (board!=Board::BOARD_TARANIS_X9D) && (board!=Board::BOARD_TARANIS_X9DP);
case Sensors:
@@ -763,7 +765,7 @@ bool OpenTxFirmware::isAvailable(PulsesProtocol proto, int port)
case PULSES_GHOST:
return true;
case PULSES_ACCESS_R9M:
return IS_ACCESS_RADIO(board, id);
return IS_ACCESS_RADIO(board, id) || (IS_FAMILY_HORUS_OR_T16(board) && id.contains("externalaccessmod"));
case PULSES_PXX_R9M_LITE:
case PULSES_ACCESS_R9M_LITE:
case PULSES_ACCESS_R9M_LITE_PRO:
@@ -1232,6 +1234,7 @@ void registerOpenTxFirmwares()
firmware = new OpenTxFirmware("opentx-x10", Firmware::tr("FrSky Horus X10 / X10S"), BOARD_X10);
addOpenTxFrskyOptions(firmware);
firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement"));
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, EU + FLEX);
@@ -1245,6 +1248,7 @@ void registerOpenTxFirmwares()
firmware = new OpenTxFirmware("opentx-x12s", Firmware::tr("FrSky Horus X12S"), BOARD_HORUS_X12S);
addOpenTxFrskyOptions(firmware);
firmware->addOption("internalaccess", Firmware::tr("Support for ACCESS internal module replacement"));
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
firmware->addOption("pcbdev", Firmware::tr("Use ONLY with first DEV pcb version"));
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, EU + FLEX);
@@ -1265,6 +1269,7 @@ void registerOpenTxFirmwares()
addOpenTxFrskyOptions(firmware);
firmware->addOption("internalmulti", Firmware::tr("Support for MULTI internal module"));
firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
addOpenTxRfOptions(firmware, FLEX);
registerOpenTxFirmware(firmware);
@@ -1275,12 +1280,14 @@ void registerOpenTxFirmwares()
static const Firmware::Option opt_bt("bluetooth", Firmware::tr("Support for bluetooth module"));
static const Firmware::Option opt_internal_gps("internalgps", Firmware::tr("Support internal GPS"));
firmware->addOptionsGroup({opt_bt, opt_internal_gps});
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
registerOpenTxFirmware(firmware);
/* Jumper T18 board */
firmware = new OpenTxFirmware("opentx-t18", Firmware::tr("Jumper T18"), BOARD_JUMPER_T18);
addOpenTxFrskyOptions(firmware);
firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
firmware->addOption("externalaccessmod", Firmware::tr("Support hardware mod: R9M ACCESS"));
registerOpenTxFirmware(firmware);
addOpenTxRfOptions(firmware, FLEX);
+13
View File
@@ -127,6 +127,14 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings
ui->potsTypeSeparator_1->hide();
ui->potsTypeSeparator_2->hide();
}
if (firmware->getCapability(HasSportConnector)) {
ui->sportPower->setChecked(generalSettings.sportPower);
}
else {
ui->sportPower->hide();
ui->sportPowerLabel->hide();
}
setupPotType(0, ui->pot1Label, ui->pot1Name, ui->pot1Type);
setupPotType(1, ui->pot2Label, ui->pot2Name, ui->pot2Type);
@@ -232,6 +240,11 @@ void HardwarePanel::on_filterEnable_stateChanged()
generalSettings.jitterFilter = !ui->filterEnable->isChecked();
}
void HardwarePanel::on_sportPower_stateChanged()
{
generalSettings.sportPower = ui->sportPower->isChecked();
}
void HardwarePanel::on_rtcCheckDisable_stateChanged()
{
generalSettings.rtcCheckDisable = !ui->rtcCheckDisable->isChecked();
+1
View File
@@ -50,6 +50,7 @@ class HardwarePanel : public GeneralPanel
void on_txVoltageCalibration_editingFinished();
void on_filterEnable_stateChanged();
void on_rtcCheckDisable_stateChanged();
void on_sportPower_stateChanged();
void on_serialPortMode_currentIndexChanged(int index);
File diff suppressed because it is too large Load Diff
+18 -107
View File
@@ -23,7 +23,6 @@
#include "multiprotocols.h"
#include "boards.h"
#include "helpers_html.h"
#include "multiprotocols.h"
#include "appdata.h"
#include <QApplication>
@@ -1214,108 +1213,6 @@ QString ModelPrinter::printSensorTypeCond(unsigned int idx)
return printSensorType(model.sensorData[idx].type);
}
QString ModelPrinter::printSensorDetails(unsigned int idx)
{
QString str = "";
SensorData sensor = model.sensorData[idx];
if (!sensor.isAvailable())
return str;
bool isConfigurable = false;
bool gpsFieldsPrinted = false;
bool cellsFieldsPrinted = false;
bool consFieldsPrinted = false;
bool ratioFieldsPrinted = false;
bool totalizeFieldsPrinted = false;
bool sources12FieldsPrinted = false;
bool sources34FieldsPrinted = false;
str.append(doTableCell(printSensorTypeCond(idx)));
QString tc = "";
if (sensor.type == SensorData::TELEM_TYPE_CALCULATED) {
isConfigurable = (sensor.formula < SensorData::TELEM_FORMULA_CELL);
gpsFieldsPrinted = (sensor.formula == SensorData::TELEM_FORMULA_DIST);
cellsFieldsPrinted = (sensor.formula == SensorData::TELEM_FORMULA_CELL);
consFieldsPrinted = (sensor.formula == SensorData::TELEM_FORMULA_CONSUMPTION);
sources12FieldsPrinted = (sensor.formula <= SensorData::TELEM_FORMULA_MULTIPLY);
sources34FieldsPrinted = (sensor.formula < SensorData::TELEM_FORMULA_MULTIPLY);
totalizeFieldsPrinted = (sensor.formula == SensorData::TELEM_FORMULA_TOTALIZE);
tc.append(printLabelValue(tr("Formula"), printSensorFormula(sensor.formula)));
}
else {
isConfigurable = sensor.unit < SensorData::UNIT_FIRST_VIRTUAL;
ratioFieldsPrinted = (sensor.unit < SensorData::UNIT_FIRST_VIRTUAL);
tc.append(printLabelValue(tr("Id"), QString::number(sensor.id,16).toUpper()));
tc.append(printLabelValue(tr("Instance"), QString::number(sensor.instance)));
}
if (cellsFieldsPrinted) {
tc.append(printLabelValue(tr("Sensor"), QString("%1 > %2").arg(printTelemetrySource(sensor.source), false).arg(printSensorCells(sensor.index))));
}
if (sources12FieldsPrinted) {
QStringList srcs;
for (int i=0;i<4;i++) {
if (i < 2 || sources34FieldsPrinted) {
srcs << printTelemetrySource(sensor.sources[i]);
}
}
tc.append(printLabelValues(tr("Sources"), srcs));
}
if (consFieldsPrinted || totalizeFieldsPrinted)
tc.append(printLabelValue(tr("Sensor"), printTelemetrySource(sensor.amps)));
if (gpsFieldsPrinted) {
tc.append(printLabelValue(tr("GPS"), printTelemetrySource(sensor.gps)));
tc.append(printLabelValue(tr("Alt."), printTelemetrySource(sensor.alt)));
}
if (ratioFieldsPrinted && sensor.unit == SensorData::UNIT_RPMS) {
tc.append(printLabelValue(tr("Blades"), QString::number(sensor.ratio)));
tc.append(printLabelValue(tr("Multi."), QString::number(sensor.offset)));
}
str.append(doTableCell(tc));
tc = sensor.unitString();
tc = tc.trimmed() == "" ? "-" : tc;
str.append(doTableCell(tc));
if (isConfigurable && sensor.unit != SensorData::UNIT_FAHRENHEIT)
tc = QString::number(sensor.prec);
else
tc = "";
str.append(doTableCell(tc));
if (!ratioFieldsPrinted) {
str.append(doTableCell(""));
str.append(doTableCell(""));
}
else if (sensor.unit != SensorData::UNIT_RPMS) {
int prec = sensor.prec == 0 ? 1 : pow(10, sensor.prec);
str.append(doTableCell(QString::number((float)sensor.ratio / prec)));
str.append(doTableCell(QString::number((float)sensor.offset / prec)));
}
if (sensor.unit != SensorData::UNIT_RPMS && isConfigurable)
str.append(doTableCell(printBoolean(sensor.autoOffset, BOOLEAN_YN)));
else
str.append(doTableCell(""));
if (isConfigurable)
str.append(doTableCell(printBoolean(sensor.filter, BOOLEAN_YN)));
else
str.append(doTableCell(""));
if (sensor.type == SensorData::TELEM_TYPE_CALCULATED)
str.append(doTableCell(printBoolean(sensor.persistent, BOOLEAN_YN)));
else
str.append(doTableCell(""));
str.append(doTableCell(printBoolean(sensor.onlyPositive, BOOLEAN_YN)));
str.append(doTableCell(printBoolean(sensor.logs, BOOLEAN_YN), false));
return str;
}
QString ModelPrinter::printSensorParams(unsigned int idx)
{
QString str = "";
@@ -1373,12 +1270,12 @@ QString ModelPrinter::printSensorParams(unsigned int idx)
u = u.trimmed() == "" ? "-" : u;
str.append(printLabelValue(tr("Unit"), u));
if (isConfigurable && sensor.unit != SensorData::UNIT_FAHRENHEIT)
str.append(printLabelValue(tr("Prec"), QString::number(sensor.prec)));
str.append(printLabelValue(tr("Prec"), printTelemetryPrecision(sensor.prec)));
if (ratioFieldsPrinted) {
if (sensor.unit != SensorData::UNIT_RPMS) {
int prec = sensor.prec == 0 ? 1 : pow(10, sensor.prec);
str.append(printLabelValue(tr("Ratio"), QString::number((float)sensor.ratio / prec)));
str.append(printLabelValue(tr("Offset"), QString::number((float)sensor.offset / prec)));
str.append(printLabelValue(tr("Ratio"), QString::number((float)sensor.ratio / 10)));
str.append(printLabelValue(tr("Offset"), QString::number((float)sensor.offset / prec, 'f', sensor.prec)));
}
else if (sensor.unit == SensorData::UNIT_RPMS) {
str.append(printLabelValue(tr("Blades"), QString::number(sensor.ratio)));
@@ -1386,7 +1283,7 @@ QString ModelPrinter::printSensorParams(unsigned int idx)
}
}
if (sensor.unit != SensorData::UNIT_RPMS && isConfigurable)
str.append(printLabelValue(tr("A/Offset"), printBoolean(sensor.autoOffset, BOOLEAN_YN)));
str.append(printLabelValue(tr("Auto Offset"), printBoolean(sensor.autoOffset, BOOLEAN_YN)));
if (isConfigurable)
str.append(printLabelValue(tr("Filter"), printBoolean(sensor.filter, BOOLEAN_YN)));
if (sensor.type == SensorData::TELEM_TYPE_CALCULATED)
@@ -1476,3 +1373,17 @@ QString ModelPrinter::printChecklist()
}
return str;
}
QString ModelPrinter::printTelemetryPrecision(unsigned int val)
{
switch (val) {
case 0:
return tr("0.");
case 1:
return tr("0.0");
case 2:
return tr("0.00");
default:
return CPN_STR_UNKNOWN_ITEM;
}
}
+1 -1
View File
@@ -128,10 +128,10 @@ class ModelPrinter: public QObject
QString printSensorCells(unsigned int val);
QString printSensorTypeCond(unsigned int idx);
QString printSensorParams(unsigned int idx);
QString printSensorDetails(unsigned int idx);
QString printTelemetryScreenType(unsigned int val);
QString printTelemetryScreen(unsigned int idx, unsigned int line, unsigned int width);
QString printChecklist();
QString printTelemetryPrecision(unsigned int val);
private:
Firmware * firmware;