mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 16:55:20 +03:00
Merge pull request #3153 from mikeller/mikeller/invert_serial_rx_next
Graft of 'invert_serial_rx' onto next.
This commit is contained in:
commit
d7cbd78edf
19 changed files with 80 additions and 4 deletions
|
@ -847,6 +847,8 @@ ifeq ($(PCB), $(filter $(PCB), SKY9X 9XRPRO AR9X))
|
|||
ifeq ($(RTCLOCK), YES)
|
||||
CPPDEFS += -DRTCLOCK
|
||||
CPPSRC += rtc.cpp targets/sky9x/rtc_driver.cpp
|
||||
else ifeq ($(PCB), SKY9X)
|
||||
CPPSRC += targets/sky9x/rtc_driver.cpp
|
||||
endif
|
||||
ifeq ($(BLUETOOTH), YES)
|
||||
CPPDEFS += -DBLUETOOTH
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
|
||||
enum menuModelTelemetryItems {
|
||||
CASE_CPUARM(ITEM_TELEMETRY_PROTOCOL_TYPE)
|
||||
#if defined(REVX)
|
||||
ITEM_TELEMETRY_INVERTED_SERIAL,
|
||||
#endif
|
||||
#if !defined(CPUARM)
|
||||
ITEM_TELEMETRY_A1_LABEL,
|
||||
ITEM_TELEMETRY_A1_RANGE,
|
||||
|
@ -184,7 +187,9 @@ enum menuModelTelemetryItems {
|
|||
#define VARIO_RANGE_ROWS 3
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#if defined(REVX)
|
||||
#define TELEMETRY_TYPE_ROWS 0, 0,
|
||||
#elif defined(CPUARM)
|
||||
#define TELEMETRY_TYPE_ROWS 0,
|
||||
#else
|
||||
#define TELEMETRY_TYPE_ROWS
|
||||
|
@ -608,6 +613,11 @@ void menuModelTelemetry(uint8_t event)
|
|||
case ITEM_TELEMETRY_PROTOCOL_TYPE:
|
||||
g_model.telemetryProtocol = selectMenuItem(TELEM_COL2, y, STR_TELEMETRY_TYPE, "\017FrSky S.PORT\0 FrSky D\0 FrSky D (cable)", g_model.telemetryProtocol, PROTOCOL_TELEMETRY_FIRST, CASE_PCBSKY9X(PROTOCOL_FRSKY_D_SECONDARY) attr, event);
|
||||
break;
|
||||
#if defined(REVX)
|
||||
case ITEM_TELEMETRY_INVERTED_SERIAL:
|
||||
ON_OFF_MENU_ITEM(g_model.moduleData[EXTERNAL_MODULE].invertedSerial, TELEM_COL2, y, STR_INVERTED_SERIAL, attr, event);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
|
|
|
@ -505,7 +505,8 @@ PACK(typedef struct {
|
|||
int8_t rfProtocol:4;
|
||||
uint8_t channelsStart;
|
||||
int8_t channelsCount; // 0=8 channels
|
||||
uint8_t failsafeMode;
|
||||
uint8_t failsafeMode:7;
|
||||
uint8_t invertedSerial:1; // telemetry serial inverted from standard
|
||||
int16_t failsafeChannels[NUM_CHNOUT];
|
||||
int8_t ppmDelay:6;
|
||||
uint8_t ppmPulsePol:1;
|
||||
|
|
|
@ -1520,6 +1520,11 @@ enum AUDIO_SOUNDS {
|
|||
#include "rtc.h"
|
||||
#endif
|
||||
|
||||
#if defined(REVX)
|
||||
void setMFP();
|
||||
void clearMFP();
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
extern uint8_t requiredSpeakerVolume;
|
||||
#endif
|
||||
|
|
|
@ -280,3 +280,25 @@ void rtcInit()
|
|||
coprocReadData();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(REVX)
|
||||
void writeMFP()
|
||||
{
|
||||
__disable_irq();
|
||||
Rtc_write_pending |= 2;
|
||||
i2cCheck();
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
void setMFP()
|
||||
{
|
||||
MFPsetting = 0x80;
|
||||
writeMFP();
|
||||
}
|
||||
|
||||
void clearMFP()
|
||||
{
|
||||
MFPsetting = 0;
|
||||
writeMFP();
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -69,6 +69,9 @@ FrskyData frskyData;
|
|||
|
||||
#if defined(CPUARM)
|
||||
uint8_t telemetryProtocol = 255;
|
||||
#if defined(REVX)
|
||||
uint8_t serialInversion = 0;
|
||||
#endif
|
||||
#define IS_FRSKY_D_PROTOCOL() (telemetryProtocol == PROTOCOL_FRSKY_D)
|
||||
#define IS_FRSKY_SPORT_PROTOCOL() (telemetryProtocol == PROTOCOL_FRSKY_SPORT)
|
||||
#else
|
||||
|
@ -283,7 +286,13 @@ void telemetryWakeup()
|
|||
{
|
||||
#if defined(CPUARM)
|
||||
uint8_t requiredTelemetryProtocol = MODEL_TELEMETRY_PROTOCOL();
|
||||
if (telemetryProtocol != requiredTelemetryProtocol) {
|
||||
#if defined(REVX)
|
||||
uint8_t requiredSerialInversion = g_model.moduleData[EXTERNAL_MODULE].invertedSerial;
|
||||
if (telemetryProtocol != requiredTelemetryProtocol || serialInversion != requiredSerialInversion) {
|
||||
serialInversion = requiredSerialInversion;
|
||||
#else
|
||||
if (telemetryProtocol != requiredTelemetryProtocol) {
|
||||
#endif
|
||||
telemetryProtocol = requiredTelemetryProtocol;
|
||||
telemetryInit();
|
||||
}
|
||||
|
@ -622,6 +631,15 @@ void telemetryInit(void)
|
|||
else {
|
||||
telemetryPortInit(FRSKY_SPORT_BAUDRATE);
|
||||
}
|
||||
|
||||
#if defined(REVX) && !defined(SIMU)
|
||||
if (serialInversion) {
|
||||
setMFP();
|
||||
}
|
||||
else {
|
||||
clearMFP();
|
||||
}
|
||||
#endif
|
||||
#elif !defined(SIMU)
|
||||
telemetryPortInit();
|
||||
#endif
|
||||
|
|
|
@ -586,6 +586,7 @@ const pm_char STR_MODEL_SELECT[] PROGMEM = TR_MODEL_SELECT;
|
|||
const pm_char STR_ONLYPOSITIVE[] PROGMEM = TR_ONLYPOSITIVE;
|
||||
const pm_char STR_FILTER[] PROGMEM = TR_FILTER;
|
||||
const pm_char STR_TELEMETRYFULL[] PROGMEM = TR_TELEMETRYFULL;
|
||||
const pm_char STR_INVERTED_SERIAL[] PROGMEM = TR_INVERTED_SERIAL;
|
||||
const pm_char STR_IGNORE_INSTANCE[] PROGMEM = TR_IGNORE_INSTANCE;
|
||||
const pm_char STR_DISCOVER_SENSORS[] PROGMEM = TR_DISCOVER_SENSORS;
|
||||
const pm_char STR_STOP_DISCOVER_SENSORS[] PROGMEM = TR_STOP_DISCOVER_SENSORS;
|
||||
|
|
|
@ -798,6 +798,7 @@ extern const pm_char STR_MODEL_SELECT[];
|
|||
extern const pm_char STR_ONLYPOSITIVE[];
|
||||
extern const pm_char STR_FILTER[];
|
||||
extern const pm_char STR_TELEMETRYFULL[];
|
||||
extern const pm_char STR_INVERTED_SERIAL[];
|
||||
extern const pm_char STR_IGNORE_INSTANCE[];
|
||||
extern const pm_char STR_DISCOVER_SENSORS[];
|
||||
extern const pm_char STR_STOP_DISCOVER_SENSORS[];
|
||||
|
|
|
@ -1086,6 +1086,8 @@
|
|||
#define TR_ONLYPOSITIVE "Jen kladné"
|
||||
#define TR_FILTER "Filtr"
|
||||
#define TR_TELEMETRYFULL "Všechny sloty jsou plné!"
|
||||
//TODO: translation
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE INDENT "Ignoruj chyby ID"
|
||||
#define TR_DISCOVER_SENSORS INDENT "Detekovat nové senzory"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Zastavit autodetekci"
|
||||
|
|
|
@ -1090,6 +1090,7 @@
|
|||
#define TR_ONLYPOSITIVE "Nur Positiv"
|
||||
#define TR_FILTER "Filter aktiv"
|
||||
#define TR_TELEMETRYFULL "Telemetriezeilen voll!"
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert."
|
||||
#define TR_IGNORE_INSTANCE TR(INDENT "Keine ID", INDENT "Keine Multisen-ID") //unklar
|
||||
#define TR_DISCOVER_SENSORS INDENT "Start Sensorsuche"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop Sensorsuche"
|
||||
|
|
|
@ -1117,6 +1117,7 @@
|
|||
#define TR_ONLYPOSITIVE "Positive"
|
||||
#define TR_FILTER "Filter"
|
||||
#define TR_TELEMETRYFULL "All telemetry slots full!"
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE TR(INDENT "No inst.", INDENT "Ignore instances")
|
||||
#define TR_DISCOVER_SENSORS INDENT "Discover new sensors"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop discovery"
|
||||
|
|
|
@ -1040,6 +1040,7 @@
|
|||
#define TR_ONLYPOSITIVE "Positive"
|
||||
#define TR_FILTER "Filter"
|
||||
#define TR_TELEMETRYFULL "All telemetry slots full!"
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
|
||||
#define TR_DISCOVER_SENSORS INDENT "Discover new sensors"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop discovery"
|
||||
|
|
|
@ -1040,6 +1040,7 @@
|
|||
#define TR_ONLYPOSITIVE "Positive"
|
||||
#define TR_FILTER "Filter"
|
||||
#define TR_TELEMETRYFULL "All telemetry slots full!"
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
|
||||
#define TR_DISCOVER_SENSORS INDENT "Discover new sensors"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop discovery"
|
||||
|
|
|
@ -1077,6 +1077,7 @@
|
|||
#define TR_ONLYPOSITIVE "Positive"
|
||||
#define TR_FILTER "Filtrage"
|
||||
#define TR_TELEMETRYFULL "Plus de capteurs libres!"
|
||||
#define TR_INVERTED_SERIAL INDENT "Inverti"
|
||||
#define TR_IGNORE_INSTANCE TR(INDENT "Ign. inst.",INDENT "Ignorer instance")
|
||||
#define TR_DISCOVER_SENSORS INDENT "Découvrir capteurs"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Terminer découverte"
|
||||
|
|
|
@ -1088,6 +1088,8 @@
|
|||
#define TR_ONLYPOSITIVE "Positivo"
|
||||
#define TR_FILTER "Filtro"
|
||||
#define TR_TELEMETRYFULL "Tutti gli slot sono pieni!"
|
||||
//TODO: translation
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE TR(INDENT "No inst.","Ignora instanza")
|
||||
#define TR_DISCOVER_SENSORS INDENT "Cerca nuovi sensori"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Ferma ricerca.."
|
||||
|
|
|
@ -1107,6 +1107,8 @@
|
|||
#define TR_ONLYPOSITIVE "Geen Negatief"
|
||||
#define TR_FILTER "Filter aktief"
|
||||
#define TR_TELEMETRYFULL "Telemetrie slots vol!"
|
||||
//TODO: translation
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE TR(INDENT "Neg. ID ","Negeer ID's")
|
||||
#define TR_DISCOVER_SENSORS INDENT "Ontdek nieuwe sensors"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop ontdekking"
|
||||
|
@ -1154,4 +1156,4 @@
|
|||
#define ZSTR_CELLS "Cels"
|
||||
#define ZSTR_GPSALT "GAlt"
|
||||
#define ZSTR_GPSDATETIME "Date"
|
||||
#define ZSTR_GPS "GPS"
|
||||
#define ZSTR_GPS "GPS"
|
||||
|
|
|
@ -1089,6 +1089,8 @@
|
|||
#define TR_ONLYPOSITIVE "Dodatni"
|
||||
#define TR_FILTER "Filtr"
|
||||
#define TR_TELEMETRYFULL "Wszyskie miejsca zajęte!"
|
||||
//TODO: translation
|
||||
#define TR_INVERTED SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE INDENT "Ignoruj przypadek"
|
||||
#define TR_DISCOVER_SENSORS INDENT "Znajdź nowe czujniki"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Szukanie STOP "
|
||||
|
|
|
@ -1040,6 +1040,7 @@
|
|||
#define TR_ONLYPOSITIVE "Positive"
|
||||
#define TR_FILTER "Filter"
|
||||
#define TR_TELEMETRYFULL "All telemetry slots full!"
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
|
||||
#define TR_DISCOVER_SENSORS INDENT "Discover new sensors"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Stop discovery"
|
||||
|
|
|
@ -1116,6 +1116,8 @@
|
|||
#define TR_ONLYPOSITIVE "Positiv"
|
||||
#define TR_FILTER "Filter"
|
||||
#define TR_TELEMETRYFULL "Alla telemetriplatser upptagna!"
|
||||
//TODO: translation
|
||||
#define TR_INVERTED_SERIAL INDENT "Invert"
|
||||
#define TR_IGNORE_INSTANCE TR(INDENT "Inst.fel", INDENT "Hantera Instansfel")
|
||||
#define TR_DISCOVER_SENSORS INDENT "Sök nya sensorer"
|
||||
#define TR_STOP_DISCOVER_SENSORS INDENT "Avbryt sökning"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue