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].channelsStart = 0;
|
||||
g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0;
|
||||
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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<NUM_TRAINER; i++) {
|
||||
for (int i=0; i<CROSSFIRE_CHANNELS_COUNT; i++) {
|
||||
bits |= (CROSSFIRE_CH_CENTER + (((pulses[i]) * 4) / 5)) << bitsavailable;
|
||||
bitsavailable += CROSSFIRE_CH_BITS;
|
||||
while (bitsavailable >= 8) {
|
||||
|
|
|
@ -86,6 +86,7 @@ PACK(struct Dsm2PulsesData {
|
|||
|
||||
#define CROSSFIRE_BAUDRATE 200000
|
||||
#define CROSSFIRE_FRAME_LEN 25
|
||||
#define CROSSFIRE_CHANNELS_COUNT 16
|
||||
PACK(struct CrossfirePulsesData {
|
||||
uint8_t pulses[CROSSFIRE_FRAME_LEN];
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue