diff --git a/radio/src/Makefile b/radio/src/Makefile index 0fba8ef16..2c9ddc635 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -1363,11 +1363,11 @@ GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) # conservative and not optimized. This is fine as Google Test # compiles fast and for ordinary users its source rarely changes. gtest-all.o : $(GTEST_SRCS_) - $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -c \ + $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GTEST_DIR)/include -c \ $(GTEST_DIR)/src/gtest-all.cc gtest_main.o : $(GTEST_SRCS_) - $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -c \ + $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) -I$(GTEST_DIR)/include -c \ $(GTEST_DIR)/src/gtest_main.cc gtest.a : gtest-all.o @@ -1381,4 +1381,4 @@ gtest_main.a : gtest-all.o gtest_main.o # function. gtests: $(BOARDSRC) $(CPPSRC) gtests.cpp simpgmspace.cpp *.h gtest_main.a - g++ -std=gnu++0x $(CPPFLAGS) $(BOARDSRC) $(CPPSRC) gtests.cpp simpgmspace.cpp -I$(GTEST_DIR) -o gtests -lpthread -MD -DSIMU gtest_main.a + g++ -std=gnu++0x $(CPPFLAGS) $(BOARDSRC) $(CPPSRC) gtests.cpp simpgmspace.cpp -I$(GTEST_DIR) ${INCFLAGS} -I$(GTEST_DIR)/include -o gtests -lpthread -MD -DSIMU gtest_main.a diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index d1f9889fb..325dca789 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -3746,7 +3746,7 @@ enum LimitsItems { #undef MIN_MAX_ATTR #define MIN_MAX_ATTR attr #else - #define MIN_MAX_DISPLAY(x) (x) + #define MIN_MAX_DISPLAY(x) ((int8_t)(x)) #endif #if defined(PCBTARANIS) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index ee634a7d2..4f2b04e0c 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -509,6 +509,12 @@ uint16_t evalChkSum() return sum; } +#if defined(TEMPLATES) +inline void applyDefaultTemplate() +{ + applyTemplate(TMPL_SIMPLE_4CH); +} +#else void applyDefaultTemplate() { for (int i=0; isrcRaw == 0) break; + uint8_t stickIndex = md->srcRaw - MIXSRC_Rud; + if (!(dirtyChannels & ((bitfield_channels_t)1 << md->destCh))) continue; // if this is the first calculation for the destination channel, initialize it with 0 (otherwise would be random) @@ -3415,7 +3424,6 @@ void perOut(uint8_t mode, uint8_t tick10ms) delayval_t mixEnabled = !(md->phases & (1 << s_perout_flight_phase)) && getSwitch(md->swtch); //========== VALUE =============== - uint8_t stickIndex = md->srcRaw - MIXSRC_Rud; getvalue_t v = 0; if (mode > e_perout_mode_inactive_phase) { if (!mixEnabled || stickIndex >= NUM_STICKS || (stickIndex == THR_STICK && g_model.thrTrim)) { @@ -3433,12 +3441,14 @@ void perOut(uint8_t mode, uint8_t tick10ms) else #endif { - v = getValue(md->srcRaw); - if (md->srcRaw>=MIXSRC_CH1 && md->srcRaw<=MIXSRC_LAST_CH && md->destCh != md->srcRaw-MIXSRC_CH1) { - if (dirtyChannels & ((bitfield_channels_t)1 << (md->srcRaw-MIXSRC_CH1)) & (passDirtyChannels|~(((bitfield_channels_t) 1 << md->destCh)-1))) + int8_t srcRaw = MIXSRC_Rud + stickIndex; + v = getValue(srcRaw); + srcRaw -= MIXSRC_CH1; + if (srcRaw>=0 && 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 (md->srcRaw-MIXSRC_CH1 < md->destCh || pass > 0) - v = chans[md->srcRaw-MIXSRC_CH1] >> 8; + if (srcRaw < md->destCh || pass > 0) + v = chans[srcRaw] >> 8; } } if (!mixCondition) { diff --git a/radio/src/templates.cpp b/radio/src/templates.cpp index e5b10dad1..a4cd243a5 100644 --- a/radio/src/templates.cpp +++ b/radio/src/templates.cpp @@ -178,7 +178,13 @@ void applyTemplate(uint8_t idx) // Simple 4-Ch case TMPL_SIMPLE_4CH: clearInputs(); - applyDefaultTemplate(); +#if defined(PCBTARANIS) + #pragma message("Templates with virtual inputs (FrSky Taranis) are not implemented!") +#endif + setDest(ICC(STK_RUD), MIXSRC_Rud); + setDest(ICC(STK_ELE), MIXSRC_Ele); + setDest(ICC(STK_THR), MIXSRC_Thr); + setDest(ICC(STK_AIL), MIXSRC_Ail); break; // Sticky-T-Cut @@ -203,9 +209,6 @@ void applyTemplate(uint8_t idx) // Elevon\\Delta case TMPL_ELEVON_DELTA: defaultInputs(); -#if defined(PCBTARANIS) - #pragma message("Templates below are not implemented (only V-TAIL has been done). Feel free to help!") -#endif setDest(ICC(STK_ELE), MIXSRC_Ele, true); setDest(ICC(STK_ELE), MIXSRC_Ail); setDest(ICC(STK_AIL), MIXSRC_Ele, true);