Merge branch 'next' into bsongis/issue_1471_Lua_read_write_SD

This commit is contained in:
Andre Bernet
2015-03-31 20:04:39 +04:00
107 changed files with 2929 additions and 1707 deletions
+51 -19
View File
@@ -20,7 +20,7 @@ AppData g;
// ** CompStoreObj class********************
void CompStoreObj::clear (const QString tag1, const QString tag2, const QString tag3)
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (tag2.isEmpty())
{
settings.remove(tag1);
@@ -43,7 +43,7 @@ void CompStoreObj::clear (const QString tag1, const QString tag2, const QString
void CompStoreObj::store(const QByteArray newArray, QByteArray &array, const QString tag, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -56,7 +56,7 @@ void CompStoreObj::store(const QByteArray newArray, QByteArray &array, const QSt
void CompStoreObj::store(const QStringList newSList, QStringList &stringList, const QString tag, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -69,7 +69,7 @@ void CompStoreObj::store(const QStringList newSList, QStringList &stringList, co
void CompStoreObj::store(const QString newString, QString &string, const QString tag, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -82,7 +82,7 @@ void CompStoreObj::store(const QString newString, QString &string, const QString
void CompStoreObj::store(const bool newTruth, bool &truth, const QString tag, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -95,7 +95,7 @@ void CompStoreObj::store(const bool newTruth, bool &truth, const QString tag, co
void CompStoreObj::store(const int newNumber, int &number, const QString tag, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -109,7 +109,7 @@ void CompStoreObj::store(const int newNumber, int &number, const QString tag, co
// Retrieval functions
void CompStoreObj::retrieve( QByteArray &array, const QString tag, const QString def, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -121,7 +121,7 @@ void CompStoreObj::retrieve( QByteArray &array, const QString tag, const QString
void CompStoreObj::retrieve( QStringList &stringList, const QString tag, const QString def, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -133,7 +133,7 @@ void CompStoreObj::retrieve( QStringList &stringList, const QString tag, const Q
void CompStoreObj::retrieve( QString &string, const QString tag, const QString def, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -145,7 +145,7 @@ void CompStoreObj::retrieve( QString &string, const QString tag, const QString d
void CompStoreObj::retrieve( bool &truth, const QString tag, const bool def, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -157,7 +157,7 @@ void CompStoreObj::retrieve( bool &truth, const QString tag, const bool def, con
void CompStoreObj::retrieve( int &number, const QString tag, const int def, const QString group1, const QString group2 )
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
if (!group1.isEmpty()) settings.beginGroup(group1);
if (!group2.isEmpty()) settings.beginGroup(group2);
@@ -241,7 +241,7 @@ JStickData::JStickData()
void JStickData::remove()
{
// Remove all JStickData values from settings file
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
settings.beginGroup( "JsCalibration" );
settings.remove( QString( "stick%1_axe").arg(index) );
settings.remove( QString( "stick%1_min").arg(index) );
@@ -256,7 +256,7 @@ void JStickData::remove()
bool JStickData::existsOnDisk()
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
settings.beginGroup("JsCalibration");
int axe = settings.value( QString("stick%1_axe").arg(index), -1 ).toInt();
settings.endGroup();
@@ -377,7 +377,7 @@ Profile& Profile::operator=(const Profile& rhs)
void Profile::remove()
{
// Remove all profile values from settings file
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
settings.beginGroup("Profiles");
settings.remove(QString("profile%1").arg(index));
settings.endGroup();
@@ -388,7 +388,7 @@ void Profile::remove()
bool Profile::existsOnDisk()
{
QSettings settings(PRODUCT, COMPANY);
QSettings settings(COMPANY, PRODUCT);
settings.beginGroup("Profiles");
settings.beginGroup(QString("profile%1").arg(index));
QStringList keyList = settings.allKeys();
@@ -577,11 +577,43 @@ AppData::AppData()
for (int i=0; i<MAX_JOYSTICKS; i++)
joystick[i].init( i );
// Import settings from companion9x, but only do it one time.
QSettings c9x_settings("companion9x", "companion9x");
QSettings settings(PRODUCT, COMPANY);
if (profile[0].name().isEmpty() )
// Copy existing 2.0.16 settings if present
QSettings settings(COMPANY, PRODUCT);
if (profile[0].name().isEmpty())
{
QSettings settings20("OpenTX", "Companion 2.0");
QStringList keys = settings20.allKeys();
for (QStringList::iterator i=keys.begin(); i!=keys.end(); i++)
{
settings.setValue(*i, settings20.value(*i));
}
//Reload profiles
for (int i=0; i<MAX_PROFILES; i++)
profile[i].init( i );
}
// Else copy existing <2.0.16 settings if present
if (profile[0].name().isEmpty())
{
QSettings pre2016settings("OpenTX", "OpenTX Companion");
QStringList keys = pre2016settings.allKeys();
for (QStringList::iterator i=keys.begin(); i!=keys.end(); i++)
{
settings.setValue(*i, pre2016settings.value(*i));
}
//Reload profiles
for (int i=0; i<MAX_PROFILES; i++)
profile[i].init( i );
}
// Else import settings from companion9x if present
if (profile[0].name().isEmpty())
{
QSettings c9x_settings("companion9x", "companion9x");
// Copy all settings from companion9x to companion
QStringList keys = c9x_settings.allKeys();
for (QStringList::iterator i=keys.begin(); i!=keys.end(); i++)
+2 -2
View File
@@ -24,8 +24,8 @@
#include <QString>
#include <QSettings>
#define COMPANY "OpenTX Companion"
#define PRODUCT "OpenTX"
#define COMPANY "OpenTX"
#define PRODUCT "Companion 2.1"
#define MAX_PROFILES 15
#define MAX_JOYSTICKS 8
+19 -17
View File
@@ -533,15 +533,19 @@ QString RawSwitch::toString()
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('F'), QString::fromUtf8("SF-"), SwitchDn('F'),
SwitchUp('G'), QString::fromUtf8("SG-"), SwitchDn('G'),
SwitchUp('H'), SwitchDn('H'),
SwitchUp('I'), SwitchDn('I'),
SwitchUp('J'), SwitchDn('J'),
SwitchUp('K'), SwitchDn('K'),
SwitchUp('L'), SwitchDn('L'),
SwitchUp('M'), SwitchDn('M'),
SwitchUp('N'), SwitchDn('N'),
SwitchUp('H'), QString::fromUtf8("SH-"), SwitchDn('H'),
SwitchUp('I'), QString::fromUtf8("SI-"), SwitchDn('I'),
SwitchUp('J'), QString::fromUtf8("SJ-"), SwitchDn('J'),
SwitchUp('K'), QString::fromUtf8("SK-"), SwitchDn('K'),
SwitchUp('L'), QString::fromUtf8("SL-"), SwitchDn('L'),
SwitchUp('M'), QString::fromUtf8("SM-"), SwitchDn('M'),
SwitchUp('N'), QString::fromUtf8("SN-"), SwitchDn('N'),
SwitchUp('O'), QString::fromUtf8("SO-"), SwitchDn('O'),
SwitchUp('P'), QString::fromUtf8("SP-"), SwitchDn('P'),
SwitchUp('Q'), QString::fromUtf8("SQ-"), SwitchDn('Q'),
SwitchUp('R'), QString::fromUtf8("SR-"), SwitchDn('R'),
};
static const QString logicalSwitches[] = {
@@ -991,14 +995,7 @@ void LimitData::clear()
GeneralSettings::SwitchInfo GeneralSettings::switchInfoFromSwitchPositionTaranis(unsigned int index)
{
if (index <= 3*5)
return SwitchInfo((index-1)/3, (index-1)%3);
else if (index <= 17)
return SwitchInfo(5, index==17 ? 2 : 0);
else if (index <= 20)
return SwitchInfo(6, index-18);
else
return SwitchInfo(7+(index-21)/2, 2*((index-21)%2));
return SwitchInfo((index-1)/3, (index-1)%3);
}
bool GeneralSettings::switchPositionAllowedTaranis(int index) const
@@ -1011,7 +1008,12 @@ bool GeneralSettings::switchPositionAllowedTaranis(int index) const
else if (info.position == 1)
return switchConfig[info.index] == SWITCH_3POS;
else
return true;
return switchConfig[info.index] != SWITCH_NONE;
}
bool GeneralSettings::switchSourceAllowedTaranis(int index) const
{
return switchConfig[index] != SWITCH_NONE;
}
GeneralSettings::GeneralSettings()
+5 -3
View File
@@ -906,7 +906,8 @@ class SensorData {
char label[4+1];
unsigned int unit;
unsigned int prec;
unsigned int inputFlags;
bool autoOffset;
bool filter;
bool logs;
bool persistent;
@@ -1095,7 +1096,8 @@ class GeneralSettings {
bool enableTelemetryAlarm;
BeeperMode hapticMode;
unsigned int stickMode; // TODO enum
int timezone;
int timezone;
bool adjustRTC;
bool optrexDisplay;
unsigned int inactivityTimer;
bool minuteBeep;
@@ -1172,6 +1174,7 @@ class GeneralSettings {
static SwitchInfo switchInfoFromSwitchPositionTaranis(unsigned int index);
bool switchPositionAllowedTaranis(int index) const;
bool switchSourceAllowedTaranis(int index) const;
};
class RadioData {
@@ -1246,7 +1249,6 @@ enum Capability {
NoTelemetryProtocol,
TelemetryCustomScreens,
TelemetryCustomScreensFieldsPerLine,
TelemetryTimeshift,
TelemetryMaxMultiplier,
HasVario,
HasVarioSink,
@@ -2696,7 +2696,8 @@ class SensorField: public TransformedField {
internalField.Append(new UnsignedField<1>(sensor.type, "type"));
internalField.Append(new UnsignedField<5>(sensor.unit, "unit"));
internalField.Append(new UnsignedField<2>(sensor.prec, "prec"));
internalField.Append(new UnsignedField<2>(sensor.inputFlags, "inputFlags"));
internalField.Append(new BoolField<1>(sensor.autoOffset));
internalField.Append(new BoolField<1>(sensor.filter));
internalField.Append(new BoolField<1>(sensor.logs));
internalField.Append(new BoolField<1>(sensor.persistent));
internalField.Append(new SpareBitsField<4>());
@@ -2729,6 +2730,8 @@ class SensorField: public TransformedField {
if (sensor.type == SensorData::TYPE_CUSTOM) {
sensor.id = _id;
sensor.instance = _instance;
sensor.ratio = _param & 0xFF;
sensor.offset = (_param >> 16) & 0xFF;
}
else {
sensor.persistentValue = _id;
@@ -3012,8 +3015,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
}
if (IS_ARM(board) && version >= 217) {
int size = IS_TARANIS_X9E(board) ? 32 : 8;
for (int i=0; i<size; i++) {
for (int i=0; i<8; i++) {
if (i < MAX_POTS(board)+MAX_SLIDERS(board))
internalField.Append(new BoolField<1>(modelData.potsWarningEnabled[i]));
else
@@ -3031,7 +3033,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
}
if (IS_ARM(board) && version >= 216) {
for (int i=0; i < GetCurrentFirmware()->getCapability(Pots); i++) {
for (int i=0; i < MAX_POTS(board)+MAX_SLIDERS(board); i++) {
internalField.Append(new SignedField<8>(modelData.potPosition[i]));
}
}
@@ -3157,7 +3159,12 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
internalField.Append(new UnsignedField<2>(generalData.stickMode));
internalField.Append(new SignedField<5>(generalData.timezone));
internalField.Append(new SpareBitsField<1>());
if (version >= 217 && IS_TARANIS(board)) {
internalField.Append(new BoolField<1>(generalData.adjustRTC));
}
else {
internalField.Append(new SpareBitsField<1>());
}
internalField.Append(new UnsignedField<8>(generalData.inactivityTimer));
if (IS_9X(board) && version >= 215) {
@@ -3269,7 +3276,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, BoardEnum bo
internalField.Append(new SpareBitsField<64>());
else if (IS_TARANIS(board))
internalField.Append(new SpareBitsField<16>());
if (version >= 217) {
for (int i=0; i<MAX_CUSTOM_FUNCTIONS(board, version); i++) {
internalField.Append(new ArmCustomFunctionField(generalData.customFn[i], board, version, variant));
@@ -551,7 +551,7 @@ int OpenTxFirmware::getCapability(const Capability capability)
case FlightModesName:
return (IS_TARANIS(board) ? 10 : 6);
case GvarsName:
return 6;
return (IS_9X(board) ? 0 : 6);
case HasChNames:
return (IS_TARANIS(board) ? 1 : 0);
case GvarsInCS:
@@ -689,8 +689,6 @@ int OpenTxFirmware::getCapability(const Capability capability)
return IS_TARANIS(board) ? 1 : 0;
case TelemetryUnits:
return 0;
case TelemetryTimeshift:
return 1;
case TelemetryMaxMultiplier:
return (IS_ARM(board) ? 32 : 8);
case PPMCenter:
@@ -13,12 +13,13 @@
* GNU General Public License for more details.
*
*/
#ifndef open9x_interface_h
#define open9x_interface_h
#ifndef opentx_interface_h
#define opentx_interface_h
#include "eeprominterface.h"
#define OPENTX_FIRMWARE_DOWNLOADS "http://downloads-20.open-tx.org/firmware"
#define OPENTX_FIRMWARE_DOWNLOADS "http://downloads-21.open-tx.org/firmware"
class RleFile;
+14 -8
View File
@@ -123,17 +123,16 @@ GeneralSetupPanel::GeneralSetupPanel(QWidget * parent, GeneralSettings & general
ui->units_CB->setCurrentIndex(generalSettings.imperial);
}
if (!firmware->getCapability(TelemetryTimeshift)) {
ui->label_timezone->hide();
ui->timezoneSB->hide();
ui->timezoneSB->setDisabled(true);
ui->gpsFormatCB->hide();
ui->gpsFormatLabel->hide();
}
ui->gpsFormatCB->setCurrentIndex(generalSettings.gpsFormat);
ui->timezoneSB->setValue(generalSettings.timezone);
if (IS_TARANIS(firmware->getBoard())) {
ui->adjustRTC->setChecked(generalSettings.adjustRTC);
}
else {
ui->adjustRTC->hide();
}
if (!firmware->getCapability(OptrexDisplay)) {
ui->label_displayType->hide();
ui->displayTypeCB->setDisabled(true);
@@ -533,6 +532,13 @@ void GeneralSetupPanel::on_timezoneSB_editingFinished()
emit modified();
}
void GeneralSetupPanel::on_adjustRTC_stateChanged(int)
{
generalSettings.adjustRTC = ui->adjustRTC->isChecked();
emit modified();
}
void GeneralSetupPanel::on_inactimerSB_editingFinished()
{
generalSettings.inactivityTimer = ui->inactimerSB->value();
+2 -1
View File
@@ -19,7 +19,7 @@ class GeneralSetupPanel : public GeneralPanel
private slots:
void on_splashScreenChkB_stateChanged(int);
void on_splashScreenDuration_currentIndexChanged(int index);
void on_alarmwarnChkB_stateChanged(int );
void on_alarmwarnChkB_stateChanged(int);
void on_gpsFormatCB_currentIndexChanged(int index);
void on_displayTypeCB_currentIndexChanged(int index);
void on_BLBright_SB_editingFinished();
@@ -29,6 +29,7 @@ class GeneralSetupPanel : public GeneralPanel
void on_faimode_CB_stateChanged(int );
void on_speakerPitchSB_editingFinished();
void on_timezoneSB_editingFinished();
void on_adjustRTC_stateChanged(int);
void on_hapticStrength_valueChanged();
void on_soundModeCB_currentIndexChanged(int index);
void on_beeperlenCB_currentIndexChanged(int index);
+272 -255
View File
@@ -6,101 +6,29 @@
<rect>
<x>0</x>
<y>0</y>
<width>689</width>
<height>606</height>
<width>758</width>
<height>635</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0,0,0,0">
<item row="34" column="3">
<item row="36" column="0">
<widget class="QLabel" name="gpsFormatLabel">
<property name="text">
<string>GPS Coordinates</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="label_speakerPitch">
<property name="text">
<string>Speaker Pitch (spkr only)</string>
</property>
</widget>
</item>
<item row="36" column="4">
<widget class="QComboBox" name="voiceLang_CB"/>
</item>
<item row="33" column="3">
<item row="35" column="0">
<widget class="QLabel" name="units_label">
<property name="text">
<string>Measurement Units</string>
</property>
</widget>
</item>
<item row="34" column="4">
<widget class="QComboBox" name="gpsFormatCB">
<item>
<property name="text">
<string>hh° (N/S) mm' ss''.dd</string>
</property>
</item>
<item>
<property name="text">
<string>NMEA</string>
</property>
</item>
</widget>
</item>
<item row="35" column="4">
<widget class="QSpinBox" name="timezoneSB">
<property name="minimum">
<number>-14</number>
</property>
<property name="maximum">
<number>12</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="36" column="3">
<widget class="QLabel" name="VoiceLang_label">
<property name="text">
<string>Voice Language</string>
</property>
</widget>
</item>
<item row="35" column="3">
<widget class="QLabel" name="label_timezone">
<property name="text">
<string>Timeshift from UTC</string>
</property>
</widget>
</item>
<item row="33" column="4">
<widget class="QComboBox" name="units_CB">
<item>
<property name="text">
<string>Metric</string>
</property>
</item>
<item>
<property name="text">
<string>Imperial</string>
</property>
</item>
</widget>
</item>
<item row="31" column="3">
<widget class="QLabel" name="countrycode_label">
<property name="text">
<string>Country Code</string>
</property>
</widget>
</item>
<item row="31" column="4">
<widget class="QComboBox" name="countrycode_CB">
<item>
<property name="text">
@@ -119,6 +47,144 @@
</item>
</widget>
</item>
<item row="34" column="3">
<widget class="QLabel" name="label_faimode">
<property name="text">
<string>FAI Mode</string>
</property>
</widget>
</item>
<item row="35" column="3">
<widget class="QLabel" name="countrycode_label">
<property name="text">
<string>Country Code</string>
</property>
</widget>
</item>
<item row="12" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QCheckBox" name="splashScreenChkB">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Show splash screen on startup</string>
</property>
<property name="whatsThis">
<string>Show splash screen on startup</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="splashScreenDuration">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>---</string>
</property>
</item>
<item>
<property name="text">
<string>2s</string>
</property>
</item>
<item>
<property name="text">
<string>3s</string>
</property>
</item>
<item>
<property name="text">
<string>4s</string>
</property>
</item>
<item>
<property name="text">
<string>6s</string>
</property>
</item>
<item>
<property name="text">
<string>8s</string>
</property>
</item>
<item>
<property name="text">
<string>10s</string>
</property>
</item>
<item>
<property name="text">
<string>15s</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item row="36" column="1">
<widget class="QComboBox" name="gpsFormatCB">
<item>
<property name="text">
<string>hh° (N/S) mm' ss''.dd</string>
</property>
</item>
<item>
<property name="text">
<string>NMEA</string>
</property>
</item>
</widget>
</item>
<item row="35" column="1">
<widget class="QComboBox" name="units_CB">
<item>
<property name="text">
<string>Metric</string>
</property>
</item>
<item>
<property name="text">
<string>Imperial</string>
</property>
</item>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="label_speakerPitch">
<property name="text">
<string>Speaker Pitch (spkr only)</string>
</property>
</widget>
</item>
<item row="37" column="4">
<widget class="QComboBox" name="voiceLang_CB"/>
</item>
<item row="37" column="3">
<widget class="QLabel" name="VoiceLang_label">
<property name="text">
<string>Voice Language</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSlider" name="hapticStrength">
<property name="minimum">
@@ -195,6 +261,41 @@
</item>
</layout>
</item>
<item row="16" column="1">
<widget class="QCheckBox" name="memwarnChkB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; text-decoration: underline;&quot;&gt;Warnings&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;These will define startup warnings.&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Throttle warning - will alert if the throttle is not at idle during startup&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Switch warning - will alert if switches are not in their defaul position&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Memory warning - will alert if there's not a lot of memory left&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Silent mode warning - will alert you if the beeper is set to quiet (0)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_beeperlen">
<property name="text">
@@ -247,7 +348,7 @@
</property>
</widget>
</item>
<item row="38" column="0" colspan="2">
<item row="39" column="0" colspan="2">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -1278,41 +1379,6 @@ Acceptable values are 5v..10v</string>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QCheckBox" name="memwarnChkB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="whatsThis">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; text-decoration: underline;&quot;&gt;Warnings&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;These will define startup warnings.&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Throttle warning - will alert if the throttle is not at idle during startup&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Switch warning - will alert if switches are not in their defaul position&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Memory warning - will alert if there's not a lot of memory left&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Silent mode warning - will alert you if the beeper is set to quiet (0)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="17" column="0">
<widget class="QLabel" name="mavbaud_label">
<property name="text">
@@ -1404,85 +1470,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="12" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QCheckBox" name="splashScreenChkB">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>Show splash screen on startup</string>
</property>
<property name="whatsThis">
<string>Show splash screen on startup</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="splashScreenDuration">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>---</string>
</property>
</item>
<item>
<property name="text">
<string>2s</string>
</property>
</item>
<item>
<property name="text">
<string>3s</string>
</property>
</item>
<item>
<property name="text">
<string>4s</string>
</property>
</item>
<item>
<property name="text">
<string>6s</string>
</property>
</item>
<item>
<property name="text">
<string>8s</string>
</property>
</item>
<item>
<property name="text">
<string>10s</string>
</property>
</item>
<item>
<property name="text">
<string>15s</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_27">
<property name="text">
@@ -1607,19 +1594,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="33" column="0">
<widget class="QLabel" name="stickReverseLB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Stick reverse (order as above)</string>
</property>
</widget>
</item>
<item row="34" column="0">
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
@@ -1633,13 +1607,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="35" column="0">
<widget class="QLabel" name="label_faimode">
<property name="text">
<string>FAI Mode</string>
</property>
</widget>
</item>
<item row="31" column="1">
<widget class="QComboBox" name="stickmodeCB">
<property name="toolTip">
@@ -1694,38 +1661,6 @@ Mode 4:
</item>
</widget>
</item>
<item row="33" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QCheckBox" name="stickReverse1">
<property name="text">
<string notr="true">1</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="stickReverse2">
<property name="text">
<string notr="true">2</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="stickReverse3">
<property name="text">
<string notr="true">3</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="stickReverse4">
<property name="text">
<string notr="true">4</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="34" column="1">
<widget class="QComboBox" name="channelorderCB">
<property name="toolTip">
@@ -1862,17 +1797,7 @@ Mode 4:
</item>
</widget>
</item>
<item row="35" column="1">
<widget class="QCheckBox" name="faimode_CB">
<property name="toolTip">
<string>If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio.</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="36" column="0">
<item row="37" column="0">
<widget class="QLabel" name="switchesDelayLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
@@ -1885,7 +1810,7 @@ Mode 4:
</property>
</widget>
</item>
<item row="36" column="1">
<item row="37" column="1">
<widget class="QSpinBox" name="switchesDelay">
<property name="toolTip">
<string/>
@@ -1932,6 +1857,98 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="36" column="3">
<widget class="QLabel" name="label_timezone">
<property name="text">
<string>Timeshift from UTC</string>
</property>
</widget>
</item>
<item row="31" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QCheckBox" name="stickReverse1">
<property name="text">
<string notr="true">1</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="stickReverse2">
<property name="text">
<string notr="true">2</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="stickReverse3">
<property name="text">
<string notr="true">3</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="stickReverse4">
<property name="text">
<string notr="true">4</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="31" column="3">
<widget class="QLabel" name="stickReverseLB">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Stick reverse</string>
</property>
</widget>
</item>
<item row="36" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSpinBox" name="timezoneSB">
<property name="minimum">
<number>-14</number>
</property>
<property name="maximum">
<number>12</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="adjustRTC">
<property name="toolTip">
<string>If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio.</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string>Adjust RTC</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="34" column="4">
<widget class="QCheckBox" name="faimode_CB">
<property name="toolTip">
<string>If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio.</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
+12 -5
View File
@@ -412,9 +412,10 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin
}
for (int i=-GetCurrentFirmware()->getCapability(SwitchesPositions); i<0; i++) {
if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i))
continue;
item = RawSwitch(SWITCH_TYPE_SWITCH, i);
if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)){
continue;
}
b->addItem(item.toString(), item.toValue());
if (item == value) b->setCurrentIndex(b->count()-1);
}
@@ -433,9 +434,10 @@ void populateSwitchCB(QComboBox *b, const RawSwitch & value, const GeneralSettin
}
for (int i=1; i<=GetCurrentFirmware()->getCapability(SwitchesPositions); i++) {
if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i))
continue;
item = RawSwitch(SWITCH_TYPE_SWITCH, i);
if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchPositionAllowedTaranis(i)){
continue;
}
b->addItem(item.toString(), item.toValue());
if (item == value) b->setCurrentIndex(b->count()-1);
}
@@ -525,7 +527,7 @@ void populateGVCB(QComboBox *b, int value)
}
}
void populateSourceCB(QComboBox *b, const RawSource & source, const ModelData * model, unsigned int flags)
void populateSourceCB(QComboBox *b, const RawSource & source, const GeneralSettings generalSettings, const ModelData * model, unsigned int flags)
{
BoardEnum board = GetCurrentFirmware()->getBoard();
RawSource item;
@@ -590,6 +592,11 @@ void populateSourceCB(QComboBox *b, const RawSource & source, const ModelData *
for (int i=0; i<GetCurrentFirmware()->getCapability(Switches); i++) {
item = RawSource(SOURCE_TYPE_SWITCH, i);
b->addItem(item.toString(model), item.toValue());
if (IS_TARANIS(GetCurrentFirmware()->getBoard()) && !generalSettings.switchSourceAllowedTaranis(i)) {
QModelIndex index = b->model()->index(b->count()-1, 0);
QVariant v(0);
b->model()->setData(index, v, Qt::UserRole - 1);
}
if (item == source) b->setCurrentIndex(b->count()-1);
}
+1 -1
View File
@@ -115,7 +115,7 @@ QString getPhasesStr(unsigned int phases, ModelData * model);
// void populateGVarCB(QComboBox *b, int value, int min, int max,int pgvars=5); //TODO: Clean Up
void populateGVCB(QComboBox *b, int value);
void populateSourceCB(QComboBox *b, const RawSource &source, const ModelData * model, unsigned int flags);
void populateSourceCB(QComboBox *b, const RawSource &source, const GeneralSettings generalSettings, const ModelData * model, unsigned int flags);
QString getPhaseName(int val, const char * phasename=NULL);
QString getInputStr(ModelData * model, int index);
QString image2qstring(QImage image);
+3 -3
View File
@@ -68,7 +68,7 @@
#include "radiointerface.h"
#include "progressdialog.h"
#define OPENTX_COMPANION_DOWNLOADS "http://downloads-20.open-tx.org/companion"
#define OPENTX_COMPANION_DOWNLOADS "http://downloads-21.open-tx.org/companion"
#define DONATE_STR "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QUZ48K4SEXDP2"
#ifdef __APPLE__
@@ -121,6 +121,7 @@ MainWindow::MainWindow():
}
QTimer::singleShot(updateDelay, this, SLOT(doAutoUpdates()));
QTimer::singleShot(updateDelay, this, SLOT(displayWarnings()));
updateSdsyncAction();
QStringList strl = QApplication::arguments();
QString str;
@@ -916,13 +917,12 @@ void MainWindow::updateMenus()
printAct->setEnabled(hasSelection);
loadbackupAct->setEnabled(hasMdiChild);
compareAct->setEnabled(activeMdiChild());
updateSdsyncAction();
updateRecentFileActions();
updateProfilesActions();
updateLanguageActions();
updateIconSizeActions();
updateIconThemeActions();
setWindowTitle(tr("OpenTX Companion - FW: %1 - Profile: %2").arg(GetCurrentFirmware()->getName()).arg( g.profile[g.id()].name() ));
setWindowTitle(tr("OpenTX Companion 2.1 - FW: %1 - Profile: %2").arg(GetCurrentFirmware()->getName()).arg( g.profile[g.id()].name() ));
}
MdiChild *MainWindow::createMdiChild()
+5 -4
View File
@@ -264,6 +264,7 @@ void CustomFunctionsPanel::playMusic()
phononCurrent = -1;
}
else {
playBT[phononCurrent]->setIcon(CompanionIcon("play.png"));
phononCurrent = index;
clickObject->clear();
#ifdef __APPLE__
@@ -714,18 +715,18 @@ void CustomFunctionsPanel::populateFuncParamCB(QComboBox *b, uint function, unsi
b->setCurrentIndex(value);
}
else if (function==FuncVolume) {
populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS);
populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS);
}
else if (function==FuncPlayValue) {
populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT);
populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT);
}
else if (function>=FuncAdjustGV1 && function<=FuncAdjustGVLast) {
switch (adjustmode) {
case 1:
populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS|POPULATE_SWITCHES);
populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS|POPULATE_SWITCHES);
break;
case 2:
populateSourceCB(b, RawSource(value), model, POPULATE_GVARS);
populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_GVARS);
break;
case 3:
b->clear();
+1 -1
View File
@@ -60,7 +60,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G
if (firmware->getCapability(VirtualInputs)) {
ui->inputName->setMaxLength(4);
populateSourceCB(ui->sourceCB, ed->srcRaw, &model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY);
populateSourceCB(ui->sourceCB, ed->srcRaw, generalSettings, &model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY);
ui->sourceCB->removeItem(0);
}
else {
+3 -1
View File
@@ -209,7 +209,9 @@ void FlightModePanel::update()
if (ui->gvGB->isVisible()) {
for (int i=0; i<gvCount; i++) {
gvNames[i]->setText(model->gvars_names[i]);
if (firmware->getCapability(GvarsName) > 0) {
gvNames[i]->setText(model->gvars_names[i]);
}
gvValues[i]->setDisabled(model->isGVarLinked(phaseIdx, i));
gvValues[i]->setValue(model->getGVarValue(phaseIdx, i));
if (IS_TARANIS(GetEepromInterface()->getBoard()) && phaseIdx == 0) {
+3 -3
View File
@@ -48,11 +48,11 @@ void HeliPanel::update()
lock = true;
ui->swashType->setCurrentIndex(model->swashRingData.type);
populateSourceCB(ui->swashCollectiveSource, model->swashRingData.collectiveSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
populateSourceCB(ui->swashCollectiveSource, model->swashRingData.collectiveSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
ui->swashRingVal->setValue(model->swashRingData.value);
if (firmware->getCapability(VirtualInputs)) {
populateSourceCB(ui->swashElevatorSource, model->swashRingData.elevatorSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
populateSourceCB(ui->swashAileronSource, model->swashRingData.aileronSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
populateSourceCB(ui->swashElevatorSource, model->swashRingData.elevatorSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
populateSourceCB(ui->swashAileronSource, model->swashRingData.aileronSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
ui->swashElevatorWeight->setValue(model->swashRingData.elevatorWeight);
ui->swashAileronWeight->setValue(model->swashRingData.aileronWeight);
ui->swashCollectiveWeight->setValue(model->swashRingData.collectiveWeight);
+4 -3
View File
@@ -261,6 +261,7 @@ void LogicalSwitchesPanel::edited()
}
emit modified();
lock = false;
updateLine(i);
}
}
@@ -300,7 +301,7 @@ void LogicalSwitchesPanel::setSwitchWidgetVisibility(int i)
{
case LS_FAMILY_VOFS:
mask |= SOURCE1_VISIBLE;
populateSourceCB(cswitchSource1[i], source, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0));
populateSourceCB(cswitchSource1[i], source, generalSettings, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0));
cswitchOffset[i]->setDecimals(range.decimals);
cswitchOffset[i]->setSingleStep(range.step);
if (source.isTimeBased()) {
@@ -345,8 +346,8 @@ void LogicalSwitchesPanel::setSwitchWidgetVisibility(int i)
break;
case LS_FAMILY_VCOMP:
mask |= SOURCE1_VISIBLE | SOURCE2_VISIBLE;
populateSourceCB(cswitchSource1[i], RawSource(model->logicalSw[i].val1), model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0));
populateSourceCB(cswitchSource2[i], RawSource(model->logicalSw[i].val2), model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0));
populateSourceCB(cswitchSource1[i], RawSource(model->logicalSw[i].val1), generalSettings, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0));
populateSourceCB(cswitchSource2[i], RawSource(model->logicalSw[i].val2), generalSettings, model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (firmware->getCapability(GvarsInCS) ? POPULATE_GVARS : 0));
break;
case LS_FAMILY_TIMER:
mask |= VALUE1_VISIBLE | VALUE2_VISIBLE;
+1 -1
View File
@@ -19,7 +19,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, G
this->setWindowTitle(tr("DEST -> CH%1").arg(md->destCh));
populateSourceCB(ui->sourceCB, md->srcRaw, &model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
populateSourceCB(ui->sourceCB, md->srcRaw, generalSettings, &model, POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
ui->sourceCB->removeItem(0);
int limit = firmware->getCapability(OffsetWeight);
+23 -9
View File
@@ -495,19 +495,16 @@ SetupPanel::SetupPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
slider->setTickPosition(QSlider::TicksBothSides);
slider->setMinimumSize(QSize(30, 50));
slider->setMaximumSize(QSize(50, 50));
slider->setSingleStep(1);
slider->setPageStep(1);
slider->setTickInterval(1);
if (IS_TARANIS(board)) {
label->setText(switchesX9D[i]);
slider->setMaximum(2);
slider->setSingleStep(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 1 : 2);
slider->setPageStep(slider->singleStep());
slider->setTickInterval(slider->singleStep());
slider->setMaximum(generalSettings.switchConfig[i] == GeneralSettings::SWITCH_3POS ? 2 : 1);
}
else {
label->setText(switches9X[i]);
slider->setMaximum(i==0 ? 2 : 1);
slider->setSingleStep(1);
slider->setPageStep(1);
slider->setTickInterval(1);
}
cb->setProperty("index", i);
ui->switchesStartupLayout->addWidget(label, 0, i+1);
@@ -735,12 +732,25 @@ void SetupPanel::updateBeepCenter()
void SetupPanel::updateStartupSwitches()
{
lock = true;
unsigned int switchStates = model->switchWarningStates;
unsigned int value;
for (int i=0; i<startupSwitchesSliders.size(); i++) {
QSlider *slider = startupSwitchesSliders[i];
QCheckBox * cb = startupSwitchesCheckboxes[i];
int index = slider->property("index").toInt();
bool enabled = !(model->switchWarningEnable & (1 << index));
if (IS_TARANIS(GetEepromInterface()->getBoard())) {
value = (switchStates >> 2*index) & 0x03;
if (generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS && value == 2)
value = 1;
}
else {
value = (i==0 ? switchStates & 0x3 : switchStates & 0x1);
switchStates >>= (i==0 ? 2 : 1);
}
slider->setValue(value);
slider->setEnabled(enabled);
cb->setChecked(enabled);
}
@@ -760,16 +770,20 @@ void SetupPanel::startupSwitchEdited(int value)
mask = 0x03 << shift;
}
else {
if (index == 1) {
if (index == 0) {
mask = 0x03;
}
else {
shift = index;
shift = index+1;
mask = 0x01 << shift;
}
}
model->switchWarningStates &= ~mask;
if (IS_TARANIS(GetEepromInterface()->getBoard()) && generalSettings.switchConfig[index] != GeneralSettings::SWITCH_3POS) {
if (value == 1) value = 2;
}
if (value) {
model->switchWarningStates |= (value << shift);
+21 -5
View File
@@ -486,7 +486,8 @@ TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor,
ui->instance->setField(sensor.instance);
ui->ratio->setField(sensor.ratio);
ui->offset->setField(sensor.offset);
ui->inputFlags->setField(sensor.inputFlags);
ui->autoOffset->setField(sensor.autoOffset);
ui->filter->setField(sensor.filter);
ui->logs->setField(sensor.logs);
ui->persistent->setField(sensor.persistent);
ui->gpsSensor->setField(sensor.gps);
@@ -557,13 +558,28 @@ void TelemetrySensorPanel::update()
ui->instance->show();
ui->formula->hide();
ratioFieldsDisplayed = (sensor.unit != SensorData::UNIT_GPS && sensor.unit != SensorData::UNIT_DATETIME);
ui->offset->setDecimals(sensor.prec);
precDisplayed = (sensor.unit != SensorData::UNIT_GPS && sensor.unit != SensorData::UNIT_DATETIME);
ui->offset->setMaximum((sensor.prec > 0 ? sensor.prec == 2 ? 30000 : 3000 : 300));
ui->offset->setMinimum((sensor.prec > 0 ? sensor.prec == 2 ? -30000 : -3000 : -300));
if (sensor.unit == SensorData::UNIT_RPMS) {
ui->offset->setDecimals(0);
ui->ratio->setDecimals(0);
ui->autoOffset->hide();
ui->ratio->setMinimum(1);
ui->offset->setMinimum(1);
}
else {
ui->offset->setDecimals(sensor.prec);
ui->ratio->setDecimals(1);
}
}
ui->ratioLabel->setVisible(ratioFieldsDisplayed);
ui->ratioLabel->setVisible(ratioFieldsDisplayed && sensor.unit != SensorData::UNIT_RPMS);
ui->bladesLabel->setVisible(sensor.unit == SensorData::UNIT_RPMS);
ui->ratio->setVisible(ratioFieldsDisplayed);
ui->offsetLabel->setVisible(ratioFieldsDisplayed);
ui->offsetLabel->setVisible(ratioFieldsDisplayed && sensor.unit != SensorData::UNIT_RPMS);
ui->multiplierLabel->setVisible(sensor.unit == SensorData::UNIT_RPMS);
ui->offset->setVisible(ratioFieldsDisplayed);
ui->precLabel->setVisible(precDisplayed);
ui->prec->setVisible(precDisplayed);
@@ -642,7 +658,7 @@ void TelemetrySensorPanel::on_unit_currentIndexChanged(int index)
}
}
void TelemetrySensorPanel::on_prec_editingFinished()
void TelemetrySensorPanel::on_prec_valueChanged()
{
if (!lock) {
sensor.prec = ui->prec->value();
+1 -1
View File
@@ -95,7 +95,7 @@ class TelemetrySensorPanel: public ModelPanel
void on_type_currentIndexChanged(int index);
void on_formula_currentIndexChanged(int index);
void on_unit_currentIndexChanged(int index);
void on_prec_editingFinished();
void on_prec_valueChanged();
protected:
void updateSourcesComboBox(AutoComboBox * cb, bool negative);
+79 -27
View File
@@ -13,7 +13,7 @@
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,0,1,0,1,0,1,1,0,1">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1">
<property name="leftMargin">
<number>0</number>
</property>
@@ -419,6 +419,46 @@
<string>Percentage (%)</string>
</property>
</item>
<item>
<property name="text">
<string>Energy (mAh)</string>
</property>
</item>
<item>
<property name="text">
<string>Power (W)</string>
</property>
</item>
<item>
<property name="text">
<string>RF Power (dBm)</string>
</property>
</item>
<item>
<property name="text">
<string>RPM</string>
</property>
</item>
<item>
<property name="text">
<string>Acceleration (g)</string>
</property>
</item>
<item>
<property name="text">
<string>Heading (°)</string>
</property>
</item>
<item>
<property name="text">
<string>Volume (mL)</string>
</property>
</item>
<item>
<property name="text">
<string>Volume (US fl.Oz.)</string>
</property>
</item>
</widget>
</item>
<item>
@@ -466,6 +506,13 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="bladesLabel">
<property name="text">
<string>Blades</string>
</property>
</widget>
</item>
<item>
<widget class="AutoDoubleSpinBox" name="ratio">
<property name="enabled">
@@ -478,7 +525,10 @@
</sizepolicy>
</property>
<property name="decimals">
<number>1</number>
<number>0</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>3000.000000000000000</double>
@@ -498,6 +548,13 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="multiplierLabel">
<property name="text">
<string>Multiplier</string>
</property>
</widget>
</item>
<item>
<widget class="AutoDoubleSpinBox" name="offset">
<property name="sizePolicy">
@@ -507,42 +564,37 @@
</sizepolicy>
</property>
<property name="decimals">
<number>2</number>
<number>0</number>
</property>
<property name="minimum">
<double>-12.800000000000001</double>
<double>-30000.000000000000000</double>
</property>
<property name="maximum">
<double>12.699999999999999</double>
<double>30000.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item>
<widget class="AutoComboBox" name="inputFlags">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="AutoCheckBox" name="autoOffset">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Auto Offset</string>
</property>
</widget>
</item>
<item>
<widget class="AutoCheckBox" name="filter">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Filter</string>
</property>
<item>
<property name="text">
<string>---</string>
</property>
</item>
<item>
<property name="text">
<string>Auto Offset</string>
</property>
</item>
<item>
<property name="text">
<string>Filtered</string>
</property>
</item>
</widget>
</item>
<item>
@@ -31,7 +31,7 @@ void registerSimulators()
{
QDir dir(".");
QStringList filters;
#if !defined __GNUC__
#if (!defined __GNUC__) || (defined __CYGWIN__)
filters << "*-simulator.dll";
#else
filters << "*-simulator.so";
+115 -5
View File
@@ -61,11 +61,14 @@ void generateSportPacket(uint8_t * packet, uint8_t dataId, uint8_t prim, uint16_
void TelemetrySimulator::generateTelemetryFrame()
{
static int item = 0;
bool ok = true;
uint8_t buffer[FRSKY_SPORT_PACKET_SIZE];
memset(buffer, 0, sizeof(buffer));
switch(item++) {
case 0:
generateSportPacket(buffer, 1, DATA_FRAME, RSSI_ID, LIMIT<uint32_t>(0, ui->Rssi->text().toInt(), 0xFF));
if (ui->Rssi->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, RSSI_ID, LIMIT<uint32_t>(0, ui->Rssi->text().toInt(&ok, 0), 0xFF));
break;
case 1:
@@ -75,20 +78,127 @@ void TelemetrySimulator::generateTelemetryFrame()
break;
case 2:
generateSportPacket(buffer, 1, DATA_FRAME, SWR_ID, LIMIT<uint32_t>(0, ui->Swr->text().toInt(), 0xFF));
if (ui->Swr->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, SWR_ID, LIMIT<uint32_t>(0, ui->Swr->text().toInt(&ok, 0), 0xFFFF));
break;
case 3:
generateSportPacket(buffer, 1, DATA_FRAME, ADC1_ID, LIMIT<uint32_t>(0, ui->A1->text().toInt(), 0xFF));
if (ui->A1->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, ADC1_ID, LIMIT<uint32_t>(0, ui->A1->text().toInt(&ok, 0), 0xFF));
break;
case 4:
generateSportPacket(buffer, 1, DATA_FRAME, ADC2_ID, LIMIT<uint32_t>(0, ui->A2->text().toInt(), 0xFF));
if (ui->A2->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, ADC2_ID, LIMIT<uint32_t>(0, ui->A2->text().toInt(&ok, 0), 0xFF));
break;
case 5:
if (ui->A3->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, A3_FIRST_ID, LIMIT<uint32_t>(0, ui->A3->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 6:
if (ui->A4->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, A4_FIRST_ID, LIMIT<uint32_t>(0, ui->A4->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 7:
if (ui->T1->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, T1_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->T1->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 8:
if (ui->T2->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, T2_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->T2->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 9:
if (ui->rpm->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, RPM_FIRST_ID, LIMIT<uint32_t>(0, ui->rpm->text().toInt(&ok, 0), 0xFFFF));
break;
case 10:
if (ui->fuel->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, FUEL_FIRST_ID, LIMIT<uint32_t>(0, ui->fuel->text().toInt(&ok, 0), 0xFFFF));
break;
case 11:
if (ui->aspeed->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, AIR_SPEED_FIRST_ID, LIMIT<uint32_t>(0, ui->aspeed->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 12:
if (ui->vspeed->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, VARIO_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->vspeed->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 13:
if (ui->valt->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, ALT_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->valt->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 14:
if (ui->accx->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, ACCX_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->accx->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 15:
if (ui->accy->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, ACCY_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->accy->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 16:
if (ui->accz->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, ACCZ_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->accz->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 17:
if (ui->vfas->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, VFAS_FIRST_ID, LIMIT<uint32_t>(0, ui->vfas->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 18:
if (ui->curr->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, CURR_FIRST_ID, LIMIT<uint32_t>(0, ui->curr->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 19:
if (ui->cells->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, CELLS_FIRST_ID, LIMIT<uint32_t>(0, ui->cells->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 20:
if (ui->gps_alt->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, GPS_ALT_FIRST_ID, LIMIT<int32_t>(-0x7FFFFFFF, ui->gps_alt->text().toInt(&ok, 0), 0x7FFFFFFF));
break;
case 21:
if (ui->gps_speed->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, GPS_SPEED_FIRST_ID, LIMIT<uint32_t>(0, ui->gps_speed->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 22:
if (ui->gps_course->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, GPS_COURS_FIRST_ID, LIMIT<uint32_t>(0, ui->gps_course->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 23:
if (ui->gps_time->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, GPS_TIME_DATE_FIRST_ID, LIMIT<uint32_t>(0, ui->gps_time->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
case 24:
if (ui->gps_latlon->text().length())
generateSportPacket(buffer, 1, DATA_FRAME, GPS_LONG_LATI_FIRST_ID, LIMIT<uint32_t>(0, ui->gps_latlon->text().toInt(&ok, 0), 0xFFFFFFFF));
break;
default:
item = 0;
return;
}
simulator->sendTelemetry(buffer, 9);
if (ok && buffer[0])
simulator->sendTelemetry(buffer, FRSKY_SPORT_PACKET_SIZE);
else
onTimerEvent();
}
+293 -18
View File
@@ -6,67 +6,342 @@
<rect>
<x>0</x>
<y>0</y>
<width>184</width>
<height>165</height>
<width>278</width>
<height>384</height>
</rect>
</property>
<property name="windowTitle">
<string>Telemetry Simulator</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="bottomMargin">
<number>6</number>
</property>
<item row="3" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="12" column="0">
<widget class="QLabel" name="label_12">
<property name="toolTip">
<string>Vario Altitude</string>
</property>
<property name="text">
<string>V-ALT</string>
</property>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_11">
<property name="toolTip">
<string>Vario Vertical Speed</string>
</property>
<property name="text">
<string>V-VSPD</string>
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QLineEdit" name="valt"/>
</item>
<item row="11" column="1">
<widget class="QLineEdit" name="vspeed"/>
</item>
<item row="5" column="3">
<widget class="QLineEdit" name="gps_alt"/>
</item>
<item row="12" column="2">
<widget class="QLabel" name="label_15">
<property name="text">
<string>ACCZ</string>
</property>
</widget>
</item>
<item row="8" column="2">
<widget class="QLabel" name="label_23">
<property name="toolTip">
<string>GPS Time</string>
</property>
<property name="text">
<string>GPS-T</string>
</property>
</widget>
</item>
<item row="8" column="3">
<widget class="QLineEdit" name="gps_time"/>
</item>
<item row="10" column="2">
<widget class="QLabel" name="label_13">
<property name="text">
<string>ACCX</string>
</property>
</widget>
</item>
<item row="10" column="3">
<widget class="QLineEdit" name="accx"/>
</item>
<item row="3" column="3">
<widget class="QLineEdit" name="Swr"/>
<widget class="QLineEdit" name="cells"/>
</item>
<item row="4" column="3">
<widget class="QLineEdit" name="A1"/>
<item row="2" column="3">
<widget class="QLineEdit" name="curr"/>
</item>
<item row="1" column="1">
<item row="6" column="3">
<widget class="QLineEdit" name="gps_speed"/>
</item>
<item row="9" column="2">
<widget class="QLabel" name="label_24">
<property name="toolTip">
<string>GPS Lat/Lon</string>
</property>
<property name="text">
<string>GPS-LL</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_17">
<property name="toolTip">
<string>VFAS</string>
</property>
<property name="text">
<string>FAS-V</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLabel" name="label_21">
<property name="toolTip">
<string>GPS Speed</string>
</property>
<property name="text">
<string>GPS-S</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="label_19">
<property name="text">
<string>CELLS</string>
</property>
</widget>
</item>
<item row="11" column="3">
<widget class="QLineEdit" name="accy"/>
</item>
<item row="7" column="3">
<widget class="QLineEdit" name="gps_course"/>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="vfas"/>
</item>
<item row="11" column="2">
<widget class="QLabel" name="label_14">
<property name="text">
<string>ACCY</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QLabel" name="label_22">
<property name="toolTip">
<string>GPS Course</string>
</property>
<property name="text">
<string>GPS-C</string>
</property>
</widget>
</item>
<item row="9" column="3">
<widget class="QLineEdit" name="gps_latlon"/>
</item>
<item row="12" column="3">
<widget class="QLineEdit" name="accz"/>
</item>
<item row="5" column="2">
<widget class="QLabel" name="label_20">
<property name="toolTip">
<string>GPS Altitude</string>
</property>
<property name="text">
<string>GPS-A</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_18">
<property name="toolTip">
<string>CURRENT</string>
</property>
<property name="text">
<string>FAS-C</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="Swr">
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>RSSI</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="Rssi"/>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_3">
<item row="1" column="1">
<widget class="QLineEdit" name="Rssi">
<property name="text">
<string>A1</string>
<string>75</string>
</property>
</widget>
</item>
<item row="3" column="1">
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>SWR</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QCheckBox" name="Simulate">
<item row="4" column="2">
<widget class="QLabel" name="label_16">
<property name="toolTip">
<string>FR_ID_AIR_SPEED</string>
</property>
<property name="text">
<string>simulate</string>
<string>ASPD</string>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QLineEdit" name="aspeed"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="A1"/>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="A2"/>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="A3"/>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="A4"/>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="T1"/>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="T2"/>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="rpm"/>
</item>
<item row="10" column="1">
<widget class="QLineEdit" name="fuel"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>A1</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>A2</string>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QLineEdit" name="A2"/>
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>A3</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>A4</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="toolTip">
<string>Temperature 1</string>
</property>
<property name="text">
<string>T1</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_9">
<property name="toolTip">
<string>Temperature 2</string>
</property>
<property name="text">
<string>T2</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>RPM</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>FUEL</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="Simulate">
<property name="toolTip">
<string>When enabled, sends any non-blank values as simulated telemetry data.</string>
</property>
<property name="text">
<string>simulate</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_25">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Start with &lt;span style=&quot; font-style:italic;&quot;&gt;0x&lt;/span&gt; for hex, &lt;span style=&quot; font-style:italic;&quot;&gt;0&lt;/span&gt; for octal, otherwise decimal.&lt;br/&gt;Numeric entry only. Blank values are not sent.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>Simulate</tabstop>
<tabstop>Rssi</tabstop>
<tabstop>Swr</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>
@@ -173,8 +173,10 @@ Section "Uninstall"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\lang\*.*"
Delete "$INSTDIR\phonon_backend\*.*"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR\phonon_backend"
RMDir "$INSTDIR"
${unregisterExtension} ".bin" "BIN File"
+22 -20
View File
@@ -12,14 +12,14 @@
;General
;Name and file
Name "OpenTX Companion"
Name "OpenTX Companion 2.1"
OutFile "companionInstall_@C9X_VERSION@.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\OpenTX"
InstallDir "$PROGRAMFILES\OpenTX\Companion 2.1"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\OpenTX" ""
InstallDirRegKey HKCU "Software\OpenTX\Companion 2.1" ""
;Compressor options
SetCompressor /FINAL /SOLID lzma
@@ -66,7 +66,7 @@
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX\Companion 2.1"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
@@ -77,7 +77,7 @@
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_CHECKED
!define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Companion"
!define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Companion 2.1"
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
# !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
# !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt
@@ -134,7 +134,7 @@ Section "OpenTX Companion" SecDummy
SetOutPath "$INSTDIR"
;Store installation folder
WriteRegStr HKCU "Software\OpenTX" "" $INSTDIR
WriteRegStr HKCU "Software\OpenTX\Companion 2.1" "" $INSTDIR
;Associate with extentions ,bin and .hex
${registerExtension} "$INSTDIR\companion.exe" ".bin" "BIN_File"
@@ -147,20 +147,20 @@ Section "OpenTX Companion" SecDummy
WriteUninstaller "$INSTDIR\Uninstall.exe"
;Registry information for add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayName" "OpenTX Companion"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayIcon" "$\"$INSTDIR\companion.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "Publisher" "OpenTX"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "URLInfoAbout" "http://www.open-tx.org"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ImageMaker" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "DisplayName" "OpenTX Companion 2.1"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "DisplayIcon" "$\"$INSTDIR\companion.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "Publisher" "OpenTX"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "URLInfoAbout" "http://www.open-tx.org"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion.lnk" "$INSTDIR\companion.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\simulator.lnk" "$INSTDIR\simulator.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Companion 2.1.lnk" "$INSTDIR\companion.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator 2.1.lnk" "$INSTDIR\simulator.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion 2.1.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
@@ -207,8 +207,10 @@ Section "Uninstall"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\lang\*.*"
Delete "$INSTDIR\phonon_backend\*.*"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR\phonon_backend"
RMDir "$INSTDIR"
${unregisterExtension} ".bin" "BIN File"
@@ -218,13 +220,13 @@ Section "Uninstall"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\companion.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\simulator.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Companion 2.1.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Firmware Simulator 2.1.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion 2.1.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
DeleteRegKey /ifempty HKCU "Software\OpenTX"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX"
DeleteRegKey /ifempty HKCU "Software\OpenTX Companion 2.1"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion 2.1"
SectionEnd
+2 -2
View File
@@ -307,7 +307,7 @@ MIXERS_MONITOR = NO
# Use newlib-nano
# Values = NO, YES
NANO = YES
NANO = NO
# Use custom bin based allocator for Lua
# Values = NO, YES
@@ -853,7 +853,7 @@ ifeq ($(PCB), TARANIS)
INCDIRS += targets/taranis $(THIRDPARTY) $(COOSDIR) $(COOSDIR)/kernel $(COOSDIR)/portable
ifeq ($(PCBREV), REV9E)
STM32LIBPATH = $(THIRDPARTY)/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries
CPPDEFS += -DHSE_VALUE=16800000
CPPDEFS += -DHSE_VALUE=12000000
CPPDEFS += -DSTM32F40_41xxx
EXTRAINCDIRS += $(STM32LIBPATH)/CMSIS/Device/ST/STM32F4xx/Include $(STM32LIBPATH)/CMSIS/Include $(STM32LIBPATH)/STM32F4xx_StdPeriph_Driver/inc
else
+6
View File
@@ -974,6 +974,12 @@ void audioEvent(unsigned int index, unsigned int freq)
if (index == AU_NONE)
return;
#if defined(HAPTIC)
if (index >= AU_THROTTLE_ALERT) {
haptic.event(index); //do this before audio to help sync timings
}
#endif
if (index <= AU_ERROR || (index >= AU_WARNING1 && index < AU_FRSKY_FIRST)) {
if (g_eeGeneral.alarmsFlash) {
flashCounter = FLASH_DURATION;
+1
View File
@@ -58,6 +58,7 @@ bool eeModelExists(uint8_t id);
void eeLoadModelName(uint8_t id, char *name);
void eeLoadModel(uint8_t id);
bool eeConvert();
void eeErase(bool warn);
void ConvertModel(int id, int version);
uint8_t eeFindEmptyModel(uint8_t id, bool down);
void selectModel(uint8_t sub);
+16 -13
View File
@@ -1016,6 +1016,21 @@ void eeLoadModel(uint8_t id)
}
}
void eeErase(bool warn)
{
generalDefault();
if (warn) {
ALERT(STR_EEPROMWARN, STR_BADEEPROMDATA, AU_BAD_EEPROM);
}
MESSAGE(STR_EEPROMWARN, STR_EEPROMFORMATTING, NULL, AU_EEPROM_FORMATTING);
EeFsFormat();
theFile.writeRlc(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&g_eeGeneral, sizeof(EEGeneral), true);
modelDefault(0);
theFile.writeRlc(FILE_MODEL(0), FILE_TYP_MODEL, (uint8_t*)&g_model, sizeof(g_model), true);
}
// TODO merge this code with eeprom_arm.cpp one
void eeReadAll()
{
@@ -1023,19 +1038,7 @@ void eeReadAll()
EeFsck() < 0 ||
!eeLoadGeneral())
{
generalDefault();
ALERT(STR_EEPROMWARN, STR_BADEEPROMDATA, AU_BAD_EEPROM);
MESSAGE(STR_EEPROMWARN, STR_EEPROMFORMATTING, NULL, AU_EEPROM_FORMATTING);
EeFsFormat();
theFile.writeRlc(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&g_eeGeneral, sizeof(EEGeneral), true);
modelDefault(0);
theFile.writeRlc(FILE_MODEL(0), FILE_TYP_MODEL, (uint8_t*)&g_model, sizeof(g_model), true);
eeErase(true);
}
else {
eeLoadModelHeaders();
Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

After

Width:  |  Height:  |  Size: 15 KiB

+6
View File
@@ -355,6 +355,12 @@ void evalFunctions()
break;
#endif
}
#if defined(CPUARM)
if (CFN_PARAM(cfn)>=FUNC_RESET_PARAM_FIRST_TELEM) {
TelemetryItem * telemetryItem = & telemetryItems[CFN_PARAM(cfn)-FUNC_RESET_PARAM_FIRST_TELEM];
telemetryItem->clear();
}
#endif
break;
#if defined(CPUARM)
-3
View File
@@ -105,9 +105,6 @@ bool isInputSourceAvailable(int source)
if (source>=MIXSRC_Rud && source<=MIXSRC_MAX)
return true;
if (source>=MIXSRC_Rud && source<=MIXSRC_MAX)
return true;
if (source>=MIXSRC_TrimRud && source<MIXSRC_SW1)
return true;
+53 -28
View File
@@ -192,7 +192,9 @@ enum SensorFields {
SENSOR_FIELD_PARAM2,
SENSOR_FIELD_PARAM3,
SENSOR_FIELD_PARAM4,
SENSOR_FIELD_INPUT_FLAGS,
SENSOR_FIELD_AUTOOFFSET,
SENSOR_FIELD_FILTER,
SENSOR_FIELD_PERSISTENT,
SENSOR_FIELD_LOGS,
SENSOR_FIELD_MAX
};
@@ -243,18 +245,21 @@ bool isSensorAvailable(int sensor)
#define SENSOR_2ND_COLUMN (12*FW)
#define SENSOR_3RD_COLUMN (18*FW)
#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0
#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0
#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_PERSISTENT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
void menuModelSensor(uint8_t event)
{
TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx];
SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, 0 });
SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 });
lcd_outdezAtt(PSIZE(TR_MENUSENSOR)*FW+1, 0, s_currIdx+1, INVERS|LEFT);
putsTelemetryChannelValue(SENSOR_2ND_COLUMN, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx), LEFT);
@@ -279,12 +284,13 @@ void menuModelSensor(uint8_t event)
break;
case SENSOR_FIELD_TYPE:
sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, "\012Custom\0 Calculated", sensor->type, 0, 1, attr, event);
sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, NO_INDENT(STR_TYPE), STR_VSENSORTYPES, sensor->type, 0, 1, attr, event);
if (attr && checkIncDec_Ret) {
sensor->instance = 0;
if (sensor->type == TELEM_TYPE_CALCULATED) {
sensor->param = 0;
sensor->inputFlags = 0;
sensor->autoOffset = 0;
sensor->filter = 0;
}
}
break;
@@ -307,7 +313,7 @@ void menuModelSensor(uint8_t event)
}
}
else {
sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, "Formula", "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event);
sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_LAST, attr, event);
if (attr && checkIncDec_Ret) {
sensor->param = 0;
if (sensor->formula == TELEM_FORMULA_CELL) {
@@ -339,7 +345,7 @@ void menuModelSensor(uint8_t event)
break;
case SENSOR_FIELD_PRECISION:
sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, "\005PREC0PREC1PREC2", sensor->prec, 0, 2, attr, event);
sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, STR_VPREC, sensor->prec, 0, 2, attr, event);
if (attr && checkIncDec_Ret) {
telemetryItems[s_currIdx].clear();
}
@@ -348,7 +354,7 @@ void menuModelSensor(uint8_t event)
case SENSOR_FIELD_PARAM1:
if (sensor->type == TELEM_TYPE_CALCULATED) {
if (sensor->formula == TELEM_FORMULA_CELL) {
lcd_putsLeft(y, "Cells sensor");
lcd_putsLeft(y, STR_CELLSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->cell.source ? MIXSRC_FIRST_TELEM+3*(sensor->cell.source-1) : 0, attr);
if (attr) {
sensor->cell.source = checkIncDec(event, sensor->cell.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCellsSensor);
@@ -356,7 +362,7 @@ void menuModelSensor(uint8_t event)
break;
}
else if (sensor->formula == TELEM_FORMULA_DIST) {
lcd_putsLeft(y, "GPS sensor");
lcd_putsLeft(y, STR_GPSSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.gps ? MIXSRC_FIRST_TELEM+3*(sensor->dist.gps-1) : 0, attr);
if (attr) {
sensor->dist.gps = checkIncDec(event, sensor->dist.gps, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isGPSSensor);
@@ -364,7 +370,7 @@ void menuModelSensor(uint8_t event)
break;
}
else if (sensor->formula == TELEM_FORMULA_CONSUMPTION) {
lcd_putsLeft(y, "Amps sensor");
lcd_putsLeft(y, STR_CURRENTSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr);
if (attr) {
sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCurrentSensor);
@@ -373,24 +379,32 @@ void menuModelSensor(uint8_t event)
}
}
else {
lcd_putsLeft(y, "Ratio");
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000);
if (sensor->custom.ratio == 0)
lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr);
else
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1);
break;
if (sensor->unit == UNIT_RPMS) {
lcd_putsLeft(y, NO_INDENT(STR_BLADES));
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000);
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr);
break;
}
else {
lcd_putsLeft(y, STR_RATIO);
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000);
if (sensor->custom.ratio == 0)
lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr);
else
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1);
break;
}
}
// no break
case SENSOR_FIELD_PARAM2:
if (sensor->type == TELEM_TYPE_CALCULATED) {
if (sensor->formula == TELEM_FORMULA_CELL) {
sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, "Cell index", "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event);
sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, STR_VCELLINDEX, sensor->cell.index, 0, 8, attr, event);
break;
}
else if (sensor->formula == TELEM_FORMULA_DIST) {
lcd_putsLeft(y, "Alt sensor");
lcd_putsLeft(y, STR_ALTSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.alt ? MIXSRC_FIRST_TELEM+3*(sensor->dist.alt-1) : 0, attr);
if (attr) {
sensor->dist.alt = checkIncDec(event, sensor->dist.alt, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isAltSensor);
@@ -412,7 +426,7 @@ void menuModelSensor(uint8_t event)
case SENSOR_FIELD_PARAM4:
{
putsStrIdx(0, y, "Source", k-SENSOR_FIELD_PARAM1+1);
putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1);
int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1];
if (attr) {
source = checkIncDec(event, source, -TELEM_VALUES_MAX, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable);
@@ -427,12 +441,20 @@ void menuModelSensor(uint8_t event)
break;
}
case SENSOR_FIELD_INPUT_FLAGS:
sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, "Options", "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event);
case SENSOR_FIELD_AUTOOFFSET:
ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event);
break;
case SENSOR_FIELD_FILTER:
ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event);
break;
case SENSOR_FIELD_PERSISTENT:
ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event);
break;
case SENSOR_FIELD_LOGS:
ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, "Logs", attr, event);
ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event);
break;
}
@@ -552,6 +574,9 @@ void menuModelTelemetry(uint8_t event)
s_currIdx = res;
pushMenu(menuModelSensor);
}
else {
POPUP_WARNING(STR_TELEMETRYFULL);
}
}
break;
#endif
+2 -2
View File
@@ -95,9 +95,9 @@ void displayGpsCoord(uint8_t y, char direction, int16_t bp, int16_t ap)
lcd_outdezNAtt(lcdLastPos+FW+FW+1, y, mn, LEFT|LEADING0, 2); // mm before '.'
lcd_vline(lcdLastPos, y, 2);
uint16_t ss = ap * 6;
lcd_outdezAtt(lcdLastPos+3, y, ss / 1000, LEFT); // ''
lcd_outdezNAtt(lcdLastPos+3, y, ss / 1000, LEFT|LEADING0, 2); // ''
lcd_plot(lcdLastPos, y+FH-2, 0); // small decimal point
lcd_outdezAtt(lcdLastPos+2, y, ss % 1000, LEFT); // ''
lcd_outdezNAtt(lcdLastPos+2, y, ss % 1000, LEFT|LEADING0, 3); // ''
lcd_vline(lcdLastPos, y, 2);
lcd_vline(lcdLastPos+2, y, 2);
}
+3
View File
@@ -53,6 +53,9 @@ void displayScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t
void displayMenuBar(const MenuItem *menu, int index);
void displayProgressBar(const char *label);
void updateProgressBar(int num, int den);
#if defined(REV9E)
void displayShutdownProgress(uint32_t progress);
#endif
extern coord_t scrollbar_X;
#define SET_SCROLLBAR_X(x) scrollbar_X = (x);
+27 -22
View File
@@ -38,14 +38,8 @@
uint8_t switchToMix(uint8_t source)
{
if (source <= 5*3)
return MIXSRC_FIRST_SWITCH + (source-1) / 3;
else if (source <= 17)
return MIXSRC_SF;
else if (source <= 20)
return MIXSRC_SG;
else
return MIXSRC_SH;
div_t qr = div(source-1, 3);
return qr.quot+MIXSRC_FIRST_SWITCH;
}
int circularIncDec(int current, int inc, int min, int max, IsValueAvailable isValueAvailable)
@@ -94,6 +88,10 @@ bool isSourceAvailable(int source)
return IS_POT_AVAILABLE(POT1+source-MIXSRC_FIRST_POT);
}
if (source>=MIXSRC_FIRST_SWITCH && source<=MIXSRC_LAST_SWITCH) {
return SWITCH_EXISTS(source-MIXSRC_FIRST_SWITCH);
}
#if !defined(HELI)
if (source>=MIXSRC_CYC1 && source<=MIXSRC_CYC3)
return false;
@@ -109,7 +107,7 @@ bool isSourceAvailable(int source)
return false;
}
if (source>=MIXSRC_SW1 && source<=MIXSRC_LAST_LOGICAL_SWITCH) {
if (source>=MIXSRC_FIRST_LOGICAL_SWITCH && source<=MIXSRC_LAST_LOGICAL_SWITCH) {
LogicalSwitchData * cs = lswAddress(source-MIXSRC_SW1);
return (cs->func != LS_FUNC_NONE);
}
@@ -156,20 +154,22 @@ bool isInputSourceAvailable(int source)
if (source>=MIXSRC_Rud && source<=MIXSRC_MAX)
return true;
if (source>=MIXSRC_Rud && source<=MIXSRC_MAX)
return true;
if (source>=MIXSRC_TrimRud && source<MIXSRC_SW1)
if (source>=MIXSRC_FIRST_TRIM && source<=MIXSRC_LAST_TRIM)
return true;
if (source>=MIXSRC_FIRST_SWITCH && source<=MIXSRC_LAST_SWITCH)
return SWITCH_EXISTS(source-MIXSRC_FIRST_SWITCH);
if (source>=MIXSRC_FIRST_CH && source<=MIXSRC_LAST_CH)
return true;
if (source>=MIXSRC_FIRST_TRAINER && source<=MIXSRC_LAST_TRAINER)
return true;
if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM)
return isTelemetryFieldAvailable(source-MIXSRC_FIRST_TELEM);
if (source>=MIXSRC_FIRST_TELEM && source<=MIXSRC_LAST_TELEM) {
div_t qr = div(source-MIXSRC_FIRST_TELEM, 3);
return isTelemetryFieldAvailable(qr.quot) && isTelemetryFieldComparisonAvailable(qr.quot);
}
return false;
}
@@ -196,18 +196,12 @@ bool isSwitchAvailable(int swtch, SwitchContext context)
swtch = -swtch;
}
#if defined(REV9E)
if (swtch >= SWSRC_SA0 && swtch <= SWSRC_SR2) {
if (swtch >= SWSRC_SA0 && swtch <= SWSRC_LAST_SWITCH) {
if (!SWITCH_EXISTS(index))
return false;
if ((swtch-SWSRC_SA1)%3 == 0)
return IS_3POS(index);
}
#else
if (swtch == SWSRC_SA1 || swtch == SWSRC_SB1 || swtch == SWSRC_SC1 || swtch == SWSRC_SD1 || swtch == SWSRC_SE1 || swtch == SWSRC_SG1) {
return IS_3POS(index);
}
#endif
if (swtch >= SWSRC_FIRST_MULTIPOS_SWITCH && swtch <= SWSRC_LAST_MULTIPOS_SWITCH) {
int index = (swtch - SWSRC_FIRST_MULTIPOS_SWITCH) / XPOTS_MULTIPOS_COUNT;
@@ -350,3 +344,14 @@ bool modelHasNotes()
return isFileAvailable(filename);
}
int getFirstAvailableSource(int min, int max, bool (*func)(int))
{
int retval = MIXSRC_NONE;
for (int i = min; i <= max; i++) {
if ((*func)(i)) {
retval = i;
break;
}
}
return retval;
}
+7 -2
View File
@@ -632,7 +632,7 @@ void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
}
#endif
void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att)
void putsMixerSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att)
{
if (idx == 0) {
lcd_putsiAtt(x, y, STR_VSRCRAW, 0, att); // TODO macro
@@ -890,7 +890,12 @@ void displayDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags a
lcd_outdezNAtt(lcdNextPos, y, telemetryItem.datetime.sec, att|LEADING0|LEFT, 2);
}
else {
lcd_outdezNAtt(x, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2);
lcd_outdezNAtt(x, y, telemetryItem.datetime.day, att|LEADING0|LEFT, 2);
lcd_putcAtt(lcdLastPos-1, y, '-', att);
lcd_outdezNAtt(lcdNextPos, y, telemetryItem.datetime.month, att|LEFT, 2);
lcd_putcAtt(lcdLastPos-1, y, '-', att);
lcd_outdezAtt(lcdNextPos, y, telemetryItem.datetime.year, att|LEFT);
lcd_outdezNAtt(lcdNextPos+FW+1, y, telemetryItem.datetime.hour, att|LEADING0|LEFT, 2);
lcd_putcAtt(lcdLastPos, y, ':', att);
lcd_outdezNAtt(lcdNextPos, y, telemetryItem.datetime.min, att|LEADING0|LEFT, 2);
lcd_putcAtt(lcdLastPos, y, ':', att);
+1 -1
View File
@@ -169,7 +169,7 @@ void putsStrIdx(coord_t x, coord_t y, const pm_char *str, uint8_t idx, LcdFlags
void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att);
void putsSwitches(coord_t x, coord_t y, int8_t swtch, LcdFlags att=0);
void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
void putsMixerSource(coord_t x, coord_t y, uint8_t idx, LcdFlags att=0);
void putsMixerSource(coord_t x, coord_t y, uint32_t idx, LcdFlags att=0);
void putsFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
#if !defined(BOOT)
void putsCurveRef(coord_t x, coord_t y, CurveRef &curve, LcdFlags att);
@@ -321,8 +321,8 @@ void menuGeneralSdManager(uint8_t _event)
}
}
else if (!READ_ONLY() && !strcasecmp(ext, SPORT_FIRMWARE_EXT)) {
MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE);
MENU_ADD_ITEM(STR_FLASH_EXTERNAL_DEVICE);
MENU_ADD_ITEM(STR_FLASH_INTERNAL_MODULE);
}
}
if (!READ_ONLY()) {
@@ -437,7 +437,10 @@ void menuGeneralSdManager(uint8_t _event)
editName(lcdNextPos, y, reusableBuffer.sdmanager.lines[i], SD_SCREEN_FILE_LENGTH-4, _event, attr, 0);
if (s_editMode == 0) {
unsigned int len = effectiveLen(reusableBuffer.sdmanager.lines[i], SD_SCREEN_FILE_LENGTH-LEN_FILE_EXTENSION);
strAppend(&reusableBuffer.sdmanager.lines[i][len], getFileExtension(reusableBuffer.sdmanager.originalName, sizeof(reusableBuffer.sdmanager.originalName)));
char * ext = getFileExtension(reusableBuffer.sdmanager.originalName, sizeof(reusableBuffer.sdmanager.originalName));
if (ext) {
strAppend(&reusableBuffer.sdmanager.lines[i][len], ext);
}
f_rename(reusableBuffer.sdmanager.originalName, reusableBuffer.sdmanager.lines[i]);
REFRESH_FILES();
}
+11 -1
View File
@@ -90,7 +90,9 @@ enum menuGeneralSetupItems {
CASE_REVPLUS(ITEM_SETUP_BACKLIGHT_COLOR)
ITEM_SETUP_FLASH_BEEP,
CASE_SPLASH_PARAM(ITEM_SETUP_DISABLE_SPLASH)
CASE_GPS(ITEM_SETUP_LABEL_GPS)
CASE_GPS(ITEM_SETUP_TIMEZONE)
CASE_GPS(ITEM_SETUP_ADJUST_RTC)
CASE_GPS(ITEM_SETUP_GPSFORMAT)
CASE_PXX(ITEM_SETUP_COUNTRYCODE)
ITEM_SETUP_LANGUAGE,
@@ -126,7 +128,7 @@ void menuGeneralSetup(uint8_t event)
}
#endif
MENU(STR_MENURADIOSETUP, menuTabGeneral, e_Setup, ITEM_SETUP_MAX, { 2, 2, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_REVPLUS(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) CASE_MAVLINK(0) 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ });
MENU(STR_MENURADIOSETUP, menuTabGeneral, e_Setup, ITEM_SETUP_MAX, { 2, 2, 1, LABEL(SOUND), 0, 0, 0, 0, 0, 0, 0, CASE_VARIO_CPUARM(LABEL(VARIO)) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_VARIO_CPUARM(0) CASE_HAPTIC(LABEL(HAPTIC)) CASE_HAPTIC(0) CASE_HAPTIC(0) CASE_HAPTIC(0) 0, LABEL(ALARMS), 0, 0, 0, 0, IF_ROTARY_ENCODERS(0) LABEL(BACKLIGHT), 0, 0, 0, CASE_REVPLUS(0) CASE_PWM_BACKLIGHT(0) CASE_PWM_BACKLIGHT(0) 0, CASE_SPLASH_PARAM(0) CASE_GPS(LABEL(GPS)) CASE_GPS(0) CASE_GPS(0) CASE_GPS(0) CASE_PXX(0) 0, 0, IF_FAI_CHOICE(0) CASE_MAVLINK(0) 0, 0, LABEL(TX_MODE), 0, 1/*to force edit mode*/ });
int sub = m_posVert;
@@ -412,12 +414,20 @@ void menuGeneralSetup(uint8_t event)
#endif
#if defined(FRSKY) && defined(FRSKY_HUB) && defined(GPS)
case ITEM_SETUP_LABEL_GPS:
lcd_putsLeft(y, STR_GPS);
break;
case ITEM_SETUP_TIMEZONE:
lcd_putsLeft(y, STR_TIMEZONE);
lcd_outdezAtt(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.timezone, attr|LEFT);
if (attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.timezone, -12, 12);
break;
case ITEM_SETUP_ADJUST_RTC:
g_eeGeneral.adjustRTC = onoffMenuItem(g_eeGeneral.adjustRTC, RADIO_SETUP_2ND_COLUMN, y, STR_ADJUST_RTC, attr, event);
break;
case ITEM_SETUP_GPSFORMAT:
g_eeGeneral.gpsFormat = selectMenuItem(RADIO_SETUP_2ND_COLUMN, y, STR_GPSCOORD, STR_GPSFORMAT, g_eeGeneral.gpsFormat, 0, 1, attr, event);
break;
+16 -1
View File
@@ -88,12 +88,27 @@ void backupEeprom()
void menuGeneralVersion(uint8_t event)
{
if (s_warning_result) {
s_warning_result = 0;
displayPopup(STR_EEPROMFORMATTING);
eeErase(false);
#if !defined(SIMU)
NVIC_SystemReset();
#else
exit(0);
#endif
}
SIMPLE_MENU(STR_MENUVERSION, menuTabGeneral, e_Vers, 1);
lcd_putsLeft(MENU_HEADER_HEIGHT+FH, vers_stamp);
lcd_putsLeft(MENU_HEADER_HEIGHT+6*FH, STR_EEBACKUP);
lcd_putsLeft(MENU_HEADER_HEIGHT+5*FH, STR_EEBACKUP);
lcd_putsLeft(MENU_HEADER_HEIGHT+6*FH, STR_FACTORYRESET);
if (event == EVT_KEY_LONG(KEY_ENTER)) {
backupEeprom();
}
else if (event == EVT_KEY_LONG(KEY_MENU)) {
POPUP_CONFIRMATION(STR_CONFIRMRESET);
}
}
@@ -211,8 +211,18 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu
int16_t val_min = 0;
int16_t val_max = 255;
if (func == FUNC_RESET) {
val_max = FUNC_RESET_PARAM_LAST;
lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, CFN_PARAM(cfn), attr);
val_max = FUNC_RESET_PARAM_FIRST_TELEM+lastUsedTelemetryIndex();
int param = CFN_PARAM(cfn);
if (param < FUNC_RESET_PARAM_FIRST_TELEM) {
lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, param, attr);
}
else {
if (param > FUNC_RESET_PARAM_FIRST_TELEM) {
INCDEC_ENABLE_CHECK(isSensorAvailableInResetSpecialFunction);
}
TelemetrySensor * sensor = & g_model.telemetrySensors[param-FUNC_RESET_PARAM_FIRST_TELEM];
lcd_putsnAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, sensor->label, TELEM_LABEL_LEN, attr|ZCHAR);
}
}
#if defined(OVERRIDE_CHANNEL_FUNCTION)
else if (func == FUNC_OVERRIDE_CHANNEL) {
@@ -346,7 +346,7 @@ void menuModelExpoOne(uint8_t event)
case EXPO_FIELD_SCALE:
lcd_putsLeft(y, STR_SCALE);
putsTelemetryChannelValue(EXPO_ONE_2ND_COLUMN, y, ed->srcRaw - MIXSRC_FIRST_TELEM, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr);
putsTelemetryChannelValue(EXPO_ONE_2ND_COLUMN, y, (ed->srcRaw - MIXSRC_FIRST_TELEM)/3, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr);
if (attr) ed->scale = checkIncDec(event, ed->scale, 0, maxTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1), EE_MODEL);
break;
@@ -396,7 +396,7 @@ void menuModelExpoOne(uint8_t event)
int x512 = getValue(ed->srcRaw);
if (ed->srcRaw >= MIXSRC_FIRST_TELEM) {
putsTelemetryChannelValue(LCD_W-8, 6*FH, ed->srcRaw - MIXSRC_FIRST_TELEM, x512, 0);
putsTelemetryChannelValue(LCD_W-8, 6*FH, (ed->srcRaw - MIXSRC_FIRST_TELEM) / 3, x512, 0);
if (ed->scale > 0) x512 = (x512 * 1024) / convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale);
}
else {
@@ -869,7 +869,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event)
if (cur-s_pgOfs >= 0 && cur-s_pgOfs < NUM_BODY_LINES) {
uint8_t attr = ((s_copyMode || sub != cur) ? 0 : INVERS);
if (expo) {
ed->weight = GVAR_MENU_ITEM(EXPO_LINE_WEIGHT_POS, y, ed->weight, MIN_EXPO_WEIGHT, 100, attr | (isExpoActive(i) ? BOLD : 0), 0, event);
GVAR_MENU_ITEM(EXPO_LINE_WEIGHT_POS, y, ed->weight, MIN_EXPO_WEIGHT, 100, attr | (isExpoActive(i) ? BOLD : 0), 0, 0);
displayExpoLine(y, ed);
if (ed->mode!=3) {
lcd_putc(EXPO_LINE_SIDE_POS, y, ed->mode == 2 ? 126 : 127);
@@ -884,7 +884,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event)
putsMixerSource(MIX_LINE_SRC_POS, y, md->srcRaw, 0);
gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr | (isMixActive(i) ? BOLD : 0), event);
gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr | (isMixActive(i) ? BOLD : 0), 0);
displayMixLine(y, md);
@@ -163,7 +163,7 @@ void menuModelLogicalSwitches(uint8_t event)
}
}
else if (cstate == LS_FAMILY_COMP) {
v1_val = (uint8_t)cs->v1;
v1_val = cs->v1;
putsMixerSource(CSW_2ND_COLUMN, y, v1_val, attr1);
putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, attr2);
INCDEC_SET_FLAG(EE_MODEL | INCDEC_SOURCE);
@@ -178,7 +178,7 @@ void menuModelLogicalSwitches(uint8_t event)
INCDEC_ENABLE_CHECK(NULL);
}
else {
v1_val = (uint8_t)cs->v1;
v1_val = cs->v1;
putsMixerSource(CSW_2ND_COLUMN, y, v1_val, attr1);
if (horz == 1) {
INCDEC_SET_FLAG(EE_MODEL | INCDEC_SOURCE);
+78 -33
View File
@@ -149,7 +149,9 @@ enum SensorFields {
SENSOR_FIELD_PARAM2,
SENSOR_FIELD_PARAM3,
SENSOR_FIELD_PARAM4,
SENSOR_FIELD_INPUT_FLAGS,
SENSOR_FIELD_AUTOOFFSET,
SENSOR_FIELD_FILTER,
SENSOR_FIELD_PERSISTENT,
SENSOR_FIELD_LOGS,
SENSOR_FIELD_MAX
};
@@ -200,18 +202,21 @@ bool isSensorAvailable(int sensor)
#define SENSOR_2ND_COLUMN (12*FW)
#define SENSOR_3RD_COLUMN (18*FW)
#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0
#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0
#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_UNIT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_PREC_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_PARAM1_ROWS (sensor->unit >= UNIT_FIRST_VIRTUAL ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && (sensor->formula==TELEM_FORMULA_CONSUMPTION || sensor->formula==TELEM_FORMULA_TOTALIZE)) ? HIDDEN_ROW : (uint8_t)0)
#define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW
#define SENSOR_AUTOOFFSET_ROWS (sensor->unit != UNIT_RPMS && sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
#define SENSOR_PERSISTENT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW)
void menuModelSensor(uint8_t event)
{
TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx];
SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, 0 });
SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 });
lcd_outdezAtt(PSIZE(TR_MENUSENSOR)*FW+1, 0, s_currIdx+1, INVERS|LEFT);
putsTelemetryChannelValue(SENSOR_2ND_COLUMN, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx), LEFT);
@@ -223,7 +228,7 @@ void menuModelSensor(uint8_t event)
int k = i + s_pgOfs;
for (int j=0; j<k; j++) {
if (mstate_tab[j] == HIDDEN_ROW)
if (mstate_tab[j+1] == HIDDEN_ROW)
k++;
}
@@ -236,12 +241,13 @@ void menuModelSensor(uint8_t event)
break;
case SENSOR_FIELD_TYPE:
sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, "\012Custom\0 Calculated", sensor->type, 0, 1, attr, event);
sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, NO_INDENT(STR_TYPE), STR_VSENSORTYPES, sensor->type, 0, 1, attr, event);
if (attr && checkIncDec_Ret) {
sensor->instance = 0;
if (sensor->type == TELEM_TYPE_CALCULATED) {
sensor->param = 0;
sensor->inputFlags = 0;
sensor->filter = 0;
sensor->autoOffset = 0;
}
}
break;
@@ -264,7 +270,7 @@ void menuModelSensor(uint8_t event)
}
}
else {
sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, "Formula", "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event);
sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_LAST, attr, event);
if (attr && checkIncDec_Ret) {
sensor->param = 0;
if (sensor->formula == TELEM_FORMULA_CELL) {
@@ -284,7 +290,7 @@ void menuModelSensor(uint8_t event)
break;
case SENSOR_FIELD_UNIT:
lcd_putsLeft(y, "Unit");
lcd_putsLeft(y, STR_UNIT);
// TODO flash saving with selectMenuItem where I copied those 2 lines?
lcd_putsiAtt(SENSOR_2ND_COLUMN, y, STR_VTELEMUNIT, sensor->unit, attr);
if (attr) {
@@ -296,7 +302,7 @@ void menuModelSensor(uint8_t event)
break;
case SENSOR_FIELD_PRECISION:
sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, "\005PREC0PREC1PREC2", sensor->prec, 0, 2, attr, event);
sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, STR_VPREC, sensor->prec, 0, 2, attr, event);
if (attr && checkIncDec_Ret) {
telemetryItems[s_currIdx].clear();
}
@@ -305,7 +311,7 @@ void menuModelSensor(uint8_t event)
case SENSOR_FIELD_PARAM1:
if (sensor->type == TELEM_TYPE_CALCULATED) {
if (sensor->formula == TELEM_FORMULA_CELL) {
lcd_putsLeft(y, "Cells sensor");
lcd_putsLeft(y, STR_CELLSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->cell.source ? MIXSRC_FIRST_TELEM+3*(sensor->cell.source-1) : 0, attr);
if (attr) {
sensor->cell.source = checkIncDec(event, sensor->cell.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCellsSensor);
@@ -313,7 +319,7 @@ void menuModelSensor(uint8_t event)
break;
}
else if (sensor->formula == TELEM_FORMULA_DIST) {
lcd_putsLeft(y, "GPS sensor");
lcd_putsLeft(y, STR_GPSSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.gps ? MIXSRC_FIRST_TELEM+3*(sensor->dist.gps-1) : 0, attr);
if (attr) {
sensor->dist.gps = checkIncDec(event, sensor->dist.gps, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isGPSSensor);
@@ -321,33 +327,49 @@ void menuModelSensor(uint8_t event)
break;
}
else if (sensor->formula == TELEM_FORMULA_CONSUMPTION) {
lcd_putsLeft(y, "Amps sensor");
lcd_putsLeft(y, STR_CURRENTSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr);
if (attr) {
sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCurrentSensor);
}
break;
}
else if (sensor->formula == TELEM_FORMULA_TOTALIZE) {
lcd_putsLeft(y, NO_INDENT(STR_SOURCE));
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr);
if (attr) {
sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isTelemetryFieldComparisonAvailable);
}
break;
}
}
else {
lcd_putsLeft(y, "Ratio");
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000);
if (sensor->custom.ratio == 0)
lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr);
else
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1);
break;
if (sensor->unit == UNIT_RPMS) {
lcd_putsLeft(y, NO_INDENT(STR_BLADES));
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000);
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr);
break;
}
else {
lcd_putsLeft(y, STR_RATIO);
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000);
if (sensor->custom.ratio == 0)
lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr);
else
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1);
break;
}
}
// no break
case SENSOR_FIELD_PARAM2:
if (sensor->type == TELEM_TYPE_CALCULATED) {
if (sensor->formula == TELEM_FORMULA_CELL) {
sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, "Cell index", "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event);
sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, STR_VCELLINDEX, sensor->cell.index, 0, 8, attr, event);
break;
}
else if (sensor->formula == TELEM_FORMULA_DIST) {
lcd_putsLeft(y, "Alt sensor");
lcd_putsLeft(y, STR_ALTSENSOR);
putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.alt ? MIXSRC_FIRST_TELEM+3*(sensor->dist.alt-1) : 0, attr);
if (attr) {
sensor->dist.alt = checkIncDec(event, sensor->dist.alt, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isAltSensor);
@@ -355,6 +377,12 @@ void menuModelSensor(uint8_t event)
break;
}
}
else if (sensor->unit == UNIT_RPMS) {
lcd_putsLeft(y, STR_MULTIPLIER);
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.offset, 1, 30000);
lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.offset, LEFT|attr);
break;
}
else {
lcd_putsLeft(y, NO_INDENT(STR_OFFSET));
if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.offset, -30000, +30000);
@@ -369,7 +397,7 @@ void menuModelSensor(uint8_t event)
case SENSOR_FIELD_PARAM4:
{
putsStrIdx(0, y, "Source", k-SENSOR_FIELD_PARAM1+1);
putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1);
int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1];
if (attr) {
source = checkIncDec(event, source, -TELEM_VALUES_MAX, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable);
@@ -384,12 +412,20 @@ void menuModelSensor(uint8_t event)
break;
}
case SENSOR_FIELD_INPUT_FLAGS:
sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, "Options", "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event);
case SENSOR_FIELD_AUTOOFFSET:
ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event);
break;
case SENSOR_FIELD_FILTER:
ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event);
break;
case SENSOR_FIELD_PERSISTENT:
ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event);
break;
case SENSOR_FIELD_LOGS:
ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, "Logs", attr, event);
ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event);
break;
}
@@ -478,6 +514,10 @@ void menuModelTelemetry(uint8_t event)
else {
lcd_putsAtt(TELEM_COL2, y, "---", 0); // TODO shortcut
}
TelemetrySensor * sensor = & g_model.telemetrySensors[index];
if (sensor->type == TELEM_TYPE_CUSTOM) {
lcd_outdezAtt(TELEM_COL3+1*FW, y, sensor->instance, LEFT);
}
if (attr) {
s_editMode = 0;
s_currIdx = index;
@@ -501,6 +541,8 @@ void menuModelTelemetry(uint8_t event)
case ITEM_TELEMETRY_SENSORS_LABEL:
lcd_putsLeft(y, STR_TELEMETRY_SENSORS);
lcd_putsAtt(TELEM_COL2, y, STR_VALUE, 0);
lcd_putsAtt(TELEM_COL3+1*FW, y, STR_ID, 0);
break;
case ITEM_TELEMETRY_NEWSENSOR:
@@ -512,6 +554,9 @@ void menuModelTelemetry(uint8_t event)
s_currIdx = res;
pushMenu(menuModelSensor);
}
else {
POPUP_WARNING(STR_TELEMETRYFULL);
}
}
break;
@@ -590,8 +635,8 @@ void menuModelTelemetry(uint8_t event)
#if defined(REV9E)
case ITEM_TELEMETRY_TOP_LCD_TIMER:
lcd_putsLeft(y, "Top LCD Timer");
putsStrIdx(TELEM_COL2, y, "Timer", g_model.topLcdTimer+1, attr);
lcd_putsLeft(y, STR_TOPLCDTIMER);
putsStrIdx(TELEM_COL2, y, STR_TIMER, g_model.topLcdTimer+1, attr);
if (attr) {
g_model.topLcdTimer = checkIncDec(event, g_model.topLcdTimer, 0, MAX_TIMERS-1, EE_MODEL);
}
@@ -728,7 +773,7 @@ void menuModelTelemetry(uint8_t event)
const coord_t pos[] = {TELEM_COL1, TELEM_COL2, TELEM_COL3};
putsMixerSource(pos[c], y, value, cellAttr);
if (cellAttr && s_editMode>0) {
CHECK_INCDEC_MODELVAR_ZERO_CHECK(event, value, MIXSRC_LAST_TELEM, isSourceAvailable);
value = checkIncDec(event, value, 0, MIXSRC_LAST_TELEM, EE_MODEL|INCDEC_SOURCE|NO_INCDEC_MARKS, isSourceAvailable);
}
}
if (attr && m_posHorz == NUM_LINE_ITEMS) {
+3 -1
View File
@@ -202,6 +202,7 @@ bool isSwitchAvailableInCustomFunctions(int swtch);
bool isSwitchAvailableInMixes(int swtch);
bool isSwitchAvailableInTimers(int swtch);
bool isModuleAvailable(int module);
int getFirstAvailableSource(int min, int max, bool (*func)(int));
#define AUTOSWITCH_ENTER_LONG() (attr && event==EVT_KEY_LONG(KEY_ENTER))
#define CHECK_INCDEC_SWITCH(event, var, min, max, flags, available) \
var = checkIncDec(event, var, min, max, (flags)|INCDEC_SWITCH, available)
@@ -326,7 +327,8 @@ extern uint8_t s_warning_info_flags;
#define NAVIGATION_MENUS
#define MENU_ADD_ITEM(s) s_menu[s_menu_count++] = s
#define MENU_MAX_LINES 6
#define MENU_MAX_LINES 12
#define MENU_MAX_DISPLAY_LINES 6
#define MENU_ADD_SD_ITEM(s) MENU_ADD_ITEM(s)
#define MENU_LINE_LENGTH (LEN_MODEL_NAME+12)
extern const char *s_menu[MENU_MAX_LINES];
+91 -1
View File
@@ -42,6 +42,7 @@ horzpos_t m_posHorz;
int8_t s_editMode;
uint8_t s_noHi;
uint8_t calibrationState;
int s_source = MIXSRC_NONE;
#if defined(AUTOSWITCH)
int8_t checkIncDecMovedSwitch(int8_t val)
@@ -52,7 +53,7 @@ int8_t checkIncDecMovedSwitch(int8_t val)
div_t info = switchInfo(swtch);
if (IS_TOGGLE(info.quot)) {
if (info.rem != 0) {
val = (val == swtch ? swtch+2 : swtch);
val = (val == swtch ? swtch-2 : swtch);
}
}
else {
@@ -70,6 +71,44 @@ INIT_STOPS(stops100, 3, -100, 0, 100)
INIT_STOPS(stops1000, 3, -1000, 0, 1000)
INIT_STOPS(stopsSwitch, 15, SWSRC_FIRST, CATEGORY_END(-SWSRC_FIRST_LOGICAL_SWITCH), CATEGORY_END(-SWSRC_FIRST_TRIM), CATEGORY_END(-SWSRC_LAST_SWITCH+1), 0, CATEGORY_END(SWSRC_LAST_SWITCH), CATEGORY_END(SWSRC_FIRST_TRIM-1), CATEGORY_END(SWSRC_FIRST_LOGICAL_SWITCH-1), SWSRC_LAST)
void onLongEnterPress(const char *result)
{
if (result == STR_MENU_INPUTS)
s_source = getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable)+1;
#if defined(LUA_MODEL_SCRIPTS)
else if (result == STR_MENU_LUA)
s_source = getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable);
#endif
else if (result == STR_MENU_STICKS)
s_source = MIXSRC_FIRST_STICK;
else if (result == STR_MENU_POTS)
s_source = MIXSRC_FIRST_POT;
else if (result == STR_MENU_MAX)
s_source = MIXSRC_MAX;
else if (result == STR_MENU_HELI)
s_source = MIXSRC_FIRST_HELI;
else if (result == STR_MENU_TRIMS)
s_source = MIXSRC_FIRST_TRIM;
else if (result == STR_MENU_SWITCHES)
s_source = MIXSRC_FIRST_SWITCH;
else if (result == STR_MENU_TRAINER)
s_source = MIXSRC_FIRST_TRAINER;
else if (result == STR_MENU_CHANNELS)
s_source = getFirstAvailableSource(MIXSRC_FIRST_CH, MIXSRC_LAST_CH, isSourceAvailable);
else if (result == STR_MENU_GVARS)
s_source = MIXSRC_FIRST_GVAR;
else if (result == STR_MENU_TELEMETRY) {
for (int i = 0; i < TELEM_VALUES_MAX; i++) {
TelemetrySensor * sensor = & g_model.telemetrySensors[i];
if (sensor->isAvailable()) {
s_source = MIXSRC_FIRST_TELEM + 3*i;
break;
}
}
}
}
int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops)
{
int newval = val;
@@ -207,6 +246,56 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int
else {
checkIncDec_Ret = 0;
}
if (i_flags & INCDEC_SOURCE) {
if (event == EVT_KEY_LONG(KEY_ENTER)) {
killEvents(event);
s_source = MIXSRC_NONE;
if (i_min <= MIXSRC_FIRST_INPUT && i_max >= MIXSRC_FIRST_INPUT) {
if (getFirstAvailableSource(MIXSRC_FIRST_INPUT, MIXSRC_LAST_INPUT, isInputAvailable) != MIXSRC_NONE)
MENU_ADD_ITEM(STR_MENU_INPUTS);
}
#if defined(LUA_MODEL_SCRIPTS)
if (i_min <= MIXSRC_FIRST_LUA && i_max >= MIXSRC_FIRST_LUA) {
if (getFirstAvailableSource(MIXSRC_FIRST_LUA, MIXSRC_LAST_LUA, isSourceAvailable) != MIXSRC_NONE)
MENU_ADD_ITEM(STR_MENU_LUA);
}
#endif
if (i_min <= MIXSRC_FIRST_STICK && i_max >= MIXSRC_FIRST_STICK) MENU_ADD_ITEM(STR_MENU_STICKS);
if (i_min <= MIXSRC_FIRST_POT && i_max >= MIXSRC_FIRST_POT) MENU_ADD_ITEM(STR_MENU_POTS);
if (i_min <= MIXSRC_MAX && i_max >= MIXSRC_MAX) MENU_ADD_ITEM(STR_MENU_MAX);
#if defined(HELI)
if (i_min <= MIXSRC_FIRST_HELI && i_max >= MIXSRC_FIRST_HELI) MENU_ADD_ITEM(STR_MENU_HELI);
#endif
if (i_min <= MIXSRC_FIRST_TRIM && i_max >= MIXSRC_FIRST_TRIM) MENU_ADD_ITEM(STR_MENU_TRIMS);
if (i_min <= MIXSRC_FIRST_SWITCH && i_max >= MIXSRC_FIRST_SWITCH) MENU_ADD_ITEM(STR_MENU_SWITCHES);
if (i_min <= MIXSRC_FIRST_TRAINER && i_max >= MIXSRC_FIRST_TRAINER) MENU_ADD_ITEM(STR_MENU_TRAINER);
if (i_min <= MIXSRC_FIRST_CH && i_max >= MIXSRC_FIRST_CH) MENU_ADD_ITEM(STR_MENU_CHANNELS);
if (i_min <= MIXSRC_FIRST_GVAR && i_max >= MIXSRC_FIRST_GVAR && isValueAvailable(MIXSRC_FIRST_GVAR))
MENU_ADD_ITEM(STR_MENU_GVARS);
if (i_min <= MIXSRC_FIRST_TELEM && i_max >= MIXSRC_FIRST_TELEM) {
bool available = false;
for (int i = 0; i < TELEM_VALUES_MAX; i++) {
TelemetrySensor * sensor = & g_model.telemetrySensors[i];
if (sensor->isAvailable()) {
available = true;
break;
}
}
if (available)
MENU_ADD_ITEM(STR_MENU_TELEMETRY);
}
menuHandler = onLongEnterPress;
}
if (s_source != MIXSRC_NONE) {
newval = s_source;
if (s_source != MIXSRC_MAX)
s_editMode = 1;
s_source = MIXSRC_NONE;
}
}
return newval;
}
@@ -229,6 +318,7 @@ void onLongMenuPress(const char *result)
}
}
tmr10ms_t menuEntryTime;
void check(const char *name, check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t rowcount, uint8_t flags)
+7 -7
View File
@@ -127,18 +127,18 @@ const char * displayMenu(uint8_t event)
{
const char * result = NULL;
uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_LINES);
uint8_t display_count = min(s_menu_count, (uint16_t)MENU_MAX_DISPLAY_LINES);
uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y);
drawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE);
lcd_rect(MENU_X, y, MENU_W, display_count * (FH+1) + 2);
for (uint8_t i=0; i<display_count; i++) {
lcd_putsAtt(MENU_X+6, i*(FH+1) + y + 2, s_menu[i], s_menu_flags);
lcd_putsAtt(MENU_X+6, i*(FH+1) + y + 2, s_menu[i+s_menu_offset], s_menu_flags);
if (i == s_menu_item) drawFilledRect(MENU_X+1, i*(FH+1) + y + 1, MENU_W-2, 9);
}
if (s_menu_count > display_count) {
displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_LINES * (FH+1), s_menu_offset, s_menu_count, MENU_MAX_LINES);
displayScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), s_menu_offset, s_menu_count, display_count);
}
switch(event) {
@@ -152,9 +152,9 @@ const char * displayMenu(uint8_t event)
result = STR_UPDATE_LIST;
}
else {
s_menu_item = display_count - 1;
if (s_menu_count > MENU_MAX_LINES) {
s_menu_offset = s_menu_count - display_count;
s_menu_item = min(display_count, (uint8_t)MENU_MAX_DISPLAY_LINES)-1;
if (s_menu_count > MENU_MAX_DISPLAY_LINES) {
s_menu_offset = s_menu_count - MENU_MAX_DISPLAY_LINES;
result = STR_UPDATE_LIST;
}
}
@@ -179,7 +179,7 @@ const char * displayMenu(uint8_t event)
break;
CASE_EVT_ROTARY_BREAK
case EVT_KEY_BREAK(KEY_ENTER):
result = s_menu[s_menu_item];
result = s_menu[s_menu_item+s_menu_offset];
// no break
case EVT_KEY_BREAK(KEY_EXIT):
s_menu_count = 0;
+8
View File
@@ -36,6 +36,10 @@
#include "../../opentx.h"
const pm_uchar about_bmp[] PROGMEM = {
#include "../../bitmaps/Taranis/about.lbm"
};
enum AboutScreens {
ABOUT_OPENTX,
ABOUT_BERTRAND,
@@ -78,6 +82,10 @@ void menuAboutView(uint8_t event)
break;
}
lcd_bmp(0, 0, about_bmp);
lcd_putsAtt(64, 0, STR_ABOUTUS, DBLSIZE);
lcd_hline(ABOUT_X, 18, 120);
lcd_hline(ABOUT_X, 19, 130, GREY_DEFAULT);
LcdFlags att = GREY(max(0, 15-greyIndex/2));
uint8_t screenDuration = 150;
+7 -34
View File
@@ -117,7 +117,7 @@ void doMainScreenGraphics()
void displayTrims(uint8_t phase)
{
for (unsigned int i=0; i<NUM_STICKS; ++i) {
for (unsigned int i=0; i<NUM_STICKS; i++) {
coord_t x[4] = { TRIM_LH_X, TRIM_LV_X, TRIM_RV_X, TRIM_RH_X };
uint8_t vert[4] = { 0, 1, 1, 0 };
coord_t xm, ym;
@@ -159,9 +159,9 @@ void displayTrims(uint8_t phase)
if (exttrim) {
lcd_hline(xm-1, ym, 3);
}
if (g_model.displayTrims != DISPLAY_TRIMS_NEVER) {
if ((g_model.displayTrims == DISPLAY_TRIMS_ALWAYS && dir != 0) || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<<stickIndex)))) {
lcd_outdezAtt(dir>0 ? 25 : 57, xm-2, -abs(dir), TINSIZE|VERTICAL);
if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && dir != 0) {
if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<<i)))) {
lcd_outdezAtt(dir>0 ? 22 : 54, xm-2, -abs(dir/5), TINSIZE|VERTICAL);
}
}
}
@@ -182,8 +182,8 @@ void displayTrims(uint8_t phase)
lcd_vline(xm, ym-1, 3);
}
if (g_model.displayTrims != DISPLAY_TRIMS_NEVER && dir != 0) {
if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<<stickIndex)))) {
lcd_outdezAtt((stickIndex==0 ? TRIM_LH_X : TRIM_RH_X)+(dir>0 ? -9 : 22), ym-2, -abs(dir), TINSIZE);
if (g_model.displayTrims == DISPLAY_TRIMS_ALWAYS || (trimsDisplayTimer > 0 && (trimsDisplayMask & (1<<i)))) {
lcd_outdezAtt((stickIndex==0 ? TRIM_LH_X : TRIM_RH_X)+(dir>0 ? -11 : 20), ym-2, -abs(dir/5), TINSIZE);
}
}
}
@@ -571,7 +571,6 @@ void menuMainView(uint8_t event)
lcd_bmp(BITMAP_X, BITMAP_Y, modelBitmap);
// Switches
#if defined(REV9E)
if (getSwitchCount() > 8) {
for (int i=0; i<NUM_SWITCHES; ++i) {
div_t qr = div(i, 9);
@@ -591,39 +590,13 @@ void menuMainView(uint8_t event)
int index = 0;
for (int i=0; i<NUM_SWITCHES; ++i) {
if (SWITCH_EXISTS(i)) {
getvalue_t val = getValue(MIXSRC_SA+i);
getvalue_t val = getValue(MIXSRC_FIRST_SWITCH+i);
getvalue_t sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
putsSwitches((g_eeGeneral.view == VIEW_INPUTS) ? (index<4 ? 8*FW+3 : 24*FW+1) : (index<4 ? 3*FW+2 : 8*FW-1), (index%4)*FH+3*FH, sw, 0);
index++;
}
}
}
#else
for (int i=0; i<8; ++i) {
getvalue_t sw;
getvalue_t val;
// TODO simplify this + reuse code in checkSwitches() + Menu MODELSETUP
switch(i) {
case 5:
sw = getValue(MIXSRC_SF) > 0 ? 3*i+2 : 3*i+1;
break;
case 6:
val = getValue(MIXSRC_SG);
sw = ((val < 0) ? 3*i : ((val == 0) ? 3*i+1 : 3*i+2));
break;
case 7:
sw = getValue(MIXSRC_SH) > 0 ? 3*i+1 : 3*i;
break;
default:
{
val = getValue(MIXSRC_SA+i);
sw = ((val < 0) ? 3*i+1 : ((val == 0) ? 3*i+2 : 3*i+3));
break;
}
}
putsSwitches((g_eeGeneral.view == VIEW_INPUTS) ? (i<4 ? 8*FW+3 : 24*FW+1) : (i<4 ? 3*FW+2 : 8*FW-1), (i%4)*FH+3*FH, sw, 0);
}
#endif
if (g_eeGeneral.view == VIEW_TIMERS) {
displayTimers();
+13
View File
@@ -63,6 +63,19 @@ void menu_lcd_onoff(coord_t x, coord_t y, uint8_t value, LcdFlags attr)
lcd_square(x, y, 7);
}
#if defined(REV9E)
void displayShutdownProgress(uint32_t progress)
{
lcd_clear();
lcd_putsLeft(LCD_H/2-20, STR_POWEROFF);
drawFilledRect((LCD_W-44)/2, LCD_H/2-5, 28, 10, SOLID, ERASE);
lcd_rect((LCD_W-44)/2, LCD_H/2-5, 28, 10);
for (int i=(progress/100); i>=0; i--) {
drawFilledRect((LCD_W-44)/2+3+i*8, LCD_H/2-3, 6, 6, SOLID);
}
}
#endif
void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr)
{
lcd_outdezAtt(LCD_W, 0, count, attr);
-4
View File
@@ -89,17 +89,13 @@ enum EnumKeys {
SW_SE1,
SW_SE2,
SW_SF0,
#if defined(REV9E)
SW_SF1,
#endif
SW_SF2,
SW_SG0,
SW_SG1,
SW_SG2,
SW_SH0,
#if defined(REV9E)
SW_SH1,
#endif
SW_SH2,
#if defined(REV9E)
SW_SI0,
+11 -2
View File
@@ -39,8 +39,6 @@
static uint8_t currentSpeakerVolume = 255;
uint8_t requiredSpeakerVolume = 255;
extern void checkBattery();
void handleUsbConnection()
{
#if defined(PCBTARANIS) && !defined(SIMU)
@@ -185,6 +183,13 @@ void perMain()
drawStatusLine();
}
#if defined(REV9E) && !defined(SIMU)
uint32_t pwr_pressed_duration = pwrPressedDuration();
if (pwr_pressed_duration > 0) {
displayShutdownProgress(pwr_pressed_duration);
}
#endif
lcdRefresh();
#if defined(REV9E) && !defined(SIMU)
@@ -198,4 +203,8 @@ void perMain()
topLcdRefreshEnd();
#endif
#if defined(REV9E) && !defined(SIMU)
bt_wakeup();
#endif
}
+12 -29
View File
@@ -278,32 +278,15 @@ getvalue_t getValue(mixsrc_t i)
else if (i<=MIXSRC_TrimAil) return calc1000toRESX((int16_t)8 * getTrimValue(mixerCurrentFlightMode, i-MIXSRC_TrimRud));
#if defined(PCBTARANIS)
else if (i==MIXSRC_SA) return (switchState(SW_SA0) ? -1024 : (switchState(SW_SA1) ? 0 : 1024));
else if (i==MIXSRC_SB) return (switchState(SW_SB0) ? -1024 : (switchState(SW_SB1) ? 0 : 1024));
else if (i==MIXSRC_SC) return (switchState(SW_SC0) ? -1024 : (switchState(SW_SC1) ? 0 : 1024));
else if (i==MIXSRC_SD) return (switchState(SW_SD0) ? -1024 : (switchState(SW_SD1) ? 0 : 1024));
else if (i==MIXSRC_SE) return (switchState(SW_SE0) ? -1024 : (switchState(SW_SE1) ? 0 : 1024));
#if defined(REV9E)
else if (i==MIXSRC_SF) return (switchState(SW_SF0) ? -1024 : (switchState(SW_SF1) ? 0 : 1024));
#else
else if (i==MIXSRC_SF) return (switchState(SW_SF0) ? -1024 : 1024);
#endif
else if (i==MIXSRC_SG) return (switchState(SW_SG0) ? -1024 : (switchState(SW_SG1) ? 0 : 1024));
#if defined(REV9E)
else if (i==MIXSRC_SH) return (switchState(SW_SH0) ? -1024 : (switchState(SW_SH1) ? 0 : 1024));
else if (i==MIXSRC_SI) return (switchState(SW_SI0) ? -1024 : (switchState(SW_SI1) ? 0 : 1024));
else if (i==MIXSRC_SJ) return (switchState(SW_SJ0) ? -1024 : (switchState(SW_SJ1) ? 0 : 1024));
else if (i==MIXSRC_SK) return (switchState(SW_SK0) ? -1024 : (switchState(SW_SK1) ? 0 : 1024));
else if (i==MIXSRC_SL) return (switchState(SW_SL0) ? -1024 : (switchState(SW_SL1) ? 0 : 1024));
else if (i==MIXSRC_SM) return (switchState(SW_SM0) ? -1024 : (switchState(SW_SM1) ? 0 : 1024));
else if (i==MIXSRC_SN) return (switchState(SW_SN0) ? -1024 : (switchState(SW_SN1) ? 0 : 1024));
else if (i==MIXSRC_SO) return (switchState(SW_SO0) ? -1024 : (switchState(SW_SO1) ? 0 : 1024));
else if (i==MIXSRC_SP) return (switchState(SW_SP0) ? -1024 : (switchState(SW_SP1) ? 0 : 1024));
else if (i==MIXSRC_SQ) return (switchState(SW_SQ0) ? -1024 : (switchState(SW_SQ1) ? 0 : 1024));
else if (i==MIXSRC_SR) return (switchState(SW_SR0) ? -1024 : (switchState(SW_SR1) ? 0 : 1024));
#else
else if (i==MIXSRC_SH) return (switchState(SW_SH0) ? -1024 : 1024);
#endif
else if ((i >= MIXSRC_FIRST_SWITCH) && (i <= MIXSRC_LAST_SWITCH)) {
mixsrc_t sw = i-MIXSRC_FIRST_SWITCH;
if (SWITCH_EXISTS(sw)) {
return (switchState((EnumKeys)(SW_BASE+(3*sw))) ? -1024 : (switchState((EnumKeys)(SW_BASE+(3*sw)+1)) ? 0 : 1024));
}
else {
return 0;
}
}
#else
else if (i==MIXSRC_3POS) return (getSwitch(SW_ID0-SW_BASE+1) ? -1024 : (getSwitch(SW_ID1-SW_BASE+1) ? 0 : 1024));
// don't use switchState directly to give getSwitch possibility to hack values if needed for switch warning
@@ -670,7 +653,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms)
if (md->srcRaw == 0) break;
uint8_t stickIndex = md->srcRaw - MIXSRC_Rud;
mixsrc_t stickIndex = md->srcRaw - MIXSRC_Rud;
if (!(dirtyChannels & ((bitfield_channels_t)1 << md->destCh))) continue;
@@ -726,10 +709,10 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms)
else
#endif
{
int8_t srcRaw = MIXSRC_Rud + stickIndex;
mixsrc_t srcRaw = MIXSRC_Rud + stickIndex;
v = getValue(srcRaw);
srcRaw -= MIXSRC_CH1;
if (srcRaw>=0 && srcRaw<=MIXSRC_LAST_CH-MIXSRC_CH1 && md->destCh != srcRaw) {
if (srcRaw<=MIXSRC_LAST_CH-MIXSRC_CH1 && md->destCh != srcRaw) {
if (dirtyChannels & ((bitfield_channels_t)1 << srcRaw) & (passDirtyChannels|~(((bitfield_channels_t) 1 << md->destCh)-1)))
passDirtyChannels |= (bitfield_channels_t) 1 << md->destCh;
if (srcRaw < md->destCh || pass > 0)
+40 -33
View File
@@ -130,6 +130,7 @@
#define NUM_POTS 5
#define NUM_XPOTS 3
#endif
#define TELEM_VALUES_MAX 32
#elif defined(CPUARM)
#define MAX_MODELS 60
#define NUM_CHNOUT 32 // number of real output channels CH1-CH32
@@ -141,6 +142,7 @@
#define NUM_TRAINER 16
#define NUM_POTS 3
#define NUM_XPOTS 0
#define TELEM_VALUES_MAX 16
#elif defined(CPUM2560) || defined(CPUM2561)
#define MAX_MODELS 30
#define NUM_CHNOUT 16 // number of real output channels CH1-CH16
@@ -152,6 +154,7 @@
#define NUM_TRAINER 8
#define NUM_POTS 3
#define NUM_XPOTS 0
#define TELEM_VALUES_MAX 0
#elif defined(CPUM128)
#define MAX_MODELS 30
#define NUM_CHNOUT 16 // number of real output channels CH1-CH16
@@ -163,6 +166,7 @@
#define NUM_TRAINER 8
#define NUM_POTS 3
#define NUM_XPOTS 0
#define TELEM_VALUES_MAX 0
#else
#define MAX_MODELS 16
#define NUM_CHNOUT 16 // number of real output channels CH1-CH16
@@ -174,6 +178,7 @@
#define NUM_TRAINER 8
#define NUM_POTS 3
#define NUM_XPOTS 0
#define TELEM_VALUES_MAX 0
#endif
#if defined(CPUARM)
@@ -584,9 +589,13 @@ enum ResetFunctionParam {
#endif
#if ROTARY_ENCODERS > 1
FUNC_RESET_ROTENC2,
#endif
#if defined(CPUARM)
FUNC_RESET_PARAM_FIRST_TELEM,
FUNC_RESET_PARAM_LAST_TELEM = FUNC_RESET_PARAM_FIRST_TELEM + TELEM_VALUES_MAX,
#endif
FUNC_RESET_PARAMS_COUNT,
FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1
FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1,
};
enum AdjustGvarFunctionParam {
@@ -742,7 +751,7 @@ PACK(typedef struct {
uint8_t disableAlarmWarning:1;
uint8_t stickMode:2;
int8_t timezone:5;
uint8_t spare1:1;
uint8_t adjustRTC:1;
uint8_t inactivityTimer;
uint8_t mavbaud:3;
SPLASH_MODE; /* 3bits */
@@ -1141,11 +1150,14 @@ enum TelemetryUnit {
UNIT_RPMS,
UNIT_G,
UNIT_DEGREE,
UNIT_MILLILITERS,
UNIT_FLOZ,
UNIT_HOURS,
UNIT_MINUTES,
UNIT_SECONDS,
// FrSky format used for these fields, could be another format in the future
UNIT_CELLS,
UNIT_FIRST_VIRTUAL,
UNIT_CELLS = UNIT_FIRST_VIRTUAL,
UNIT_DATETIME,
UNIT_GPS,
UNIT_GPS_LONGITUDE,
@@ -1157,7 +1169,7 @@ enum TelemetryUnit {
UNIT_DATETIME_HOUR_MIN,
UNIT_DATETIME_SEC
};
#define UNIT_MAX UNIT_DEGREE
#define UNIT_MAX UNIT_FLOZ
#define UNIT_DIST UNIT_METERS
#define UNIT_TEMPERATURE UNIT_CELSIUS
#define UNIT_SPEED UNIT_KMH
@@ -1211,11 +1223,6 @@ PACK(typedef struct {
#endif
#if defined(CPUARM)
#if defined(PCBTARANIS)
#define TELEM_VALUES_MAX 32
#else
#define TELEM_VALUES_MAX 16
#endif
#define TELEM_LABEL_LEN 4
//#define TELEM_FLAG_TIMEOUT 0x01
#define TELEM_FLAG_LOG 0x02
@@ -1238,17 +1245,11 @@ enum TelemetrySensorFormula
TELEM_FORMULA_MIN,
TELEM_FORMULA_MAX,
TELEM_FORMULA_MULTIPLY,
TELEM_FORMULA_TOTALIZE,
TELEM_FORMULA_CELL,
TELEM_FORMULA_CONSUMPTION,
TELEM_FORMULA_DIST,
};
enum TelemetrySensorInputFlags
{
TELEM_INPUT_FLAGS_NONE,
TELEM_INPUT_FLAGS_AUTO_OFFSET,
TELEM_INPUT_FLAGS_FILTERING,
TELEM_INPUT_FLAGS_MAX=TELEM_INPUT_FLAGS_FILTERING
TELEM_FORMULA_LAST = TELEM_FORMULA_DIST
};
PACK(typedef struct {
@@ -1264,7 +1265,8 @@ PACK(typedef struct {
uint8_t type:1; // 0=custom / 1=calculated
uint8_t unit:5; // user can choose what unit to display each value in
uint8_t prec:2;
uint8_t inputFlags:2;
uint8_t autoOffset:1;
uint8_t filter:1;
uint8_t logs:1;
uint8_t persistent:1;
uint8_t spare:4;
@@ -1296,6 +1298,7 @@ PACK(typedef struct {
void init(uint16_t id);
bool isAvailable();
int32_t getValue(int32_t value, uint8_t unit, uint8_t prec) const;
bool isConfigurable();
}) TelemetrySensor;
#endif
@@ -1630,17 +1633,13 @@ enum SwitchSources {
SWSRC_SE1,
SWSRC_SE2,
SWSRC_SF0,
#if defined(REV9E)
SWSRC_SF1,
#endif
SWSRC_SF2,
SWSRC_SG0,
SWSRC_SG1,
SWSRC_SG2,
SWSRC_SH0,
#if defined(REV9E)
SWSRC_SH1,
#endif
SWSRC_SH2,
SWSRC_TRAINER = SWSRC_SH2,
#if defined(REV9E)
@@ -1767,10 +1766,11 @@ enum MixSources {
MIXSRC_LAST_LUA = MIXSRC_FIRST_LUA+(MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)-1,
#endif
MIXSRC_Rud, LUA_EXPORT("rud", "Rudder")
MIXSRC_Ele, LUA_EXPORT("ele", "Elevator")
MIXSRC_Thr, LUA_EXPORT("thr", "Throttle")
MIXSRC_Ail, LUA_EXPORT("ail", "Aileron")
MIXSRC_FIRST_STICK,
MIXSRC_Rud = MIXSRC_FIRST_STICK, LUA_EXPORT("rud", "Rudder")
MIXSRC_Ele, LUA_EXPORT("ele", "Elevator")
MIXSRC_Thr, LUA_EXPORT("thr", "Throttle")
MIXSRC_Ail, LUA_EXPORT("ail", "Aileron")
MIXSRC_FIRST_POT,
#if defined(PCBTARANIS)
@@ -1813,14 +1813,17 @@ enum MixSources {
MIXSRC_MAX,
MIXSRC_CYC1, LUA_EXPORT("cyc1", "Cyclic 1")
MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2")
MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3")
MIXSRC_FIRST_HELI,
MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1")
MIXSRC_CYC2, LUA_EXPORT("cyc2", "Cyclic 2")
MIXSRC_CYC3, LUA_EXPORT("cyc3", "Cyclic 3")
MIXSRC_TrimRud, LUA_EXPORT("trim-rud", "Rudder trim")
MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim")
MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim")
MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim")
MIXSRC_FIRST_TRIM,
MIXSRC_TrimRud = MIXSRC_FIRST_TRIM, LUA_EXPORT("trim-rud", "Rudder trim")
MIXSRC_TrimEle, LUA_EXPORT("trim-ele", "Elevator trim")
MIXSRC_TrimThr, LUA_EXPORT("trim-thr", "Throttle trim")
MIXSRC_TrimAil, LUA_EXPORT("trim-ail", "Aileron trim")
MIXSRC_LAST_TRIM = MIXSRC_TrimAil,
MIXSRC_FIRST_SWITCH,
@@ -1844,6 +1847,9 @@ enum MixSources {
MIXSRC_SP, LUA_EXPORT("sp", "Switch P")
MIXSRC_SQ, LUA_EXPORT("sq", "Switch Q")
MIXSRC_SR, LUA_EXPORT("sr", "Switch R")
MIXSRC_LAST_SWITCH = MIXSRC_SR,
#else
MIXSRC_LAST_SWITCH = MIXSRC_SH,
#endif
#else
MIXSRC_3POS = MIXSRC_FIRST_SWITCH,
@@ -1853,6 +1859,7 @@ enum MixSources {
MIXSRC_AIL,
MIXSRC_GEA,
MIXSRC_TRN,
MIXSRC_LAST_SWITCH = MIXSRC_TRN,
#endif
MIXSRC_FIRST_LOGICAL_SWITCH,
MIXSRC_SW1 = MIXSRC_FIRST_LOGICAL_SWITCH, LUA_EXPORT_MULTIPLE("ls", "Logical switch L%d", NUM_LOGICAL_SWITCH)
+7 -2
View File
@@ -334,14 +334,15 @@ void defaultInputs()
expo->mode = 3; // TODO constant
#if defined(TRANSLATIONS_CZ)
for (int c=0; c<4; c++) {
g_model.inputNames[i][c] = char2idx(STR_INPUTNAMES[1+STR_INPUTNAMES[0]*(stick_index-1)+c]);
g_model.inputNames[i][c] = char2idx(STR_INPUTNAMES[1+4*(stick_index-1)+c]);
}
g_model.inputNames[i][4] = '\0';
#else
for (int c=0; c<3; c++) {
g_model.inputNames[i][c] = char2idx(STR_VSRCRAW[2+4*stick_index+c]);
#endif
}
g_model.inputNames[i][3] = '\0';
#endif
}
eeDirty(EE_MODEL);
}
@@ -2527,6 +2528,10 @@ int main(void)
lcdSetRefVolt(25);
#endif
#if defined(PCBTARANIS)
displaySplash();
#endif
sei(); // interrupts needed for telemetryInit and eeReadAll.
#if defined(FRSKY) && !defined(DSM2_SERIAL)
+4
View File
@@ -1474,6 +1474,10 @@ enum AUDIO_SOUNDS {
extern uint8_t requiredSpeakerVolume;
#endif
extern void checkBattery();
extern void opentxClose();
extern void opentxInit();
// Re-useable byte array to save having multiple buffers
#define SD_SCREEN_FILE_LENGTH (32)
union ReusableBuffer
+3 -2
View File
@@ -207,8 +207,9 @@ char *strAppendFilename(char *dest, const char *filename, const int size)
#define LEN_FILE_EXTENSION 4
char *getFileExtension(char *filename, int size)
{
for (int i=0; i<size-LEN_FILE_EXTENSION; ++i) {
if (filename[i] == '.' || filename[i] == '\0') {
int len = min<int>(size, strlen(filename));
for (int i=len; i>=len-LEN_FILE_EXTENSION; --i) {
if (filename[i] == '.') {
return &filename[i];
}
}
+1 -30
View File
@@ -77,32 +77,10 @@ uint64_t switchesPos = 0;
tmr10ms_t potsLastposStart[NUM_XPOTS] = { 0 };
uint8_t potsPos[NUM_XPOTS];
#if defined(REV9E)
div_t switchInfo(int switchPosition)
{
return div(switchPosition-SWSRC_FIRST_SWITCH, 3);
}
#else
div_t switchInfo(int switchPosition)
{
if (switchPosition <= SWSRC_SE2) {
return div(switchPosition-SWSRC_SA0, 3);
}
else if (switchPosition <= SWSRC_SF2) {
div_t qr = { 5, switchPosition == SWSRC_SF2 ? 2 : 0 };
return qr;
}
else if (switchPosition <= SWSRC_SG2) {
div_t qr = { 6, switchPosition-SWSRC_SG0 };
return qr;
}
else {
div_t qr = div(2*7+switchPosition-SWSRC_SH0, 2);
qr.rem *= 2;
return qr;
}
}
#endif
uint64_t check2PosSwitchPosition(EnumKeys sw)
{
@@ -577,14 +555,7 @@ int8_t getMovedSwitch()
uint8_t next = (1024+getValue(MIXSRC_SA+i)) / 1024;
if (prev != next) {
switches_states = (switches_states & (~mask)) | ((swarnstate_t)next << (i*2));
if (i<5)
result = 1+(3*i)+next;
else if (i==5)
result = 1+(3*5)+(next!=0);
else if (i==6)
result = 1+(3*5)+2+next;
else
result = 1+(3*5)+2+3+(next!=0);
result = 1+(3*i)+next;
}
}
}
@@ -100,7 +100,7 @@ uint8_t pwrCheck()
void pwrOff()
{
PORTH = 0x1F; // PortH-4 set to 0
PORTH = 0xEF; // PortH-4 set to 0
}
FORCEINLINE uint8_t keyDown()
+1 -1
View File
@@ -34,7 +34,7 @@
*
*/
#include "../opentx.h"
#include "../../opentx.h"
#if defined(REVX)
// TODO change this, not the right place
+50 -13
View File
@@ -16,9 +16,16 @@
#define BT_UART_AF GPIO_AF_USART6
#define BT_UART_IRQn USART6_IRQn
#define BT_UART_GPIO_PORT GPIOG
#define BT_UART_GPIO_CLK_TXRX RCC_AHB1Periph_GPIOG
#define BT_UART_GPIO_PORT_TXRX GPIOG
#define BT_UART_GPIO_PIN_TX GPIO_Pin_14
#define BT_UART_GPIO_PIN_RX GPIO_Pin_9
#define BT_UART_GPIO_CLK_EN RCC_AHB1Periph_GPIOD
#define BT_UART_GPIO_PORT_EN GPIOD
#define BT_UART_GPIO_PIN_EN GPIO_Pin_11
#define BT_UART_GPIO_CLK_BRTS RCC_AHB1Periph_GPIOB
#define BT_UART_GPIO_PORT_BRTS GPIOB
#define BT_UART_GPIO_PIN_BRTS GPIO_Pin_10
#define BT_UART_GPIO_TX_PinSource GPIO_PinSource14
#define BT_UART_GPIO_RX_PinSource GPIO_PinSource9
@@ -30,25 +37,34 @@ int bt_open()
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_TXRX, ENABLE);
RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_EN, ENABLE);
RCC_AHB1PeriphClockCmd(BT_UART_GPIO_CLK_BRTS, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
GPIO_PinAFConfig(BT_UART_GPIO_PORT, BT_UART_GPIO_TX_PinSource, BT_UART_AF);
GPIO_PinAFConfig(BT_UART_GPIO_PORT, BT_UART_GPIO_RX_PinSource, BT_UART_AF);
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_TX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_EN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(BT_UART_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_RX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init(BT_UART_GPIO_PORT_EN, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_BRTS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(BT_UART_GPIO_PORT, &GPIO_InitStructure);
GPIO_Init(BT_UART_GPIO_PORT_BRTS, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BT_UART_GPIO_PIN_TX|BT_UART_GPIO_PIN_RX;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(BT_UART_GPIO_PORT_TXRX, &GPIO_InitStructure);
GPIO_PinAFConfig(BT_UART_GPIO_PORT_TXRX, BT_UART_GPIO_TX_PinSource, BT_UART_AF);
GPIO_PinAFConfig(BT_UART_GPIO_PORT_TXRX, BT_UART_GPIO_RX_PinSource, BT_UART_AF);
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_Parity = USART_Parity_No;
@@ -68,9 +84,14 @@ int bt_open()
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
GPIO_SetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS);
GPIO_ResetBits(BT_UART_GPIO_PORT_EN, BT_UART_GPIO_PIN_EN); // open bluetooth
return 0;
}
uint8_t bt_state = 0;
extern "C" void USART6_IRQHandler(void)
{
#if 1
@@ -90,6 +111,8 @@ extern "C" void USART6_IRQHandler(void)
}
else {
USART_ITConfig(BT_UART, USART_IT_TXE, DISABLE);
GPIO_SetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS);
bt_state = 0;
}
}
#endif
@@ -101,10 +124,23 @@ int bt_write(const void *buffer, int len)
for (int i=0; i<len; ++i) {
btTxFifo.push(data[i]);
}
USART_ITConfig(BT_UART, USART_IT_TXE, ENABLE);
return 0;
}
void bt_wakeup(void)
{
if (bt_state < 2 && !btTxFifo.empty()) {
if (bt_state == 0) {
GPIO_ResetBits(BT_UART_GPIO_PORT_BRTS, BT_UART_GPIO_PIN_BRTS);
bt_state = 1;
}
else {
USART_ITConfig(BT_UART, USART_IT_TXE, ENABLE);
bt_state = 2;
}
}
}
int bt_read(void *buffer, int len)
{
int result = 0;
@@ -121,5 +157,6 @@ int bt_read(void *buffer, int len)
int bt_close()
{
GPIO_SetBits(BT_UART_GPIO_PORT_EN, BT_UART_GPIO_PIN_EN); // close bluetooth
return 0;
}
+25 -6
View File
@@ -110,16 +110,30 @@ extern "C" {
#define PIN_OUTPUT 0x0001
#define PIN_PERIPHERAL 0x0002
#define PIN_ANALOG 0x0003
#define PIN_PULL_MASK 0x000C
#define PIN_PULLUP 0x0004
#define PIN_NO_PULLUP 0x0000
#define PIN_PULLDOWN 0x0008
#define PIN_NO_PULLDOWN 0x0000
#define PIN_PERI_MASK 0x00F0
#define PIN_PUSHPULL 0x0000
#define PIN_ODRAIN 0x8000
#define PIN_PORT_MASK 0x0700
#define PIN_PORTA 0x0000
#define PIN_PORTB 0x0100
#define PIN_PORTC 0x0200
#define PIN_PORTD 0x0300
#define PIN_PORTE 0x0400
#define PIN_PORTF 0x0500
#define PIN_PERI_MASK 0x00F0
#define PIN_PER_1 0x0010
#define PIN_PER_2 0x0020
#define PIN_PER_3 0x0030
#define PIN_PER_5 0x0050
#define PIN_PER_6 0x0060
#define PIN_PER_8 0x0080
#define PIN_SPEED_MASK 0x6000
#define PIN_OS25 0x2000
#define PIN_OS50 0x4000
#define PIN_OS100 0x6000
void configure_pins( uint32_t pins, uint16_t config );
@@ -243,6 +257,10 @@ extern "C" {
void pwrInit(void);
uint32_t pwrCheck(void);
void pwrOff(void);
#if defined(REV9E)
uint32_t pwrPressed(void);
uint32_t pwrPressedDuration(void);
#endif
#define UNEXPECTED_SHUTDOWN() (g_eeGeneral.unexpectedShutdown)
// Backlight driver
@@ -312,6 +330,7 @@ void uart3Stop(void);
int bt_open(void);
int bt_write(const void *buffer, int len);
int bt_read(void *buffer, int len);
void bt_wakeup(void);
// Top LCD driver
#if defined(REV9E)
+3
View File
@@ -0,0 +1,3 @@
/bootloader_ramBoot.*
/.dep
+11 -5
View File
@@ -791,11 +791,17 @@ int main()
}
}
if (pwrCheck() == e_power_off && state != ST_FLASHING && state != ST_USB) {
lcdOff(); // this drains LCD caps
pwrOff();
for (;;) {
// Wait for power to go off
if (state != ST_FLASHING && state != ST_USB) {
#if defined(REV9E)
if (pwrPressed()) {
#else
if (pwrCheck() == e_power_off) {
#endif
lcdOff(); // this drains LCD caps
pwrOff();
for (;;) {
// Wait for power to go off
}
}
}
@@ -65,10 +65,6 @@ void configure_pins( uint32_t pins, uint16_t config )
/* Output mode configuration*/
pgpio->OTYPER &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pos)) ;
if ( config & PIN_ODRAIN )
{
pgpio->OTYPER |= (GPIO_OTYPER_OT_0) << pos ;
}
}
/* Pull-up Pull down resistor configuration*/
pgpio->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pos * 2));
+14 -19
View File
@@ -210,23 +210,6 @@
#define GPIOTRNDET GPIOA
#define PIN_TRNDET GPIO_Pin_8
#define PIN_PORTA 0x0000
#define PIN_PORTB 0x0100
#define PIN_PORTC 0x0200
#define PIN_PORTD 0x0300
#define PIN_PORTE 0x0400
#define PIN_PORTF 0x0500
#define PIN_PER_1 0x0010
#define PIN_PER_2 0x0020
#define PIN_PER_3 0x0030
#define PIN_PER_5 0x0050
#define PIN_PER_6 0x0060
#define PIN_PER_8 0x0080
// #define PIN_OS2 0x0000
#define PIN_OS25 0x2000
#define PIN_OS50 0x4000
#define PIN_OS100 0x6000
// Cppm
#define RCC_AHB1Periph_GPIO_INTPPM RCC_AHB1Periph_GPIOA
#define PIN_INTPPM_OUT GPIO_Pin_10 // PA.10
@@ -301,7 +284,7 @@
#endif
// LCD
#if defined(REVPLUS)
#if defined(REV9E)
#define RCC_AHB1Periph_LCD (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD)
#define RCC_AHB1Periph_LCD_RST RCC_AHB1Periph_GPIOD
#define RCC_AHB1Periph_LCD_NCS RCC_AHB1Periph_GPIOA
@@ -312,7 +295,19 @@
#define PIN_LCD_CLK GPIO_Pin_10 // PC.10
#define PIN_LCD_NCS GPIO_Pin_15 // PA.15
#define PIN_LCD_A0 GPIO_Pin_11 // PC.11
#define PIN_LCD_RST GPIO_Pin_15 // TOTO PD.12
#define PIN_LCD_RST GPIO_Pin_15 // PD.15
#elif defined(REVPLUS)
#define RCC_AHB1Periph_LCD (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD)
#define RCC_AHB1Periph_LCD_RST RCC_AHB1Periph_GPIOD
#define RCC_AHB1Periph_LCD_NCS RCC_AHB1Periph_GPIOA
#define GPIO_LCD_SPI GPIOC
#define GPIO_LCD_NCS GPIOA
#define GPIO_LCD_RST GPIOD
#define PIN_LCD_MOSI GPIO_Pin_12 // PC.12
#define PIN_LCD_CLK GPIO_Pin_10 // PC.10
#define PIN_LCD_NCS GPIO_Pin_15 // PA.15
#define PIN_LCD_A0 GPIO_Pin_11 // PC.11
#define PIN_LCD_RST GPIO_Pin_12 // PD.12
#else
#define RCC_AHB1Periph_LCD RCC_AHB1Periph_GPIOD
#define GPIO_LCD_SPI GPIOD
+4 -4
View File
@@ -55,10 +55,10 @@ void initLcdSpi()
SPI3->CR1 |= SPI_CR1_MSTR ; // Make sure in case SSM/SSI needed to be set first
SPI3->CR1 |= SPI_CR1_SPE ;
configure_pins( PIN_LCD_NCS, PIN_OUTPUT | PIN_PORTA | PIN_PUSHPULL | PIN_OS25 | PIN_NO_PULLUP ) ;
configure_pins( PIN_LCD_RST, PIN_OUTPUT | PIN_PORTD | PIN_PUSHPULL | PIN_OS25 | PIN_NO_PULLUP ) ;
configure_pins( PIN_LCD_A0, PIN_OUTPUT | PIN_PORTC | PIN_PUSHPULL | PIN_OS50 | PIN_NO_PULLUP ) ;
configure_pins( PIN_LCD_MOSI|PIN_LCD_CLK, PIN_PORTC | PIN_PUSHPULL | PIN_OS50 | PIN_NO_PULLUP | PIN_PER_6 | PIN_PERIPHERAL ) ;
configure_pins( PIN_LCD_NCS, PIN_OUTPUT | PIN_PORTA | PIN_OS25) ;
configure_pins( PIN_LCD_RST, PIN_OUTPUT | PIN_PORTD | PIN_OS25) ;
configure_pins( PIN_LCD_A0, PIN_OUTPUT | PIN_PORTC | PIN_OS50) ;
configure_pins( PIN_LCD_MOSI|PIN_LCD_CLK, PIN_PORTC | PIN_OS50 | PIN_PER_6 | PIN_PERIPHERAL ) ;
// NVIC_SetPriority( DMA1_Stream7_IRQn, 8 ) ;
+2 -2
View File
@@ -323,7 +323,7 @@ static void init_pa10_ppm()
//RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO_INTPPM, ENABLE);
configure_pins( PIN_INTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25 | PIN_PUSHPULL ) ;
configure_pins( PIN_INTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25) ;
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN ; // Enable clock
TIM1->CR1 &= ~TIM_CR1_CEN ;
@@ -553,7 +553,7 @@ static void init_pa7_ppm()
ppmStreamPtr[EXTERNAL_MODULE] = ppmStream[EXTERNAL_MODULE];
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock
configure_pins( PIN_EXTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25 | PIN_PUSHPULL ) ;
configure_pins( PIN_EXTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25) ;
RCC->APB2ENR |= RCC_APB2ENR_TIM8EN ; // Enable clock
TIM8->CR1 &= ~TIM_CR1_CEN ;
+42 -39
View File
@@ -37,14 +37,8 @@
#include "board_taranis.h"
#include "../../pwr.h"
#ifdef REV9E
#define POWER_STATE_OFF 0
#define POWER_STATE_START 1
#define POWER_STATE_RUNNING 2
#define POWER_STATE_STOPPING 3
#define POWER_STATE_STOPPED 4
uint8_t PowerState = POWER_STATE_OFF ;
#endif
extern volatile uint32_t g_tmr10ms;
#define get_tmr10ms() g_tmr10ms
void pwrInit()
{
@@ -99,6 +93,10 @@ void pwrInit()
// Soft power ON
GPIO_SetBits(GPIOPWR, PIN_MCU_PWR);
#if defined(REV9E)
while (pwrPressed()) ;
#endif
}
void pwrOff()
@@ -106,41 +104,45 @@ void pwrOff()
GPIO_ResetBits(GPIOPWR, PIN_MCU_PWR);
}
// TODO enums should be UPPERCASE
#if defined(REV9E)
uint32_t pwrPressed()
{
return GPIO_ReadInputDataBit(GPIOPWR, PIN_PWR_STATUS) == Bit_RESET;
}
#if !defined(BOOT)
uint32_t pwrPressTime = 0;
uint32_t pwrPressedDuration()
{
if (pwrPressTime == 0) {
return 0;
}
else {
return get_tmr10ms() - pwrPressTime;
}
}
uint32_t pwrCheck()
{
if (pwrPressed()) {
if (pwrPressTime == 0) {
pwrPressTime = get_tmr10ms();
}
else {
if (get_tmr10ms() - pwrPressTime > 250) {
return e_power_off;
}
}
}
else {
pwrPressTime = 0;
}
return e_power_on;
}
#endif
#else
uint32_t pwrCheck()
{
#if defined(SIMU)
return e_power_on;
#elif defined(REV9E)
uint32_t switchValue = GPIO_ReadInputDataBit(GPIOPWR, PIN_PWR_STATUS) == Bit_RESET;
switch ( PowerState )
{
case POWER_STATE_OFF :
PowerState = POWER_STATE_START ;
return e_power_on ;
case POWER_STATE_START :
if ( !switchValue ) {
PowerState = POWER_STATE_RUNNING ;
}
return e_power_on ;
case POWER_STATE_RUNNING :
if ( switchValue ) {
PowerState = POWER_STATE_STOPPING ;
// return e_power_on;
}
return e_power_on ;
case POWER_STATE_STOPPING :
if ( !switchValue ) {
PowerState = POWER_STATE_STOPPED ;
}
return e_power_off ;
case POWER_STATE_STOPPED :
return e_power_off ;
}
#else
if (GPIO_ReadInputDataBit(GPIOPWR, PIN_PWR_STATUS) == Bit_RESET)
return e_power_on;
@@ -150,3 +152,4 @@ uint32_t pwrCheck()
return e_power_off;
#endif
}
#endif
+16 -4
View File
@@ -48,7 +48,7 @@ void init_trainer_ppm()
TrainerPulsePtr = ppmStream[TRAINER_MODULE];
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock
configure_pins( PIN_TR_PPM_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25 | PIN_PUSHPULL ) ;
configure_pins( PIN_TR_PPM_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25) ;
configure_pins( PIN_TR_PPM_IN, PIN_PORTA | PIN_INPUT ) ;
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock
TIM3->CR1 &= ~TIM_CR1_CEN ;
@@ -92,10 +92,22 @@ void set_trainer_ppm_parameters(uint32_t idleTime, uint32_t delay, uint32_t posi
// Trainer capture, PC8, Timer 3 channel 3
void init_trainer_capture()
{
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock
configure_pins (PIN_TR_PPM_IN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2) ;
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
#if 0
configure_pins (PIN_TR_PPM_IN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2) ;
#else
GPIO_InitStructure.GPIO_Pin = PIN_TR_PPM_IN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIO_TR_INOUT, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIO_TR_INOUT, GPIO_PinSource8, GPIO_AF_TIM3);
#endif
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ;
TIM3->ARR = 0xFFFF ;
TIM3->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS
TIM3->CR2 = 0 ;
-3
View File
@@ -155,9 +155,6 @@ void mixerTask(void * pdata)
#define MENU_TASK_PERIOD_TICKS 10 // 20ms
extern void opentxClose();
extern void opentxInit();
void menusTask(void * pdata)
{
opentxInit();
+13 -5
View File
@@ -357,6 +357,11 @@ void telemetryWakeup()
uint8_t lastReceived = telemetryItems[i].lastReceived;
if (lastReceived < TELEMETRY_VALUE_TIMER_CYCLE && uint8_t(now - lastReceived) > TELEMETRY_VALUE_OLD_THRESHOLD) {
telemetryItems[i].lastReceived = TELEMETRY_VALUE_OLD;
TelemetrySensor * sensor = & g_model.telemetrySensors[i];
if (sensor->unit == UNIT_DATETIME) {
telemetryItems[i].datetime.datestate = 0;
telemetryItems[i].datetime.timestate = 0;
}
}
}
}
@@ -566,12 +571,15 @@ void telemetryReset()
#endif
#if defined(CPUARM) && defined(SIMU)
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RSSI_ID, 0, 75, UNIT_RAW, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 0, 100, UNIT_CELSIUS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 1, 200, UNIT_CELSIUS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RSSI_ID, 25, 75, UNIT_RAW, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, SWR_ID, 25, 5, UNIT_RAW, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID, 5, 100, UNIT_CELSIUS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, T1_FIRST_ID+0x10, 5, 200, UNIT_CELSIUS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, ALT_FIRST_ID, 1, 1000, UNIT_METERS, 2);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 1, 0x80280220, UNIT_CELLS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 1, 100, UNIT_AMPS, 2);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 2, 0x80280220, UNIT_CELLS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 3, 100, UNIT_AMPS, 2);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RPM_FIRST_ID, 5, 3600, UNIT_RPMS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, FUEL_QTY_FIRST_ID, 11, 1000, UNIT_MILLILITERS, 2);
#endif
}
+6 -1
View File
@@ -135,9 +135,13 @@
#define RSSI_ID 0xf101
#define ADC1_ID 0xf102
#define ADC2_ID 0xf103
#define SP2UART_A_ID 0xfd00
#define SP2UART_B_ID 0xfd01
#define BATT_ID 0xf104
#define SWR_ID 0xf105
#define XJT_VERSION_ID 0xf106
#define FUEL_QTY_FIRST_ID 0x0a10
#define FUEL_QTY_LAST_ID 0x0a1f
// Default sensor data IDs (Physical IDs + CRC)
#define DATA_ID_VARIO 0x00 // 0
@@ -331,7 +335,8 @@ struct FrskyData {
};
#endif
#define IS_VALID_XJT_VERSION() (frskyData.xjtVersion != 0 && frskyData.xjtVersion != 0xff)
#define IS_VALID_XJT_VERSION() (frskyData.xjtVersion != 0 && frskyData.xjtVersion != 0xff)
#define IS_HIDDEN_TELEMETRY_VALUE() ((appId == SP2UART_A_ID) || (appId == SP2UART_B_ID) || (appId == XJT_VERSION_ID) || ((appId == SWR_ID) && !IS_VALID_XJT_VERSION()))
enum AlarmLevel {
alarm_off = 0,
+2 -2
View File
@@ -643,10 +643,10 @@ void frskyDSetDefault(int index, uint16_t id)
if (id >= D_A1_ID && id <= D_A2_ID) {
telemetrySensor.prec = 1;
telemetrySensor.custom.ratio = 132;
telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING;
telemetrySensor.filter = 1;
}
else if (id == D_RSSI_ID) {
telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING;
telemetrySensor.filter = 1;
}
}
else {
+15 -8
View File
@@ -58,9 +58,12 @@ struct FrSkySportSensor {
const FrSkySportSensor sportSensors[] = {
{ RSSI_ID, RSSI_ID, ZSTR_RSSI, UNIT_RAW, 0 },
{ ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 0 },
{ ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 0 },
{ BATT_ID, BATT_ID, ZSTR_BATT, UNIT_VOLTS, 0 },
{ SWR_ID, SWR_ID, ZSTR_SWR, UNIT_RAW, 0 },
{ ADC1_ID, ADC1_ID, ZSTR_A1, UNIT_VOLTS, 1 },
{ ADC2_ID, ADC2_ID, ZSTR_A2, UNIT_VOLTS, 1 },
{ A3_FIRST_ID, A3_LAST_ID, ZSTR_A3, UNIT_VOLTS, 2 },
{ A4_FIRST_ID, A4_LAST_ID, ZSTR_A4, UNIT_VOLTS, 2 },
{ BATT_ID, BATT_ID, ZSTR_BATT, UNIT_VOLTS, 1 },
{ T1_FIRST_ID, T2_LAST_ID, ZSTR_TEMP, UNIT_CELSIUS, 0 },
{ RPM_FIRST_ID, RPM_LAST_ID, ZSTR_RPM, UNIT_RPMS, 0 },
{ FUEL_FIRST_ID, FUEL_LAST_ID, ZSTR_FUEL, UNIT_PERCENT, 0 },
@@ -77,6 +80,7 @@ const FrSkySportSensor sportSensors[] = {
{ GPS_ALT_FIRST_ID, GPS_ALT_LAST_ID, ZSTR_GPSALT, UNIT_METERS, 2 },
{ GPS_TIME_DATE_FIRST_ID, GPS_TIME_DATE_LAST_ID, ZSTR_GPSDATETIME, UNIT_DATETIME, 0 },
{ GPS_LONG_LATI_FIRST_ID, GPS_LONG_LATI_LAST_ID, ZSTR_GPS, UNIT_GPS, 0 },
{ FUEL_QTY_FIRST_ID, FUEL_QTY_LAST_ID, ZSTR_FUEL, UNIT_MILLILITERS, 2 },
{ 0, 0, NULL, UNIT_RAW, 0 } // sentinel
};
@@ -166,7 +170,7 @@ void processSportUpdatePacket(uint8_t *packet)
void processSportPacket(uint8_t *packet)
{
uint8_t dataId = packet[0];
uint8_t dataId = (packet[0] & 0x1F) + 1;
uint8_t prim = packet[1];
uint16_t appId = *((uint16_t *)(packet+2));
@@ -220,8 +224,8 @@ void processSportPacket(uint8_t *packet)
uint16_t value = HUB_DATA_U16(packet);
processHubPacket(id, value);
}
else {
if (appId == ADC1_ID || appId == ADC2_ID || appId == BATT_ID) {
else if (!IS_HIDDEN_TELEMETRY_VALUE()) {
if (appId == ADC1_ID || appId == ADC2_ID || appId == BATT_ID || appId == SWR_ID) {
data = SPORT_DATA_U8(packet);
}
const FrSkySportSensor * sensor = getFrSkySportSensor(appId);
@@ -250,9 +254,12 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance)
uint8_t prec = min<uint8_t>(2, sensor->prec);
telemetrySensor.init(sensor->name, unit, prec);
if (id >= ADC1_ID && id <= BATT_ID) {
telemetrySensor.prec = 1;
telemetrySensor.custom.ratio = 132;
telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING;
telemetrySensor.filter = 1;
}
if (unit == UNIT_RPMS) {
telemetrySensor.custom.ratio = 1;
telemetrySensor.custom.offset = 1;
}
}
else {
+121 -53
View File
@@ -14,8 +14,10 @@ void TelemetryItem::gpsReceived()
lastReceived = now();
}
void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uint32_t unit, uint32_t prec)
void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32_t unit, uint32_t prec)
{
int32_t newVal = val;
if (unit == UNIT_CELLS) {
uint32_t data = uint32_t(newVal);
uint8_t cellIndex = data & 0xF;
@@ -52,13 +54,41 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin
datetime.year = (uint16_t) ((data & 0xff000000) >> 24);
datetime.month = (uint8_t) ((data & 0x00ff0000) >> 16);
datetime.day = (uint8_t) ((data & 0x0000ff00) >> 8);
datetime.datestate = 1;
if (datetime.year != 0) {
datetime.datestate = 1;
}
#if defined(RTCLOCK)
if (g_eeGeneral.adjustRTC && (datetime.datestate == 1)) {
struct gtm t;
gettime(&t);
t.tm_year = datetime.year+4;
t.tm_mon = datetime.month-1;
t.tm_mday = datetime.day;
rtcSetTime(&t);
}
#endif
}
else {
datetime.hour = ((uint8_t) ((data & 0xff000000) >> 24) + g_eeGeneral.timezone + 24) % 24;
datetime.min = (uint8_t) ((data & 0x00ff0000) >> 16);
datetime.sec = (uint16_t) ((data & 0x0000ff00) >> 8);
datetime.timestate = 1;
if (datetime.datestate == 1) {
datetime.timestate = 1;
}
#if defined(RTCLOCK)
if (g_eeGeneral.adjustRTC && (datetime.datestate == 1)) {
struct gtm t;
gettime(&t);
if (abs((t.tm_hour-datetime.hour)*3600 + (t.tm_min-datetime.min)*60 + (t.tm_sec-datetime.sec)) > 20) {
// we adjust RTC only if difference is > 20 seconds
t.tm_hour = datetime.hour;
t.tm_min = datetime.min;
t.tm_sec = datetime.sec;
g_rtcTime = gmktime(&t); // update local timestamp and get wday calculated
rtcSetTime(&t);
}
}
#endif
}
if (datetime.year == 0) {
return;
@@ -141,30 +171,33 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin
datetime.timestate = 1;
newVal = 0;
}
else if (unit == UNIT_RPMS) {
newVal = (newVal * sensor.custom.offset) / sensor.custom.ratio;
}
else {
newVal = sensor.getValue(newVal, unit, prec);
if (sensor.inputFlags == TELEM_INPUT_FLAGS_AUTO_OFFSET) {
if (sensor.autoOffset) {
if (!isAvailable()) {
offsetAuto = -newVal;
std.offsetAuto = -newVal;
}
newVal += offsetAuto;
newVal += std.offsetAuto;
}
else if (sensor.inputFlags == TELEM_INPUT_FLAGS_FILTERING) {
else if (sensor.filter) {
if (!isAvailable()) {
for (int i=0; i<TELEMETRY_AVERAGE_COUNT; i++) {
filterValues[i] = newVal;
std.filterValues[i] = newVal;
}
}
else {
// calculate the average from values[] and value
// also shift readings in values [] array
unsigned int sum = filterValues[0];
unsigned int sum = std.filterValues[0];
for (int i=0; i<TELEMETRY_AVERAGE_COUNT-1; i++) {
int32_t tmp = filterValues[i+1];
filterValues[i] = tmp;
int32_t tmp = std.filterValues[i+1];
std.filterValues[i] = tmp;
sum += tmp;
}
filterValues[TELEMETRY_AVERAGE_COUNT-1] = newVal;
std.filterValues[TELEMETRY_AVERAGE_COUNT-1] = newVal;
sum += newVal;
newVal = sum/(TELEMETRY_AVERAGE_COUNT+1);
}
@@ -185,6 +218,15 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin
}
}
for (int i=0; i<TELEM_VALUES_MAX; i++) {
TelemetrySensor & it = g_model.telemetrySensors[i];
if (it.type == TELEM_TYPE_CALCULATED && it.formula == TELEM_FORMULA_TOTALIZE && &g_model.telemetrySensors[it.consumption.source-1] == &sensor) {
TelemetryItem & item = telemetryItems[i];
int32_t increment = it.getValue(val, unit, prec);
item.setValue(it, item.value+increment, it.unit, it.prec);
}
}
value = newVal;
lastReceived = now();
}
@@ -401,40 +443,6 @@ void TelemetryItem::eval(const TelemetrySensor & sensor)
}
}
int getTelemetryIndex(TelemetryProtocol protocol, uint16_t id, uint8_t instance)
{
int available = -1;
for (int index=0; index<TELEM_VALUES_MAX; index++) {
TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index];
if (telemetrySensor.id == id && telemetrySensor.instance == instance) {
return index;
}
else if (available < 0 && telemetrySensor.id == 0) {
available = index;
}
}
if (available >= 0) {
switch (protocol) {
#if defined(FRSKY_SPORT)
case TELEM_PROTO_FRSKY_SPORT:
frskySportSetDefault(available, id, instance);
break;
#endif
#if defined(FRSKY)
case TELEM_PROTO_FRSKY_D:
frskyDSetDefault(available, id);
break;
#endif
default:
break;
}
}
return available;
}
void delTelemetryIndex(uint8_t index)
{
memclear(&g_model.telemetrySensors[index], sizeof(TelemetrySensor));
@@ -453,15 +461,56 @@ int availableTelemetryIndex()
return -1;
}
int lastUsedTelemetryIndex()
{
for (int index=TELEM_VALUES_MAX-1; index>=0; index--) {
TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index];
if (telemetrySensor.isAvailable()) {
return index;
}
}
return -1;
}
bool isSensorAvailableInResetSpecialFunction(int index)
{
TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index-FUNC_RESET_PARAM_FIRST_TELEM];
return telemetrySensor.isAvailable();
}
void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec)
{
int index = getTelemetryIndex(protocol, id, instance);
if (index >= 0) {
telemetryItems[index].setValue(g_model.telemetrySensors[index], value, unit, prec);
bool available = false;
for (int index=0; index<TELEM_VALUES_MAX; index++) {
TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index];
if (telemetrySensor.id == id && telemetrySensor.instance == instance) {
telemetryItems[index].setValue(g_model.telemetrySensors[index], value, unit, prec);
available = true;
}
}
else {
// TODO error too many sensors
if (!available) {
int index = availableTelemetryIndex();
if (index >= 0) {
switch (protocol) {
#if defined(FRSKY_SPORT)
case TELEM_PROTO_FRSKY_SPORT:
frskySportSetDefault(index, id, instance);
break;
#endif
#if defined(FRSKY)
case TELEM_PROTO_FRSKY_D:
frskyDSetDefault(index, id);
break;
#endif
default:
break;
}
}
else {
POPUP_WARNING(STR_TELEMETRYFULL);
}
}
}
@@ -516,7 +565,12 @@ int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t
value = 32 + (value*18)/10;
}
}
else if (unit == UNIT_MILLILITERS) {
if (destUnit == UNIT_FLOZ) {
value = (value * 100) / 2957;
}
}
for (int i=destPrec; i<prec; i++)
value /= 10;
@@ -545,3 +599,17 @@ int32_t TelemetrySensor::getValue(int32_t value, uint8_t unit, uint8_t prec) con
return value;
}
bool TelemetrySensor::isConfigurable()
{
if (type == TELEM_TYPE_CALCULATED) {
if (formula >= TELEM_FORMULA_CELL) {
return false;
}
}
else {
if (unit >= UNIT_FIRST_VIRTUAL) {
return false;
}
}
return true;
}
+9 -5
View File
@@ -97,8 +97,10 @@ class TelemetryItem
uint8_t lastReceived; // for detection of sensor loss
union {
int32_t offsetAuto;
int32_t filterValues[TELEMETRY_AVERAGE_COUNT];
struct {
int32_t offsetAuto;
int32_t filterValues[TELEMETRY_AVERAGE_COUNT];
} std;
struct {
uint16_t prescale;
} consumption;
@@ -175,16 +177,18 @@ inline bool isTelemetryFieldComparisonAvailable(int index)
TelemetrySensor & sensor = g_model.telemetrySensors[index];
if (sensor.type == TELEM_TYPE_CALCULATED)
return true;
if (sensor.unit == UNIT_GPS)
return false;
if (sensor.unit == UNIT_DATETIME)
if (sensor.unit >= UNIT_DATETIME)
return false;
return (sensor.id != 0);
}
extern TelemetryItem telemetryItems[];
void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec);
void delTelemetryIndex(uint8_t index);
int availableTelemetryIndex();
int lastUsedTelemetryIndex();
bool isSensorAvailableInResetSpecialFunction(int index);
int32_t getTelemetryValue(uint8_t index, uint8_t & prec);
int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t destUnit, uint8_t destPrec);
+3
View File
@@ -761,6 +761,9 @@ TEST(Mixer, SlowOnSwitchSource)
g_model.mixData[0].weight = 100;
g_model.mixData[0].speedUp = SLOW_STEP*5;
g_model.mixData[0].speedDown = SLOW_STEP*5;
#if defined(PCBTARANIS)
g_eeGeneral.switchConfig = 0x03;
#endif
s_mixer_first_run_done = true;
@@ -2,10 +2,12 @@
******************************************************************************
* @file system_stm32f4xx.c
* @author MCD Application Team
* @version V1.4.0
* @date 04-August-2014
* @version V1.1.0
* @date 21-March-2015
* @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
* This file contains the system clock configuration for STM32F4xx devices.
* This file contains the system clock configuration for STM32F4xx devices,
* and is generated by the clock configuration tool
* stm32f4xx_Clock_Configuration_V1.1.0.xls
*
* 1. This file provides two functions and one global variable to be called from
* user application:
@@ -40,7 +42,7 @@
* 5. This file configures the system clock as follows:
*=============================================================================
*=============================================================================
* Supported STM32F40xxx/41xxx devices
* Supported STM32F40xx/41xx/427x/437x devices
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
@@ -54,9 +56,9 @@
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2
*-----------------------------------------------------------------------------
* HSE Frequency(Hz) | 25000000
* HSE Frequency(Hz) | 12000000
*-----------------------------------------------------------------------------
* PLL_M | 25
* PLL_M | 12
*-----------------------------------------------------------------------------
* PLL_N | 336
*-----------------------------------------------------------------------------
@@ -82,152 +84,11 @@
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Disabled
* Require 48MHz for USB OTG FS, | Enabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================
*=============================================================================
* Supported STM32F42xxx/43xxx devices
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 180000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 180000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 4
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2
*-----------------------------------------------------------------------------
* HSE Frequency(Hz) | 25000000
*-----------------------------------------------------------------------------
* PLL_M | 25
*-----------------------------------------------------------------------------
* PLL_N | 360
*-----------------------------------------------------------------------------
* PLL_P | 2
*-----------------------------------------------------------------------------
* PLL_Q | 7
*-----------------------------------------------------------------------------
* PLLI2S_N | NA
*-----------------------------------------------------------------------------
* PLLI2S_R | NA
*-----------------------------------------------------------------------------
* I2S input clock | NA
*-----------------------------------------------------------------------------
* VDD(V) | 3.3
*-----------------------------------------------------------------------------
* Main regulator output voltage | Scale1 mode
*-----------------------------------------------------------------------------
* Flash Latency(WS) | 5
*-----------------------------------------------------------------------------
* Prefetch Buffer | ON
*-----------------------------------------------------------------------------
* Instruction cache | ON
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Disabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================
*=============================================================================
* Supported STM32F401xx devices
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 84000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 84000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 2
*-----------------------------------------------------------------------------
* APB2 Prescaler | 1
*-----------------------------------------------------------------------------
* HSE Frequency(Hz) | 25000000
*-----------------------------------------------------------------------------
* PLL_M | 25
*-----------------------------------------------------------------------------
* PLL_N | 336
*-----------------------------------------------------------------------------
* PLL_P | 4
*-----------------------------------------------------------------------------
* PLL_Q | 7
*-----------------------------------------------------------------------------
* PLLI2S_N | NA
*-----------------------------------------------------------------------------
* PLLI2S_R | NA
*-----------------------------------------------------------------------------
* I2S input clock | NA
*-----------------------------------------------------------------------------
* VDD(V) | 3.3
*-----------------------------------------------------------------------------
* Main regulator output voltage | Scale1 mode
*-----------------------------------------------------------------------------
* Flash Latency(WS) | 2
*-----------------------------------------------------------------------------
* Prefetch Buffer | ON
*-----------------------------------------------------------------------------
* Instruction cache | ON
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Disabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================
*=============================================================================
* Supported STM32F411xx devices
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSI)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 100000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 100000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 2
*-----------------------------------------------------------------------------
* APB2 Prescaler | 1
*-----------------------------------------------------------------------------
* HSI Frequency(Hz) | 16000000
*-----------------------------------------------------------------------------
* PLL_M | 16
*-----------------------------------------------------------------------------
* PLL_N | 400
*-----------------------------------------------------------------------------
* PLL_P | 4
*-----------------------------------------------------------------------------
* PLL_Q | 7
*-----------------------------------------------------------------------------
* PLLI2S_N | NA
*-----------------------------------------------------------------------------
* PLLI2S_R | NA
*-----------------------------------------------------------------------------
* I2S input clock | NA
*-----------------------------------------------------------------------------
* VDD(V) | 3.3
*-----------------------------------------------------------------------------
* Main regulator output voltage | Scale1 mode
*-----------------------------------------------------------------------------
* Flash Latency(WS) | 3
*-----------------------------------------------------------------------------
* Prefetch Buffer | ON
*-----------------------------------------------------------------------------
* Instruction cache | ON
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Disabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================
******************************************************************************
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
@@ -278,31 +139,10 @@
*/
/************************* Miscellaneous Configuration ************************/
/*!< Uncomment the following line if you need to use external SRAM or SDRAM mounted
on STM324xG_EVAL/STM324x7I_EVAL/STM324x9I_EVAL boards as data memory */
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)
/*!< Uncomment the following line if you need to use external SRAM mounted
on STM324xG_EVAL/STM324x7I_EVAL board as data memory */
/* #define DATA_IN_ExtSRAM */
#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */
#if defined (STM32F427_437xx) || defined (STM32F429_439xx)
/* #define DATA_IN_ExtSDRAM */
#endif /* STM32F427_437x || STM32F429_439xx */
#if defined (STM32F411xE)
/*!< Uncomment the following line if you need to clock the STM32F411xE by HSE Bypass
through STLINK MCO pin of STM32F103 microcontroller. The frequency cannot be changed
and is fixed at 8 MHz.
Hardware configuration needed for Nucleo Board:
� SB54, SB55 OFF
� R35 removed
� SB16, SB50 ON */
/* #define USE_HSE_BYPASS */
#if defined (USE_HSE_BYPASS)
#define HSE_BYPASS_INPUT_FREQUENCY 8000000
#endif /* USE_HSE_BYPASS */
#endif /* STM32F411xE */
/*!< Uncomment the following line if you need to relocate your vector Table in
Internal SRAM. */
/* #define VECT_TAB_SRAM */
@@ -311,48 +151,16 @@
/******************************************************************************/
/************************* PLL Parameters *************************************/
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#if defined(REV9E)
#define PLL_M 12
#else
#define PLL_M 25
#endif
#else /* STM32F411xE */
#if defined (USE_HSE_BYPASS)
#define PLL_M 8
#else /* STM32F411xE */
#define PLL_M 16
#endif /* USE_HSE_BYPASS */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
#if defined (STM32F40_41xxx)
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F40_41xxx */
#if defined (STM32F427_437xx) || defined (STM32F429_439xx)
#define PLL_N 360
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F427_437x || STM32F429_439xx */
#if defined (STM32F401xx)
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 4
#endif /* STM32F401xx */
#if defined (STM32F411xE)
#define PLL_N 400
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 4
#endif /* STM32F411xx */
/******************************************************************************/
/**
@@ -371,23 +179,9 @@
* @{
*/
#if defined (STM32F40_41xxx)
uint32_t SystemCoreClock = 168000000;
#endif /* STM32F40_41xxx */
#if defined (STM32F427_437xx) || defined (STM32F429_439xx)
uint32_t SystemCoreClock = 180000000;
#endif /* STM32F427_437x || STM32F429_439xx */
#if defined (STM32F401xx)
uint32_t SystemCoreClock = 84000000;
#endif /* STM32F401xx */
#if defined (STM32F411xE)
uint32_t SystemCoreClock = 100000000;
#endif /* STM32F401xx */
__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
/**
* @}
@@ -398,10 +192,9 @@ __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}
*/
static void SetSysClock(void);
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
static void SystemInit_ExtMemCtl(void);
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
#ifdef DATA_IN_ExtSRAM
static void SystemInit_ExtMemCtl(void);
#endif /* DATA_IN_ExtSRAM */
/**
* @}
@@ -443,9 +236,9 @@ void SystemInit(void)
/* Disable all interrupts */
RCC->CIR = 0x00000000;
#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
#ifdef DATA_IN_ExtSRAM
SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
#endif /* DATA_IN_ExtSRAM */
/* Configure the System clock source, PLL Multiplier and Divider factors,
AHB/APBx prescalers and Flash settings ----------------------------------*/
@@ -513,13 +306,13 @@ void SystemCoreClockUpdate(void)
SystemCoreClock = HSE_VALUE;
break;
case 0x08: /* PLL used as system clock source */
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
SYSCLK = PLL_VCO / PLL_P
*/
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
if (pllsource != 0)
{
/* HSE used as PLL clock source */
@@ -530,23 +323,9 @@ void SystemCoreClockUpdate(void)
/* HSI used as PLL clock source */
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
}
#elif defined (STM32F411xE)
#if defined (USE_HSE_BYPASS)
if (pllsource != 0)
{
/* HSE used as PLL clock source */
pllvco = (HSE_BYPASS_INPUT_FREQUENCY / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
}
#else
if (pllsource == 0)
{
/* HSI used as PLL clock source */
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
}
#endif /* USE_HSE_BYPASS */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
SystemCoreClock = pllvco/pllp;
SystemCoreClock = pllvco/pllp;
break;
default:
SystemCoreClock = HSI_VALUE;
@@ -569,7 +348,6 @@ void SystemCoreClockUpdate(void)
*/
static void SetSysClock(void)
{
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
/******************************************************************************/
/* PLL (clocked by HSE) used as System clock source */
/******************************************************************************/
@@ -596,29 +374,19 @@ static void SetSysClock(void)
if (HSEStatus == (uint32_t)0x01)
{
/* Select regulator voltage output Scale 1 mode */
/* Select regulator voltage output Scale 1 mode, System frequency up to 168 MHz */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_VOS;
/* HCLK = SYSCLK / 1*/
RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;
#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */
#if defined (STM32F401xx)
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
#endif /* STM32F401xx */
/* Configure the main PLL */
RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
(RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
@@ -631,29 +399,8 @@ static void SetSysClock(void)
{
}
#if defined (STM32F427_437xx) || defined (STM32F429_439xx)
/* Enable the Over-drive to extend the clock frequency to 180 Mhz */
PWR->CR |= PWR_CR_ODEN;
while((PWR->CSR & PWR_CSR_ODRDY) == 0)
{
}
PWR->CR |= PWR_CR_ODSWEN;
while((PWR->CSR & PWR_CSR_ODSWRDY) == 0)
{
}
/* Configure Flash prefetch, Instruction cache, Data cache and wait state */
FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;
#endif /* STM32F427_437x || STM32F429_439xx */
#if defined (STM32F40_41xxx)
/* Configure Flash prefetch, Instruction cache, Data cache and wait state */
FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;
#endif /* STM32F40_41xxx */
#if defined (STM32F401xx)
/* Configure Flash prefetch, Instruction cache, Data cache and wait state */
FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS;
#endif /* STM32F401xx */
FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;
/* Select the main PLL as system clock source */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
@@ -668,113 +415,7 @@ static void SetSysClock(void)
{ /* If HSE fails to start-up, the application will have wrong clock
configuration. User can add here some code to deal with this error */
}
#elif defined (STM32F411xE)
#if defined (USE_HSE_BYPASS)
/******************************************************************************/
/* PLL (clocked by HSE) used as System clock source */
/******************************************************************************/
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
/* Enable HSE and HSE BYPASS */
RCC->CR |= ((uint32_t)RCC_CR_HSEON | RCC_CR_HSEBYP);
/* Wait till HSE is ready and if Time out is reached exit */
do
{
HSEStatus = RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
if ((RCC->CR & RCC_CR_HSERDY) != RESET)
{
HSEStatus = (uint32_t)0x01;
}
else
{
HSEStatus = (uint32_t)0x00;
}
if (HSEStatus == (uint32_t)0x01)
{
/* Select regulator voltage output Scale 1 mode */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_VOS;
/* HCLK = SYSCLK / 1*/
RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
/* Configure the main PLL */
RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
(RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
/* Enable the main PLL */
RCC->CR |= RCC_CR_PLLON;
/* Wait till the main PLL is ready */
while((RCC->CR & RCC_CR_PLLRDY) == 0)
{
}
/* Configure Flash prefetch, Instruction cache, Data cache and wait state */
FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS;
/* Select the main PLL as system clock source */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= RCC_CFGR_SW_PLL;
/* Wait till the main PLL is used as system clock source */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
{
}
}
else
{ /* If HSE fails to start-up, the application will have wrong clock
configuration. User can add here some code to deal with this error */
}
#else /* HSI will be used as PLL clock source */
/* Select regulator voltage output Scale 1 mode */
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_VOS;
/* HCLK = SYSCLK / 1*/
RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
/* Configure the main PLL */
RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | (PLL_Q << 24);
/* Enable the main PLL */
RCC->CR |= RCC_CR_PLLON;
/* Wait till the main PLL is ready */
while((RCC->CR & RCC_CR_PLLRDY) == 0)
{
}
/* Configure Flash prefetch, Instruction cache, Data cache and wait state */
FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS;
/* Select the main PLL as system clock source */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= RCC_CFGR_SW_PLL;
/* Wait till the main PLL is used as system clock source */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
{
}
#endif /* USE_HSE_BYPASS */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */
}
/**
@@ -787,7 +428,7 @@ static void SetSysClock(void)
/**
* @brief Setup the external memory controller.
* Called in startup_stm32f4xx.s before jump to main.
* This function configures the external SRAM mounted on STM324xG_EVAL/STM324x7I boards
* This function configures the external SRAM mounted on STM324xG_EVAL/STM324x7I_EVAL board
* This SRAM will be used as program data memory (including heap and stack).
* @param None
* @retval None
@@ -796,28 +437,31 @@ void SystemInit_ExtMemCtl(void)
{
/*-- GPIOs Configuration -----------------------------------------------------*/
/*
+-------------------+--------------------+------------------+--------------+
+ SRAM pins assignment +
+-------------------+--------------------+------------------+--------------+
| PD0 <-> FMC_D2 | PE0 <-> FMC_NBL0 | PF0 <-> FMC_A0 | PG0 <-> FMC_A10 |
| PD1 <-> FMC_D3 | PE1 <-> FMC_NBL1 | PF1 <-> FMC_A1 | PG1 <-> FMC_A11 |
| PD4 <-> FMC_NOE | PE3 <-> FMC_A19 | PF2 <-> FMC_A2 | PG2 <-> FMC_A12 |
| PD5 <-> FMC_NWE | PE4 <-> FMC_A20 | PF3 <-> FMC_A3 | PG3 <-> FMC_A13 |
| PD8 <-> FMC_D13 | PE7 <-> FMC_D4 | PF4 <-> FMC_A4 | PG4 <-> FMC_A14 |
| PD9 <-> FMC_D14 | PE8 <-> FMC_D5 | PF5 <-> FMC_A5 | PG5 <-> FMC_A15 |
| PD10 <-> FMC_D15 | PE9 <-> FMC_D6 | PF12 <-> FMC_A6 | PG9 <-> FMC_NE2 |
| PD11 <-> FMC_A16 | PE10 <-> FMC_D7 | PF13 <-> FMC_A7 |-----------------+
| PD12 <-> FMC_A17 | PE11 <-> FMC_D8 | PF14 <-> FMC_A8 |
| PD13 <-> FMC_A18 | PE12 <-> FMC_D9 | PF15 <-> FMC_A9 |
| PD14 <-> FMC_D0 | PE13 <-> FMC_D10 |-----------------+
| PD15 <-> FMC_D1 | PE14 <-> FMC_D11 |
| | PE15 <-> FMC_D12 |
+------------------+------------------+
+-------------------+--------------------+------------------+------------------+
+ SRAM pins assignment +
+-------------------+--------------------+------------------+------------------+
| PD0 <-> FSMC_D2 | PE0 <-> FSMC_NBL0 | PF0 <-> FSMC_A0 | PG0 <-> FSMC_A10 |
| PD1 <-> FSMC_D3 | PE1 <-> FSMC_NBL1 | PF1 <-> FSMC_A1 | PG1 <-> FSMC_A11 |
| PD4 <-> FSMC_NOE | PE2 <-> FSMC_A23 | PF2 <-> FSMC_A2 | PG2 <-> FSMC_A12 |
| PD5 <-> FSMC_NWE | PE3 <-> FSMC_A19 | PF3 <-> FSMC_A3 | PG3 <-> FSMC_A13 |
| PD8 <-> FSMC_D13 | PE4 <-> FSMC_A20 | PF4 <-> FSMC_A4 | PG4 <-> FSMC_A14 |
| PD9 <-> FSMC_D14 | PE5 <-> FSMC_A21 | PF5 <-> FSMC_A5 | PG5 <-> FSMC_A15 |
| PD10 <-> FSMC_D15 | PE6 <-> FSMC_A22 | PF12 <-> FSMC_A6 | PG9 <-> FSMC_NE2 |
| PD11 <-> FSMC_A16 | PE7 <-> FSMC_D4 | PF13 <-> FSMC_A7 |------------------+
| PD12 <-> FSMC_A17 | PE8 <-> FSMC_D5 | PF14 <-> FSMC_A8 |
| PD13 <-> FSMC_A18 | PE9 <-> FSMC_D6 | PF15 <-> FSMC_A9 |
| PD14 <-> FSMC_D0 | PE10 <-> FSMC_D7 |------------------+
| PD15 <-> FSMC_D1 | PE11 <-> FSMC_D8 |
+-------------------| PE12 <-> FSMC_D9 |
| PE13 <-> FSMC_D10 |
| PE14 <-> FSMC_D11 |
| PE15 <-> FSMC_D12 |
+--------------------+
*/
/* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
RCC->AHB1ENR |= 0x00000078;
/* Connect PDx pins to FMC Alternate function */
/* Connect PDx pins to FSMC Alternate function */
GPIOD->AFR[0] = 0x00cc00cc;
GPIOD->AFR[1] = 0xcccccccc;
/* Configure PDx pins in Alternate function mode */
@@ -829,7 +473,7 @@ void SystemInit_ExtMemCtl(void)
/* No pull-up, pull-down for PDx pins */
GPIOD->PUPDR = 0x00000000;
/* Connect PEx pins to FMC Alternate function */
/* Connect PEx pins to FSMC Alternate function */
GPIOE->AFR[0] = 0xcccccccc;
GPIOE->AFR[1] = 0xcccccccc;
/* Configure PEx pins in Alternate function mode */
@@ -841,7 +485,7 @@ void SystemInit_ExtMemCtl(void)
/* No pull-up, pull-down for PEx pins */
GPIOE->PUPDR = 0x00000000;
/* Connect PFx pins to FMC Alternate function */
/* Connect PFx pins to FSMC Alternate function */
GPIOF->AFR[0] = 0x00cccccc;
GPIOF->AFR[1] = 0xcccc0000;
/* Configure PFx pins in Alternate function mode */
@@ -853,7 +497,7 @@ void SystemInit_ExtMemCtl(void)
/* No pull-up, pull-down for PFx pins */
GPIOF->PUPDR = 0x00000000;
/* Connect PGx pins to FMC Alternate function */
/* Connect PGx pins to FSMC Alternate function */
GPIOG->AFR[0] = 0x00cccccc;
GPIOG->AFR[1] = 0x000000c0;
/* Configure PGx pins in Alternate function mode */
@@ -865,34 +509,24 @@ void SystemInit_ExtMemCtl(void)
/* No pull-up, pull-down for PGx pins */
GPIOG->PUPDR = 0x00000000;
/*-- FMC Configuration ------------------------------------------------------*/
/* Enable the FMC/FSMC interface clock */
/*-- FSMC Configuration ------------------------------------------------------*/
/* Enable the FSMC interface clock */
RCC->AHB3ENR |= 0x00000001;
#if defined (STM32F427_437xx) || defined (STM32F429_439xx)
/* Configure and enable Bank1_SRAM2 */
FMC_Bank1->BTCR[2] = 0x00001011;
FMC_Bank1->BTCR[3] = 0x00000201;
FMC_Bank1E->BWTR[2] = 0x0fffffff;
#endif /* STM32F427_437xx || STM32F429_439xx */
#if defined (STM32F40_41xxx)
/* Configure and enable Bank1_SRAM2 */
FSMC_Bank1->BTCR[2] = 0x00001011;
FSMC_Bank1->BTCR[3] = 0x00000201;
FSMC_Bank1E->BWTR[2] = 0x0fffffff;
#endif /* STM32F40_41xxx */
/*
Bank1_SRAM2 is configured as follow:
In case of FSMC configuration
NORSRAMTimingStructure.FSMC_AddressSetupTime = 1;
NORSRAMTimingStructure.FSMC_AddressHoldTime = 0;
NORSRAMTimingStructure.FSMC_DataSetupTime = 2;
NORSRAMTimingStructure.FSMC_BusTurnAroundDuration = 0;
NORSRAMTimingStructure.FSMC_CLKDivision = 0;
NORSRAMTimingStructure.FSMC_DataLatency = 0;
NORSRAMTimingStructure.FSMC_AccessMode = FMC_AccessMode_A;
p.FSMC_AddressSetupTime = 1;
p.FSMC_AddressHoldTime = 0;
p.FSMC_DataSetupTime = 2;
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision = 0;
p.FSMC_DataLatency = 0;
p.FSMC_AccessMode = FSMC_AccessMode_A;
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
@@ -907,219 +541,11 @@ void SystemInit_ExtMemCtl(void)
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &NORSRAMTimingStructure;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &NORSRAMTimingStructure;
In case of FMC configuration
NORSRAMTimingStructure.FMC_AddressSetupTime = 1;
NORSRAMTimingStructure.FMC_AddressHoldTime = 0;
NORSRAMTimingStructure.FMC_DataSetupTime = 2;
NORSRAMTimingStructure.FMC_BusTurnAroundDuration = 0;
NORSRAMTimingStructure.FMC_CLKDivision = 0;
NORSRAMTimingStructure.FMC_DataLatency = 0;
NORSRAMTimingStructure.FMC_AccessMode = FMC_AccessMode_A;
FMC_NORSRAMInitStructure.FMC_Bank = FMC_Bank1_NORSRAM2;
FMC_NORSRAMInitStructure.FMC_DataAddressMux = FMC_DataAddressMux_Disable;
FMC_NORSRAMInitStructure.FMC_MemoryType = FMC_MemoryType_SRAM;
FMC_NORSRAMInitStructure.FMC_MemoryDataWidth = FMC_MemoryDataWidth_16b;
FMC_NORSRAMInitStructure.FMC_BurstAccessMode = FMC_BurstAccessMode_Disable;
FMC_NORSRAMInitStructure.FMC_AsynchronousWait = FMC_AsynchronousWait_Disable;
FMC_NORSRAMInitStructure.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low;
FMC_NORSRAMInitStructure.FMC_WrapMode = FMC_WrapMode_Disable;
FMC_NORSRAMInitStructure.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState;
FMC_NORSRAMInitStructure.FMC_WriteOperation = FMC_WriteOperation_Enable;
FMC_NORSRAMInitStructure.FMC_WaitSignal = FMC_WaitSignal_Disable;
FMC_NORSRAMInitStructure.FMC_ExtendedMode = FMC_ExtendedMode_Disable;
FMC_NORSRAMInitStructure.FMC_WriteBurst = FMC_WriteBurst_Disable;
FMC_NORSRAMInitStructure.FMC_ContinousClock = FMC_CClock_SyncOnly;
FMC_NORSRAMInitStructure.FMC_ReadWriteTimingStruct = &NORSRAMTimingStructure;
FMC_NORSRAMInitStructure.FMC_WriteTimingStruct = &NORSRAMTimingStructure;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
*/
}
#endif /* DATA_IN_ExtSRAM */
#ifdef DATA_IN_ExtSDRAM
/**
* @brief Setup the external memory controller.
* Called in startup_stm32f4xx.s before jump to main.
* This function configures the external SDRAM mounted on STM324x9I_EVAL board
* This SDRAM will be used as program data memory (including heap and stack).
* @param None
* @retval None
*/
void SystemInit_ExtMemCtl(void)
{
register uint32_t tmpreg = 0, timeout = 0xFFFF;
register uint32_t index;
/* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface
clock */
RCC->AHB1ENR |= 0x000001FC;
/* Connect PCx pins to FMC Alternate function */
GPIOC->AFR[0] = 0x0000000c;
GPIOC->AFR[1] = 0x00007700;
/* Configure PCx pins in Alternate function mode */
GPIOC->MODER = 0x00a00002;
/* Configure PCx pins speed to 50 MHz */
GPIOC->OSPEEDR = 0x00a00002;
/* Configure PCx pins Output type to push-pull */
GPIOC->OTYPER = 0x00000000;
/* No pull-up, pull-down for PCx pins */
GPIOC->PUPDR = 0x00500000;
/* Connect PDx pins to FMC Alternate function */
GPIOD->AFR[0] = 0x000000CC;
GPIOD->AFR[1] = 0xCC000CCC;
/* Configure PDx pins in Alternate function mode */
GPIOD->MODER = 0xA02A000A;
/* Configure PDx pins speed to 50 MHz */
GPIOD->OSPEEDR = 0xA02A000A;
/* Configure PDx pins Output type to push-pull */
GPIOD->OTYPER = 0x00000000;
/* No pull-up, pull-down for PDx pins */
GPIOD->PUPDR = 0x00000000;
/* Connect PEx pins to FMC Alternate function */
GPIOE->AFR[0] = 0xC00000CC;
GPIOE->AFR[1] = 0xCCCCCCCC;
/* Configure PEx pins in Alternate function mode */
GPIOE->MODER = 0xAAAA800A;
/* Configure PEx pins speed to 50 MHz */
GPIOE->OSPEEDR = 0xAAAA800A;
/* Configure PEx pins Output type to push-pull */
GPIOE->OTYPER = 0x00000000;
/* No pull-up, pull-down for PEx pins */
GPIOE->PUPDR = 0x00000000;
/* Connect PFx pins to FMC Alternate function */
GPIOF->AFR[0] = 0xcccccccc;
GPIOF->AFR[1] = 0xcccccccc;
/* Configure PFx pins in Alternate function mode */
GPIOF->MODER = 0xAA800AAA;
/* Configure PFx pins speed to 50 MHz */
GPIOF->OSPEEDR = 0xAA800AAA;
/* Configure PFx pins Output type to push-pull */
GPIOF->OTYPER = 0x00000000;
/* No pull-up, pull-down for PFx pins */
GPIOF->PUPDR = 0x00000000;
/* Connect PGx pins to FMC Alternate function */
GPIOG->AFR[0] = 0xcccccccc;
GPIOG->AFR[1] = 0xcccccccc;
/* Configure PGx pins in Alternate function mode */
GPIOG->MODER = 0xaaaaaaaa;
/* Configure PGx pins speed to 50 MHz */
GPIOG->OSPEEDR = 0xaaaaaaaa;
/* Configure PGx pins Output type to push-pull */
GPIOG->OTYPER = 0x00000000;
/* No pull-up, pull-down for PGx pins */
GPIOG->PUPDR = 0x00000000;
/* Connect PHx pins to FMC Alternate function */
GPIOH->AFR[0] = 0x00C0CC00;
GPIOH->AFR[1] = 0xCCCCCCCC;
/* Configure PHx pins in Alternate function mode */
GPIOH->MODER = 0xAAAA08A0;
/* Configure PHx pins speed to 50 MHz */
GPIOH->OSPEEDR = 0xAAAA08A0;
/* Configure PHx pins Output type to push-pull */
GPIOH->OTYPER = 0x00000000;
/* No pull-up, pull-down for PHx pins */
GPIOH->PUPDR = 0x00000000;
/* Connect PIx pins to FMC Alternate function */
GPIOI->AFR[0] = 0xCCCCCCCC;
GPIOI->AFR[1] = 0x00000CC0;
/* Configure PIx pins in Alternate function mode */
GPIOI->MODER = 0x0028AAAA;
/* Configure PIx pins speed to 50 MHz */
GPIOI->OSPEEDR = 0x0028AAAA;
/* Configure PIx pins Output type to push-pull */
GPIOI->OTYPER = 0x00000000;
/* No pull-up, pull-down for PIx pins */
GPIOI->PUPDR = 0x00000000;
/*-- FMC Configuration ------------------------------------------------------*/
/* Enable the FMC interface clock */
RCC->AHB3ENR |= 0x00000001;
/* Configure and enable SDRAM bank1 */
FMC_Bank5_6->SDCR[0] = 0x000039D0;
FMC_Bank5_6->SDTR[0] = 0x01115351;
/* SDRAM initialization sequence */
/* Clock enable command */
FMC_Bank5_6->SDCMR = 0x00000011;
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
while((tmpreg != 0) & (timeout-- > 0))
{
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
}
/* Delay */
for (index = 0; index<1000; index++);
/* PALL command */
FMC_Bank5_6->SDCMR = 0x00000012;
timeout = 0xFFFF;
while((tmpreg != 0) & (timeout-- > 0))
{
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
}
/* Auto refresh command */
FMC_Bank5_6->SDCMR = 0x00000073;
timeout = 0xFFFF;
while((tmpreg != 0) & (timeout-- > 0))
{
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
}
/* MRD register program */
FMC_Bank5_6->SDCMR = 0x00046014;
timeout = 0xFFFF;
while((tmpreg != 0) & (timeout-- > 0))
{
tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
}
/* Set refresh count */
tmpreg = FMC_Bank5_6->SDRTR;
FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
/* Disable write protection */
tmpreg = FMC_Bank5_6->SDCR[0];
FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
/*
Bank1_SDRAM is configured as follow:
FMC_SDRAMTimingInitStructure.FMC_LoadToActiveDelay = 2;
FMC_SDRAMTimingInitStructure.FMC_ExitSelfRefreshDelay = 6;
FMC_SDRAMTimingInitStructure.FMC_SelfRefreshTime = 4;
FMC_SDRAMTimingInitStructure.FMC_RowCycleDelay = 6;
FMC_SDRAMTimingInitStructure.FMC_WriteRecoveryTime = 2;
FMC_SDRAMTimingInitStructure.FMC_RPDelay = 2;
FMC_SDRAMTimingInitStructure.FMC_RCDDelay = 2;
FMC_SDRAMInitStructure.FMC_Bank = SDRAM_BANK;
FMC_SDRAMInitStructure.FMC_ColumnBitsNumber = FMC_ColumnBits_Number_8b;
FMC_SDRAMInitStructure.FMC_RowBitsNumber = FMC_RowBits_Number_11b;
FMC_SDRAMInitStructure.FMC_SDMemoryDataWidth = FMC_SDMemory_Width_16b;
FMC_SDRAMInitStructure.FMC_InternalBankNumber = FMC_InternalBank_Number_4;
FMC_SDRAMInitStructure.FMC_CASLatency = FMC_CAS_Latency_3;
FMC_SDRAMInitStructure.FMC_WriteProtection = FMC_Write_Protection_Disable;
FMC_SDRAMInitStructure.FMC_SDClockPeriod = FMC_SDClock_Period_2;
FMC_SDRAMInitStructure.FMC_ReadBurst = FMC_Read_Burst_disable;
FMC_SDRAMInitStructure.FMC_ReadPipeDelay = FMC_ReadPipe_Delay_1;
FMC_SDRAMInitStructure.FMC_SDRAMTimingStruct = &FMC_SDRAMTimingInitStructure;
*/
}
#endif /* DATA_IN_ExtSDRAM */
/**
@@ -1134,3 +560,4 @@ void SystemInit_ExtMemCtl(void)
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+39
View File
@@ -121,6 +121,10 @@ const pm_char STR_OPEN9X[] PROGMEM =
ISTR(DSM_PROTOCOLS)
ISTR(VOLTSRC)
ISTR(CURVE_TYPES)
ISTR(VSENSORTYPES)
ISTR(VFORMULAS)
ISTR(VPREC)
ISTR(VCELLINDEX)
#endif
#if defined(MAVLINK)
ISTR(MAVLINK_BAUDS)
@@ -248,6 +252,8 @@ const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING;
const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING;
#ifdef FRSKY
const pm_char STR_TIMEZONE[] PROGMEM = TR_TIMEZONE;
const pm_char STR_ADJUST_RTC[] PROGMEM = TR_ADJUST_RTC;
const pm_char STR_GPS[] PROGMEM = TR_GPS;
const pm_char STR_GPSCOORD[] PROGMEM = TR_GPSCOORD;
const pm_char STR_VARIO[] PROGMEM = TR_VARIO;
const pm_char STR_PITCH_AT_ZERO[] PROGMEM = TR_PITCH_AT_ZERO;
@@ -376,6 +382,10 @@ const pm_char STR_SHUTDOWN[] PROGMEM = TR_SHUTDOWN;
const pm_char STR_SAVEMODEL[] PROGMEM = TR_SAVEMODEL;
#endif
#if defined(PCBTARANIS) && defined(REV9E)
const pm_char STR_POWEROFF[] PROGMEM = TR_POWEROFF;
#endif
const pm_char STR_BATT_CALIB[] PROGMEM = TR_BATT_CALIB;
#if defined(CPUARM) || defined(FRSKY)
@@ -499,6 +509,8 @@ const pm_char STR_FLASH_EXTERNAL_DEVICE[] PROGMEM = TR_FLASH_EXTERNAL_DEVICE;
const pm_char STR_WRITING[] PROGMEM = TR_WRITING;
const pm_char STR_CONFIRM_FORMAT[] PROGMEM = TR_CONFIRM_FORMAT;
const pm_char STR_EEBACKUP[] PROGMEM = TR_EEBACKUP;
const pm_char STR_FACTORYRESET[] PROGMEM = TR_FACTORYRESET;
const pm_char STR_CONFIRMRESET[] PROGMEM = TR_CONFIRMRESET;
const pm_char STR_TOO_MANY_LUA_SCRIPTS[] PROGMEM = TR_TO_MANY_LUA_SCRIPTS;
const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
@@ -529,9 +541,24 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
const pm_char STR_CRITICALALARM[] PROGMEM = TR_CRITICALALARM;
const pm_char STR_TELEMETRY_TYPE[] PROGMEM = TR_TELEMETRY_TYPE;
const pm_char STR_TELEMETRY_SENSORS[] PROGMEM = TR_TELEMETRY_SENSORS;
const pm_char STR_VALUE[] PROGMEM = TR_VALUE;
const pm_char STR_TOPLCDTIMER[] PROGMEM = TR_TOPLCDTIMER;
const pm_char STR_UNIT[] PROGMEM = TR_UNIT;
const pm_char STR_TELEMETRY_NEWSENSOR[] PROGMEM = TR_TELEMETRY_NEWSENSOR;
const pm_char STR_ID[] PROGMEM = TR_ID;
const pm_char STR_PRECISION[] PROGMEM = TR_PRECISION;
const pm_char STR_RATIO[] PROGMEM = TR_RATIO;
const pm_char STR_FORMULA[] PROGMEM = TR_FORMULA;
const pm_char STR_CELLINDEX[] PROGMEM = TR_CELLINDEX;
const pm_char STR_LOGS[] PROGMEM = TR_LOGS;
const pm_char STR_OPTIONS[] PROGMEM = TR_OPTIONS;
const pm_char STR_ALTSENSOR[] PROGMEM = TR_ALTSENSOR;
const pm_char STR_CELLSENSOR[] PROGMEM = TR_CELLSENSOR;
const pm_char STR_GPSSENSOR[] PROGMEM = TR_GPSSENSOR;
const pm_char STR_CURRENTSENSOR[] PROGMEM = TR_CURRENTSENSOR;
const pm_char STR_AUTOOFFSET[] PROGMEM = TR_AUTOOFFSET;
const pm_char STR_FILTER[] PROGMEM = TR_FILTER;
const pm_char STR_TELEMETRYFULL[] PROGMEM = TR_TELEMETRYFULL;
#endif
#if defined(PCBTARANIS)
@@ -561,6 +588,18 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
const pm_char STR_SCRIPT[] PROGMEM = TR_SCRIPT;
const pm_char STR_INPUTS[] PROGMEM = TR_INPUTS;
const pm_char STR_OUTPUTS[] PROGMEM = TR_OUTPUTS;
const pm_char STR_MENU_INPUTS[] PROGMEM = TR_MENU_INPUTS;
const pm_char STR_MENU_LUA[] PROGMEM = TR_MENU_LUA;
const pm_char STR_MENU_STICKS[] PROGMEM = TR_MENU_STICKS;
const pm_char STR_MENU_POTS[] PROGMEM = TR_MENU_POTS;
const pm_char STR_MENU_MAX[] PROGMEM = TR_MENU_MAX;
const pm_char STR_MENU_HELI[] PROGMEM = TR_MENU_HELI;
const pm_char STR_MENU_TRIMS[] PROGMEM = TR_MENU_TRIMS;
const pm_char STR_MENU_SWITCHES[] PROGMEM = TR_MENU_SWITCHES;
const pm_char STR_MENU_TRAINER[] PROGMEM = TR_MENU_TRAINER;
const pm_char STR_MENU_CHANNELS[] PROGMEM = TR_MENU_CHANNELS;
const pm_char STR_MENU_GVARS[] PROGMEM = TR_MENU_GVARS;
const pm_char STR_MENU_TELEMETRY[] PROGMEM = TR_MENU_TELEMETRY;
#endif
#if MENUS_LOCK == 1
+44 -1
View File
@@ -192,7 +192,11 @@ extern const pm_char STR_OPEN9X[];
#define OFS_DSM_PROTOCOLS (OFS_XJT_PROTOCOLS + sizeof(TR_XJT_PROTOCOLS))
#define OFS_VOLTSRC (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS))
#define OFS_CURVE_TYPES (OFS_VOLTSRC + sizeof(TR_VOLTSRC))
#define OFS_MAVLINK_BAUDS (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES))
#define OFS_VSENSORTYPES (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES))
#define OFS_VFORMULAS (OFS_VSENSORTYPES + sizeof(TR_VSENSORTYPES))
#define OFS_VPREC (OFS_VFORMULAS + sizeof(TR_VFORMULAS))
#define OFS_VCELLINDEX (OFS_VPREC + sizeof(TR_VPREC))
#define OFS_MAVLINK_BAUDS (OFS_VCELLINDEX + sizeof(TR_VCELLINDEX))
#else
#define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES)
#endif
@@ -298,6 +302,10 @@ extern const pm_char STR_OPEN9X[];
#define STR_XJT_PROTOCOLS (STR_OPEN9X + OFS_XJT_PROTOCOLS)
#define STR_DSM_PROTOCOLS (STR_OPEN9X + OFS_DSM_PROTOCOLS)
#define STR_CURVE_TYPES (STR_OPEN9X + OFS_CURVE_TYPES)
#define STR_VSENSORTYPES (STR_OPEN9X + OFS_VSENSORTYPES)
#define STR_VFORMULAS (STR_OPEN9X + OFS_VFORMULAS)
#define STR_VPREC (STR_OPEN9X + OFS_VPREC)
#define STR_VCELLINDEX (STR_OPEN9X + OFS_VCELLINDEX)
#endif
#if defined(MAVLINK)
@@ -427,6 +435,8 @@ extern const pm_char STR_SPLASHSCREEN[];
extern const pm_char STR_THROTTLEWARNING[];
extern const pm_char STR_SWITCHWARNING[];
extern const pm_char STR_TIMEZONE[];
extern const pm_char STR_ADJUST_RTC[];
extern const pm_char STR_GPS[];
extern const pm_char STR_GPSCOORD[];
extern const pm_char STR_VARIO[];
extern const pm_char STR_PITCH_AT_ZERO[];
@@ -542,6 +552,10 @@ extern const pm_char STR_SHUTDOWN[];
extern const pm_char STR_SAVEMODEL[];
#endif
#if defined(PCBTARANIS) && defined(REV9E)
extern const pm_char STR_POWEROFF[];
#endif
extern const pm_char STR_BATT_CALIB[];
#if defined(CPUARM) || defined(FRSKY)
@@ -669,6 +683,8 @@ extern const pm_char STR_FLASH_INTERNAL_MODULE[];
extern const pm_char STR_WRITING[];
extern const pm_char STR_CONFIRM_FORMAT[];
extern const pm_char STR_EEBACKUP[];
extern const pm_char STR_FACTORYRESET[];
extern const pm_char STR_CONFIRMRESET[];
extern const pm_char STR_TOO_MANY_LUA_SCRIPTS[];
extern const pm_char STR_BLCOLOR[];
@@ -735,9 +751,24 @@ extern const pm_char STR_BLCOLOR[];
extern const pm_char STR_CRITICALALARM[];
extern const pm_char STR_TELEMETRY_TYPE[];
extern const pm_char STR_TELEMETRY_SENSORS[];
extern const pm_char STR_VALUE[];
extern const pm_char STR_TOPLCDTIMER[];
extern const pm_char STR_UNIT[] PROGMEM;
extern const pm_char STR_TELEMETRY_NEWSENSOR[];
extern const pm_char STR_ID[];
extern const pm_char STR_PRECISION[];
extern const pm_char STR_RATIO[];
extern const pm_char STR_FORMULA[];
extern const pm_char STR_CELLINDEX[];
extern const pm_char STR_LOGS[];
extern const pm_char STR_OPTIONS[];
extern const pm_char STR_ALTSENSOR[];
extern const pm_char STR_CELLSENSOR[];
extern const pm_char STR_GPSSENSOR[];
extern const pm_char STR_CURRENTSENSOR[];
extern const pm_char STR_AUTOOFFSET[];
extern const pm_char STR_FILTER[];
extern const pm_char STR_TELEMETRYFULL[];
#endif
#if defined(PCBTARANIS)
@@ -767,6 +798,18 @@ extern const pm_char STR_BLCOLOR[];
extern const pm_char STR_SCRIPT[];
extern const pm_char STR_INPUTS[];
extern const pm_char STR_OUTPUTS[];
extern const pm_char STR_MENU_INPUTS[];
extern const pm_char STR_MENU_LUA[];
extern const pm_char STR_MENU_STICKS[];
extern const pm_char STR_MENU_POTS[];
extern const pm_char STR_MENU_MAX[];
extern const pm_char STR_MENU_HELI[];
extern const pm_char STR_MENU_TRIMS[];
extern const pm_char STR_MENU_SWITCHES[];
extern const pm_char STR_MENU_TRAINER[];
extern const pm_char STR_MENU_CHANNELS[];
extern const pm_char STR_MENU_GVARS[];
extern const pm_char STR_MENU_TELEMETRY[];
#endif
#if MENUS_LOCK == 1
+212 -79
View File
@@ -82,9 +82,15 @@
#define LEN_UART3MODES "\015"
#define TR_UART3MODES "VYP\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trainer\0""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "Není\0 ""Pot s aretací\0 ""Vícepol. přep.\0""Potenciometr\0"
#define LEN_SLIDERTYPES "\006"
#define TR_SLIDERTYPES "žádný\0""Slider"
#define LEN_DATETIME "\006"
#define TR_DATETIME "DATUM:""ČAS: "
@@ -109,15 +115,20 @@
#define LEN_VTRIMINC "\007"
#define TR_VTRIMINC "Expo\0 ""ExJemný""Jemný\0 ""Střední""Hrubý\0 "
#define LEN_VDISPLAYTRIMS "\006"
#define TR_VDISPLAYTRIMS "Ne\0 ""Změna\0""Ano\0 "
#define LEN_VBEEPCOUNTDOWN "\006"
#define TR_VBEEPCOUNTDOWN "Tichý\0""Zvuk\0 ""Hlas\0 "
#define TR_VBEEPCOUNTDOWN "Ne\0 ""Zvuk\0 ""Hlas\0 "
#define LEN_CURVE_TYPES "\010"
#define TR_CURVE_TYPES "Rastr-X\0""Volná-XY"
#define LEN_RETA123 "\001"
#if defined(PCBTARANIS) || defined(REVX)
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_RETA123 "SVPK1234LRLR"
#elif defined(PCBTARANIS) || defined(REVX)
#define TR_RETA123 "SVPK123LR"
#elif defined(PCBSKY9X)
#define TR_RETA123 "SVPK123a"
@@ -174,7 +185,7 @@
#define LEN_VMIXTRIMS "\004"
#define TR_VMIXTRIMS "VYP\0""ZAP\0""Směr""Výšk""Plyn""Křid"
#if defined(PCBTARANIS)
#if LCD_W >= 212
#define TR_CSWTIMER "Timer"
#define TR_CSWSTICKY "Stcky"
#define TR_CSWRANGE "Range"
@@ -230,18 +241,18 @@
#else
#define TR_PLAY_TRACK "\221\222Stopa\0 "
#endif
#define TR_PLAY_BOTH "\221\222Pár\0 "
#define TR_PLAY_VALUE "\221\222TTS\0 "
#define TR_PLAY_BOTH "\221\222Pár stop\0"
#define TR_PLAY_VALUE "\221\222Hlásit\0 "
#else
#define TR_PLAY_TRACK "[\221\222Stopa]\0 "
#define TR_PLAY_BOTH "[\221\222Pár]\0 "
#define TR_PLAY_VALUE "[\221\222TTS]\0 "
#define TR_PLAY_VALUE "[\221\222Hlásit]\0"
#endif
#define TR_SF_BG_MUSIC "BgHudba\0 ""BgHudba ||\0"
#define TR_SF_BG_MUSIC "\221\222Hudba\0 ""\221\222Hudba ||\0"
#if defined(SDCARD)
#define TR_SDCLOGS "Log na SD\0 "
#define TR_SDCLOGS "Loguj na SD"
#else
#define TR_SDCLOGS "[Logování]\0"
#endif
@@ -249,7 +260,7 @@
#ifdef GVARS
#define TR_ADJUST_GVAR "Nastav \0 "
#else
#define TR_ADJUST_GVAR "[AdjustGV]\0"
#define TR_ADJUST_GVAR "[Nastav GP]"
#endif
#if defined(LUA)
@@ -302,8 +313,8 @@
#define TR_FSW_RESET_ROTENC
#endif
#if defined(PCBTARANIS)
#define TR_FSW_RESET_TIMERS "Timer 1\0 ""Timer 2\0 ""Timer 3\0 "
#if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Stopky 1\0 ""Stopky 2\0 ""Stopky 3\0 "
#elif defined(CPUARM)
#define TR_FSW_RESET_TIMERS "Tmr1""Tmr2""Tmr3"
#else
@@ -335,10 +346,10 @@
#define TR_ASPD_MAX TR("ASp+", "ASpd+")
#if defined(PCBTARANIS)
#if LCD_W >= 212
#define TR_TELEM_RSSI_RX "RSSI\0"
#else
#define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ")
#define TR_TELEM_RSSI_RX TR("Rx\0 ", "Rx\0 ")
#endif
#if defined(CPUARM)
@@ -361,10 +372,8 @@
#if defined(CPUARM)
#define LEN_VUNITSSYSTEM TR("\006", "\010")
#define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metrické""Imperial")
#define LEN_VTELEMUNIT_METR "\003"
#define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 "
#define LEN_VTELEMUNIT_IMP "\003"
#define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 "
#define LEN_VTELEMUNIT "\003"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
#else
#if defined(IMPERIAL_UNITS)
#define LENGTH_UNIT LENGTH_UNIT_IMP
@@ -390,24 +399,29 @@
#define TR_VTELPROTO "---\0 ""Hub\0 ""WSHHigh"
#if defined(CPUARM)
#define LEN_AMPSRC TR("\003", "\007")
#define TR_AMPSRC TR("---""A1\0""A2\0""A3\0""A4\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells\0 ")
#define LEN_VOLTSRC TR("\003", "\007")
#define TR_VOLTSRC TR("A1\0""A2\0""A3\0""A4\0""FAS""Cel", "A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells\0 ")
#define LEN_AMPSRC TR("\003", "\005")
#define TR_AMPSRC TR("---""A1\0""A2\0""A3\0""A4\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells")
#define LEN_VOLTSRC TR("\003", "\005")
#define TR_VOLTSRC TR("A1\0""A2\0""A3\0""A4\0""FAS""Cel", "A1\0 ""A2\0 ""A3\0 ""A4\0 ""FAS\0 ""Cells")
#else
#define LEN_AMPSRC TR("\003", "\007")
#define TR_AMPSRC TR("---""A1\0""A2\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""FAS\0 ""Cells\0 ")
#define LEN_AMPSRC TR("\003", "\005")
#define TR_AMPSRC TR("---""A1\0""A2\0""FAS""Cel", "---\0 ""A1\0 ""A2\0 ""FAS\0 ""Cells")
#endif
#define LEN_VARIOSRC "\005"
#define LEN_VARIOSRC "\004"
#if defined(FRSKY_SPORT)
#define TR_VARIOSRC "Vario""A1\0 ""A2\0"
#define TR_VARIOSRC "VSpd""A1\0 ""A2\0 ""dTE\0"
#else
#define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0"
#define TR_VARIOSRC "Alt\0""Alt+""VSpd""A1\0 ""A2\0"
#endif
#if defined(CPUARM)
#define LEN_VTELEMSCREENTYPE "\010"
#define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel""Skript\0"
#else
#define LEN_VTELEMSCREENTYPE "\010"
#define TR_VTELEMSCREENTYPE "Hodnota ""Ukazatel"
#endif
#define LEN_GPSFORMAT "\004"
#define TR_GPSFORMAT "DMS\0""NMEA"
@@ -428,22 +442,31 @@
#define LEN_VSWITCHES "\003"
#define LEN_VSRCRAW "\004"
#if defined(PCBTARANIS)
#define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""S3\0 ""LS\0 ""RS\0 "
#define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 "
#define LEN_INPUTNAMES "\004"
#define TR_INPUTNAMES "Smer""Vysk""Plyn""Krid"
#define TR_STICKS_VSRCRAW TR("Směr""Výšk""Plyn""Křid", "\307Smě""\307Výš""\307Pln""\307Kři")
#define TR_TRIMS_VSRCRAW TR("TrmS""TrmV""TrmP""TrmK", "\313Smě""\313Výš""\313Pln""\313Kři")
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\310S4\0""\311LS\0""\311RS\0""\311LS2""\311RS2"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0"
#elif defined(PCBTARANIS)
#define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0"
#define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0"
#else
#define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 "
#define TR_POTS_VSRCRAW "POT1""POT2""POT3"
#define TR_SW_VSRCRAW "3POS"
#define TR_9X_3POS_SWITCHES "ID0""ID1""ID2"
#endif
#if defined(CPUARM)
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12""L13""L14""L15""L16""L17""L18""L19""L20""L21""L22""L23""L24""L25""L26""L27""L28""L29""L30""L31""L32"
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12""L13""L14""L15""L16""L17""L18""L19""L20""L21""L22""L23""L24""L25""L26""L27""L28""L29""L30""L31""L32"
#else
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tSl""tSp""tVd""tVn""tPd""tPn""tKl""tKp"
#define TR_TRIMS_SWITCHES TR("tSl""tSp""tVd""tVn""tPd""tPn""tKl""tKp", "\313Sl""\313Sp""\313Vd""\313Vn""\313Pd""\313Pn""\313Kl""\313Kp")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -456,13 +479,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ZAP""One"
#endif
#if defined(HELI)
@@ -471,13 +504,17 @@
#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]"
#endif
#define TR_VSRCRAW "---\0""Směr""Výšk""Plyn""Křid" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" TR_SW_VSRCRAW
#if defined(CPUARM)
#define TR_RESERVE_VSRCRAW "[--]"
#define TR_EXTRA_VSRCRAW "Batt""Time" TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW TR_RESERVE_VSRCRAW "Tmr1""Tmr2""Tmr3"
#else
#define TR_EXTRA_VSRCRAW
#endif
#define LEN_INPUTNAMES "\004"
#define TR_INPUTNAMES "Smer""Vysk""Plyn""Krid"
#define TR_VSRCRAW "---\0" TR_STICKS_VSRCRAW TR_POTS_VSRCRAW TR_ROTARY_ENCODERS "MAX\0" TR_CYC_VSRCRAW TR_TRIMS_VSRCRAW TR_SW_VSRCRAW TR_EXTRA_VSRCRAW
#define LEN_VTMRMODES "\004"
#define TR_VTMRMODES "VYP\0""ABS\0""Pln>""Pln%""Pln*"
#define TR_VTMRMODES "VYP\0""ZAP\0""Pln>""Pln%""Pln*"
#define LEN_VTRAINERMODES "\022"
#define TR_VTRAINERMODES "Učitel/Jack\0 ""Žák/Jack\0 ""Master/SBUS Module""Master/CPPM Module""Master/Battery\0"
@@ -494,10 +531,30 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#if defined(COLORLCD)
#define INDENT "\007"
#define LEN_INDENT 1
#define INDENT_WIDTH 12
#define BREAKSPACE "\036"
#else
#define INDENT "\001"
#define LEN_INDENT 1
#define INDENT_WIDTH (FW/2)
#define BREAKSPACE " "
#endif
#if defined(PCBTARANIS)
#define TR_ENTER "[ENTER]"
@@ -516,7 +573,7 @@
#define TR_MENUWHENDONE CENTER "\011" TR_ENTER " > DALŠÍ"
#define TR_FREE TR("volné:", "volných")
#define TR_DELETEMODEL "SMAZAT MODEL"
#define TR_DELETEMODEL "SMAZAT" BREAKSPACE "MODEL"
#define TR_COPYINGMODEL "Kopíruji model.."
#define TR_MOVINGMODEL "Přesouvám model."
#define TR_LOADINGMODEL "Aktivuji model.."
@@ -525,7 +582,7 @@
#define TR_PHASENAME "Název"
#define TR_MIXNAME "Název"
#define TR_INPUTNAME "Název"
#if defined(PCBTARANIS)
#if defined(VIRTUALINPUTS)
#define TR_EXPONAME "Popis"
#else
#define TR_EXPONAME "Název"
@@ -535,13 +592,17 @@
#define TR_ELIMITS TR("Limit +25%", "Kanál +/- 125%")
#define TR_ETRIMS TR("širší Trim", "Široký trim")
#define TR_TRIMINC TR("Krok Trimu", "Krok trimu")
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_DISPLAY_TRIMS "Zobr.hodnotu trimu"
#define TR_TTRACE TR("StopaPlynu", INDENT "Stopa plynu")
#define TR_TTRIM TR("TrimVolnob.", INDENT "Trim jen volnoběh")
#define TR_BEEPCTR "Středy \221\222"
#define TR_BEEPCTR TR("Středy \221\222", "Pípat středy \221\222")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_PROTO INDENT "Protokol"
#if defined(CPUARM)
#define TR_PPMFRAME INDENT "PPM frame"
#else
#define TR_PPMFRAME "PPM frame"
#endif
#define TR_MS "ms"
#define TR_SWITCH "Spínač"
#define TR_TRIMS "Trimy"
@@ -552,8 +613,8 @@
#define OFS_CHECKTRIMS (9*FW)
#define TR_SWASHTYPE "Typ cykliky"
#define TR_COLLECTIVE "Kolektiv"
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_AILERON "Boční cyklika"
#define TR_ELEVATOR "Podélná cykl."
#define TR_SWASHRING "Cyklika"
#define TR_ELEDIRECTION "Směr:Výškovka"
#define TR_AILDIRECTION "\012Křidélka"
@@ -617,10 +678,12 @@
#define TR_BLOFFBRIGHTNESS INDENT"Jas Vyp."
#define TR_BLCOLOR INDENT "Barva"
#define TR_SPLASHSCREEN TR("úvodníLogo", "Zobrazit úvodní logo")
#define TR_THROTTLEWARNING TR("* Plyn", INDENT "Páka Plynu")
#define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy Spínačů")
#define TR_THROTTLEWARNING TR("* Plyn", INDENT "Kontrola plynu")
#define TR_SWITCHWARNING TR("* Spínače", INDENT "Polohy spínačů")
#define TR_POTWARNING TR("* Potenc.", INDENT "Nastavení Pot.")
#define TR_TIMEZONE "časové pásmo"
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Pořadí kanálů", "Výchozí pořadí kanálů")
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
@@ -632,9 +695,15 @@
#define TR_CAL "Kal."
#define TR_VTRIM "Trim- +"
#define TR_BG "BG:"
#define TR_MENUTOSTART CENTER "\011" TR_ENTER " = START"
#define TR_SETMIDPOINT CENTER "\004Nastav páky na střed"
#define TR_MOVESTICKSPOTS TR(CENTER "\006Hýbej pákami/poty", "\014Hýbej pákami i potenciometry")
#if defined(COLORLCD)
#define TR_MENUTOSTART TR_ENTER " = START"
#define TR_SETMIDPOINT "Nastav páky na střed"
#define TR_MOVESTICKSPOTS "Hýbej pákami/poty"
#else
#define TR_MENUTOSTART CENTER "\011" TR_ENTER " = START"
#define TR_SETMIDPOINT CENTER "\004Nastav páky na střed"
#define TR_MOVESTICKSPOTS TR(CENTER "\006Hýbej pákami/poty", "\014Hýbej pákami i potenciometry")
#endif
#define TR_RXBATT "Rx Bat.:"
#define TR_TXnRX "Tx:\0Rx:"
#define OFS_RX 4
@@ -677,7 +746,11 @@
#define TR_MENUDIAG "DIAG"
#define TR_MENUANA "ANALOGY"
#define TR_MENUCALIBRATION "KALIBRACE"
#if defined(COLORLCD)
#define TR_TRIMS2OFFSETS "\006Trimy => Subtrimy"
#else
#define TR_TRIMS2OFFSETS "\006Trimy => Subtrimy"
#endif
#define TR_MENUMODELSEL "MODEL"
#define TR_MENUSETUP "NASTAVENÍ"
#define TR_MENUFLIGHTPHASE "LETOVÝ REŽIM"
@@ -686,15 +759,12 @@
#define TR_MENULIMITS "SERVA"
#if defined(PCBTARANIS)
#if defined(VIRTUALINPUTS)
#define TR_MENUINPUTS "VSTUPY"
#else
#define TR_MENUINPUTS "DR/EXPO"
#endif
#define TR_MENUCURVES "KŘIVKY"
#define TR_MENUCURVE "\002K"
#define TR_MENULOGICALSWITCH "LOG. SPÍNAč"
@@ -706,8 +776,12 @@
#define TR_MENUTEMPLATES "ŠABLONY"
#define TR_MENUSTAT "STATISTIKA"
#define TR_MENUDEBUG "DIAG"
#define TR_RXNUM INDENT "Přijímač"
#define TR_SYNCMENU "Sync [MENU]"
#if defined(CPUARM)
#define TR_RXNUM TR(INDENT "RX číslo", INDENT "Číslo přijímače")
#else
#define TR_RXNUM "RX číslo"
#endif
#define TR_SYNCMENU "[Sync]"
#define TR_LIMIT INDENT"Limit"
#define TR_MINRSSI "Min Rssi"
#define TR_LATITUDE "Zem. šířka"
@@ -717,8 +791,9 @@
#define TR_PITCH_AT_ZERO INDENT "Tón na nule"
#define TR_PITCH_AT_MAX INDENT "Tón na maximu"
#define TR_REPEAT_AT_ZERO INDENT "Opakování na nule"
#define TR_SHUTDOWN "VYPÍNÁNí.."
#define TR_SAVEMODEL "Saving model settings"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "Vypínání.."
#define TR_SAVEMODEL "Ukládám nastavení modelu"
#define TR_BATT_CALIB "Kalib. baterie"
#define TR_CURRENT_CALIB " +=\006Proud"
#define TR_VOLTAGE INDENT"Napětí"
@@ -732,7 +807,7 @@
#define TR_RESTORE_MODEL "Obnov model z SD"
#define TR_SDCARD_ERROR "Chyba SD karty"
#define TR_NO_SDCARD "Není SD karta"
#define TR_SDCARD_FULL "SD Card Full"
#define TR_SDCARD_FULL "Plná SD karta"
#define TR_INCOMPATIBLE "Nekompatibilní"
#define TR_WARNING "KONTROLA"
#define TR_EEPROMWARN "EEPROM"
@@ -740,7 +815,7 @@
#define TR_THROTTLEWARN "PLYNU"
#define TR_ALARMSWARN "ALARMU"
#define TR_SWITCHWARN "POZICE"
#define TR_KEYSTUCK "Key stuck"
#define TR_KEYSTUCK "Zaseklá klávesa"
#define TR_INVERT_THR "Invertovat plyn?"
#define TR_SPEAKER_VOLUME INDENT "Hlasitost"
#define TR_LCD "LCD"
@@ -750,8 +825,8 @@
#define TR_CPU_MAH "Spotřeba"
#define TR_COPROC "CoProc."
#define TR_COPROC_TEMP "Tepl. MB \016>"
#define TR_CAPAWARNING INDENT "Kapacita"
#define TR_TEMPWARNING INDENT "Teplota"
#define TR_CAPAWARNING INDENT "Nízká kapacita"
#define TR_TEMPWARNING INDENT "Přehřátí"
#define TR_FUNC "Fce."
#define TR_V1 "V1"
#define TR_V2 "V2"
@@ -759,10 +834,10 @@
#define TR_DELAY "Zdržet"
#define TR_SD_CARD "SD"
#define TR_SDHC_CARD "SD-HC"
#define TR_NO_SOUNDS_ON_SD "žádný zvuk na SD"
#define TR_NO_MODELS_ON_SD "žádný model na SD"
#define TR_NO_BITMAPS_ON_SD "žádné obrázky na SD"
#define TR_NO_SCRIPTS_ON_SD "žádný skript na SD"
#define TR_NO_SOUNDS_ON_SD "žádný zvuk" BREAKSPACE "na SD"
#define TR_NO_MODELS_ON_SD "žádný model" BREAKSPACE "na SD"
#define TR_NO_BITMAPS_ON_SD "žádné obrázky" BREAKSPACE "na SD"
#define TR_NO_SCRIPTS_ON_SD "žádný skript" BREAKSPACE "na SD"
#define TR_PLAY_FILE "Přehrát"
#define TR_DELETE_FILE "Odstranit"
#define TR_COPY_FILE "Kopírovat"
@@ -783,7 +858,7 @@
#define TR_SD_SPEED "Rychlost:"
#define TR_SD_SECTORS "Sektorů :"
#define TR_SD_SIZE "Velikost:"
#define TR_TYPE TR_SD_TYPE
#define TR_TYPE INDENT TR_SD_TYPE
#define TR_GLOBAL_VARS "Globální proměnné"
#define TR_GLOBAL_V "GLOB.PROM."
#define TR_GLOBAL_VAR "Globální proměnná"
@@ -792,17 +867,19 @@
#define TR_DATE "Datum"
#define TR_ROTARY_ENCODER "R.Encs"
#define TR_CHANNELS_MONITOR "MONITOR KANÁLU"
#define TR_MIXERS_MONITOR "MIXERS MONITOR"
#define TR_MIXERS_MONITOR "MONITOR MIXU"
#define TR_PATH_TOO_LONG "Cesta je moc dlouhá"
#define TR_VIEW_TEXT "Zobrazit text"
#define TR_FLASH_BOOTLOADER "Flash BootLoader"
#define TR_WRITING "\032Writing..."
#define TR_CONFIRM_FORMAT "Confirm Format?"
#define TR_FLASH_BOOTLOADER "Flash BootLoaderu"
#define TR_FLASH_EXTERNAL_DEVICE "Flash externí krabičky"
#define TR_FLASH_INTERNAL_MODULE "Flash vnitřního modulu"
#define TR_WRITING "\032Zapisuji.."
#define TR_CONFIRM_FORMAT "Provést Formát?"
#define TR_INTERNALRF "Vnitřní RF modul"
#define TR_EXTERNALRF "Externí RF modul"
#define TR_FAILSAFE "Mód Failsafe"
#define TR_FAILSAFESET "NASTAVENÍ FAILSAFE"
#define TR_MENUSENSOR "SENSOR"
#define TR_MENUSENSOR "SENZOR"
#define TR_COUNTRYCODE "Kód regionu"
#define TR_VOICELANG "Jazyk hlasu"
#define TR_UNITSSYSTEM "Jednotky"
@@ -836,8 +913,11 @@
#define TR_MODELIDUSED TR("ID již použito","ID modelu je již použito")
#define TR_MODULE INDENT "Modul"
#define TR_TELEMETRY_TYPE TR("Typ", "Typ telemetrie")
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_TELEMETRY_SENSORS "Senzory"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "+ Přidat nový senzor.."
#define TR_CHANNELRANGE INDENT "Rozsah kanálů"
#define TR_LOWALARM INDENT "Nízký Alarm"
#define TR_CRITICALALARM INDENT "Kritický Alarm"
@@ -864,6 +944,8 @@
#define TR_INPUTS "Vstupy"
#define TR_OUTPUTS "Výstupy"
#define TR_EEBACKUP "\010[dlouze ENTER] zálohuje EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Příliš mnoho skriptů!"
#if defined(MAVLINK)
@@ -968,4 +1050,55 @@
#define TR_MODS_FORBIDDEN "Změny nejsou povoleny!"
#define TR_UNLOCKED "Odemčeno"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_PRECISION "Přesnost"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+53 -4
View File
@@ -375,7 +375,7 @@
#define LEN_VUNITSSYSTEM TR("\006", "\012")
#define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial\0 ")
#define LEN_VTELEMUNIT "\003"
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0"
#define TR_VTELEMUNIT "-\0 ""V\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
#else
#if defined(IMPERIAL_UNITS)
#define LENGTH_UNIT LENGTH_UNIT_IMP
@@ -465,7 +465,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "\313Sl""\313Sr""\313Hd""\313Hu""\313Gd""\313Gu""\313Ql""\313Qr"
#define TR_TRIMS_SWITCHES TR("tSl""tSr""tHd""tHu""tGd""tGu""tQl""tQr", "\313Sl""\313Sr""\313Hd""\313Hu""\313Gd""\313Gu""\313Ql""\313Qr")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "DGa\0"
@@ -481,7 +481,7 @@
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301"
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
@@ -530,6 +530,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#if defined(COLORLCD)
#define INDENT "\007"
@@ -669,6 +681,8 @@
#define TR_SWITCHWARNING TR("Sch. Alarm", INDENT "Schalter-Alarm")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Poti-Warnung")
#define TR_TIMEZONE TR("Zeitzone", "GPS-Zeitzone +/-Std")
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Kanalanordnung", "Kanalvoreinstellung")
#define TR_STICKS "Knüppel"
#define TR_POTS "Potis"
@@ -776,6 +790,7 @@
#define TR_PITCH_AT_ZERO INDENT "Niedrigster Ton"
#define TR_PITCH_AT_MAX INDENT "Höchster Ton"
#define TR_REPEAT_AT_ZERO INDENT "Wiederholrate"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "Herunterfahren"
#define TR_SAVEMODEL "Modelleinstellungen speichern"
#define TR_BATT_CALIB "Akku abgleichen"
@@ -898,6 +913,9 @@
#define TR_MODULE INDENT "Modul-Typ"
#define TR_TELEMETRY_TYPE TR("Typ", "Telemetrytyp")
#define TR_TELEMETRY_SENSORS "----Sensoren----"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Sensor hinzufügen ..."
#define TR_CHANNELRANGE TR(INDENT "Kanäle", INDENT "Ausgangs Kanäle") //wg 9XR-Pro
#define TR_LOWALARM INDENT "Vor-Alarm bei"
@@ -925,6 +943,8 @@
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\002[ENTER Long] Backup EEPROM->SD-Karte"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Zu viele Lua-Scripten!!"
#if defined(MAVLINK)
@@ -1030,11 +1050,40 @@
#define TR_UNLOCKED "Entsperrt"
#define TR_ID "ID"
#define TR_PRECISION "Prezision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_BATT "Batt"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
+58 -9
View File
@@ -375,7 +375,7 @@
#define LEN_VUNITSSYSTEM TR("\006", "\010")
#define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial")
#define LEN_VTELEMUNIT "\003"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
#else
#if defined(IMPERIAL_UNITS)
#define LENGTH_UNIT LENGTH_UNIT_IMP
@@ -465,7 +465,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -481,7 +481,7 @@
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301"
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
@@ -530,6 +530,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#if defined(COLORLCD)
#define INDENT "\007"
@@ -599,9 +611,9 @@
#define TR_CHECKTRIMS CENTER "\006Check\012Trims"
#define OFS_CHECKTRIMS CENTER_OFS+(9*FW)
#define TR_SWASHTYPE "Swash Type"
#define TR_COLLECTIVE TR("Collective", "Coll. pitch")
#define TR_AILERON "Lateral cyc."
#define TR_ELEVATOR "Long. cyc."
#define TR_COLLECTIVE TR("Collective", "Coll. pitch source")
#define TR_AILERON "Lateral cyc. source"
#define TR_ELEVATOR "Long. cyc. source"
#define TR_SWASHRING "Swash Ring"
#define TR_ELEDIRECTION "ELE Direction"
#define TR_AILDIRECTION "AIL Direction"
@@ -668,7 +680,9 @@
#define TR_THROTTLEWARNING TR(IF_CPUARM(INDENT) "T-Warning", INDENT "Throttle State")
#define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "S-Warning", INDENT "Switch Positions")
#define TR_POTWARNING TR(IF_CPUARM(INDENT) "Pot Warn.", INDENT "Pot Positions")
#define TR_TIMEZONE TR("Time Zone", "GPS Time zone")
#define TR_TIMEZONE TR("Time Zone", INDENT "Time zone")
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Rx Channel Ord", "Default channel order")
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
@@ -771,11 +785,12 @@
#define TR_MINRSSI "Min Rssi"
#define TR_LATITUDE "Latitude"
#define TR_LONGITUDE "Longitude"
#define TR_GPSCOORD TR("GPS Coords", "GPS coordinate format")
#define TR_GPSCOORD TR("GPS Coords", INDENT "Coordinate format")
#define TR_VARIO TR("Vario", "Variometer")
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "SHUTTING DOWN"
#define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "Battery Calib"
@@ -898,6 +913,9 @@
#define TR_MODULE INDENT "Module"
#define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type")
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_CHANNELRANGE TR(INDENT "Ch. Range", INDENT "Channel Range")
#define TR_LOWALARM INDENT "Low Alarm"
@@ -925,6 +943,8 @@
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#if defined(MAVLINK)
@@ -1030,11 +1050,40 @@
#define TR_UNLOCKED "Unlocked"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Curr. sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_BATT "Batt"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
+94 -10
View File
@@ -82,6 +82,9 @@
#define LEN_UART3MODES "\015"
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0"
@@ -443,7 +446,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -456,13 +459,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#endif
#if defined(HELI)
@@ -491,6 +504,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circulo ""Estabilizar ""Entrenamiento""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guiado ""Inicialisando""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#define INDENT "\001"
#define LEN_INDENT 1
@@ -549,8 +574,8 @@
#define OFS_CHECKTRIMS CENTER_OFS+(9*FW)
#define TR_SWASHTYPE "Tipo ciclico"
#define TR_COLLECTIVE TR("Colectivo", "Fuente Colectivo")
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_AILERON "Lateral cyc. source"
#define TR_ELEVATOR "Long. cyc. source"
#define TR_SWASHRING "Ciclico"
#define TR_ELEDIRECTION TR("ELE Direccion","Largo cyc. direccion")
#define TR_AILDIRECTION TR("AIL Direccion","Lateral cyc. direccion")
@@ -618,6 +643,8 @@
#define TR_SWITCHWARNING TR("Aviso-I", INDENT "Aviso Intrptor")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning")
#define TR_TIMEZONE TR("Zona Hora", "GPS Zona Hora")
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Rx Orden canal", "Orden habitual canales")
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
@@ -714,6 +741,7 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "APAGANDO"
#define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "Calib.bateria"
@@ -780,7 +808,7 @@
#define TR_SD_SPEED "Velocidad:"
#define TR_SD_SECTORS "Sectores:"
#define TR_SD_SIZE "Tamaño:"
#define TR_TYPE "Tipo"
#define TR_TYPE INDENT "Tipo"
#define TR_GLOBAL_VARS "Global Variables"
#define TR_GLOBAL_V "GLOBAL V."
#define TR_GLOBAL_VAR "Global Variable"
@@ -834,6 +862,9 @@
#define TR_MODULE INDENT "Modulo"
#define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type")
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_CHANNELRANGE INDENT "Gama de canales"
#define TR_LOWALARM INDENT "Alarma baja"
@@ -861,6 +892,8 @@
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#if defined(MAVLINK)
@@ -966,3 +999,54 @@
#define TR_UNLOCKED "Unlocked"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+96 -12
View File
@@ -1,4 +1,4 @@
/*
/*
* Authors (alphabetical order)
* - Bertrand Songis <bsongis@gmail.com>
* - Bernet Andre <bernet.andre@gmail.com>
@@ -82,6 +82,9 @@
#define LEN_UART3MODES "\015"
#define TR_UART3MODES "POIS\0 ""S-Port Pelik\0""Telemetry\0 ""SBUS Trainer\0""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "None\0 ""Pot with detent""Monias. Kytkin\0""Potikka\0"
@@ -443,7 +446,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313\313d""\313\313u""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -456,13 +459,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#endif
#if defined(HELI)
@@ -491,6 +504,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#define INDENT "\001"
#define LEN_INDENT 1
@@ -548,9 +573,9 @@
#define TR_CHECKTRIMS CENTER "\006Check\012Trims"
#define OFS_CHECKTRIMS CENTER_OFS+(9*FW)
#define TR_SWASHTYPE "Swash Type"
#define TR_COLLECTIVE TR("Collective","Collective source")
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_COLLECTIVE TR("Collective", "Coll. pitch source")
#define TR_AILERON "Lateral cyc. source"
#define TR_ELEVATOR "Long. cyc. source"
#define TR_SWASHRING "Swash Ring"
#define TR_ELEDIRECTION TR("ELE Direction","Long. cyc. direction")
#define TR_AILDIRECTION TR("AIL Direction","Lateral cyc. direction")
@@ -618,6 +643,8 @@
#define TR_SWITCHWARNING TR("S-Warning", INDENT "Switch Warning")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning")
#define TR_TIMEZONE TR("Time Zone","GPS Time zone")
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Rx Channel Ord","Default channel order")
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
@@ -714,6 +741,7 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "SHUTTING DOWN"
#define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "Battery Calib"
@@ -780,7 +808,7 @@
#define TR_SD_SPEED "Speed:"
#define TR_SD_SECTORS "Sectors:"
#define TR_SD_SIZE "Size:"
#define TR_TYPE "Type"
#define TR_TYPE INDENT "Type"
#define TR_GLOBAL_VARS "Global Variables"
#define TR_GLOBAL_V "GLOBAL V."
#define TR_GLOBAL_VAR "Global Variable"
@@ -834,6 +862,9 @@
#define TR_MODULE INDENT "Module"
#define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type")
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_CHANNELRANGE INDENT "Channel Range"
#define TR_LOWALARM INDENT "Low Alarm"
@@ -861,6 +892,8 @@
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#if defined(MAVLINK)
@@ -966,3 +999,54 @@
#define TR_UNLOCKED "Avattu"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+64 -19
View File
@@ -83,11 +83,7 @@
#define TR_UART3MODES "OFF\0 ""Recopie S-Port""Télémétrie\0 ""Ecolage SBUS\0 ""Debug\0"
#define LEN_SWTYPES "\006"
#if defined(REV9E)
#define TR_SWTYPES "Rien\0 ""Défaut""Levier""2-POS\0""3-POS\0"
#else
#define TR_SWTYPES "Défaut""Levier""2-POS\0""3-POS\0"
#endif
#define TR_SWTYPES "Rien\0 ""Levier""2-POS\0""3-POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "Rien\0 ""Pot avec centre""Inter multi-pos""Potentiomètre\0"
@@ -319,7 +315,7 @@
#define TR_FSW_RESET_ROTENC
#endif
#if LCD >= 212
#if LCD_W >= 212
#define TR_FSW_RESET_TIMERS "Chrono 1\0 ""Chrono 2\0 ""Chrono 3\0 "
#elif defined(CPUARM)
#define TR_FSW_RESET_TIMERS "Chr1""Chr2""Chr3"
@@ -379,7 +375,7 @@
#define LEN_VUNITSSYSTEM TR("\006", "\012")
#define TR_VUNITSSYSTEM TR("Métr.\0""Impér.", "Métriques\0""Impériales")
#define LEN_VTELEMUNIT "\003"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
#else
#if defined(IMPERIAL_UNITS)
#define LENGTH_UNIT LENGTH_UNIT_IMP
@@ -469,7 +465,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "\313Dg""\313Dd""\313Pb""\313Ph""\313Gb""\313Gh""\313Ag""\313Ad"
#define TR_TRIMS_SWITCHES TR("tDg""tDd""tPb""tPh""tGb""tGh""tAg""tAd", "\313Dg""\313Dd""\313Pb""\313Ph""\313Gb""\313Gh""\313Ag""\313Ad")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -485,7 +481,7 @@
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301"
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
@@ -534,6 +530,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Perso\0 ""Calculé\0 "
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Addition""Moyenne\0""Min\0 ""Max\0 ""Multipl.""Totalise""Elément\0""Consomm.""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Mini.\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Maxi.\0 ""Diff.\0 "
// ZERO TERMINATED STRINGS
#if defined(COLORLCD)
#define INDENT "\007"
@@ -603,9 +611,9 @@
#define TR_CHECKTRIMS "\006Vérif\012Trims"
#define OFS_CHECKTRIMS (9*FW)
#define TR_SWASHTYPE TR("Type de Plat.", "Type de plateau")
#define TR_COLLECTIVE TR("Collectif", "Voie du pas collectif")
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_COLLECTIVE TR("Collectif", "Source collectif")
#define TR_AILERON "Source cyc. lat."
#define TR_ELEVATOR "Source cyc. lon."
#define TR_SWASHRING TR("Limite Cycl.", "Limite du cyclique")
#define TR_ELEDIRECTION TR("Inv. longitud.", "Inversion longitudinal")
#define TR_AILDIRECTION TR("Inv. latéral", "Inversion latéral")
@@ -673,6 +681,8 @@
#define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "Alerte int", INDENT "Pos. interrupteurs")
#define TR_POTWARNING TR(IF_CPUARM(INDENT) "Alerte pot", INDENT "Pos. potentios")
#define TR_TIMEZONE "Fuseau horaire"
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("Ordre voies RX","Ordre des voies préféré")
#define TR_STICKS "Manches"
#define TR_POTS "Potentios"
@@ -772,8 +782,9 @@
#define TR_PITCH_AT_ZERO INDENT "Tonalité au zéro"
#define TR_PITCH_AT_MAX INDENT "Tonalité au max"
#define TR_REPEAT_AT_ZERO INDENT "Intervalle au zéro"
#define TR_POWEROFF "\037\120ARRET..."
#define TR_SHUTDOWN "ARRET EN COURS"
#define TR_SAVEMODEL "Saving model settings"
#define TR_SAVEMODEL "Sauvegarde modèle..."
#define TR_BATT_CALIB "Calib. Batterie"
#define TR_CURRENT_CALIB "Calib. Courant"
#define TR_VOLTAGE TR(INDENT "Tension",INDENT "Source Tension")
@@ -838,7 +849,7 @@
#define TR_SD_SPEED "Vitesse:"
#define TR_SD_SECTORS "Secteurs:"
#define TR_SD_SIZE "Taille:"
#define TR_TYPE "Type"
#define TR_TYPE INDENT "Type"
#define TR_GLOBAL_VARS "Variables Globales"
#define TR_GLOBAL_V "V. GLOBALES"
#define TR_GLOBAL_VAR "Variable globale"
@@ -851,15 +862,15 @@
#define TR_PATH_TOO_LONG "Chemin trop long"
#define TR_VIEW_TEXT "Voir texte"
#define TR_FLASH_BOOTLOADER "Flasher BootLoader"
#define TR_FLASH_EXTERNAL_DEVICE "Flash External Device"
#define TR_FLASH_INTERNAL_MODULE "Flash Module Interne"
#define TR_FLASH_EXTERNAL_DEVICE "Flasher module externe"
#define TR_FLASH_INTERNAL_MODULE "Flasher module interne"
#define TR_WRITING "\032Ecriture..."
#define TR_CONFIRM_FORMAT "Confirmer Formatage?"
#define TR_INTERNALRF "HF interne"
#define TR_EXTERNALRF "HF externe"
#define TR_FAILSAFE TR(INDENT "Failsafe", INDENT "Type failsafe")
#define TR_FAILSAFESET "REGLAGES FAILSAFE"
#define TR_MENUSENSOR "SENSOR"
#define TR_MENUSENSOR "CAPTEUR"
#define TR_COUNTRYCODE TR("Zone géo.","Zone géographique")
#define TR_VOICELANG TR("Langue voix", "Langue annonces vocales")
#define TR_UNITSSYSTEM "Unités"
@@ -894,6 +905,9 @@
#define TR_MODULE INDENT "Type de module"
#define TR_TELEMETRY_TYPE "Type télémesure"
#define TR_TELEMETRY_SENSORS "Capteurs"
#define TR_VALUE "Valeur"
#define TR_TOPLCDTIMER "Timer LCD haut"
#define TR_UNIT "Unité"
#define TR_TELEMETRY_NEWSENSOR INDENT "Ajout d'un nouveau capteur..."
#define TR_CHANNELRANGE TR(INDENT "Canaux", INDENT "Plage de canaux")
#define TR_LOWALARM INDENT "Alarme basse"
@@ -921,6 +935,8 @@
#define TR_INPUTS "Entrées"
#define TR_OUTPUTS "Sorties"
#define TR_EEBACKUP "\004[ENTER Long]: Sauvegarder l'EEPROM"
#define TR_FACTORYRESET "\016[MENU Long]: RAZ d'usine"
#define TR_CONFIRMRESET "Effacer TOUS modèles/réglages?"
#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#if defined(MAVLINK)
@@ -1025,12 +1041,41 @@
#define TR_MODS_FORBIDDEN "Modifications désactivées!"
#define TR_UNLOCKED "Déverrouillé"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_PRECISION "Précision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formule"
#define TR_CELLINDEX "Index élem."
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Capteur Alt"
#define TR_CELLSENSOR "Capteur Elém"
#define TR_GPSSENSOR "Capteur GPS"
#define TR_CURRENTSENSOR "Capt courant"
#define TR_AUTOOFFSET "Offset auto"
#define TR_FILTER "Filtrage"
#define TR_TELEMETRYFULL "Plus de capteurs libres!"
#define TR_MENU_INPUTS "\314Entrées"
#define TR_MENU_LUA "\322Scripts Lua"
#define TR_MENU_STICKS "\307Manches"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclique"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Inters"
#define TR_MENU_TRAINER "\317Ecolage"
#define TR_MENU_CHANNELS "\320Canaux"
#define TR_MENU_GVARS "\311Vars. glob."
#define TR_MENU_TELEMETRY "\321Télémesure"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_BATT "Batt"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "BtRx"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
+99 -15
View File
@@ -82,6 +82,9 @@
#define LEN_UART3MODES "\016"
#define TR_UART3MODES "OFF\0 ""Replica S-Port""Telemetria\0 ""SBUS Trainer\0 ""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "None\0 ""Pot. con centro""Inter. Multipos""Potenziometro\0 "
@@ -443,7 +446,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313\313d""\313\313u""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -456,13 +459,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#endif
#if defined(HELI)
@@ -491,6 +504,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Inizializza ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#define INDENT "\001"
#define LEN_INDENT 1
@@ -532,11 +557,11 @@
#define TR_ELIMITS TR("Limiti.E","Limiti Estesi")
#define TR_ETRIMS TR("Trim Ext","Trim Estesi")
#define TR_TRIMINC "Passo Trim"
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_TTRACE TR("T-Source", INDENT "Sorgente Motore")
#define TR_TTRIM TR("T-Trim", INDENT "Trim Motore")
#define TR_BEEPCTR TR("Ctr Beep","Beep al centro")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_PROTO TR(INDENT "Proto", INDENT "Protocollo")
#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame")
#define TR_MS "ms"
@@ -549,8 +574,8 @@
#define OFS_CHECKTRIMS (9*FW)
#define TR_SWASHTYPE "Tipo Ciclico"
#define TR_COLLECTIVE TR("Collettivo","Origine Collettivo")
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_AILERON "Lateral cyc. source"
#define TR_ELEVATOR "Long. cyc. source"
#define TR_SWASHRING "Anello Ciclico"
#define TR_ELEDIRECTION TR("Direzione ELE","Direzione Long. cyc.")
#define TR_AILDIRECTION TR("Direzione AIL","Direzione Lateral cyc.")
@@ -618,10 +643,12 @@
#define TR_SWITCHWARNING TR("Avv. Int.", INDENT "Avviso Interr.")
#define TR_POTWARNING TR("Avv. Pot.", INDENT "Avviso Pot.")
#define TR_TIMEZONE "Ora locale"
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD "Ordine ch RX"
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
#define TR_SWITCHES "Switches"
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
#define TR_SWITCHES "Switches"
#define TR_SWITCHES_DELAY "Ritardo voce FV"
#define TR_SLAVE "Allievo"
#define TR_MODESRC "Modo\006% Origine"
@@ -714,6 +741,7 @@
#define TR_PITCH_AT_ZERO INDENT "Tono a Zero"
#define TR_PITCH_AT_MAX INDENT "Tono al Max"
#define TR_REPEAT_AT_ZERO INDENT "Ripeti a Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "ARRESTO.."
#define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "Calibra batt."
@@ -780,7 +808,7 @@
#define TR_SD_SPEED "Veloc.:"
#define TR_SD_SECTORS "Settori:"
#define TR_SD_SIZE "Dimens:"
#define TR_TYPE "Tipo"
#define TR_TYPE INDENT "Tipo"
#define TR_GLOBAL_VARS "Variabili Globali"
#define TR_GLOBAL_V "V.GLOBALI"
#define TR_GLOBAL_VAR "Variabile globale"
@@ -834,6 +862,9 @@
#define TR_MODULE INDENT "Modulo"
#define TR_TELEMETRY_TYPE "Tipo Telemetria"
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_CHANNELRANGE INDENT "Numero Canali"
#define TR_LOWALARM INDENT "Allarme Basso"
@@ -861,6 +892,8 @@
#define TR_INPUTS "Ingresso"
#define TR_OUTPUTS "Uscita"
#define TR_EEBACKUP "\004[ENTER Lungo] per copiare la EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Troppi Scripts Lua!"
#if defined(MAVLINK)
@@ -966,3 +999,54 @@
#define TR_UNLOCKED "Sbloccato"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+80 -18
View File
@@ -82,6 +82,9 @@
#define LEN_UART3MODES "\017"
#define TR_UART3MODES "Wyłącz\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "Brak\0 ""Poten z zapadką""Przeł.Wielopoz.""Potencjometr\0"
@@ -362,7 +365,7 @@
#define LEN_VUNITSSYSTEM TR("\006", "\010")
#define TR_VUNITSSYSTEM TR("Metr. ""Imper.", "Metryczn""Imperial")
#define LEN_VTELEMUNIT "\003"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0"
#define TR_VTELEMUNIT "-\0 ""v\0 ""A\0 ""mA\0""kts""m/s""kmh""mph""m\0 ""ft\0""@C\0""@F\0""%\0 ""mAh""W\0 ""dBm""rpm""g\0 ""@\0 ""ml\0""fOz"
#else
#if defined(IMPERIAL_UNITS)
#define LENGTH_UNIT LENGTH_UNIT_IMP
@@ -441,7 +444,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -454,13 +457,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "GAZ""SK ""SW ""LOT""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "GAZ""SK ""SW ""LOT""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#endif
#if defined(HELI)
@@ -489,6 +502,18 @@
#define TR_MAVLINK_AP_MODES "Ręczny ""Koło ""Stabilizacja ""Trening ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Sterowany ""Inicjalizacja""BŁĘDNY "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#define INDENT "\001"
#define LEN_INDENT 1
@@ -547,8 +572,8 @@
#define OFS_CHECKTRIMS CENTER_OFS+(9*FW)
#define TR_SWASHTYPE "Typ tarczy"
#define TR_COLLECTIVE TR("Kolektyw", "Źródło Kolektywu")
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_AILERON "Lateral cyc. source"
#define TR_ELEVATOR "Long. cyc. source"
#define TR_SWASHRING "Tarcza "
#define TR_ELEDIRECTION TR("Ster Wysokośc","Dług. Kierunku cyklu")
#define TR_AILDIRECTION TR("Kierunek Lotk","Lateral cyc. direction")
@@ -616,6 +641,8 @@
#define TR_SWITCHWARNING TR(IF_CPUARM(INDENT) "OstrzPrzeł", INDENT "PozycjaPrzeł")
#define TR_POTWARNING TR(IF_CPUARM(INDENT) "Ostrz.Poten.", INDENT "PozycjaPotencj.")
#define TR_TIMEZONE TR("Strefa czasowa" ,"Strefa czasowa GPS")
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD TR("KolejnKan.RX", "Bazowa kolejność kanałów")
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
@@ -712,6 +739,7 @@
#define TR_PITCH_AT_ZERO INDENT "Ton przy Zerze"
#define TR_PITCH_AT_MAX INDENT "Ton przy Max"
#define TR_REPEAT_AT_ZERO INDENT "Powtórz przy Zerze"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "Wyłączanie.."
#define TR_SAVEMODEL "Zapisz ustwienia modelu"
#define TR_BATT_CALIB "Kalib:Baterii"
@@ -778,7 +806,7 @@
#define TR_SD_SPEED "Prędkość:"
#define TR_SD_SECTORS "Sektory :"
#define TR_SD_SIZE "Wielkość:"
#define TR_TYPE TR_SD_TYPE
#define TR_TYPE INDENT TR_SD_TYPE
#define TR_GLOBAL_VARS "Zmienne Globalne"
#define TR_GLOBAL_V "Zmien.Glob."
#define TR_GLOBAL_VAR "Zmienna Globalna"
@@ -832,6 +860,9 @@
#define TR_MODULE INDENT "Moduł"
#define TR_TELEMETRY_TYPE "Typ Telemetri"
#define TR_TELEMETRY_SENSORS "Czujniki"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Dodaj nowy czujnik..."
#define TR_CHANNELRANGE TR(INDENT "ZakrKn",INDENT "Zakres kanału")
#define TR_LOWALARM INDENT "Alarm niski"
@@ -859,6 +890,8 @@
#define TR_INPUTS "Wejścia"
#define TR_OUTPUTS "Wyjścia"
#define TR_EEBACKUP "\004[ENTER Długo] Backupowanie EEPROMu"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Za dużo skryptów Lua!"
#if defined(MAVLINK)
@@ -964,25 +997,54 @@
#define TR_UNLOCKED "Odblokowane"
#define TR_ID "ID"
#define TR_PRECISION "Precyzja "
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_BATT "Bat."
#define ZSTR_ALT "Wysok."
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Paliwo"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Natęż"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Kurs"
#define ZSTR_CELLS "Cele"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Data"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+100 -16
View File
@@ -82,6 +82,9 @@
#define LEN_UART3MODES "\017"
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\017"
#define TR_POTTYPES "None\0 ""Pot with detent""Multipos Switch""Pot\0"
@@ -443,7 +446,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313\313d""\313\313u""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -456,13 +459,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#endif
#if defined(HELI)
@@ -491,6 +504,18 @@
#define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#define INDENT "\001"
#define LEN_INDENT 1
@@ -532,11 +557,11 @@
#define TR_ELIMITS "E.Limits"
#define TR_ETRIMS "E.Trims"
#define TR_TRIMINC "Trim Step"
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_TTRACE TR("T-Trace", INDENT "T-Trace")
#define TR_TTRIM TR("T-Trim", INDENT "T-Trim")
#define TR_BEEPCTR "Ctr Beep"
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_PROTO INDENT"Proto"
#define TR_PPMFRAME "PPM frame"
#define TR_MS "ms"
@@ -548,9 +573,9 @@
#define TR_CHECKTRIMS "\006Check\012Trims"
#define OFS_CHECKTRIMS (9*FW)
#define TR_SWASHTYPE "Ciclico Tipo"
#define TR_COLLECTIVE "Coletivo"
#define TR_AILERON "Aileron Source"
#define TR_ELEVATOR "Elevator Source"
#define TR_COLLECTIVE "Coletivo"
#define TR_AILERON "Lateral cyc. source"
#define TR_ELEVATOR "Long. cyc. source"
#define TR_SWASHRING "Anel Coletivo"
#define TR_ELEDIRECTION "PFD Sentido"
#define TR_AILDIRECTION "AIL Sentido"
@@ -618,10 +643,12 @@
#define TR_SWITCHWARNING TR("Avisa Chav", INDENT "Avisa Chav")
#define TR_POTWARNING TR("Pot Warn.", INDENT "Pot Warning")
#define TR_TIMEZONE "Time Zone"
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD "Ordem Canal RX"
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
#define TR_SWITCHES "Switches"
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
#define TR_SWITCHES "Switches"
#define TR_SWITCHES_DELAY "Switches Delay"
#define TR_SLAVE "Escravo"
#define TR_MODESRC "Modo\006% Fonte"
@@ -714,6 +741,7 @@
#define TR_PITCH_AT_ZERO INDENT "Pitch at Zero"
#define TR_PITCH_AT_MAX INDENT "Pitch at Max"
#define TR_REPEAT_AT_ZERO INDENT "Repeat at Zero"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "DESLIGANDOo"
#define TR_SAVEMODEL "Saving model settings"
#define TR_BATT_CALIB "CALIBRAR BATT"
@@ -780,7 +808,7 @@
#define TR_SD_SPEED "Velocidade"
#define TR_SD_SECTORS "Sectores"
#define TR_SD_SIZE "Tamanho"
#define TR_TYPE "Tipe"
#define TR_TYPE INDENT "Tipe"
#define TR_GLOBAL_VARS "Variaveis"
#define TR_GLOBAL_V "GLOBAL V."
#define TR_GLOBAL_VAR "Global Variable"
@@ -834,6 +862,9 @@
#define TR_MODULE INDENT "Module"
#define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type")
#define TR_TELEMETRY_SENSORS "Sensors"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Add a new sensor..."
#define TR_CHANNELRANGE INDENT "Channel Range"
#define TR_LOWALARM INDENT "Low Alarm"
@@ -861,6 +892,8 @@
#define TR_INPUTS "Inputs"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\004[ENTER Long] to backup the EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "Too many Lua scripts!"
#if defined(MAVLINK)
@@ -966,3 +999,54 @@
#define TR_UNLOCKED "Unlocked"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+97 -13
View File
@@ -82,6 +82,9 @@
#define LEN_UART3MODES "\022"
#define TR_UART3MODES "Av\0 ""Spegling av S-Port""Telemetri\0 ""SBUS Trainer\0 ""Debug\0"
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
#define LEN_POTTYPES "\020"
#define TR_POTTYPES "Ingen\0 ""Mittläges-pot\0 ""Flerlägesväljare""Potentiometer\0"
@@ -443,7 +446,7 @@
#define TR_LOGICALSW "L1\0""L2\0""L3\0""L4\0""L5\0""L6\0""L7\0""L8\0""L9\0""L10""L11""L12"
#endif
#define TR_TRIMS_SWITCHES "tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr"
#define TR_TRIMS_SWITCHES TR("tRl""tRr""tEd""tEu""tTd""tTu""tAl""tAr", "\313Rl""\313Rr""\313Ed""\313Eu""\313Td""\313Tu""\313Al""\313Ar")
#if defined(PCBSKY9X)
#define TR_ROTARY_ENCODERS "REa\0"
@@ -456,13 +459,23 @@
#define TR_ROTENC_SWITCHES
#endif
#if defined(PCBTARANIS)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#define TR_VSWITCHES "---""SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "PÅ\0""En\0"
#elif defined(CPUARM)
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "PÅ\0""En\0"
#if defined(PCBTARANIS) && defined(REV9E)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301""SI\300""SI-""SI\301""SJ\300""SJ-""SJ\301""SK\300""SK-""SK\301""SL\300""SL-""SL\301""SM\300""SM-""SM\301""SN\300""SN-""SN\301""SO\300""SO-""SO\301""SP\300""SP-""SP\301""SQ\300""SQ-""SQ\301""SR\300""SR-""SR\301"
#elif defined(PCBTARANIS)
#define TR_PHYS_SWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH-""SH\301"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "PÅ\0""En\0"
#define TR_PHYS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN"
#endif
#if defined(PCBTARANIS)
#if defined(REV9E)
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36""S41""S42""S43""S44""S45""S46"
#else
#define TR_6POS_POTS "S11""S12""S13""S14""S15""S16""S21""S22""S23""S24""S25""S26""S31""S32""S33""S34""S35""S36"
#endif
#define TR_VSWITCHES "---" TR_PHYS_SWITCHES TR_6POS_POTS TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#else
#define TR_VSWITCHES "---" TR_9X_3POS_SWITCHES TR_PHYS_SWITCHES TR_TRIMS_SWITCHES TR_ROTENC_SWITCHES TR_LOGICALSW "ON\0""One"
#endif
#if defined(HELI)
@@ -491,6 +504,18 @@
#define TR_MAVLINK_AP_MODES "Manuell ""Cirkla ""Stabilisera ""Övning ""Fly by Wire A""Fly by Wire A""Automatisk ""Flyg Hem ""Hovra ""Guidad ""Initialiserar""OGILTIG "
#endif
#define LEN_VSENSORTYPES "\012"
#define TR_VSENSORTYPES "Custom\0 ""Calculated"
#define LEN_VFORMULAS "\010"
#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Totalize""Cell\0 ""Consumpt""Distance"
#define LEN_VPREC "\005"
#define TR_VPREC "PREC0""PREC1""PREC2"
#define LEN_VCELLINDEX "\007"
#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0"
// ZERO TERMINATED STRINGS
#define INDENT "\001"
#define LEN_INDENT 1
@@ -532,11 +557,11 @@
#define TR_ELIMITS TR("Gränser++","Utökade Gränser")
#define TR_ETRIMS TR("Trimmar++","Utökade Trimmar")
#define TR_TRIMINC TR("Trimning","Trimökning")
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_DISPLAY_TRIMS "Display Trims"
#define TR_TTRACE TR("Följ Gas", INDENT "Följ Gas")
#define TR_TTRIM TR("Gastrim", INDENT "Gastrim")
#define TR_BEEPCTR TR("Cent.pip", "Centerpip")
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_USE_GLOBAL_FUNCS "Use Global Funcs"
#define TR_PROTO TR(INDENT "Proto", INDENT "Protokoll")
#define TR_PPMFRAME TR(INDENT "PPM-paket", INDENT "PPM-paket")
#define TR_MS "ms"
@@ -618,10 +643,12 @@
#define TR_SWITCHWARNING TR("Bryt.varn.", INDENT "Brytarvarning")
#define TR_POTWARNING TR("Rattvarn.", INDENT "Rattvarning")
#define TR_TIMEZONE TR("Tidszon", "GPS Tidszon")
#define TR_ADJUST_RTC INDENT "Adjust RTC"
#define TR_GPS "GPS"
#define TR_RXCHANNELORD "Kanaler i RX"
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
#define TR_SWITCHES "Switches"
#define TR_STICKS "Sticks"
#define TR_POTS "Pots"
#define TR_SWITCHES "Switches"
#define TR_SWITCHES_DELAY "Brytarfördröjning"
#define TR_SLAVE "Elev"
#define TR_MODESRC " Läge\004% Källa"
@@ -714,6 +741,7 @@
#define TR_PITCH_AT_ZERO INDENT "Ton vid Noll"
#define TR_PITCH_AT_MAX INDENT "Ton vid Max"
#define TR_REPEAT_AT_ZERO INDENT "Repetera vid Noll"
#define TR_POWEROFF "\027Power OFF..."
#define TR_SHUTDOWN "STÄNGER AV"
#define TR_SAVEMODEL "Spara modellinställn."
#define TR_BATT_CALIB "Kalib. Batteri"
@@ -780,7 +808,7 @@
#define TR_SD_SPEED "Hastighet:"
#define TR_SD_SECTORS "Sektorer:"
#define TR_SD_SIZE "Strl:"
#define TR_TYPE "Typ "
#define TR_TYPE INDENT "Typ "
#define TR_GLOBAL_VARS "Globala Variabler"
#define TR_GLOBAL_V "GLOBAL V."
#define TR_GLOBAL_VAR "Global Variabel"
@@ -834,6 +862,9 @@
#define TR_MODULE INDENT "Modul"
#define TR_TELEMETRY_TYPE "Telemetrityp"
#define TR_TELEMETRY_SENSORS "Sensorer"
#define TR_VALUE "Value"
#define TR_TOPLCDTIMER "Top LCD Timer"
#define TR_UNIT "Unit"
#define TR_TELEMETRY_NEWSENSOR INDENT "Lägg till sensor..."
#define TR_CHANNELRANGE INDENT "Kanalområde"
#define TR_LOWALARM INDENT "Låg-alarm"
@@ -861,6 +892,8 @@
#define TR_INPUTS "Input"
#define TR_OUTPUTS "Outputs"
#define TR_EEBACKUP "\004[ENTER Lång] säkerhetskopiera EEPROM"
#define TR_FACTORYRESET "\012[MENU Long]: Factory reset"
#define TR_CONFIRMRESET "Erase ALL models and settings?"
#define TR_TO_MANY_LUA_SCRIPTS "För många Lua-scripts!"
#if defined(MAVLINK)
@@ -966,3 +999,54 @@
#define TR_UNLOCKED "Olåst"
#define TR_ID "ID"
#define TR_PRECISION "Precision"
#define TR_RATIO "Ratio"
#define TR_FORMULA "Formula"
#define TR_CELLINDEX "Cell index"
#define TR_LOGS "Logs"
#define TR_OPTIONS "Options"
#define TR_ALTSENSOR "Alt sensor"
#define TR_CELLSENSOR "Cell sensor"
#define TR_GPSSENSOR "GPS sensor"
#define TR_CURRENTSENSOR "Current sensor"
#define TR_AUTOOFFSET "Auto Offset"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
#define TR_MENU_STICKS "\307Sticks"
#define TR_MENU_POTS "\310Pots"
#define TR_MENU_MAX "\315MAX"
#define TR_MENU_HELI "\316Cyclic"
#define TR_MENU_TRIMS "\313Trims"
#define TR_MENU_SWITCHES "\312Switches"
#define TR_MENU_TRAINER "\317Trainer"
#define TR_MENU_CHANNELS "\320Channels"
#define TR_MENU_GVARS "\311GVars"
#define TR_MENU_TELEMETRY "\321Telemetry"
#define ZSTR_RSSI "RSSI"
#define ZSTR_SWR "SWR"
#define ZSTR_A1 "A1"
#define ZSTR_A2 "A2"
#define ZSTR_A3 "A3"
#define ZSTR_A4 "A4"
#define ZSTR_BATT "RxBt"
#define ZSTR_ALT "Alt"
#define ZSTR_TEMP "Temp"
#define ZSTR_RPM "RPM"
#define ZSTR_FUEL "Fuel"
#define ZSTR_VSPD "VSpd"
#define ZSTR_ACCX "AccX"
#define ZSTR_ACCY "AccY"
#define ZSTR_ACCZ "AccZ"
#define ZSTR_CURR "Curr"
#define ZSTR_VFAS "VFAS"
#define ZSTR_ASPD "ASpd"
#define ZSTR_GSPD "GSpd"
#define ZSTR_HDG "Hdg"
#define ZSTR_CELLS "Cels"
#define ZSTR_GPSALT "GAlt"
#define ZSTR_GPSDATETIME "Date"
#define ZSTR_GPS "GPS"
+4
View File
@@ -56,6 +56,10 @@ enum CzechPrompts {
CZ_PROMPT_SECONDS = CZ_PROMPT_UNITS_BASE+(UNIT_SECONDS*4),
CZ_PROMPT_RPMS = CZ_PROMPT_UNITS_BASE+(UNIT_RPMS*4),
CZ_PROMPT_G = CZ_PROMPT_UNITS_BASE+(UNIT_G*4),
#if defined(CPUARM)
CZ_PROMPT_MILLILITERS = CZ_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*4),
CZ_PROMPT_FLOZ = CZ_PROMPT_UNITS_BASE+(UNIT_FLOZ*4),
#endif
};
+5 -1
View File
@@ -56,7 +56,11 @@ enum GermanPrompts {
DE_PROMPT_MINUTES = DE_PROMPT_UNITS_BASE+UNIT_MINUTES,
DE_PROMPT_SECONDS = DE_PROMPT_UNITS_BASE+UNIT_SECONDS,
DE_PROMPT_RPMS = DE_PROMPT_UNITS_BASE+UNIT_RPMS,
DE_PROMPT_G= DE_PROMPT_UNITS_BASE+UNIT_G,
DE_PROMPT_G = DE_PROMPT_UNITS_BASE+UNIT_G,
#if defined(CPUARM)
DE_PROMPT_MILLILITERS = DE_PROMPT_UNITS_BASE+UNIT_MILLILITERS,
DE_PROMPT_FLOZ = DE_PROMPT_UNITS_BASE+UNIT_FLOZ,
#endif
};
+4
View File
@@ -65,6 +65,10 @@ enum EnglishPrompts {
EN_PROMPT_SECONDS = EN_PROMPT_UNITS_BASE+(UNIT_SECONDS*2),
EN_PROMPT_RPMS = EN_PROMPT_UNITS_BASE+(UNIT_RPMS*2),
EN_PROMPT_G = EN_PROMPT_UNITS_BASE+(UNIT_G*2),
#if defined(CPUARM)
EN_PROMPT_MILLILITERS = EN_PROMPT_UNITS_BASE+(UNIT_MILLILITERS*2),
EN_PROMPT_FLOZ = EN_PROMPT_UNITS_BASE+(UNIT_FLOZ*2),
#endif
EN_PROMPT_POINT_BASE = 160, //.0 - .9
+5 -1
View File
@@ -80,7 +80,11 @@ enum SpanishPrompts {
ES_PROMPT_MINUTES = ES_PROMPT_UNITS_BASE+UNIT_MINUTES,
ES_PROMPT_SECONDS = ES_PROMPT_UNITS_BASE+UNIT_SECONDS,
ES_PROMPT_RPMS = ES_PROMPT_UNITS_BASE+UNIT_RPMS,
ES_PROMPT_G= ES_PROMPT_UNITS_BASE+UNIT_G,
ES_PROMPT_G = ES_PROMPT_UNITS_BASE+UNIT_G,
#if defined(CPUARM)
ES_PROMPT_MILLILITERS = ES_PROMPT_UNITS_BASE+UNIT_MILLILITERS,
ES_PROMPT_FLOZ = ES_PROMPT_UNITS_BASE+UNIT_FLOZ,
#endif
};
+6
View File
@@ -62,6 +62,12 @@ enum FrenchPrompts {
FR_PROMPT_HEURE = FR_PROMPT_UNITS_BASE+UNIT_HOURS,
FR_PROMPT_MINUTE = FR_PROMPT_UNITS_BASE+UNIT_MINUTES,
FR_PROMPT_SECONDE = FR_PROMPT_UNITS_BASE+UNIT_SECONDS,
FR_PROMPT_RPMS = FR_PROMPT_UNITS_BASE+UNIT_RPMS,
FR_PROMPT_G = FR_PROMPT_UNITS_BASE+UNIT_G,
#if defined(CPUARM)
FR_PROMPT_MILLILITERS = FR_PROMPT_UNITS_BASE+UNIT_MILLILITERS,
FR_PROMPT_FLOZ = FR_PROMPT_UNITS_BASE+UNIT_FLOZ,
#endif
FR_PROMPT_VIRGULE_BASE = 180, //,0 - ,9
};

Some files were not shown because too many files have changed in this diff Show More