mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
R9M Lite Pro fixes
This commit is contained in:
parent
2ac0fc1bdd
commit
575d87f70c
3 changed files with 40 additions and 23 deletions
|
@ -1525,51 +1525,53 @@ void menuModelSetup(event_t event)
|
||||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_POWER:
|
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_POWER:
|
||||||
{
|
{
|
||||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||||
if (isModuleR9MNonAccess(moduleIdx)) {
|
auto & module = g_model.moduleData[moduleIdx];
|
||||||
|
|
||||||
|
if (isModuleTypeR9MNonAccess(module.type)) {
|
||||||
lcdDrawTextAlignedLeft(y, TR_MULTI_RFPOWER);
|
lcdDrawTextAlignedLeft(y, TR_MULTI_RFPOWER);
|
||||||
if (isModuleR9M_FCC_VARIANT(moduleIdx)) {
|
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
|
module.pxx.power = min((uint8_t)module.pxx.power, (uint8_t)R9M_FCC_POWER_MAX); // Lite FCC has only one setting
|
||||||
if (isModuleR9MLite(moduleIdx)) { // R9M lite FCC has only one power value, so displayed for info only
|
if (isModuleTypeR9MLiteNonPro(module.type)) { // 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);
|
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LITE_FCC_POWER_VALUES, module.pxx.power, LEFT);
|
||||||
if (attr)
|
if (attr)
|
||||||
REPEAT_LAST_CURSOR_MOVE();
|
REPEAT_LAST_CURSOR_MOVE();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, g_model.moduleData[moduleIdx].pxx.power, LEFT | attr);
|
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_FCC_POWER_VALUES, module.pxx.power, LEFT | attr);
|
||||||
if (attr)
|
if (attr)
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_FCC_POWER_MAX);
|
CHECK_INCDEC_MODELVAR_ZERO(event, module.pxx.power, R9M_FCC_POWER_MAX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (isModuleR9MLite(moduleIdx)) {
|
else if (isModuleTypeR9MLiteNonPro(module.type)) {
|
||||||
g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_LITE_LBT_POWER_MAX);
|
module.pxx.power = min((uint8_t)module.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);
|
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LITE_LBT_POWER_VALUES, module.pxx.power, LEFT | attr);
|
||||||
if (attr) {
|
if (attr) {
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_LITE_LBT_POWER_MAX);
|
CHECK_INCDEC_MODELVAR_ZERO(event, module.pxx.power, R9M_LITE_LBT_POWER_MAX);
|
||||||
}
|
}
|
||||||
if (attr && s_editMode == 0 && reusableBuffer.moduleSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) {
|
if (attr && s_editMode == 0 && reusableBuffer.moduleSetup.r9mPower != module.pxx.power) {
|
||||||
if (reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power < 5) { //switching between mode 2 and 3 does not require rebind
|
if (reusableBuffer.moduleSetup.r9mPower + module.pxx.power < 5) { //switching between mode 2 and 3 does not require rebind
|
||||||
POPUP_WARNING(STR_REBIND);
|
POPUP_WARNING(STR_REBIND);
|
||||||
}
|
}
|
||||||
reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power;
|
reusableBuffer.moduleSetup.r9mPower = module.pxx.power;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g_model.moduleData[moduleIdx].pxx.power = min((uint8_t)g_model.moduleData[moduleIdx].pxx.power, (uint8_t)R9M_LBT_POWER_MAX);
|
module.pxx.power = min((uint8_t)module.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);
|
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9M_LBT_POWER_VALUES, module.pxx.power, LEFT | attr);
|
||||||
if (attr) {
|
if (attr) {
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[moduleIdx].pxx.power, R9M_LBT_POWER_MAX);
|
CHECK_INCDEC_MODELVAR_ZERO(event, module.pxx.power, R9M_LBT_POWER_MAX);
|
||||||
}
|
}
|
||||||
if (attr && s_editMode == 0 && reusableBuffer.moduleSetup.r9mPower != g_model.moduleData[moduleIdx].pxx.power) {
|
if (attr && s_editMode == 0 && reusableBuffer.moduleSetup.r9mPower != module.pxx.power) {
|
||||||
if (reusableBuffer.moduleSetup.r9mPower + g_model.moduleData[moduleIdx].pxx.power < 5) { //switching between mode 2 and 3 does not require rebind
|
if (reusableBuffer.moduleSetup.r9mPower + module.pxx.power < 5) { //switching between mode 2 and 3 does not require rebind
|
||||||
POPUP_WARNING(STR_REBIND);
|
POPUP_WARNING(STR_REBIND);
|
||||||
}
|
}
|
||||||
reusableBuffer.moduleSetup.r9mPower = g_model.moduleData[moduleIdx].pxx.power;
|
reusableBuffer.moduleSetup.r9mPower = module.pxx.power;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if defined(MULTIMODULE)
|
#if defined(MULTIMODULE)
|
||||||
else if (isModuleMultimodule(moduleIdx)) {
|
else if (isModuleMultimodule(moduleIdx)) {
|
||||||
g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode = editCheckBox(g_model.moduleData[EXTERNAL_MODULE].multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_LOWPOWER, attr, event);
|
module.multi.lowPowerMode = editCheckBox(module.multi.lowPowerMode, MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_LOWPOWER, attr, event);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "keys.h"
|
#include "keys.h"
|
||||||
|
#include "telemetry/telemetry_sensors.h"
|
||||||
|
|
||||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||||
#define CASE_EVT_ROTARY_LEFT case EVT_ROTARY_LEFT:
|
#define CASE_EVT_ROTARY_LEFT case EVT_ROTARY_LEFT:
|
||||||
|
@ -90,7 +91,6 @@ void drawFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0);
|
||||||
|
|
||||||
swsrc_t checkIncDecMovedSwitch(swsrc_t val);
|
swsrc_t checkIncDecMovedSwitch(swsrc_t val);
|
||||||
|
|
||||||
#include "telemetry/telemetry_sensors.h"
|
|
||||||
void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags flags);
|
void drawValueWithUnit(coord_t x, coord_t y, int val, uint8_t unit, LcdFlags flags);
|
||||||
void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags flags=0);
|
void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags flags=0);
|
||||||
void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0);
|
void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0);
|
||||||
|
@ -160,7 +160,7 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol);
|
||||||
|
|
||||||
#define EXTERNAL_MODULE_OPTION_ROW (isModuleR9MNonAccess(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW)
|
#define EXTERNAL_MODULE_OPTION_ROW (isModuleR9MNonAccess(EXTERNAL_MODULE) || isModuleSBUS(EXTERNAL_MODULE) ? TITLE_ROW : MULTIMODULE_OPTIONS_ROW)
|
||||||
|
|
||||||
#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9MNonAccess(EXTERNAL_MODULE)) ? (isModuleR9MLite(EXTERNAL_MODULE) ? TITLE_ROW : (uint8_t) 0) : HIDDEN_ROW
|
#define EXTERNAL_MODULE_POWER_ROW (isModuleMultimodule(EXTERNAL_MODULE) || isModuleR9MNonAccess(EXTERNAL_MODULE)) ? (isModuleR9MLiteNonPro(EXTERNAL_MODULE) ? TITLE_ROW : (uint8_t) 0) : HIDDEN_ROW
|
||||||
|
|
||||||
|
|
||||||
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags);
|
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags);
|
||||||
|
|
|
@ -137,9 +137,24 @@ inline bool isModuleR9M(uint8_t idx)
|
||||||
return isModuleTypeR9M(g_model.moduleData[idx].type);
|
return isModuleTypeR9M(g_model.moduleData[idx].type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool isModuleTypeR9MLiteNonPro(uint8_t type)
|
||||||
|
{
|
||||||
|
return type == MODULE_TYPE_R9M_LITE_PXX1 || type == MODULE_TYPE_R9M_LITE_PXX2;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool isModuleR9MLiteNonPro(uint8_t idx)
|
||||||
|
{
|
||||||
|
return isModuleTypeR9MLiteNonPro(g_model.moduleData[idx].type);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool isModuleTypeR9MLitePro(uint8_t type)
|
||||||
|
{
|
||||||
|
return type == MODULE_TYPE_R9M_LITE_PRO_PXX1 || type == MODULE_TYPE_R9M_LITE_PRO_PXX2;
|
||||||
|
}
|
||||||
|
|
||||||
inline bool isModuleTypeR9MLite(uint8_t type)
|
inline bool isModuleTypeR9MLite(uint8_t type)
|
||||||
{
|
{
|
||||||
return type == MODULE_TYPE_R9M_LITE_PXX1 || type == MODULE_TYPE_R9M_LITE_PXX2 || type == MODULE_TYPE_R9M_LITE_PRO_PXX1 || type == MODULE_TYPE_R9M_LITE_PRO_PXX2;
|
return isModuleTypeR9MLiteNonPro(type) || isModuleTypeR9MLitePro(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool isModuleR9MLite(uint8_t idx)
|
inline bool isModuleR9MLite(uint8_t idx)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue