Issue 119 fixed

Issue 120 fixed
Issue 121 fixed
This commit is contained in:
bsongis@gmail.com
2013-08-26 17:56:19 +00:00
parent 9c0b09855c
commit 102d069400
4 changed files with 29 additions and 21 deletions
+26 -16
View File
@@ -920,15 +920,16 @@ void menuModelSetup(uint8_t event)
#define IF_TRAINER_ON(x) (g_model.trainerMode ? (uint8_t)(x) : HIDDEN_ROW)
#define IF_PORT_ON(idx, x) (idx==0 ? IS_PORT1_ON(x) : (idx==1 ? IS_PORT2_ON(x) : IS_TRAINER_ON()))
#define IF_PORT2_XJT(x) (IS_MODULE_XJT(1) ? (uint8_t)x : HIDDEN_ROW)
#define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8)
#define PORT1_CHANNELS_ROWS() IF_PORT1_ON(1)
#define PORT2_CHANNELS_ROWS() IF_PORT2_ON(g_model.externalModule == MODULE_TYPE_DJT ? (uint8_t)0 : (IS_MODULE_DSM2(1) ? (uint8_t)0 : ((uint8_t)1)))
#define PORT2_CHANNELS_ROWS() IF_PORT2_ON(IS_MODULE_DSM2(1) ? (uint8_t)0 : (uint8_t)1)
#define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1)
#define PORT_CHANNELS_ROWS(x) (x==0 ? PORT1_CHANNELS_ROWS() : (x==1 ? PORT2_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 MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX)
bool CURSOR_ON_CELL = (m_posHorz >= 0);
MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_PORT1_ON(1), IF_PORT1_ON(2), IF_PORT1_ON(FAILSAFE_ROWS(0)), LABEL(ExternalModule), (g_model.externalModule==MODULE_TYPE_XJT || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, PORT2_CHANNELS_ROWS(), (IS_MODULE_PPM(1) || IS_MODULE_XJT(1) || IS_MODULE_DSM2(1)) ? (uint8_t)2 : HIDDEN_ROW, IF_PORT2_XJT(FAILSAFE_ROWS(1)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)});
MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_PORT1_ON(1), IF_PORT1_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_PORT1_ON(FAILSAFE_ROWS(0)), LABEL(ExternalModule), (g_model.externalModule==MODULE_TYPE_XJT || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, PORT2_CHANNELS_ROWS(), (IS_MODULE_XJT(1) && IS_D8_RX(1)) ? (uint8_t)1 : (IS_MODULE_PPM(1) || IS_MODULE_XJT(1) || IS_MODULE_DSM2(1)) ? (uint8_t)2 : HIDDEN_ROW, IF_PORT2_XJT(FAILSAFE_ROWS(1)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)});
#elif defined(CPUM64)
#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)
@@ -1193,7 +1194,7 @@ void menuModelSetup(uint8_t event)
case ITEM_MODEL_EXTERNAL_MODULE_MODE:
lcd_putsLeft(y, STR_MODULE);
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, PSTR("\004""OFF\0""PPM\0""XJT\0""DJT\0""DSM2"), g_model.externalModule, m_posHorz==0 ? attr : 0);
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, PSTR("\004""OFF\0""PPM\0""XJT\0""DSM2"), g_model.externalModule, m_posHorz==0 ? attr : 0);
if (g_model.externalModule == MODULE_TYPE_XJT)
lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN+5*FW, y, PSTR("\004""OFF\0""D16\0""D8\0 ""LR12"), 1+g_model.moduleData[EXTERNAL_MODULE].rfProtocol, m_posHorz==1 ? attr : 0);
else if (IS_MODULE_DSM2(EXTERNAL_MODULE))
@@ -1280,10 +1281,19 @@ void menuModelSetup(uint8_t event)
}
}
else {
lcd_putsLeft(y, STR_RXNUM);
horzpos_t l_posHorz = m_posHorz;
uint8_t xOffsetBind = 3*FW;
if (IS_MODULE_XJT(moduleIdx) && IS_D8_RX(moduleIdx)) {
xOffsetBind = 0;
lcd_putsLeft(y, INDENT "Receiver");
if (attr) l_posHorz += 1;
}
else {
lcd_putsLeft(y, STR_RXNUM);
}
if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) {
lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (m_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
if (attr && m_posHorz==0) {
if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2);
if (attr && l_posHorz==0) {
if (editMode>0 || p1valdiff) {
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, 63);
if (checkIncDec_Ret)
@@ -1292,14 +1302,14 @@ void menuModelSetup(uint8_t event)
if (editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER))
checkModelIdUnique(g_eeGeneral.currModel);
}
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MODULE_BIND, m_posHorz==1 ? attr : 0);
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, STR_MODULE_RANGE, m_posHorz==2 ? attr : 0);
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0);
lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+7*FW+xOffsetBind, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0);
if (IS_MODULE_XJT(moduleIdx)) {
uint8_t newFlag = 0;
if (attr && m_posHorz>0 && s_editMode>0) {
if (m_posHorz == 1)
if (attr && l_posHorz>0 && s_editMode>0) {
if (l_posHorz == 1)
newFlag = PXX_SEND_RXNUM;
else if (m_posHorz == 2) {
else if (l_posHorz == 2) {
newFlag = PXX_SEND_RANGECHECK;
}
}
@@ -1308,10 +1318,10 @@ void menuModelSetup(uint8_t event)
#if defined(DSM2)
else {
uint8_t newFlag = 0;
if (attr && m_posHorz>0 && s_editMode>0) {
if (m_posHorz == 1)
if (attr && l_posHorz>0 && s_editMode>0) {
if (l_posHorz == 1)
newFlag = DSM2_BIND_FLAG;
else if (m_posHorz == 2) {
else if (l_posHorz == 2) {
newFlag = DSM2_RANGECHECK_FLAG;
}
}
@@ -3567,7 +3577,7 @@ void menuModelLimits(uint8_t event)
#else
lcd_outdezAtt(LIMITS_MIN_POS, y, (int8_t)(ld->min-100), attr);
#endif
if (active) ld->min = 100 + checkIncDecModel(event, ld->min-100, -limit, 25);
if (active) ld->min = 100 + checkIncDecModel(event, ld->min-100, -limit, 0);
break;
case ITEM_LIMITS_MAX:
#if defined(PPM_UNIT_US)
@@ -3575,7 +3585,7 @@ void menuModelLimits(uint8_t event)
#else
lcd_outdezAtt(LIMITS_MAX_POS, y, (int8_t)(ld->max+100), attr);
#endif
if (active) ld->max = -100 + checkIncDecModel(event, ld->max+100, -25, limit);
if (active) ld->max = -100 + checkIncDecModelZero(event, ld->max+100, limit);
break;
case ITEM_LIMITS_DIRECTION:
{
+2 -2
View File
@@ -332,7 +332,7 @@ void displayTimers()
putsTime(TIMERS_X, TIMER1_Y, timerState.val, MIDSIZE|LEFT, MIDSIZE|LEFT);
putsTmrMode(TIMERS_X, TIMER1_Y-6, g_model.timers[0].mode, STRCONDENSED|SMLSIZE);
if (g_model.timers[0].persistent) lcd_putcAtt(TIMERS_R, TIMER1_Y+1, 'P', SMLSIZE);
if (timerState.val <= 0) {
if (timerState.val < 0) {
if (BLINK_ON_PHASE) {
lcd_filled_rect(TIMERS_X-7, TIMER1_Y-7, 60, 19);
}
@@ -345,7 +345,7 @@ void displayTimers()
putsTime(TIMERS_X, TIMER2_Y, timerState.val, MIDSIZE|LEFT, MIDSIZE|LEFT);
putsTmrMode(TIMERS_X, TIMER2_Y-6, g_model.timers[1].mode, STRCONDENSED|SMLSIZE);
if (g_model.timers[1].persistent) lcd_putcAtt(TIMERS_R, TIMER2_Y+1, 'P', SMLSIZE);
if (timerState.val <= 0) {
if (timerState.val < 0) {
if (BLINK_ON_PHASE) {
lcd_filled_rect(TIMERS_X-7, TIMER2_Y-7, 60, 19);
}
+1 -2
View File
@@ -159,7 +159,7 @@ PACK(typedef struct t_TrainerMix {
uint8_t srcChn:6; // 0-7 = ch1-8
uint8_t mode:2; // off,add-mode,subst-mode
int8_t studWeight;
}) TrainerMix; //
}) TrainerMix;
PACK(typedef struct t_TrainerData {
int16_t calib[4];
@@ -1255,7 +1255,6 @@ enum ModuleTypes {
MODULE_TYPE_NONE = 0,
MODULE_TYPE_PPM,
MODULE_TYPE_XJT,
MODULE_TYPE_DJT,
#if defined(DSM2)
MODULE_TYPE_DSM2,
#endif
-1
View File
@@ -57,7 +57,6 @@ void setupPulses(unsigned int port)
required_protocol = PROTO_PPM;
break;
case MODULE_TYPE_XJT:
case MODULE_TYPE_DJT:
required_protocol = PROTO_PXX;
break;
#if defined(DSM2)