Handle both R9M and R9M Lite
This commit is contained in:
@@ -1728,17 +1728,31 @@ void menuModelSetup(event_t event)
|
||||
lcdDrawTextAlignedLeft(y, TR_MULTI_RFPOWER);
|
||||
if (isModuleR9M_FCC_VARIANT(moduleIdx)) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_FCC_POWER_MAX); // Lite FCC has only one setting
|
||||
#if defined(PCBXLITE) && !defined(MODULE_R9M_FULLSIZE) // R9M lite FCC has only one power value, so displayed for info only
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT);
|
||||
if (attr)
|
||||
REPEAT_LAST_CURSOR_MOVE();
|
||||
#else
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_FCC_POWER_MAX);
|
||||
#endif
|
||||
if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_R9M_LITE) { // R9M lite FCC has only one power value, so displayed for info only
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LITE_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT);
|
||||
if (attr)
|
||||
REPEAT_LAST_CURSOR_MOVE();
|
||||
}
|
||||
else {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if (attr)
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_FCC_POWER_MAX);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_R9M_LITE) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_LITE_LBT_POWER_MAX);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LITE_LBT_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if (attr) {
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_LITE_LBT_POWER_MAX);
|
||||
}
|
||||
if (attr && editMode == 0 && reusableBuffer.moduleSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) {
|
||||
if((reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power) < 5) { //switching between mode 2 and 3 does not require rebind
|
||||
POPUP_WARNING(STR_REBIND);
|
||||
}
|
||||
reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power;
|
||||
}
|
||||
}
|
||||
else if (g_model.moduleData[moduleIdx].type == MODULE_TYPE_R9M) {
|
||||
g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_LBT_POWER_MAX);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
||||
if (attr) {
|
||||
|
||||
@@ -160,11 +160,8 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol);
|
||||
|
||||
#define EXTERNAL_MODULE_OPTION_ROW (isModuleR9M(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW)
|
||||
|
||||
#if defined(PCBXLITE) && !defined(MODULE_R9M_FULLSIZE)
|
||||
#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9M(EXTERNAL_MODULE)) ? (isModuleR9M_FCC_VARIANT(EXTERNAL_MODULE) ? TITLE_ROW : (uint8_t) 0) : HIDDEN_ROW
|
||||
#else
|
||||
#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9M(EXTERNAL_MODULE)) ? (uint8_t) 0 : HIDDEN_ROW
|
||||
#endif
|
||||
#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9M(EXTERNAL_MODULE)) ? (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_R9M_LITE ? TITLE_ROW : (uint8_t) 0) : HIDDEN_ROW
|
||||
|
||||
|
||||
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags);
|
||||
|
||||
|
||||
+14
-27
@@ -26,6 +26,7 @@
|
||||
#include "pulses_common.h"
|
||||
#include "pulses/pxx1.h"
|
||||
#include "pulses/pxx2.h"
|
||||
#include "modules.h"
|
||||
|
||||
#if NUM_MODULES > 1
|
||||
#define IS_RANGECHECK_ENABLE() (moduleState[0].mode == MODULE_MODE_RANGECHECK || moduleState[1].mode == MODULE_MODE_RANGECHECK)
|
||||
@@ -353,37 +354,25 @@ inline void SEND_FAILSAFE_1S()
|
||||
// for channels not set previously to HOLD or NOPULSE
|
||||
void setCustomFailsafe(uint8_t moduleIndex);
|
||||
|
||||
#if defined(PCBXLITE) && !defined(MODULE_R9M_FULLSIZE)
|
||||
#define LEN_R9M_REGION "\006"
|
||||
#define TR_R9M_REGION "FCC\0 ""EU\0 ""868MHz""915MHz"
|
||||
#define LEN_R9M_FCC_POWER_VALUES "\010"
|
||||
#define LEN_R9M_LBT_POWER_VALUES "\015"
|
||||
#define TR_R9M_FCC_POWER_VALUES "(100 mW)"
|
||||
#define TR_R9M_LBT_POWER_VALUES "25 mW 8ch\0 ""25 mW 16ch\0 ""100mW no tele"
|
||||
#define LEN_R9MFLEX_FREQ "\006"
|
||||
#define TR_R9MFLEX_FREQ "868Mhz""915Mhz"
|
||||
#define LEN_R9M_LITE_FCC_POWER_VALUES "\010"
|
||||
#define LEN_R9M_LITE_LBT_POWER_VALUES "\015"
|
||||
#define TR_R9M_LITE_FCC_POWER_VALUES "(100 mW)"
|
||||
#define TR_R9M_LITE_LBT_POWER_VALUES "25 mW 8ch\0 ""25 mW 16ch\0 ""100mW no tele"
|
||||
|
||||
enum R9MFCCPowerValues {
|
||||
R9M_FCC_POWER_100 = 0,
|
||||
R9M_FCC_POWER_MAX = R9M_FCC_POWER_100
|
||||
enum R9MLiteFCCPowerValues {
|
||||
R9M_LITE_FCC_POWER_100 = 0,
|
||||
R9M_LITE_FCC_POWER_MAX = R9M_LITE_FCC_POWER_100
|
||||
};
|
||||
|
||||
enum R9MLBTPowerValues {
|
||||
R9M_LBT_POWER_25 = 0,
|
||||
R9M_LBT_POWER_25_16,
|
||||
R9M_LBT_POWER_100,
|
||||
R9M_LBT_POWER_MAX = R9M_LBT_POWER_100
|
||||
enum R9MLiteLBTPowerValues {
|
||||
R9M_LITE_LBT_POWER_25 = 0,
|
||||
R9M_LITE_LBT_POWER_25_16,
|
||||
R9M_LITE_LBT_POWER_100,
|
||||
R9M_LITE_LBT_POWER_MAX = R9M_LITE_LBT_POWER_100
|
||||
};
|
||||
|
||||
#define BIND_TELEM_ALLOWED(idx) (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_100))
|
||||
#define BIND_CH9TO16_ALLOWED(idx) (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power != R9M_LBT_POWER_25)
|
||||
|
||||
#else
|
||||
|
||||
#define LEN_R9M_REGION "\006"
|
||||
#define TR_R9M_REGION "FCC\0 ""EU\0 ""868MHz""915MHz"
|
||||
#define LEN_R9MFLEX_FREQ "\006"
|
||||
#define TR_R9MFLEX_FREQ "868Mhz""915Mhz"
|
||||
#define LEN_R9M_FCC_POWER_VALUES "\006"
|
||||
#define LEN_R9M_LBT_POWER_VALUES "\013"
|
||||
#define TR_R9M_FCC_POWER_VALUES "10 mW\0" "100 mW" "500 mW" "1 W\0"
|
||||
@@ -405,8 +394,6 @@ enum R9MLBTPowerValues {
|
||||
R9M_LBT_POWER_MAX = R9M_LBT_POWER_500
|
||||
};
|
||||
|
||||
#define BIND_TELEM_ALLOWED(idx) (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_200))
|
||||
#define BIND_CH9TO16_ALLOWED(idx) (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power != R9M_LBT_POWER_25)
|
||||
#endif
|
||||
|
||||
#define BIND_TELEM_ALLOWED(idx) (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_R9M) ? (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LBT_POWER_200)) : (!(IS_TELEMETRY_INTERNAL_MODULE() && moduleIdx == EXTERNAL_MODULE) && (!isModuleR9M_LBT(idx) || g_model.moduleData[idx].pxx.power < R9M_LITE_LBT_POWER_100))
|
||||
#endif // _PULSES_H_
|
||||
|
||||
@@ -93,9 +93,10 @@ const char STR_OPEN9X[] =
|
||||
ISTR(VTRAINERMODES)
|
||||
ISTR(MODULE_PROTOCOLS)
|
||||
ISTR(R9M_REGION)
|
||||
ISTR(R9MFLEX_FREQ)
|
||||
ISTR(R9M_FCC_POWER_VALUES)
|
||||
ISTR(R9M_LBT_POWER_VALUES)
|
||||
ISTR(R9M_LITE_FCC_POWER_VALUES)
|
||||
ISTR(R9M_LITE_LBT_POWER_VALUES)
|
||||
ISTR(TELEMETRY_PROTOCOLS)
|
||||
ISTR(XJT_PROTOCOLS)
|
||||
ISTR(DSM_PROTOCOLS)
|
||||
|
||||
@@ -190,10 +190,11 @@ extern const char STR_OPEN9X[];
|
||||
#define OFS_VTRAINERMODES (OFS_VFAILSAFE + sizeof(TR_VFAILSAFE))
|
||||
#define OFS_MODULE_PROTOCOLS (OFS_VTRAINERMODES + sizeof(TR_VTRAINERMODES))
|
||||
#define OFS_R9M_REGION (OFS_MODULE_PROTOCOLS + sizeof(TR_MODULE_PROTOCOLS))
|
||||
#define OFS_R9MFLEX_FREQ (OFS_R9M_REGION + sizeof(TR_R9M_REGION))
|
||||
#define OFS_R9M_FCC_POWER_VALUES (OFS_R9MFLEX_FREQ + sizeof(TR_R9MFLEX_FREQ))
|
||||
#define OFS_R9M_FCC_POWER_VALUES (OFS_R9M_REGION + sizeof(TR_R9M_REGION))
|
||||
#define OFS_R9M_LBT_POWER_VALUES (OFS_R9M_FCC_POWER_VALUES + sizeof(TR_R9M_FCC_POWER_VALUES))
|
||||
#define OFS_TELEMETRY_PROTOCOLS (OFS_R9M_LBT_POWER_VALUES + sizeof(TR_R9M_LBT_POWER_VALUES))
|
||||
#define OFS_R9M_LITE_FCC_POWER_VALUES (OFS_R9M_LBT_POWER_VALUES + sizeof(TR_R9M_LBT_POWER_VALUES))
|
||||
#define OFS_R9M_LITE_LBT_POWER_VALUES (OFS_R9M_LITE_FCC_POWER_VALUES + sizeof(TR_R9M_LITE_FCC_POWER_VALUES))
|
||||
#define OFS_TELEMETRY_PROTOCOLS (OFS_R9M_LITE_LBT_POWER_VALUES + sizeof(TR_R9M_LITE_LBT_POWER_VALUES))
|
||||
#define OFS_XJT_PROTOCOLS (OFS_TELEMETRY_PROTOCOLS + sizeof(TR_TELEMETRY_PROTOCOLS))
|
||||
#define OFS_DSM_PROTOCOLS (OFS_XJT_PROTOCOLS + sizeof(TR_XJT_PROTOCOLS))
|
||||
#if defined(MULTIMODULE)
|
||||
@@ -298,9 +299,10 @@ extern const char STR_OPEN9X[];
|
||||
#define STR_VTRAINERMODES (STR_OPEN9X + OFS_VTRAINERMODES)
|
||||
#define STR_MODULE_PROTOCOLS (STR_OPEN9X + OFS_MODULE_PROTOCOLS)
|
||||
#define STR_R9M_REGION (STR_OPEN9X + OFS_R9M_REGION)
|
||||
#define STR_R9MFLEX_FREQ (STR_OPEN9X + OFS_R9MFLEX_FREQ)
|
||||
#define STR_R9M_FCC_POWER_VALUES (STR_OPEN9X + OFS_R9M_FCC_POWER_VALUES)
|
||||
#define STR_R9M_LBT_POWER_VALUES (STR_OPEN9X + OFS_R9M_LBT_POWER_VALUES)
|
||||
#define STR_R9M_LITE_FCC_POWER_VALUES (STR_OPEN9X + OFS_R9M_LITE_FCC_POWER_VALUES)
|
||||
#define STR_R9M_LITE_LBT_POWER_VALUES (STR_OPEN9X + OFS_R9M_LITE_LBT_POWER_VALUES)
|
||||
#define STR_TELEMETRY_PROTOCOLS (STR_OPEN9X + OFS_TELEMETRY_PROTOCOLS)
|
||||
#define STR_XJT_PROTOCOLS (STR_OPEN9X + OFS_XJT_PROTOCOLS)
|
||||
#define STR_DSM_PROTOCOLS (STR_OPEN9X + OFS_DSM_PROTOCOLS)
|
||||
|
||||
Reference in New Issue
Block a user