mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 17:25:13 +03:00
Crossfire has 16 channels (fixed)
This commit is contained in:
parent
91e80d446a
commit
5250f5eb4c
4 changed files with 6 additions and 5 deletions
|
@ -686,7 +686,6 @@ void menuModelSetup(uint8_t event)
|
||||||
g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0;
|
g_model.moduleData[EXTERNAL_MODULE].rfProtocol = 0;
|
||||||
g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0;
|
g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0;
|
||||||
g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0;
|
g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
|
|
@ -466,7 +466,6 @@
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
static const int8_t maxChannelsModules[] = { 0, 8, 8, -2, 8 }; // relative to 8!
|
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!
|
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_TRAINER_CHANNELS() (8)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -495,6 +494,7 @@
|
||||||
#endif
|
#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_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 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)
|
#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_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)
|
#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 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_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 MAX_CHANNELS(idx) (idx==EXTERNAL_MODULE ? MAX_EXTERNAL_MODULE_CHANNELS() : MAX_TRAINER_CHANNELS())
|
||||||
|
#define NUM_CHANNELS(idx) (8+g_model.moduleData[idx].channelsCount)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
|
|
|
@ -48,7 +48,7 @@ void createCrossfireFrame(uint8_t * frame, int16_t * pulses)
|
||||||
|
|
||||||
uint32_t bits = 0;
|
uint32_t bits = 0;
|
||||||
uint8_t bitsavailable = 0;
|
uint8_t bitsavailable = 0;
|
||||||
for (int i=0; i<NUM_TRAINER; i++) {
|
for (int i=0; i<CROSSFIRE_CHANNELS_COUNT; i++) {
|
||||||
bits |= (CROSSFIRE_CH_CENTER + (((pulses[i]) * 4) / 5)) << bitsavailable;
|
bits |= (CROSSFIRE_CH_CENTER + (((pulses[i]) * 4) / 5)) << bitsavailable;
|
||||||
bitsavailable += CROSSFIRE_CH_BITS;
|
bitsavailable += CROSSFIRE_CH_BITS;
|
||||||
while (bitsavailable >= 8) {
|
while (bitsavailable >= 8) {
|
||||||
|
|
|
@ -84,8 +84,9 @@ PACK(struct Dsm2PulsesData {
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CROSSFIRE_BAUDRATE 200000
|
#define CROSSFIRE_BAUDRATE 200000
|
||||||
#define CROSSFIRE_FRAME_LEN 25
|
#define CROSSFIRE_FRAME_LEN 25
|
||||||
|
#define CROSSFIRE_CHANNELS_COUNT 16
|
||||||
PACK(struct CrossfirePulsesData {
|
PACK(struct CrossfirePulsesData {
|
||||||
uint8_t pulses[CROSSFIRE_FRAME_LEN];
|
uint8_t pulses[CROSSFIRE_FRAME_LEN];
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue