diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index 0684fafd4..1c65c9c5d 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -1095,7 +1095,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;
@@ -1246,7 +1247,6 @@ enum Capability {
NoTelemetryProtocol,
TelemetryCustomScreens,
TelemetryCustomScreensFieldsPerLine,
- TelemetryTimeshift,
TelemetryMaxMultiplier,
HasVario,
HasVarioSink,
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index e319a9730..a0531d166 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -3157,7 +3157,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) {
diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp
index dae14d582..a80796e31 100644
--- a/companion/src/firmwares/opentx/opentxinterface.cpp
+++ b/companion/src/firmwares/opentx/opentxinterface.cpp
@@ -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:
diff --git a/companion/src/generaledit/generalsetup.cpp b/companion/src/generaledit/generalsetup.cpp
index 9fcf2e1c0..ddd982e1a 100644
--- a/companion/src/generaledit/generalsetup.cpp
+++ b/companion/src/generaledit/generalsetup.cpp
@@ -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();
diff --git a/companion/src/generaledit/generalsetup.h b/companion/src/generaledit/generalsetup.h
index 3b72b475d..f884d0062 100644
--- a/companion/src/generaledit/generalsetup.h
+++ b/companion/src/generaledit/generalsetup.h
@@ -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);
diff --git a/companion/src/generaledit/generalsetup.ui b/companion/src/generaledit/generalsetup.ui
index cd269787a..156464e5c 100644
--- a/companion/src/generaledit/generalsetup.ui
+++ b/companion/src/generaledit/generalsetup.ui
@@ -6,101 +6,29 @@
0
0
- 689
- 606
+ 758
+ 635
Form
- -
+
-
GPS Coordinates
- -
-
-
- Speaker Pitch (spkr only)
-
-
-
- -
-
-
- -
+
-
Measurement Units
- -
-
-
-
-
- hh° (N/S) mm' ss''.dd
-
-
- -
-
- NMEA
-
-
-
-
-
-
-
- -14
-
-
- 12
-
-
- 0
-
-
-
- -
-
-
- Voice Language
-
-
-
- -
-
-
- Timeshift from UTC
-
-
-
- -
-
-
-
-
- Metric
-
-
- -
-
- Imperial
-
-
-
-
- -
-
-
- Country Code
-
-
-
- -
-
@@ -119,6 +47,144 @@
+ -
+
+
+ FAI Mode
+
+
+
+ -
+
+
+ Country Code
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Show splash screen on startup
+
+
+ Show splash screen on startup
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
-
+
+ ---
+
+
+ -
+
+ 2s
+
+
+ -
+
+ 3s
+
+
+ -
+
+ 4s
+
+
+ -
+
+ 6s
+
+
+ -
+
+ 8s
+
+
+ -
+
+ 10s
+
+
+ -
+
+ 15s
+
+
+
+
+
+
+ -
+
+
-
+
+ hh° (N/S) mm' ss''.dd
+
+
+ -
+
+ NMEA
+
+
+
+
+ -
+
+
-
+
+ Metric
+
+
+ -
+
+ Imperial
+
+
+
+
+ -
+
+
+ Speaker Pitch (spkr only)
+
+
+
+ -
+
+
+ -
+
+
+ Voice Language
+
+
+
-
@@ -195,6 +261,41 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html>
+
+
+
+
+
+ true
+
+
+
-
@@ -247,7 +348,7 @@
- -
+
-
Qt::Vertical
@@ -1278,41 +1379,6 @@ Acceptable values are 5v..10v
- -
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html>
-
-
-
-
-
- true
-
-
-
-
@@ -1404,85 +1470,6 @@ p, li { white-space: pre-wrap; }
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
- Show splash screen on startup
-
-
- Show splash screen on startup
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
- ---
-
-
- -
-
- 2s
-
-
- -
-
- 3s
-
-
- -
-
- 4s
-
-
- -
-
- 6s
-
-
- -
-
- 8s
-
-
- -
-
- 10s
-
-
- -
-
- 15s
-
-
-
-
-
-
-
@@ -1607,19 +1594,6 @@ p, li { white-space: pre-wrap; }
- -
-
-
-
- 0
- 0
-
-
-
- Stick reverse (order as above)
-
-
-
-
@@ -1633,13 +1607,6 @@ p, li { white-space: pre-wrap; }
- -
-
-
- FAI Mode
-
-
-
-
@@ -1694,38 +1661,6 @@ Mode 4:
- -
-
-
-
-
-
- 1
-
-
-
- -
-
-
- 2
-
-
-
- -
-
-
- 3
-
-
-
- -
-
-
- 4
-
-
-
-
-
-
@@ -1862,17 +1797,7 @@ Mode 4:
- -
-
-
- If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio.
-
-
-
-
-
-
- -
+
-
@@ -1885,7 +1810,7 @@ Mode 4:
- -
+
-
@@ -1932,6 +1857,98 @@ p, li { white-space: pre-wrap; }
+ -
+
+
+ Timeshift from UTC
+
+
+
+ -
+
+
-
+
+
+ 1
+
+
+
+ -
+
+
+ 2
+
+
+
+ -
+
+
+ 3
+
+
+
+ -
+
+
+ 4
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Stick reverse
+
+
+
+ -
+
+
-
+
+
+ -14
+
+
+ 12
+
+
+ 0
+
+
+
+ -
+
+
+ If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio.
+
+
+ Qt::RightToLeft
+
+
+ Adjust RTC
+
+
+
+
+
+ -
+
+
+ If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio.
+
+
+
+
+
+
diff --git a/radio/src/gui/Taranis/menu_general_setup.cpp b/radio/src/gui/Taranis/menu_general_setup.cpp
index 791ce551e..e94242c29 100755
--- a/radio/src/gui/Taranis/menu_general_setup.cpp
+++ b/radio/src/gui/Taranis/menu_general_setup.cpp
@@ -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;
diff --git a/radio/src/main_arm.cpp b/radio/src/main_arm.cpp
index 09c7b209f..747160ab3 100644
--- a/radio/src/main_arm.cpp
+++ b/radio/src/main_arm.cpp
@@ -203,4 +203,8 @@ void perMain()
topLcdRefreshEnd();
#endif
+#if defined(REV9E) && !defined(SIMU)
+ bt_wakeup();
+#endif
+
}
diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h
index 17cd274b1..1aaaad001 100644
--- a/radio/src/myeeprom.h
+++ b/radio/src/myeeprom.h
@@ -751,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 */
diff --git a/radio/src/targets/sky9x/rtc_driver.cpp b/radio/src/targets/sky9x/rtc_driver.cpp
index e39e6e0fa..ddd0ea50d 100644
--- a/radio/src/targets/sky9x/rtc_driver.cpp
+++ b/radio/src/targets/sky9x/rtc_driver.cpp
@@ -34,7 +34,7 @@
*
*/
-#include "../opentx.h"
+#include "../../opentx.h"
#if defined(REVX)
// TODO change this, not the right place
diff --git a/radio/src/targets/taranis/bluetooth_driver.cpp b/radio/src/targets/taranis/bluetooth_driver.cpp
index 55f106fec..819c1c153 100755
--- a/radio/src/targets/taranis/bluetooth_driver.cpp
+++ b/radio/src/targets/taranis/bluetooth_driver.cpp
@@ -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 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;
+ }
}
}
}
diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp
index d11201940..cbc68b997 100644
--- a/radio/src/telemetry/telemetry.cpp
+++ b/radio/src/telemetry/telemetry.cpp
@@ -52,13 +52,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;
diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp
index 2a4f51c29..8414e8863 100644
--- a/radio/src/translations.cpp
+++ b/radio/src/translations.cpp
@@ -252,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;
diff --git a/radio/src/translations.h b/radio/src/translations.h
index 8d9bd4b64..74eb7f43d 100644
--- a/radio/src/translations.h
+++ b/radio/src/translations.h
@@ -435,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[];
diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt
index 0e2043901..f8a31e100 100644
--- a/radio/src/translations/cz.h.txt
+++ b/radio/src/translations/cz.h.txt
@@ -682,6 +682,8 @@
#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"
diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt
index 7c8d3ecc4..6ea81624b 100644
--- a/radio/src/translations/de.h.txt
+++ b/radio/src/translations/de.h.txt
@@ -681,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"
diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt
index cf1bb254e..ec3a2f59d 100644
--- a/radio/src/translations/en.h.txt
+++ b/radio/src/translations/en.h.txt
@@ -680,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"
@@ -783,7 +785,7 @@
#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"
diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt
index bd066eb93..0c905f589 100644
--- a/radio/src/translations/es.h.txt
+++ b/radio/src/translations/es.h.txt
@@ -630,6 +630,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"
diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt
index 13ddc06b2..21b6e91a2 100644
--- a/radio/src/translations/fi.h.txt
+++ b/radio/src/translations/fi.h.txt
@@ -630,6 +630,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"
diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt
index 91fdd3f31..dccdeb64b 100644
--- a/radio/src/translations/fr.h.txt
+++ b/radio/src/translations/fr.h.txt
@@ -685,6 +685,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"
diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt
index 5535199bd..06395e850 100644
--- a/radio/src/translations/it.h.txt
+++ b/radio/src/translations/it.h.txt
@@ -630,6 +630,8 @@
#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"
diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt
index 7d4fa1b95..89b35da3a 100644
--- a/radio/src/translations/pl.h.txt
+++ b/radio/src/translations/pl.h.txt
@@ -628,6 +628,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"
diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt
index f16fa94b6..bb85bb40b 100644
--- a/radio/src/translations/pt.h.txt
+++ b/radio/src/translations/pt.h.txt
@@ -630,6 +630,8 @@
#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"
diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt
index 5abce5aca..6461e4d6f 100644
--- a/radio/src/translations/se.h.txt
+++ b/radio/src/translations/se.h.txt
@@ -630,6 +630,8 @@
#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"