From 96ddda7befb602226903bc8fea0fd720d18c4670 Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 16 May 2014 22:33:00 +0200 Subject: [PATCH] Bugfixes --- radio/src/Makefile | 8 ++++---- radio/src/gui/menu_model.cpp | 6 +++--- radio/src/gui/menus.cpp | 10 ++++++++++ radio/src/gui/menus.h | 1 + radio/src/opentx.h | 17 +++++++++-------- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index c226a732e..1a14ea140 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -60,7 +60,7 @@ PCBREV = # Enable JETI-Telemetry or FrSky Telemetry reception on UART0 # For this option you need to modify your hardware! # More information at [insertURLhere] -# Values = STD, FRSKY, JETI, NMEA, ARDUPILOT, MAVLINK, TELEMETREZ +# Values = STD, FRSKY, FRSKY_SPORT, JETI, NMEA, ARDUPILOT, MAVLINK, TELEMETREZ EXT = STD # FAI mode @@ -893,7 +893,7 @@ ifeq ($(ACCURAT_THROTTLE_STATS), YES) endif # EXTENSIONS (for Telemetry protocols) -ifneq ($(EXT), $(filter $(EXT), STD FRSKY ARDUPILOT NMEA JETI MAVLINK TELEMETREZ)) +ifneq ($(EXT), $(filter $(EXT), STD FRSKY FRSKY_SPORT ARDUPILOT NMEA JETI MAVLINK TELEMETREZ)) $(error Sorry, the EXT $(EXT) is not supported yet in openTx) endif @@ -926,9 +926,9 @@ ifeq ($(EXT), TELEMETREZ) CPPDEFS += -DTELEMETREZ endif -ifeq ($(EXT), $(filter $(EXT), FRSKY TELEMETREZ)) +ifeq ($(EXT), $(filter $(EXT), FRSKY FRSKY_SPORT TELEMETREZ)) CPPDEFS += -DFRSKY - ifeq ($(PCB), $(filter $(PCB), TARANIS)) + ifeq ($(EXT), FRSKY_SPORT) CPPSRC += telemetry/frsky.cpp telemetry/frsky_sport.cpp telemetry/frsky_d.cpp CPPDEFS += -DFRSKY_SPORT else diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index cbb5f332c..8602d57db 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -1397,13 +1397,13 @@ void menuModelSetup(uint8_t event) if (attr && (editMode>0 || p1valdiff)) { switch (m_posHorz) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.externalModule, MODULE_TYPE_NONE, MODULE_TYPE_COUNT-1); + g_model.externalModule = checkIncDec(event, g_model.externalModule, MODULE_TYPE_NONE, MODULE_TYPE_COUNT-1, EE_MODEL, isModuleAvailable); if (checkIncDec_Ret) { g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; if (g_model.externalModule == MODULE_TYPE_PPM) g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0; else - g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_PORT2_CHANNELS(); + g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_EXTERNAL_MODULE_CHANNELS(); } break; case 1: @@ -1413,7 +1413,7 @@ void menuModelSetup(uint8_t event) CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, RF_PROTO_X16, RF_PROTO_LAST); if (checkIncDec_Ret) { g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_PORT2_CHANNELS(); + g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_EXTERNAL_MODULE_CHANNELS(); } } } diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 6edc23fd6..da4003b0a 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -1573,4 +1573,14 @@ bool isAssignableFunctionAvailable(int function) return true; } } + +bool isModuleAvailable(int module) +{ +#if !defined(PXX) + if (module == MODULE_TYPE_XJT) + return false; +#endif + return true; +} + #endif diff --git a/radio/src/gui/menus.h b/radio/src/gui/menus.h index 0305342ee..e65b5ad3a 100644 --- a/radio/src/gui/menus.h +++ b/radio/src/gui/menus.h @@ -222,6 +222,7 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max); bool isAssignableFunctionAvailable(int function); bool isSwitchAvailable(int swtch); bool isSwitchAvailableInLogicalSwitches(int swtch); + bool isModuleAvailable(int module); #define AUTOSWITCH_ENTER_LONG() (attr && event==EVT_KEY_LONG(KEY_ENTER)) #define CHECK_INCDEC_MODELSWITCH(event, var, min, max) \ var = checkIncDec(event,var,min,max,EE_MODEL|INCDEC_SWITCH|NO_INCDEC_MARKS, isSwitchAvailable) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index c42503918..0283a2bc1 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -475,11 +475,10 @@ enum PotType { #endif #if defined(CPUARM) - static const int8_t maxChannelsModules[] = { 0, 8, 8, 0, -2 }; // relative to 8! + static const int8_t maxChannelsModules[] = { 0, 8, 8, -2 }; // relative to 8! static const int8_t maxChannelsXJT[] = { 0, 8, 0, 4 }; // relative to 8! #define NUM_CHANNELS(idx) (8+g_model.moduleData[idx].channelsCount) #define MAX_TRAINER_CHANNELS() (8) - #define MAX_CHANNELS(idx) (idx==0 ? MAX_PORT1_CHANNELS() : (idx==1 ? MAX_PORT2_CHANNELS() : MAX_TRAINER_CHANNELS())) #endif #if defined(PCBTARANIS) @@ -490,22 +489,24 @@ enum PotType { #else #define IS_MODULE_DSM2(idx) (false) #endif - #define MAX_PORT1_CHANNELS() (maxChannelsXJT[1+g_model.moduleData[INTERNAL_MODULE].rfProtocol]) - #define MAX_PORT2_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[1].rfProtocol] : maxChannelsModules[g_model.externalModule]) + #define MAX_INTERNAL_MODULE_CHANNELS() (maxChannelsXJT[1+g_model.moduleData[INTERNAL_MODULE].rfProtocol]) + #define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[1].rfProtocol] : maxChannelsModules[g_model.externalModule]) + #define MAX_CHANNELS(idx) (idx==INTERNAL_MODULE ? MAX_INTERNAL_MODULE_CHANNELS() : (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS())) #define IS_PXX_RANGE_CHECK_ENABLE() (pxxFlag[INTERNAL_MODULE] == PXX_SEND_RANGECHECK || pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK) #elif defined(PCBSKY9X) && defined(REVX) #define IS_MODULE_PPM(idx) (idx==TRAINER_MODULE || (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_PPM)) #define IS_MODULE_XJT(idx) (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_XJT) #define IS_MODULE_DSM2(idx) (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_DSM2) - #define MAX_PORT1_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol] : maxChannelsModules[g_model.externalModule]) - #define MAX_PORT2_CHANNELS() (8) // Only PPM + #define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol] : maxChannelsModules[g_model.externalModule]) + #define MAX_CHANNELS(idx) (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS()) #define IS_PXX_RANGE_CHECK_ENABLE() (pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK) #elif defined(PCBSKY9X) #define IS_MODULE_PPM(idx) (idx==TRAINER_MODULE || idx==EXTRA_MODULE || (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_PPM)) #define IS_MODULE_XJT(idx) (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_XJT) #define IS_MODULE_DSM2(idx) (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_DSM2) - #define MAX_PORT1_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[0].rfProtocol] : maxChannelsModules[g_model.externalModule]) - #define MAX_PORT2_CHANNELS() (0) // Only PPM + #define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[0].rfProtocol] : maxChannelsModules[g_model.externalModule]) + #define MAX_EXTRA_MODULE_CHANNELS() (0) // Only PPM + #define MAX_CHANNELS(idx) (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : (idx==EXTRA_MODULE ? MAX_EXTRA_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS())) #define IS_PXX_RANGE_CHECK_ENABLE() (pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK) #endif