Add AFSHD3 module parameters

This commit is contained in:
3djc
2020-10-08 14:17:39 +02:00
parent 9a4be580c2
commit 0c26b8ede6
16 changed files with 146 additions and 17 deletions
+87 -17
View File
@@ -37,10 +37,10 @@ std::string switchWarninglabel(swsrc_t index)
return TEXT_AT_INDEX(STR_VSRCRAW, (index + MIXSRC_FIRST_SWITCH - MIXSRC_Rud + 1)) + std::string(&switchPositions[g_model.switchWarningState >> (3*index) & 0x07], 1);
}
class MultimoduleStatus: public StaticText
class ModuleStatus: public StaticText
{
public:
MultimoduleStatus(Window * parent, const rect_t & rect, uint8_t moduleIdx):
ModuleStatus(Window * parent, const rect_t & rect, uint8_t moduleIdx):
StaticText(parent, rect),
moduleIdx(moduleIdx)
{
@@ -48,7 +48,51 @@ class MultimoduleStatus: public StaticText
void checkEvents() override
{
getMultiModuleStatus(moduleIdx).getStatusString(reusableBuffer.moduleSetup.msg);
getModuleStatusString(moduleIdx, reusableBuffer.moduleSetup.msg);
if (text != reusableBuffer.moduleSetup.msg) {
setText(reusableBuffer.moduleSetup.msg);
invalidate();
}
}
protected:
uint8_t moduleIdx;
};
class ModuleCurrentPower: public StaticText
{
public:
ModuleCurrentPower(Window * parent, const rect_t & rect, uint8_t moduleIdx):
StaticText(parent, rect),
moduleIdx(moduleIdx)
{
}
void checkEvents() override
{
getStringAtIndex(reusableBuffer.moduleSetup.msg, STR_AFHDS3_POWERS, actualAfhdsRunPower(moduleIdx));
if (text != reusableBuffer.moduleSetup.msg) {
setText(reusableBuffer.moduleSetup.msg);
invalidate();
}
}
protected:
uint8_t moduleIdx;
};
class ModuleSyncStatus: public StaticText
{
public:
ModuleSyncStatus(Window * parent, const rect_t & rect, uint8_t moduleIdx):
StaticText(parent, rect),
moduleIdx(moduleIdx)
{
}
void checkEvents() override
{
getModuleSyncStatusString(moduleIdx, reusableBuffer.moduleSetup.msg);
if (text != reusableBuffer.moduleSetup.msg) {
setText(reusableBuffer.moduleSetup.msg);
invalidate();
@@ -670,7 +714,7 @@ class ModuleWindow : public FormGroup {
// Multimodule status
new StaticText(this, grid.getLabelSlot(true), STR_MODULE_STATUS);
new MultimoduleStatus(this, grid.getFieldSlot(), moduleIdx);
new ModuleStatus(this, grid.getFieldSlot(), moduleIdx);
// Multimodule sync
/*if (multiSyncStatus.isValid()) {
@@ -710,22 +754,46 @@ class ModuleWindow : public FormGroup {
new CheckBox(this, grid.getFieldSlot(), GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.lowPowerMode));
}
#endif
#if defined (PCBNV14)
#if defined(AFHDS3)
else if (isModuleAFHDS3(moduleIdx)) {
grid.nextLine();
rfChoice = new Choice(this, grid.getFieldSlot(), STR_AFHDS3_PROTOCOLS, 0, 3,
GET_DEFAULT(g_model.moduleData[moduleIdx].flysky.mode),
[=](int32_t newValue) -> void {
g_model.moduleData[moduleIdx].flysky.mode = newValue;
SET_DIRTY();
//TODO moduleFlagBackNormal(moduleIdx);
//TODO onFlySkyReceiverSetPulse(INTERNAL_MODULE, newValue);
});
rfChoice = new Choice(this, grid.getFieldSlot(2, 1), STR_AFHDS3_PROTOCOLS, AFHDS_SUBTYPE_FIRST, AFHDS_SUBTYPE_LAST,
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].subType));
// TYPE
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_FLYSKY_TELEMETRY);
new CheckBox(this, grid.getFieldSlot(), GET_SET_DEFAULT(g_model.rssiAlarms.flysky_telemetry));
new StaticText(this, grid.getLabelSlot(true), STR_TYPE);
new StaticText(this, grid.getFieldSlot(),
g_model.moduleData[EXTERNAL_MODULE].afhds3.telemetry ? STR_AFHDS3_ONE_TO_ONE_TELEMETRY : TR_AFHDS3_ONE_TO_MANY);
// Status
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_MODULE_STATUS);
new ModuleStatus(this, grid.getFieldSlot(), moduleIdx);
// Power source
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_AFHDS3_POWER_SOURCE);
new ModuleSyncStatus(this, grid.getFieldSlot(), moduleIdx);
// RX Freq
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_AFHDS3_RX_FREQ);
auto edit = new NumberEdit(this, grid.getFieldSlot(2,0), MIN_FREQ, MAX_FREQ, GET_DEFAULT(g_model.moduleData[moduleIdx].afhds3.rxFreq()));
edit->setSetValueHandler([=](int32_t newValue) {
g_model.moduleData[EXTERNAL_MODULE].afhds3.setRxFreq((uint16_t)newValue);
});
edit->setSuffix(STR_HZ);
// Module actual power
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_AFHDS3_ACTUAL_POWER);
new ModuleCurrentPower(this, grid.getFieldSlot(), moduleIdx);
// Module power
grid.nextLine();
new StaticText(this, grid.getLabelSlot(true), STR_RF_POWER);
new Choice(this, grid.getFieldSlot(2, 0), STR_AFHDS3_POWERS, afhds3::RUN_POWER::RUN_POWER_FIRST, afhds3::RUN_POWER::RUN_POWER_LAST,
GET_SET_DEFAULT(g_model.moduleData[moduleIdx].afhds3.runPower));
}
#endif
grid.nextLine();
@@ -911,6 +979,8 @@ class ModuleWindow : public FormGroup {
getParent()->moveWindowsTop(top() + 1, adjustHeight());
}
};
ModelSetupPage::ModelSetupPage() :
+1
View File
@@ -208,6 +208,7 @@ const char STR_MOVESTICKSPOTS[] = TR_MOVESTICKSPOTS;
const char STR_TX[] = TR_TXnRX;
const char STR_NODATA[] = TR_NODATA;
const char STR_US[] = TR_US;
const char STR_HZ[] = TR_HZ;
const char STR_TMIXMAXMS[] = TR_TMIXMAXMS;
const char STR_FREE_STACK[] = TR_FREE_STACK;
const char STR_MENUTORESET[] = TR_MENUTORESET;
+1
View File
@@ -353,6 +353,7 @@ extern const char STR_TX[];
#define STR_RX (STR_TX+OFS_RX)
extern const char STR_NODATA[];
extern const char STR_US[];
extern const char STR_HZ[];
extern const char STR_TMIXMAXMS[];
extern const char STR_FREE_STACK[];
extern const char STR_MENUTORESET[];
+1
View File
@@ -581,6 +581,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER " to reset"
+1
View File
@@ -575,6 +575,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" >> Reset"
+1
View File
@@ -585,6 +585,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"Keine Daten"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Freier Stack"
#define TR_MENUTORESET TR_ENTER " für Reset"
+1
View File
@@ -581,6 +581,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER " to reset"
+1
View File
@@ -577,6 +577,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "SIN DATOS"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix máx"
#define TR_FREE_STACK "Stack libre"
#define TR_MENUTORESET TR_ENTER "Resetear"
+1
View File
@@ -590,6 +590,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
+1
View File
@@ -601,6 +601,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "NO DATA"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us"
#define TR_TMIXMAXMS "Tmix max"
+1
View File
@@ -605,6 +605,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"DATI ASSENTI"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" per azzerare"
+1
View File
@@ -584,6 +584,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"Geen Data"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" voor Reset"
+1
View File
@@ -601,6 +601,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "BrakDAN"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "TmixMaks"
#define TR_FREE_STACK "Wolny stos"
#define TR_MENUTORESET TR_ENTER " >> Reset"
+1
View File
@@ -583,6 +583,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER"SEM DADOS"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER" Reinicia"
+1
View File
@@ -603,6 +603,7 @@
#define TR_ACCEL "Acc:"
#define TR_NODATA CENTER "DATA SAKNAS"
#define TR_US "us"
#define TR_HZ "Hz"
#define TR_TMIXMAXMS "Tmix max"
#define TR_FREE_STACK "Free stack"
#define TR_MENUTORESET TR_ENTER " Nollar"
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env python
from __future__ import print_function
import sys
import glob
def addLine(filename, newline, after):
print(filename, newline)
with open(filename, 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines):
if after in line:
lines.insert(i + 1, newline + '\n')
break
with open(filename, 'w') as f:
f.writelines(lines)
def modifyTranslations(constant, translation, after):
for filename in glob.glob('translations/*.h.txt'):
newline = "#define " + constant + " " * max(1, 31 - len(constant)) + '"' + translation + '"'
addLine(filename, newline, after + " ")
def modifyDeclaration(constant, after):
newline = "extern const char S" + constant + "[];"
filename = "translations.h"
addLine(filename, newline, after + "[];")
def modifyDefinition(constant, after):
newline = "const char S" + constant + "[] = " + constant + ";"
filename = "translations.cpp"
addLine(filename, newline, after + "[] ")
after = sys.argv[-1]
for arg in sys.argv[1:-1]:
constant, translation = arg.split("=")
modifyTranslations(constant, translation, after)
modifyDeclaration(constant, after)
modifyDefinition(constant, after)
after = constant