diff --git a/radio/src/gui/taranis/menu_model_setup.cpp b/radio/src/gui/taranis/menu_model_setup.cpp index dcd60a7a8..09e8e164b 100644 --- a/radio/src/gui/taranis/menu_model_setup.cpp +++ b/radio/src/gui/taranis/menu_model_setup.cpp @@ -686,7 +686,6 @@ void menuModelSetup(uint8_t event) g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0; g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0; - } break; case 1: diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 0dede6f62..e490452f4 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -466,7 +466,6 @@ #if defined(CPUARM) static const int8_t maxChannelsModules[] = { 0, 8, 8, -2, 8 }; // 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) #endif @@ -495,6 +494,7 @@ #endif #define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[1].rfProtocol] : maxChannelsModules[g_model.moduleData[EXTERNAL_MODULE].type]) #define MAX_CHANNELS(idx) (idx==INTERNAL_MODULE ? MAX_INTERNAL_MODULE_CHANNELS() : (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS())) + #define NUM_CHANNELS(idx) (IS_MODULE_CROSSFIRE(idx) ? CROSSFIRE_CHANNELS_COUNT : (8+g_model.moduleData[idx].channelsCount)) #elif defined(PCBSKY9X) && !defined(REVA) #define IS_MODULE_PPM(idx) (idx==TRAINER_MODULE || idx==EXTRA_MODULE || (idx==EXTERNAL_MODULE && g_model.moduleData[EXTERNAL_MODULE].type==MODULE_TYPE_PPM)) #define IS_MODULE_XJT(idx) (idx==EXTERNAL_MODULE && g_model.moduleData[EXTERNAL_MODULE].type==MODULE_TYPE_XJT) @@ -508,6 +508,7 @@ #define IS_MODULE_DSM2(idx) (idx==EXTERNAL_MODULE && g_model.moduleData[EXTERNAL_MODULE].type==MODULE_TYPE_DSM2) #define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol] : maxChannelsModules[g_model.moduleData[EXTERNAL_MODULE].type]) #define MAX_CHANNELS(idx) (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS()) + #define NUM_CHANNELS(idx) (8+g_model.moduleData[idx].channelsCount) #endif #if defined(CPUARM) diff --git a/radio/src/pulses/crossfire.cpp b/radio/src/pulses/crossfire.cpp index d3b65b543..f985ea655 100644 --- a/radio/src/pulses/crossfire.cpp +++ b/radio/src/pulses/crossfire.cpp @@ -48,7 +48,7 @@ void createCrossfireFrame(uint8_t * frame, int16_t * pulses) uint32_t bits = 0; uint8_t bitsavailable = 0; - for (int i=0; i= 8) { diff --git a/radio/src/pulses/pulses_arm.h b/radio/src/pulses/pulses_arm.h index 58cbda991..821f61f87 100644 --- a/radio/src/pulses/pulses_arm.h +++ b/radio/src/pulses/pulses_arm.h @@ -84,8 +84,9 @@ PACK(struct Dsm2PulsesData { }); #endif -#define CROSSFIRE_BAUDRATE 200000 -#define CROSSFIRE_FRAME_LEN 25 +#define CROSSFIRE_BAUDRATE 200000 +#define CROSSFIRE_FRAME_LEN 25 +#define CROSSFIRE_CHANNELS_COUNT 16 PACK(struct CrossfirePulsesData { uint8_t pulses[CROSSFIRE_FRAME_LEN]; });