X7 POC for R9 region sensing
This commit is contained in:
@@ -97,6 +97,7 @@ enum MenuModelSetupItems {
|
||||
ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND,
|
||||
#endif
|
||||
ITEM_MODEL_EXTERNAL_MODULE_POWER,
|
||||
ITEM_MODEL_EXTERNAL_MODULE_FREQ,
|
||||
#if defined(PCBSKY9X) && !defined(REVA)
|
||||
ITEM_MODEL_EXTRA_MODULE_LABEL,
|
||||
ITEM_MODEL_EXTRA_MODULE_CHANNELS,
|
||||
@@ -170,7 +171,7 @@ enum MenuModelSetupItems {
|
||||
#if defined(PCBSKY9X) && !defined(REVA)
|
||||
#define EXTRA_MODULE_ROWS LABEL(ExtraModule), 1, 2,
|
||||
#else
|
||||
#define EXTRA_MODULE_ROWS
|
||||
#define EXTRA_MODULE_ROWS isR9MMFlex(EXTERNAL_MODULE) ? (uint8_t)1: (uint8_t)HIDDEN_ROW
|
||||
#endif
|
||||
|
||||
#if defined(PCBX7)
|
||||
@@ -273,7 +274,7 @@ void menuModelSetup(event_t event)
|
||||
EXTERNAL_MODULE_OPTION_ROW,
|
||||
MULTIMODULE_MODULE_ROWS
|
||||
EXTERNAL_MODULE_POWER_ROW,
|
||||
EXTRA_MODULE_ROWS
|
||||
EXTRA_MODULE_ROWS,
|
||||
FAILSAFE_ROWS(EXTERNAL_MODULE),
|
||||
TRAINER_ROWS });
|
||||
#else
|
||||
@@ -728,7 +729,7 @@ void menuModelSetup(event_t event)
|
||||
else if (isModuleDSM2(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_DSM_PROTOCOLS, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, menuHorizontalPosition==1 ? attr : 0);
|
||||
else if (isR9ModuleRunning(EXTERNAL_MODULE))
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType, (menuHorizontalPosition==1 ? attr : 0));
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN+5*FW, y, STR_R9M_REGION, g_model.moduleData[EXTERNAL_MODULE].subType & 0x03, (menuHorizontalPosition==1 ? attr : 0));
|
||||
#if defined(MULTIMODULE)
|
||||
else if (isModuleMultimodule(EXTERNAL_MODULE)) {
|
||||
int multi_rfProto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false);
|
||||
@@ -755,16 +756,6 @@ void menuModelSetup(event_t event)
|
||||
case 1:
|
||||
if (isModuleDSM2(EXTERNAL_MODULE))
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX);
|
||||
else if (isModuleR9M(EXTERNAL_MODULE)) {
|
||||
uint8_t newR9MType = checkIncDec(event, g_model.moduleData[EXTERNAL_MODULE].subType, MODULE_SUBTYPE_R9M_FCC, MODULE_SUBTYPE_R9M_LAST, EE_MODEL, isR9MModeAvailable);
|
||||
if (newR9MType != g_model.moduleData[EXTERNAL_MODULE].subType && newR9MType > MODULE_SUBTYPE_R9M_EU) {
|
||||
POPUP_WARNING(STR_R9MFLEXWARN1);
|
||||
const char * w = STR_R9MFLEXWARN2;
|
||||
SET_WARNING_INFO(w, strlen(w), 0);
|
||||
}
|
||||
g_model.moduleData[EXTERNAL_MODULE].subType = newR9MType;
|
||||
}
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
else if (isModuleMultimodule(EXTERNAL_MODULE)) {
|
||||
int multiRfProto = g_model.moduleData[EXTERNAL_MODULE].multi.customProto == 1 ? MM_RF_PROTO_CUSTOM : g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(false);
|
||||
@@ -1191,10 +1182,7 @@ void menuModelSetup(event_t event)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (isModuleR9M(moduleIdx)) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, TR_R9MFLEX_FREQ, BF_GET(g_model.moduleData[EXTERNAL_MODULE].subType, 0, 1), attr);
|
||||
}
|
||||
else if (isModuleSBUS(moduleIdx)) {
|
||||
if (isModuleSBUS(moduleIdx)) {
|
||||
lcdDrawTextAlignedLeft(y, STR_WARN_BATTVOLTAGE);
|
||||
putsVolts(lcdLastRightPos, y, getBatteryVoltage(), attr | PREC2 | LEFT);
|
||||
}
|
||||
@@ -1241,6 +1229,19 @@ void menuModelSetup(event_t event)
|
||||
}
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_FREQ:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
uint8_t frequency = BF_GET(g_model.moduleData[moduleIdx].subType, 2, 1);
|
||||
lcdDrawTextAlignedLeft(y, STR_FREQUENCY);
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_R9MFLEX_FREQ, frequency, LEFT | attr);
|
||||
if (attr)
|
||||
{
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, frequency, 1);
|
||||
BF_SET(g_model.moduleData[moduleIdx].subType, frequency, 2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_AUTOBIND:
|
||||
if (g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MM_RF_PROTO_DSM2)
|
||||
|
||||
@@ -55,6 +55,7 @@ bool isSwitchAvailableInMixes(int swtch);
|
||||
bool isSwitchAvailableInTimers(int swtch);
|
||||
bool isR9MModeAvailable(int mode);
|
||||
bool isR9ModuleRunning(int module);
|
||||
bool isR9MMFlex(int module);
|
||||
bool isModuleAvailable(int module);
|
||||
bool isRfProtocolAvailable(int protocol);
|
||||
bool isTelemetryProtocolAvailable(int protocol);
|
||||
|
||||
@@ -490,7 +490,7 @@ bool isR9ModuleRunning(int module)
|
||||
{
|
||||
#if defined(SIMU)
|
||||
return g_model.moduleData[module].type == MODULE_TYPE_R9M && TELEMETRY_STREAMING(); // Simu uses telemetry simu to activate/desactivate R9
|
||||
#else
|
||||
#else
|
||||
return g_model.moduleData[module].type == MODULE_TYPE_R9M && R9ModuleStreaming;
|
||||
#endif
|
||||
}
|
||||
@@ -500,6 +500,11 @@ bool isR9MModeAvailable(int mode)
|
||||
return mode <= MODULE_SUBTYPE_R9M_EUPLUS;
|
||||
}
|
||||
|
||||
bool isR9MMFlex(int module)
|
||||
{
|
||||
return g_model.moduleData[module].subType >= MODULE_SUBTYPE_R9M_EUPLUS;
|
||||
}
|
||||
|
||||
bool isModuleAvailable(int module)
|
||||
{
|
||||
#if defined(CROSSFIRE)
|
||||
@@ -521,10 +526,14 @@ bool isModuleAvailable(int module)
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#if !defined(PCBSKY9X)
|
||||
if (module == MODULE_TYPE_R9M && g_model.moduleData[INTERNAL_MODULE].type != MODULE_TYPE_NONE) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
bool isRfProtocolAvailable(int protocol)
|
||||
@@ -539,9 +548,11 @@ bool isRfProtocolAvailable(int protocol)
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#if defined(pxx)
|
||||
if (protocol != RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_R9M) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -166,6 +166,8 @@ void setCustomFailsafe(uint8_t moduleIndex);
|
||||
#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"
|
||||
|
||||
enum R9MFCCPowerValues {
|
||||
R9M_FCC_POWER_100 = 0,
|
||||
|
||||
@@ -62,7 +62,7 @@ void processFrskyPXX2Data(uint8_t data)
|
||||
R9ModuleStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected
|
||||
uint8_t R9Region = (telemetryRxBuffer[3] & 0x30) >> 4;
|
||||
if (R9Region != 0x04) {
|
||||
BF_SET(g_model.moduleData[EXTERNAL_MODULE].subType, R9Region, 1, 2); // heading bit holds flex frequency
|
||||
BF_SET(g_model.moduleData[EXTERNAL_MODULE].subType, R9Region, 0, 2); // heading bit holds flex frequency
|
||||
}
|
||||
if (telemetryRxBuffer[2] & 0x80) {
|
||||
createFrSkyPXX2Sensor(RSSI_ID, telemetryRxBuffer[2] & 0x7f);
|
||||
|
||||
@@ -92,6 +92,7 @@ const char STR_OPEN9X[] =
|
||||
ISTR(VTRAINERMODES)
|
||||
ISTR(TARANIS_PROTOCOLS)
|
||||
ISTR(R9M_REGION)
|
||||
ISTR(R9MFLEX_FREQ)
|
||||
ISTR(R9M_FCC_POWER_VALUES)
|
||||
ISTR(R9M_LBT_POWER_VALUES)
|
||||
ISTR(TELEMETRY_PROTOCOLS)
|
||||
@@ -144,6 +145,7 @@ const char STR_PPMFRAME[] = TR_PPMFRAME;
|
||||
const char STR_REFRESHRATE[] = TR_REFRESHRATE;
|
||||
const char SSTR_WARN_BATTVOLTAGE[] = STR_WARN_BATTVOLTAGE;
|
||||
const char STR_MS[] = TR_MS;
|
||||
const char STR_FREQUENCY[] = TR_FREQUENCY;
|
||||
const char STR_SWITCH[] = TR_SWITCH;
|
||||
const char STR_TRIMS[] = TR_TRIMS;
|
||||
const char STR_FADEIN[] = TR_FADEIN;
|
||||
|
||||
@@ -363,6 +363,7 @@ extern const char STR_PPMFRAME[];
|
||||
extern const char STR_REFRESHRATE[];
|
||||
extern const char SSTR_WARN_BATTVOLTAGE[];
|
||||
extern const char STR_MS[];
|
||||
extern const char STR_FREQUENCY[];
|
||||
extern const char STR_SWITCH[];
|
||||
extern const char STR_TRIMS[];
|
||||
extern const char STR_FADEIN[];
|
||||
|
||||
@@ -563,6 +563,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Spínač"
|
||||
#define TR_TRIMS "Trimy"
|
||||
#define TR_FADEIN "Přechod Zap"
|
||||
|
||||
@@ -568,6 +568,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH TR("Schalt.", "Schalter")
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Langs. Ein"
|
||||
|
||||
@@ -566,6 +566,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Switch"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fade in"
|
||||
|
||||
@@ -571,6 +571,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Interr"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Inicio"
|
||||
|
||||
@@ -563,6 +563,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Switch"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fade In"
|
||||
|
||||
@@ -580,6 +580,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH TR("Inter", "Interrupteur")
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fondu ON"
|
||||
|
||||
@@ -569,6 +569,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Inter."
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Diss.In"
|
||||
|
||||
@@ -563,6 +563,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH TR("Schak.", "Schakelaar")
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Fade in"
|
||||
|
||||
@@ -570,6 +570,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Przełą"
|
||||
#define TR_TRIMS "Trymy"
|
||||
#define TR_FADEIN "Pojawia"
|
||||
|
||||
@@ -570,6 +570,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Chave"
|
||||
#define TR_TRIMS "Trims"
|
||||
#define TR_FADEIN "Aparecer"
|
||||
|
||||
@@ -582,6 +582,7 @@
|
||||
#define TR_REFRESHRATE TR(INDENT "Refresh", INDENT "Refresh rate")
|
||||
#define STR_WARN_BATTVOLTAGE TR(INDENT "Output is VBAT: ", INDENT "Warning: output level is VBAT: ")
|
||||
#define TR_MS "ms"
|
||||
#define TR_FREQUENCY INDENT "Frequency"
|
||||
#define TR_SWITCH "Brytare"
|
||||
#define TR_TRIMS "Trimmar"
|
||||
#define TR_FADEIN "Tona In"
|
||||
|
||||
Reference in New Issue
Block a user