Fixes for X7

This commit is contained in:
Bertrand Songis
2019-02-08 09:00:02 +01:00
parent d4ec909875
commit 7b58cc2e69
5 changed files with 71 additions and 54 deletions
+61 -50
View File
@@ -74,22 +74,24 @@ enum MenuModelSetupItems {
#if defined(PCBTARANIS)
ITEM_MODEL_INTERNAL_MODULE_LABEL,
ITEM_MODEL_INTERNAL_MODULE_MODE,
ITEM_MODEL_INTERNAL_MODULE_MODEL_NUM,
ITEM_MODEL_INTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_INTERNAL_MODULE_RANGE_REG,
ITEM_MODEL_INTERNAL_MODULE_NPXX2_CHANNELS,
ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND,
ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM,
#if defined(EXTERNAL_ANTENNA)
ITEM_MODEL_INTERNAL_MODULE_ANTENNA,
#endif
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_NUMBER,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_RANGE,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_TELEM,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_BIND,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_NUMBER,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_RANGE,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_TELEM,
ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_BIND,
ITEM_MODEL_INTERNAL_MODULE_ADD_RECEIVER,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_NUMBER,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_RANGE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_TELEM,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NUMBER,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_RANGE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_TELEM,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND,
ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER,
#endif
ITEM_MODEL_INTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_EXTERNAL_MODULE_LABEL,
ITEM_MODEL_EXTERNAL_MODULE_MODE,
#if defined(MULTIMODULE)
@@ -144,14 +146,14 @@ enum MenuModelSetupItems {
#define MODEL_SETUP_RANGE_OFS 4*FW+3
#define MODEL_SETUP_SET_FAILSAFE_OFS 7*FW-2
#define IF_PXX2(x) (IS_PXX2_ENABLED() ? (uint8_t)(x) : HIDDEN_ROW)
#define IF_PXX2(xxx) (IS_PXX2_ENABLED() ? (uint8_t)(xxx) : HIDDEN_ROW)
#define IF_NOT_PXX2(xxx) (IS_PXX2_ENABLED() ? HIDDEN_ROW : (uint8_t)(xxx))
#define IF_PXX2_RECEIVER_DISPLAYED(module, idx, xxx) ((IS_PXX2_ENABLED() && g_model.moduleData[module].pxx2.receivers[idx].enabled) ? (uint8_t)(xxx) : HIDDEN_ROW)
#if defined(PCBTARANIS)
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE)
#define CURRENT_RECEIVER_EDITED(k) (k >= ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_NUMBER ? 1 : 0)
#define CURRENT_RECEIVER_EDITED(k) (k >= ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NUMBER ? 1 : 0)
#define INTERNAL_MODULE_ADD_RECEIVER_ROW (g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[MAX_RECEIVERS_PER_MODULE-1].enabled ? HIDDEN_ROW : (uint8_t)0)
#define IF_INTERNAL_MODULE_RECEIVER_1_ON(x) (g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[0].enabled ? (uint8_t)(x) : HIDDEN_ROW)
#define IF_INTERNAL_MODULE_RECEIVER_2_ON(x) (g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[1].enabled ? (uint8_t)(x) : HIDDEN_ROW)
#elif defined(PCBSKY9X) && !defined(REVA)
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
#else
@@ -184,8 +186,10 @@ enum MenuModelSetupItems {
#if defined(PCBXLITE)
#define EXTERNAL_MODULE_MODE_ROWS (isModulePXX(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0
#define EXTERNAL_MODULE_FREQ_ROW
#else
#define EXTERNAL_MODULE_MODE_ROWS (isModuleXJT(EXTERNAL_MODULE) || isModuleDSM2(EXTERNAL_MODULE) || isModuleMultimodule(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0
#define EXTERNAL_MODULE_FREQ_ROW isR9MMFlex(EXTERNAL_MODULE) ? (uint8_t)1: (uint8_t)HIDDEN_ROW,
#endif
#define CURSOR_ON_CELL (true)
@@ -195,10 +199,8 @@ enum MenuModelSetupItems {
#if defined(PCBSKY9X) && !defined(REVA)
#define EXTRA_MODULE_ROWS LABEL(ExtraModule), 1, 2,
#elif defined(PCBXLITE)
#define EXTRA_MODULE_ROWS
#else
#define EXTRA_MODULE_ROWS isR9MMFlex(EXTERNAL_MODULE) ? (uint8_t)1: (uint8_t)HIDDEN_ROW,
#define EXTRA_MODULE_ROWS
#endif
#if defined(PCBX7)
@@ -303,31 +305,34 @@ void menuModelSetup(event_t event)
IF_PXX2(PXX2_LEN_REGISTRATION_ID - 1), // Registration ID
LABEL(InternalModule),
INTERNAL_MODULE_MODE_ROWS,
IF_INTERNAL_MODULE_ON((uint8_t)0), // Model Number
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), // Failsafe
IF_INTERNAL_MODULE_ON((uint8_t)1), // Range check and receiver register
INTERNAL_MODULE_MODE_ROWS, // module mode (PXX(2) / None)
IF_NOT_PXX2(IF_INTERNAL_MODULE_ON(1)), // Channels min and count
IF_NOT_PXX2(IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)),
IF_PXX2(0), // Model Number
ANTENNA_ROW
IF_INTERNAL_MODULE_RECEIVER_1_ON((uint8_t)0), // Receiver Number
IF_INTERNAL_MODULE_RECEIVER_1_ON((uint8_t)0), // Receiver Range
IF_INTERNAL_MODULE_RECEIVER_1_ON((uint8_t)0), // Receiver Telemetry
IF_INTERNAL_MODULE_RECEIVER_1_ON((uint8_t)1), // Receiver Bind/Delete
IF_INTERNAL_MODULE_RECEIVER_2_ON((uint8_t)0), // Receiver Number
IF_INTERNAL_MODULE_RECEIVER_2_ON((uint8_t)0), // Receiver Range
IF_INTERNAL_MODULE_RECEIVER_2_ON((uint8_t)0), // Receiver Telemetry
IF_INTERNAL_MODULE_RECEIVER_2_ON((uint8_t)1), // Receiver Bind/Delete
IF_INTERNAL_MODULE_ON(INTERNAL_MODULE_ADD_RECEIVER_ROW),
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 1), // Range check and Register buttons
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Number
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Range
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Telemetry
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 1), // Receiver Bind/Delete
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Number
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Range
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Telemetry
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 1), // Receiver Bind/Delete
IF_PXX2(INTERNAL_MODULE_ADD_RECEIVER_ROW),
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)),
LABEL(ExternalModule),
EXTERNAL_MODULE_MODE_ROWS,
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE)
MULTIMODULE_STATUS_ROWS
EXTERNAL_MODULE_CHANNELS_ROWS,
EXTERNAL_MODULE_BIND_ROWS(),
EXTERNAL_MODULE_BIND_ROWS(), // line reused for PPM: PPM settings
OUTPUT_TYPE_ROWS()
EXTERNAL_MODULE_OPTION_ROW,
MULTIMODULE_MODULE_ROWS
EXTERNAL_MODULE_POWER_ROW,
EXTERNAL_MODULE_FREQ_ROW
FAILSAFE_ROWS(EXTERNAL_MODULE),
TRAINER_ROWS
@@ -753,12 +758,10 @@ void menuModelSetup(event_t event)
case ITEM_MODEL_INTERNAL_MODULE_MODE:
lcdDrawTextAlignedLeft(y, STR_MODE);
#warning "TR_TARANIS_PROTOCOLS changes need to be ported to all languages"
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_TARANIS_PROTOCOLS, g_model.moduleData[INTERNAL_MODULE].type, attr);
if (attr) {
g_model.moduleData[INTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_XJT, EE_MODEL, isInternalModuleAvailable);
if (checkIncDec_Ret) {
/* ToDo : what needs to happen on module enable/disable */
}
g_model.moduleData[INTERNAL_MODULE].type = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable);
}
break;
#endif
@@ -977,6 +980,10 @@ void menuModelSetup(event_t event)
break;
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_NPXX2_CHANNELS:
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_CHANNELS:
#endif
@@ -1045,7 +1052,7 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_INTERNAL_MODULE_MODEL_NUM:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_MODEL_NUM:
lcdDrawTextAlignedLeft(y, STR_RECEIVER_NUM);
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId[INTERNAL_MODULE], attr | LEADING0|LEFT, 2);
if (attr) {
@@ -1056,14 +1063,14 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_RANGE_REG:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER:
lcdDrawTextAlignedLeft(y, INDENT "Module");
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_RANGE, (menuHorizontalPosition==0 ? attr : 0) );
lcdDrawText(lcdLastRightPos, y, "[Reg]", (menuHorizontalPosition==1 ? attr : 0) );
if (attr && s_editMode>0 && menuHorizontalPosition == 0 ) {
moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_RANGECHECK;
}
if(attr && menuHorizontalPosition == 1) {
if (attr && menuHorizontalPosition == 1) {
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_REGISTER;
}
@@ -1079,7 +1086,7 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_ADD_RECEIVER:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER:
lcdDrawTextAlignedLeft(y, "Receiver");
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, "[Add]", attr);
if (attr && s_editMode>0) {
@@ -1095,8 +1102,8 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_NUMBER:
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_NUMBER:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_NUMBER:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NUMBER:
{
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
lcdDrawTextAlignedLeft(y, "Receiver");
@@ -1108,8 +1115,8 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_RANGE:
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_RANGE:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_RANGE:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_RANGE:
{
// TODO have a proper channel assignement screen, section bellow is just for tests
uint8_t useUpperChannels;
@@ -1129,16 +1136,16 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_TELEM:
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_TELEM:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_TELEM:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_TELEM:
{
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[receiverIdx].telemetry = editCheckBox(g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[receiverIdx].telemetry, MODEL_SETUP_2ND_COLUMN, y, INDENT "Telemetry", attr, event);
}
break;
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_1_BIND:
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_BIND:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND:
{
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
lcdDrawTextAlignedLeft(y, INDENT "Receiver");
@@ -1183,6 +1190,10 @@ void menuModelSetup(event_t event)
}
break;
#endif
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND:
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_BIND:
#endif
@@ -1596,7 +1607,7 @@ void menuModelSetup(event_t event)
if (old_editMode > 0 && s_editMode == 0) {
switch(menuVerticalPosition) {
#if defined(PCBTARANIS)
case ITEM_MODEL_INTERNAL_MODULE_MODEL_NUM:
case ITEM_MODEL_INTERNAL_MODULE_NPXX2_BIND:
if (menuHorizontalPosition == 0)
checkModelIdUnique(g_eeGeneral.currModel, INTERNAL_MODULE);
break;
+5 -2
View File
@@ -517,9 +517,12 @@ bool isR9MMFlex(int module)
bool isInternalModuleAvailable(int module)
{
if (module == MODULE_TYPE_NONE || module == MODULE_TYPE_XJT) {
if (module == MODULE_TYPE_NONE)
return true;
}
if (module == (IS_PXX2_ENABLED() ? MODULE_TYPE_XJT2 : MODULE_TYPE_XJT))
return true;
return false;
}
+2
View File
@@ -414,11 +414,13 @@ enum ModuleTypes {
MODULE_TYPE_NONE = 0,
MODULE_TYPE_PPM,
MODULE_TYPE_XJT,
MODULE_TYPE_XJT2,
MODULE_TYPE_DSM2,
MODULE_TYPE_CROSSFIRE,
MODULE_TYPE_MULTIMODULE,
MODULE_TYPE_R9M,
MODULE_TYPE_SBUS,
MODULE_TYPE_MAX = MODULE_TYPE_SBUS,
MODULE_TYPE_COUNT
};
+2 -1
View File
@@ -456,7 +456,6 @@ extern HardwareOptions hardwareOptions;
#if defined(STICKS_PWM)
#define NUM_PWMSTICKS 4
#define STICKS_PWM_ENABLED() (!hardwareOptions.sticksPwmDisabled)
void sticksPwmInit(void);
void sticksPwmRead(uint16_t * values);
@@ -489,7 +488,9 @@ enum CalibratedAnalogs {
#else
#define IS_POT(x) ((x)>=POT_FIRST && (x)<=POT_LAST)
#endif
#define IS_SLIDER(x) ((x)>POT_LAST && (x)<TX_VOLTAGE)
void adcInit(void);
void adcRead(void);
extern uint16_t adcValues[NUM_ANALOGS];
+1 -1
View File
@@ -105,7 +105,7 @@
#define TR_JACKMODES "Ask\0 ""Audio\0 ""Trainer"
#define LEN_TARANIS_PROTOCOLS "\004"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""DSM2""CRSF""MULT""R9M\0""SBUS"
#define TR_TARANIS_PROTOCOLS "OFF\0""PPM\0""XJT\0""XJT2""DSM2""CRSF""MULT""R9M\0""SBUS"
#define LEN_TELEMETRY_PROTOCOLS "\017"
#define TR_TELEMETRY_PROTOCOLS "FrSky S.PORT\0 ""FrSky D\0 ""FrSky D (cable)""TBS Crossfire\0 ""Spektrum\0 ""AFHDS2A IBUS\0 ""Multi Telemetry"