diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..5ed6a1991
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+language: cpp
+
+before_install:
+ - sudo apt-get remove cmake cmake-data --yes
+ - sudo add-apt-repository ppa:george-edison55/precise-backports --yes
+ - sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded --yes
+ - sudo apt-get update
+
+install:
+ - sudo apt-get install -y lcov cmake cmake-data bc curl gcc-arm-none-eabi gcc-avr avr-libc avrdude libqtcore4 libqt4-dev qt4-qmake g++ libxerces-c-dev xsdcxx libsdl1.2-dev libusb-1.0-0 libphonon-dev phonon libqtwebkit-dev python-qt4 python-qt4-dev libfox-1.6-dev libgtest-dev
+
+script:
+ - radio/util/commit-tests.sh
+ - mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug ../companion/src && cmake --build .
diff --git a/BLACKLIST.txt b/BLACKLIST.txt
deleted file mode 100644
index 59aa3651b..000000000
--- a/BLACKLIST.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-3D Robotics
-They sell the Iris+ with a modified version of OpenTX which doesn't fullfil the GPL requirements.
-No donations, no thanks, we are just free staff for them...
diff --git a/DONATIONS.txt b/DONATIONS.txt
index cb0674da2..263bb4f62 100644
--- a/DONATIONS.txt
+++ b/DONATIONS.txt
@@ -8,6 +8,7 @@
LitePilots
David Ankers (OpenPilot)
3D Robotics
+RC Studio (monthly)
Mario Sette
Felice Baratto
@@ -401,7 +402,6 @@ Colin Rycroft
Emanuel Stassar
Michael Gregory
Robert Russell
-Gordon Stahl
Felix Kaiser
Joshua Bardwell
Davd Goodall
@@ -599,7 +599,6 @@ Julien Gérard
Alexandre d'Alton
Peter Mergaerts
Jan Houwers
-Gordon Stahl
Christian Grandjean
Roger Bergevin
NorthSide
@@ -802,4 +801,27 @@ Roger Keatley
Sherman Lovell
Hugh Caldwell
JB Fisher Company
+Michels Bernhard
+Pietro Rossin
+Carsten Wache
+Brock White
+Steven Poretz
+David Huelster
+Gordon Stahl (monthly)
+John Mathison
+Richard Duczmal
+Gregory Barron
+Marcel Fischer
+Klas Mälman
+Viljo Liukku
+Eric Smith
+Sven Assmus
+Luke Mole
+NorthSide
+Hannes Mössler
+James Kaufman
+Ravi Gupta
+Lexington S Morley
+Ralph Segar
+Frédéric Devillard
diff --git a/README.md b/README.md
index 94e728aca..b376c944e 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,9 @@
##OpenTX 2.1 Branch
-The ongoing development is not done in this branch. It is performed in the branch called next.
+[](https://travis-ci.org/opentx/opentx)
+[](https://gitter.im/opentx/opentx?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DJ9MASSKVW8WN)
+
+The ongoing development on 2.1.x is done in this branch.
Refer to the opentx.wiki for information about setting up the tool chains for building OpenTX and OpenTX Companion as well as other development related issues.
diff --git a/companion/releasenotes.txt b/companion/releasenotes.txt
index 604fb1c12..d95565875 100644
--- a/companion/releasenotes.txt
+++ b/companion/releasenotes.txt
@@ -1,4 +1,24 @@
-
Version 2.1.2 /
+Version 2.1.4 /
+
+
+- Fixed: changing any setting on the telemetry panel does not set the file as being modified (#2875)
+- Print model fix for "Play value.... not on startup" (#2736)
+- Top LCD Timer could not be selected for X9E (#2850)
+- More informative error/info messages when openin eepe files (#2778)
+- Print model fix for curves (#2896)
+
+
+
+
+Version 2.1.3 / 2015-09-09
+
+
+- Fix missing translations in inputs/mixes tabs, print and compare dialogs (#2847)
+
+
+
+Version 2.1.2 / 2015-09-07
+
- Fixed: Lua model scripts outputs not working in a simulator (#2684)
- Fixed a problem of Companion 2.1 trying to install into 2.0 path.
@@ -6,6 +26,14 @@
(#2645)
- Added missing SDL libraries to MAC package (#2678)
- Added used channels check/warning in Wizard (#2091)
+- Model Print and Model Compare improvements and fixes (#2734, #2737, #2576)
+- Negative telemetry offset value was reset when writing back to radio (#2738)
+- Telemetry sensor names were not displayed (#2807)
+- Mixes multiplex representation now the same as on the radio (#2808)
+- Fixed language-related startup crash on Mac (#2815)
+- Fixed issues with conversion from 2.0 (#2809, #2800)
+- Fixed Throttle source export issue on X9E (#2844)
+- Added support for the AR9X replacement board (prototype) for the Turnigy 9X radio, info here
diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt
index 679b69ee4..3df4ec991 100644
--- a/companion/src/CMakeLists.txt
+++ b/companion/src/CMakeLists.txt
@@ -2,13 +2,13 @@ PROJECT( companion )
SET(C9X_VERSION_MAJOR "2")
SET(C9X_VERSION_MINOR "1")
-SET(C9X_VERSION_REVISION "2")
+SET(C9X_VERSION_REVISION "4")
SET(C9X_VERSION_SUFFIX $ENV{OPENTX_VERSION_SUFFIX})
SET(C9X_VERSION ${C9X_VERSION_MAJOR}.${C9X_VERSION_MINOR}.${C9X_VERSION_REVISION}${C9X_VERSION_SUFFIX})
-MESSAGE(STATUS OpenTX Companion ${C9X_VERSION})
+MESSAGE(STATUS "OpenTX Companion ${C9X_VERSION}")
-CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
+CMAKE_MINIMUM_REQUIRED( VERSION 2.8.12 )
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
@@ -62,7 +62,7 @@ ELSE()
MESSAGE( "SDL not found! Joysticks support will be disabled. Simulator audio will not work." )
ENDIF()
-FIND_PACKAGE(Qt4 4.8.4 REQUIRED)
+FIND_PACKAGE(Qt4 4.8.1 REQUIRED)
SET( QT_USE_QTNETWORK True )
SET( QT_USE_QTXML True )
INCLUDE( ${QT_USE_FILE} )
@@ -213,6 +213,8 @@ set(companion_MOC_HDRS
radionotfound.h
helpers.h
wizarddialog.h
+ modelprinter.h
+ multimodelprinter.h
)
set(companion_UIS
@@ -432,7 +434,7 @@ ADD_CUSTOM_TARGET( stamp
IF( LUPDATE_FOUND )
ADD_CUSTOM_TARGET( translations
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- COMMAND ${LUPDATE_EXECUTABLE} ${CMAKE_SOURCE_DIR} -ts ${companion_TS}
+ COMMAND ${LUPDATE_EXECUTABLE} ${CMAKE_SOURCE_DIR} -no-obsolete -ts ${companion_TS}
)
ELSE()
ADD_CUSTOM_TARGET( translations
diff --git a/companion/src/appdata.cpp b/companion/src/appdata.cpp
index 187bd6cb8..e6e45029d 100644
--- a/companion/src/appdata.cpp
+++ b/companion/src/appdata.cpp
@@ -312,10 +312,10 @@ QString Profile::speaker() const { return _speaker; }
QString Profile::stickPotCalib() const { return _stickPotCalib; }
QString Profile::timeStamp() const { return _timeStamp; }
QString Profile::trainerCalib() const { return _trainerCalib; }
-int Profile::currentCalib() const { return _currentCalib; }
+int Profile::txCurrentCalibration() const { return _txCurrentCalibration; }
int Profile::gsStickMode() const { return _gsStickMode; }
int Profile::ppmMultiplier() const { return _ppmMultiplier; }
-int Profile::vBatCalib() const { return _vBatCalib; }
+int Profile::txVoltageCalibration() const { return _txVoltageCalibration; }
int Profile::vBatWarn() const { return _vBatWarn; }
int Profile::vBatMin() const { return _vBatMin; }
int Profile::vBatMax() const { return _vBatMax; }
@@ -342,10 +342,10 @@ void Profile::speaker (const QString x) { store(x, _speaker, "Speake
void Profile::stickPotCalib (const QString x) { store(x, _stickPotCalib, "StickPotCalib" ,"Profiles", QString("profile%1").arg(index));}
void Profile::timeStamp (const QString x) { store(x, _timeStamp, "TimeStamp" ,"Profiles", QString("profile%1").arg(index));}
void Profile::trainerCalib (const QString x) { store(x, _trainerCalib, "TrainerCalib" ,"Profiles", QString("profile%1").arg(index));}
-void Profile::currentCalib (const int x) { store(x, _currentCalib, "currentCalib" ,"Profiles", QString("profile%1").arg(index));}
+void Profile::txCurrentCalibration (const int x) { store(x, _txCurrentCalibration, "currentCalib","Profiles", QString("profile%1").arg(index));}
void Profile::gsStickMode (const int x) { store(x, _gsStickMode, "GSStickMode" ,"Profiles", QString("profile%1").arg(index));}
void Profile::ppmMultiplier (const int x) { store(x, _ppmMultiplier, "PPM_Multiplier" ,"Profiles", QString("profile%1").arg(index));}
-void Profile::vBatCalib (const int x) { store(x, _vBatCalib, "VbatCalib" ,"Profiles", QString("profile%1").arg(index));}
+void Profile::txVoltageCalibration (const int x) { store(x, _txVoltageCalibration, "VbatCalib","Profiles", QString("profile%1").arg(index));}
void Profile::vBatWarn (const int x) { store(x, _vBatWarn, "vBatWarn" ,"Profiles", QString("profile%1").arg(index));}
void Profile::vBatMin (const int x) { store(x, _vBatMin, "VbatMin" ,"Profiles", QString("profile%1").arg(index));}
void Profile::vBatMax (const int x) { store(x, _vBatMax, "VbatMax" ,"Profiles", QString("profile%1").arg(index));}
@@ -378,10 +378,10 @@ Profile& Profile::operator=(const Profile& rhs)
speaker ( rhs.speaker() );
stickPotCalib( rhs.stickPotCalib() );
trainerCalib ( rhs.trainerCalib() );
- currentCalib ( rhs.currentCalib() );
+ txCurrentCalibration ( rhs.txCurrentCalibration() );
gsStickMode ( rhs.gsStickMode() );
ppmMultiplier( rhs.ppmMultiplier() );
- vBatCalib ( rhs.vBatCalib() );
+ txVoltageCalibration ( rhs.txVoltageCalibration() );
vBatWarn ( rhs.vBatWarn() );
vBatMin ( rhs.vBatMin() );
vBatMax ( rhs.vBatMax() );
@@ -424,10 +424,10 @@ void Profile::initFwVariables()
_timeStamp = "";
_trainerCalib = "";
- _currentCalib = 0;
+ _txCurrentCalibration = 0;
_gsStickMode = 0;
_ppmMultiplier = 0;
- _vBatCalib = 0;
+ _txVoltageCalibration = 0;
_vBatWarn = 0;
_vBatMin = 0;
_vBatMax = 0;
@@ -483,10 +483,10 @@ void Profile::flush()
getset( _stickPotCalib, "StickPotCalib" ,"" ,"Profiles", QString("profile%1").arg(index));
getset( _timeStamp, "TimeStamp" ,"" ,"Profiles", QString("profile%1").arg(index));
getset( _trainerCalib, "TrainerCalib" ,"" ,"Profiles", QString("profile%1").arg(index));
- getset( _currentCalib, "currentCalib" ,0 ,"Profiles", QString("profile%1").arg(index));
+ getset( _txCurrentCalibration, "currentCalib" ,0 ,"Profiles", QString("profile%1").arg(index));
getset( _gsStickMode, "GSStickMode" ,0 ,"Profiles", QString("profile%1").arg(index));
getset( _ppmMultiplier, "PPM_Multiplier" ,0 ,"Profiles", QString("profile%1").arg(index));
- getset( _vBatCalib, "VbatCalib" ,0 ,"Profiles", QString("profile%1").arg(index));
+ getset( _txVoltageCalibration, "VbatCalib" ,0 ,"Profiles", QString("profile%1").arg(index));
getset( _vBatWarn, "vBatWarn" ,0 ,"Profiles", QString("profile%1").arg(index));
getset( _vBatMin, "VbatMin" ,0 ,"Profiles", QString("profile%1").arg(index));
getset( _vBatMax, "VbatMax" ,0 ,"Profiles", QString("profile%1").arg(index));
diff --git a/companion/src/appdata.h b/companion/src/appdata.h
index abb2b7eab..d80dd115d 100644
--- a/companion/src/appdata.h
+++ b/companion/src/appdata.h
@@ -125,10 +125,10 @@ class Profile: protected CompStoreObj
QString _stickPotCalib;
QString _timeStamp;
QString _trainerCalib;
- int _currentCalib;
+ int _txCurrentCalibration;
int _gsStickMode;
int _ppmMultiplier;
- int _vBatCalib;
+ int _txVoltageCalibration;
int _vBatWarn;
int _vBatMin;
int _vBatMax;
@@ -156,10 +156,10 @@ class Profile: protected CompStoreObj
QString stickPotCalib() const;
QString timeStamp() const;
QString trainerCalib() const;
- int currentCalib() const;
+ int txCurrentCalibration() const;
int gsStickMode() const;
int ppmMultiplier() const;
- int vBatCalib() const;
+ int txVoltageCalibration() const;
int vBatWarn() const;
int vBatMin() const;
int vBatMax() const;
@@ -186,10 +186,10 @@ class Profile: protected CompStoreObj
void stickPotCalib (const QString);
void timeStamp (const QString);
void trainerCalib (const QString);
- void currentCalib (const int);
+ void txCurrentCalibration (const int);
void gsStickMode (const int);
void ppmMultiplier (const int);
- void vBatCalib (const int);
+ void txVoltageCalibration (const int);
void vBatWarn (const int);
void vBatMin (const int);
void vBatMax (const int);
diff --git a/companion/src/companion.cpp b/companion/src/companion.cpp
index 5a98d5299..13dfaa5ef 100644
--- a/companion/src/companion.cpp
+++ b/companion/src/companion.cpp
@@ -53,6 +53,7 @@
#undef main
#endif
#include "mainwindow.h"
+#include "version.h"
#include "eeprominterface.h"
#include "appdata.h"
@@ -87,6 +88,13 @@ int main(int argc, char *argv[])
app.setOrganizationDomain("open-tx.org");
app.setAttribute(Qt::AA_DontShowIconsInMenus, false);
+ QStringList strl = QApplication::arguments();
+ if (strl.contains("--version")) {
+ printf("%s\n", C9X_VERSION);
+ fflush(stdout);
+ exit(0);
+ }
+
#ifdef __APPLE__
app.setStyle(new MyProxyStyle);
#endif
diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc
index c31939f85..ed4700fc7 100644
--- a/companion/src/companion.qrc
+++ b/companion/src/companion.qrc
@@ -4,7 +4,6 @@
icon.png
../../CREDITS.txt
../../DONATIONS.txt
- ../../BLACKLIST.txt
../releasenotes.txt
images/9xdb.png
images/9xdl.png
@@ -101,6 +100,8 @@
images/library/00018.png
images/library/00019.png
images/library/00020.png
+ images/library/00021.png
+ images/library/00022.png
images/library/00050.png
images/library/00051.png
images/library/00052.png
diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp
index a05405a2f..4da955162 100644
--- a/companion/src/comparedialog.cpp
+++ b/companion/src/comparedialog.cpp
@@ -101,7 +101,7 @@ void CompareDialog::dropEvent(QDropEvent *event)
if (model1Valid && model2Valid) {
multimodelprinter.setModel(0, model1);
multimodelprinter.setModel(1, model2);
- ui->textEdit->setHtml(multimodelprinter.print());
+ ui->textEdit->setHtml(multimodelprinter.print(ui->textEdit->document()));
}
}
diff --git a/companion/src/constants.h b/companion/src/constants.h
index 3f319b666..10960074d 100644
--- a/companion/src/constants.h
+++ b/companion/src/constants.h
@@ -8,6 +8,7 @@ enum BoardEnum {
BOARD_GRUVIN9X,
BOARD_SKY9X,
BOARD_9XRPRO,
+ BOARD_AR9X,
BOARD_TARANIS,
BOARD_TARANIS_PLUS,
BOARD_TARANIS_X9E
diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp
index 9d7e45fac..66c798817 100644
--- a/companion/src/contributorsdialog.cpp
+++ b/companion/src/contributorsdialog.cpp
@@ -63,12 +63,15 @@ ContributorsDialog::ContributorsDialog(QWidget * parent):
" " + tr("Honors go to Rafal Tomczak (RadioClone), Thomas Husterer (th9x) and Erez Raviv (er9x and eePe)") + "
|
" \
"");
+#if 0
QFile blacklist(":/BLACKLIST.txt");
if (blacklist.open(QIODevice::ReadOnly | QIODevice::Text)) {
QStringList names;
names << blacklist.readAll();
str.append(formatTable(tr("OpenTX Blacklist"), names, 1));
}
+#endif
+
str.append("