mirror of
https://github.com/opentx/opentx.git
synced 2025-07-21 23:35:17 +03:00
Code cleanup on Sky9x pulses
This commit is contained in:
parent
9e64801384
commit
39118453da
5 changed files with 136 additions and 62 deletions
|
@ -915,14 +915,11 @@ enum menuModelSetupItems {
|
||||||
ITEM_MODEL_EXTERNAL_MODULE_CHANNELS,
|
ITEM_MODEL_EXTERNAL_MODULE_CHANNELS,
|
||||||
ITEM_MODEL_EXTERNAL_MODULE_BIND,
|
ITEM_MODEL_EXTERNAL_MODULE_BIND,
|
||||||
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
|
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
|
||||||
#if defined(PCBSKY9X) && !defined(REVX)
|
#if defined(PCBSKY9X) && defined(REVB)
|
||||||
ITEM_MODEL_EXTRA_MODULE_LABEL,
|
ITEM_MODEL_EXTRA_MODULE_LABEL,
|
||||||
ITEM_MODEL_EXTRA_MODULE_CHANNELS,
|
ITEM_MODEL_EXTRA_MODULE_CHANNELS,
|
||||||
ITEM_MODEL_EXTRA_MODULE_BIND,
|
ITEM_MODEL_EXTRA_MODULE_BIND,
|
||||||
#endif
|
#endif
|
||||||
ITEM_MODEL_TRAINER_LABEL,
|
|
||||||
ITEM_MODEL_TRAINER_CHANNELS,
|
|
||||||
ITEM_MODEL_TRAINER_SETTINGS,
|
|
||||||
#else
|
#else
|
||||||
ITEM_MODEL_PPM1_PROTOCOL,
|
ITEM_MODEL_PPM1_PROTOCOL,
|
||||||
ITEM_MODEL_PPM1_PARAMS,
|
ITEM_MODEL_PPM1_PARAMS,
|
||||||
|
@ -977,10 +974,10 @@ void onModelSetupBitmapMenu(const char *result)
|
||||||
|
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS)
|
||||||
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_TRAINER_LABEL ? TRAINER_MODULE : (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE))
|
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_TRAINER_LABEL ? TRAINER_MODULE : (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE))
|
||||||
#elif defined(PCBSKY9X) && defined(REVX)
|
#elif defined(PCBSKY9X) && defined(REVB)
|
||||||
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_TRAINER_LABEL ? TRAINER_MODULE : EXTERNAL_MODULE)
|
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
|
||||||
#else
|
#else
|
||||||
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_TRAINER_LABEL ? TRAINER_MODULE : (k>=ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE))
|
#define CURRENT_MODULE_EDITED(k) (EXTERNAL_MODULE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void menuModelSetup(uint8_t event)
|
void menuModelSetup(uint8_t event)
|
||||||
|
@ -993,7 +990,6 @@ void menuModelSetup(uint8_t event)
|
||||||
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
|
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
|
||||||
#define INTERNAL_MODULE_CHANNELS_ROWS() IF_INTERNAL_MODULE_ON(1)
|
#define INTERNAL_MODULE_CHANNELS_ROWS() IF_INTERNAL_MODULE_ON(1)
|
||||||
#define EXTERNAL_MODULE_CHANNELS_ROWS() IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1)
|
#define EXTERNAL_MODULE_CHANNELS_ROWS() IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1)
|
||||||
#define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1)
|
|
||||||
#define PORT_CHANNELS_ROWS(x) (x==INTERNAL_MODULE ? INTERNAL_MODULE_CHANNELS_ROWS() : (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS() : TRAINER_CHANNELS_ROWS()))
|
#define PORT_CHANNELS_ROWS(x) (x==INTERNAL_MODULE ? INTERNAL_MODULE_CHANNELS_ROWS() : (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS() : TRAINER_CHANNELS_ROWS()))
|
||||||
#define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW)
|
#define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW)
|
||||||
#define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX)
|
#define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX)
|
||||||
|
@ -1005,18 +1001,22 @@ void menuModelSetup(uint8_t event)
|
||||||
#define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x))
|
#define IF_EXTERNAL_MODULE_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x))
|
||||||
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
|
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
|
||||||
#define EXTERNAL_MODULE_CHANNELS_ROWS() IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1)
|
#define EXTERNAL_MODULE_CHANNELS_ROWS() IF_EXTERNAL_MODULE_ON(IS_MODULE_DSM2(EXTERNAL_MODULE) ? (uint8_t)0 : (uint8_t)1)
|
||||||
#define TRAINER_CHANNELS_ROWS() (1)
|
#define PORT_CHANNELS_ROWS(x) (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS() : 0)
|
||||||
#define PORT_CHANNELS_ROWS(x) (x==EXTERNAL_MODULE ? EXTERNAL_MODULE_CHANNELS_ROWS() : TRAINER_CHANNELS_ROWS())
|
|
||||||
#define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW)
|
#define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW)
|
||||||
#define CURSOR_ON_CELL (true)
|
#define CURSOR_ON_CELL (true)
|
||||||
#define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX)
|
#define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX)
|
||||||
#define POT_WARN_ITEMS() ((g_model.nPotsToWarn >> 6) ? (uint8_t)NUM_POTS : (uint8_t)0)
|
#define POT_WARN_ITEMS() ((g_model.nPotsToWarn >> 6) ? (uint8_t)NUM_POTS : (uint8_t)0)
|
||||||
#if defined(REVX)
|
#if defined(PCBTARANIS) || (defined(PCBSKY9X) && defined(REVB))
|
||||||
#define EXTRA_MODULE_ROWS
|
|
||||||
#else
|
|
||||||
#define EXTRA_MODULE_ROWS LABEL(ExtraModule), 1, 2,
|
#define EXTRA_MODULE_ROWS LABEL(ExtraModule), 1, 2,
|
||||||
|
#else
|
||||||
|
#define EXTRA_MODULE_ROWS
|
||||||
#endif
|
#endif
|
||||||
MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0,CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS LABEL(Trainer), TRAINER_CHANNELS_ROWS(), 2});
|
#if defined(PCBTARANIS)
|
||||||
|
#define TRAINER_MODULE_ROWS LABEL(Trainer), IF_TRAINER_ON(1), 2
|
||||||
|
#else
|
||||||
|
#define TRAINER_MODULE_ROWS
|
||||||
|
#endif
|
||||||
|
MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 2, CASE_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, CASE_PCBTARANIS(LABEL(Throttle)) 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, 6, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, LABEL(ExternalModule), (IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, EXTERNAL_MODULE_CHANNELS_ROWS(), (IS_MODULE_XJT(EXTERNAL_MODULE) && IS_D8_RX(EXTERNAL_MODULE)) ? (uint8_t)1 : (IS_MODULE_PPM(EXTERNAL_MODULE) || IS_MODULE_XJT(EXTERNAL_MODULE) || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)2 : HIDDEN_ROW, IF_EXTERNAL_MODULE_XJT(FAILSAFE_ROWS(EXTERNAL_MODULE)), EXTRA_MODULE_ROWS TRAINER_MODULE_ROWS });
|
||||||
#elif defined(CPUM64)
|
#elif defined(CPUM64)
|
||||||
#define CURSOR_ON_CELL (true)
|
#define CURSOR_ON_CELL (true)
|
||||||
#define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX)
|
#define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX)
|
||||||
|
@ -1426,21 +1426,22 @@ void menuModelSetup(uint8_t event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(PCBTARANIS)
|
||||||
case ITEM_MODEL_TRAINER_LABEL:
|
case ITEM_MODEL_TRAINER_LABEL:
|
||||||
lcd_putsLeft(y, STR_TRAINER);
|
lcd_putsLeft(y, STR_TRAINER);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(PCBTARANIS)
|
|
||||||
case ITEM_MODEL_INTERNAL_MODULE_CHANNELS:
|
case ITEM_MODEL_INTERNAL_MODULE_CHANNELS:
|
||||||
#elif defined(PCBSKY9X) && !defined(REVX)
|
#elif defined(PCBSKY9X) && !defined(REVX)
|
||||||
case ITEM_MODEL_EXTRA_MODULE_CHANNELS:
|
case ITEM_MODEL_EXTRA_MODULE_CHANNELS:
|
||||||
#endif
|
#endif
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
case ITEM_MODEL_EXTERNAL_MODULE_CHANNELS:
|
case ITEM_MODEL_EXTERNAL_MODULE_CHANNELS:
|
||||||
|
#if defined(PCBTARANIS)
|
||||||
case ITEM_MODEL_TRAINER_CHANNELS:
|
case ITEM_MODEL_TRAINER_CHANNELS:
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||||
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
||||||
|
@ -1457,7 +1458,11 @@ void menuModelSetup(uint8_t event)
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, moduleData.channelsCount, -4, min<int8_t>(MAX_CHANNELS(moduleIdx), 32-8-moduleData.channelsStart));
|
CHECK_INCDEC_MODELVAR(event, moduleData.channelsCount, -4, min<int8_t>(MAX_CHANNELS(moduleIdx), 32-8-moduleData.channelsStart));
|
||||||
if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.externalModule == MODULE_TYPE_PPM) || (k == ITEM_MODEL_TRAINER_CHANNELS))
|
if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.externalModule == MODULE_TYPE_PPM)
|
||||||
|
#if defined(PCBTARANIS)
|
||||||
|
|| (k == ITEM_MODEL_TRAINER_CHANNELS)
|
||||||
|
#endif
|
||||||
|
)
|
||||||
SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx);
|
SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1474,7 +1479,9 @@ void menuModelSetup(uint8_t event)
|
||||||
#endif
|
#endif
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
case ITEM_MODEL_EXTERNAL_MODULE_BIND:
|
case ITEM_MODEL_EXTERNAL_MODULE_BIND:
|
||||||
|
#if defined(PCBTARANIS)
|
||||||
case ITEM_MODEL_TRAINER_SETTINGS:
|
case ITEM_MODEL_TRAINER_SETTINGS:
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||||
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
ModuleData & moduleData = g_model.moduleData[moduleIdx];
|
||||||
|
|
|
@ -496,14 +496,7 @@ enum PotType {
|
||||||
#define MAX_EXTERNAL_MODULE_CHANNELS() ((g_model.externalModule == MODULE_TYPE_XJT) ? maxChannelsXJT[1+g_model.moduleData[1].rfProtocol] : maxChannelsModules[g_model.externalModule])
|
#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 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)
|
#define IS_PXX_RANGE_CHECK_ENABLE() (pxxFlag[INTERNAL_MODULE] == PXX_SEND_RANGECHECK || pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK)
|
||||||
#elif defined(PCBSKY9X) && defined(REVX)
|
#elif defined(PCBSKY9X) && defined(REVB)
|
||||||
#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_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_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_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 IS_MODULE_DSM2(idx) (idx==EXTERNAL_MODULE && g_model.externalModule==MODULE_TYPE_DSM2)
|
||||||
|
@ -511,6 +504,13 @@ enum PotType {
|
||||||
#define MAX_EXTRA_MODULE_CHANNELS() (0) // Only PPM
|
#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 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)
|
#define IS_PXX_RANGE_CHECK_ENABLE() (pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK)
|
||||||
|
#else
|
||||||
|
#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_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)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
|
|
|
@ -56,7 +56,7 @@ void setupPulsesPPM(unsigned int port) // Don't enable interru
|
||||||
|
|
||||||
#if defined(PCBSKY9X)
|
#if defined(PCBSKY9X)
|
||||||
register Pwm *pwmptr = PWM;
|
register Pwm *pwmptr = PWM;
|
||||||
uint32_t pwmCh = (port == 0 ? 3 : 1);
|
uint32_t pwmCh = (port == EXTERNAL_MODULE ? 3 : 1);
|
||||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CDTYUPD = (g_model.moduleData[port].ppmDelay * 50 + 300) * 2; //Stoplen *2
|
pwmptr->PWM_CH_NUM[pwmCh].PWM_CDTYUPD = (g_model.moduleData[port].ppmDelay * 50 + 300) * 2; //Stoplen *2
|
||||||
if (g_model.moduleData[port].ppmPulsePol)
|
if (g_model.moduleData[port].ppmPulsePol)
|
||||||
pwmptr->PWM_CH_NUM[pwmCh].PWM_CMR |= 0x00000200 ; // CPOL
|
pwmptr->PWM_CH_NUM[pwmCh].PWM_CMR |= 0x00000200 ; // CPOL
|
||||||
|
|
|
@ -191,17 +191,14 @@ extern uint32_t readTrims();
|
||||||
#define DBLKEYS_PRESSED_LFT_DWN(i) ((in & (0x40 + 0x08)) == (0x40 + 0x08))
|
#define DBLKEYS_PRESSED_LFT_DWN(i) ((in & (0x40 + 0x08)) == (0x40 + 0x08))
|
||||||
|
|
||||||
// Pulses driver
|
// Pulses driver
|
||||||
#define init_no_pulses(port) init_main_ppm(3000, 0)
|
void init_no_pulses(uint32_t port);
|
||||||
#define disable_no_pulses(port) disable_ppm(0)
|
void disable_no_pulses(uint32_t port);
|
||||||
void init_main_ppm(uint32_t period, uint32_t out_enable);
|
void init_ppm(uint32_t port);
|
||||||
#define init_ppm(port) init_main_ppm(3000, 1)
|
|
||||||
void disable_ppm(uint32_t port);
|
void disable_ppm(uint32_t port);
|
||||||
void init_ssc();
|
void init_pxx(uint32_t port);
|
||||||
void disable_ssc();
|
void disable_pxx(uint32_t port);
|
||||||
#define init_pxx(port) init_main_ppm(5000, 0); init_ssc()
|
void init_dsm2(uint32_t port);
|
||||||
#define disable_pxx(port) disable_ssc()
|
void disable_dsm2(uint32_t port);
|
||||||
#define init_dsm2(port) init_main_ppm(5000, 0); init_ssc()
|
|
||||||
#define disable_dsm2(port) disable_ssc()
|
|
||||||
|
|
||||||
// SD driver
|
// SD driver
|
||||||
#if defined(SIMU)
|
#if defined(SIMU)
|
||||||
|
|
|
@ -48,10 +48,9 @@ void init_main_ppm(uint32_t period, uint32_t out_enable)
|
||||||
register Pio *pioptr ;
|
register Pio *pioptr ;
|
||||||
register Pwm *pwmptr ;
|
register Pwm *pwmptr ;
|
||||||
|
|
||||||
setupPulsesPPM(0) ;
|
setupPulsesPPM(EXTERNAL_MODULE) ;
|
||||||
|
|
||||||
if ( out_enable )
|
if (out_enable) {
|
||||||
{
|
|
||||||
pioptr = PIOA ;
|
pioptr = PIOA ;
|
||||||
pioptr->PIO_ABCDSR[0] &= ~PIO_PA17 ; // Peripheral C
|
pioptr->PIO_ABCDSR[0] &= ~PIO_PA17 ; // Peripheral C
|
||||||
pioptr->PIO_ABCDSR[1] |= PIO_PA17 ; // Peripheral C
|
pioptr->PIO_ABCDSR[1] |= PIO_PA17 ; // Peripheral C
|
||||||
|
@ -61,12 +60,12 @@ void init_main_ppm(uint32_t period, uint32_t out_enable)
|
||||||
pwmptr = PWM ;
|
pwmptr = PWM ;
|
||||||
// PWM3 for PPM output
|
// PWM3 for PPM output
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CMR = 0x0000000B ; // CLKA
|
pwmptr->PWM_CH_NUM[3].PWM_CMR = 0x0000000B ; // CLKA
|
||||||
if (g_model.moduleData[0].ppmPulsePol)
|
if (g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol)
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CMR |= 0x00000200 ; // CPOL
|
pwmptr->PWM_CH_NUM[3].PWM_CMR |= 0x00000200 ; // CPOL
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CPDR = period ; // Period in half uS
|
pwmptr->PWM_CH_NUM[3].PWM_CPDR = period ; // Period in half uS
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = period ; // Period in half uS
|
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = period ; // Period in half uS
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CDTY = g_model.moduleData[0].ppmDelay*100+600; // Duty in half uS
|
pwmptr->PWM_CH_NUM[3].PWM_CDTY = g_model.moduleData[EXTERNAL_MODULE].ppmDelay*100+600; // Duty in half uS
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CDTYUPD = g_model.moduleData[0].ppmDelay*100+600; // Duty in half uS
|
pwmptr->PWM_CH_NUM[3].PWM_CDTYUPD = g_model.moduleData[EXTERNAL_MODULE].ppmDelay*100+600; // Duty in half uS
|
||||||
pwmptr->PWM_ENA = PWM_ENA_CHID3 ; // Enable channel 3
|
pwmptr->PWM_ENA = PWM_ENA_CHID3 ; // Enable channel 3
|
||||||
pwmptr->PWM_IER1 = PWM_IER1_CHID3 ;
|
pwmptr->PWM_IER1 = PWM_IER1_CHID3 ;
|
||||||
|
|
||||||
|
@ -77,12 +76,12 @@ void init_main_ppm(uint32_t period, uint32_t out_enable)
|
||||||
#if !defined(REVA)
|
#if !defined(REVA)
|
||||||
// PWM1 for PPM2
|
// PWM1 for PPM2
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CMR = 0x0000000B ; // CLKB
|
pwmptr->PWM_CH_NUM[1].PWM_CMR = 0x0000000B ; // CLKB
|
||||||
if (g_model.moduleData[0].ppmPulsePol)
|
if (g_model.moduleData[EXTRA_MODULE].ppmPulsePol)
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CMR |= 0x00000200 ; // CPOL
|
pwmptr->PWM_CH_NUM[1].PWM_CMR |= 0x00000200 ; // CPOL
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CPDR = period ; // Period
|
pwmptr->PWM_CH_NUM[1].PWM_CPDR = period ; // Period
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = period ; // Period
|
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = period ; // Period
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CDTY = g_model.moduleData[0].ppmDelay*100+600 ; // Duty
|
pwmptr->PWM_CH_NUM[1].PWM_CDTY = g_model.moduleData[EXTRA_MODULE].ppmDelay*100+600 ; // Duty
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CDTYUPD = g_model.moduleData[0].ppmDelay*100+600 ; // Duty
|
pwmptr->PWM_CH_NUM[1].PWM_CDTYUPD = g_model.moduleData[EXTRA_MODULE].ppmDelay*100+600 ; // Duty
|
||||||
pwmptr->PWM_ENA = PWM_ENA_CHID1 ; // Enable channel 1
|
pwmptr->PWM_ENA = PWM_ENA_CHID1 ; // Enable channel 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -90,11 +89,41 @@ void init_main_ppm(uint32_t period, uint32_t out_enable)
|
||||||
NVIC_EnableIRQ(PWM_IRQn) ;
|
NVIC_EnableIRQ(PWM_IRQn) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void init_no_pulses(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
init_main_ppm(3000, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void disable_no_pulses(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
disable_ppm(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_ppm(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
init_main_ppm(3000, 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void disable_ppm(uint32_t port)
|
void disable_ppm(uint32_t port)
|
||||||
{
|
{
|
||||||
register Pio *pioptr ;
|
register Pio *pioptr ;
|
||||||
|
|
||||||
if (port == 0) {
|
if (port == EXTERNAL_MODULE) {
|
||||||
pioptr = PIOA ;
|
pioptr = PIOA ;
|
||||||
pioptr->PIO_PER = PIO_PA17 ; // Assign A17 to PIO
|
pioptr->PIO_PER = PIO_PA17 ; // Assign A17 to PIO
|
||||||
PWM->PWM_IDR1 = PWM_IDR1_CHID3 ;
|
PWM->PWM_IDR1 = PWM_IDR1_CHID3 ;
|
||||||
|
@ -102,7 +131,6 @@ void disable_ppm(uint32_t port)
|
||||||
else {
|
else {
|
||||||
pioptr = PIOC ;
|
pioptr = PIOC ;
|
||||||
pioptr->PIO_PER = PIO_PC17 ; // Assign A17 to PIO
|
pioptr->PIO_PER = PIO_PC17 ; // Assign A17 to PIO
|
||||||
|
|
||||||
PWM->PWM_IDR1 = PWM_IDR1_CHID1 ;
|
PWM->PWM_IDR1 = PWM_IDR1_CHID1 ;
|
||||||
NVIC_DisableIRQ(PWM_IRQn) ;
|
NVIC_DisableIRQ(PWM_IRQn) ;
|
||||||
}
|
}
|
||||||
|
@ -138,6 +166,48 @@ void disable_ssc()
|
||||||
sscptr->SSC_CR = SSC_CR_TXDIS ;
|
sscptr->SSC_CR = SSC_CR_TXDIS ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void init_pxx(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
init_main_ppm(5000, 0);
|
||||||
|
init_ssc();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void disable_pxx(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
disable_ssc();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_dsm2(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
init_main_ppm(5000, 0);
|
||||||
|
init_ssc();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void disable_dsm2(uint32_t port)
|
||||||
|
{
|
||||||
|
if (port == EXTERNAL_MODULE) {
|
||||||
|
disable_ssc();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if !defined(SIMU)
|
#if !defined(SIMU)
|
||||||
extern "C" void PWM_IRQHandler(void)
|
extern "C" void PWM_IRQHandler(void)
|
||||||
{
|
{
|
||||||
|
@ -149,8 +219,8 @@ extern "C" void PWM_IRQHandler(void)
|
||||||
pwmptr = PWM;
|
pwmptr = PWM;
|
||||||
reason = pwmptr->PWM_ISR1 ;
|
reason = pwmptr->PWM_ISR1 ;
|
||||||
if (reason & PWM_ISR1_CHID3) {
|
if (reason & PWM_ISR1_CHID3) {
|
||||||
switch (s_current_protocol[0]) // Use the current, don't switch until set_up_pulses
|
// Use the current protocol, don't switch until set_up_pulses
|
||||||
{
|
switch (s_current_protocol[EXTERNAL_MODULE]) {
|
||||||
case PROTO_PXX:
|
case PROTO_PXX:
|
||||||
// Alternate periods of 15.5mS and 2.5 mS
|
// Alternate periods of 15.5mS and 2.5 mS
|
||||||
period = pwmptr->PWM_CH_NUM[3].PWM_CPDR;
|
period = pwmptr->PWM_CH_NUM[3].PWM_CPDR;
|
||||||
|
@ -162,13 +232,13 @@ extern "C" void PWM_IRQHandler(void)
|
||||||
}
|
}
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = period; // Period in half uS
|
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = period; // Period in half uS
|
||||||
if (period != 5000) { // 2.5 mS
|
if (period != 5000) { // 2.5 mS
|
||||||
setupPulses(0);
|
setupPulses(EXTERNAL_MODULE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Kick off serial output here
|
// Kick off serial output here
|
||||||
sscptr = SSC;
|
sscptr = SSC;
|
||||||
sscptr->SSC_TPR = CONVERT_PTR_UINT(pxxStream[0]);
|
sscptr->SSC_TPR = CONVERT_PTR_UINT(pxxStream[EXTERNAL_MODULE]);
|
||||||
sscptr->SSC_TCR = (uint8_t *)pxxStreamPtr[0] - (uint8_t *)pxxStream[0];
|
sscptr->SSC_TCR = (uint8_t *)pxxStreamPtr[EXTERNAL_MODULE] - (uint8_t *)pxxStream[EXTERNAL_MODULE];
|
||||||
sscptr->SSC_PTCR = SSC_PTCR_TXTEN; // Start transfers
|
sscptr->SSC_PTCR = SSC_PTCR_TXTEN; // Start transfers
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -198,10 +268,10 @@ extern "C" void PWM_IRQHandler(void)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = ppmStream[0][ppmStreamIndex[0]++]; // Period in half uS
|
pwmptr->PWM_CH_NUM[3].PWM_CPDRUPD = ppmStream[EXTERNAL_MODULE][ppmStreamIndex[EXTERNAL_MODULE]++]; // Period in half uS
|
||||||
if (ppmStream[0][ppmStreamIndex[0]] == 0) {
|
if (ppmStream[EXTERNAL_MODULE][ppmStreamIndex[EXTERNAL_MODULE]] == 0) {
|
||||||
ppmStreamIndex[0] = 0;
|
ppmStreamIndex[EXTERNAL_MODULE] = 0;
|
||||||
setupPulses(0);
|
setupPulses(EXTERNAL_MODULE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -209,10 +279,10 @@ extern "C" void PWM_IRQHandler(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reason & PWM_ISR1_CHID1) {
|
if (reason & PWM_ISR1_CHID1) {
|
||||||
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = ppmStream[1][ppmStreamIndex[1]++] ; // Period in half uS
|
pwmptr->PWM_CH_NUM[1].PWM_CPDRUPD = ppmStream[EXTRA_MODULE][ppmStreamIndex[EXTRA_MODULE]++] ; // Period in half uS
|
||||||
if (ppmStream[1][ppmStreamIndex[1]] == 0) {
|
if (ppmStream[EXTRA_MODULE][ppmStreamIndex[EXTRA_MODULE]] == 0) {
|
||||||
ppmStreamIndex[1] = 0;
|
ppmStreamIndex[EXTRA_MODULE] = 0;
|
||||||
setupPulsesPPM(1);
|
setupPulsesPPM(EXTRA_MODULE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue