1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 01:05:10 +03:00
This commit is contained in:
bsongis 2014-07-07 11:54:30 +02:00
parent ad7da779c7
commit 39a0feae3b
10 changed files with 66 additions and 46 deletions

View file

@ -28,7 +28,7 @@ TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog, Mod
update(); update();
ui->UnitCB->setCurrentIndex(analog.type); ui->UnitCB->setCurrentIndex(analog.type);
if (!IS_TARANIS(GetEepromInterface()->getBoard())) { if (!IS_TARANIS(firmware->getBoard())) {
ui->alarm1LevelCB->setCurrentIndex(analog.alarms[0].level); ui->alarm1LevelCB->setCurrentIndex(analog.alarms[0].level);
ui->alarm1GreaterCB->setCurrentIndex(analog.alarms[0].greater); ui->alarm1GreaterCB->setCurrentIndex(analog.alarms[0].greater);
ui->alarm2LevelCB->setCurrentIndex(analog.alarms[1].level); ui->alarm2LevelCB->setCurrentIndex(analog.alarms[1].level);
@ -487,6 +487,11 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
} }
if (IS_ARM(firmware->getBoard())) { if (IS_ARM(firmware->getBoard())) {
ui->telemetryProtocol->addItem(tr("FrSky S.PORT"), 0);
ui->telemetryProtocol->addItem(tr("FrSky D"), 1);
if (IS_9XRPRO(firmware->getBoard())) {
ui->telemetryProtocol->addItem(tr("FrSky D (cable)"), 2);
}
ui->telemetryProtocol->setCurrentIndex(model.telemetryProtocol); ui->telemetryProtocol->setCurrentIndex(model.telemetryProtocol);
} }
else { else {
@ -502,7 +507,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
ui->A2Layout->addWidget(analogs[1]); ui->A2Layout->addWidget(analogs[1]);
connect(analogs[1], SIGNAL(modified()), this, SLOT(onAnalogModified())); connect(analogs[1], SIGNAL(modified()), this, SLOT(onAnalogModified()));
if (IS_ARM(GetEepromInterface()->getBoard())) { if (IS_ARM(firmware->getBoard())) {
analogs[2] = new TelemetryAnalog(this, model.frsky.channels[2], model, generalSettings, firmware); analogs[2] = new TelemetryAnalog(this, model.frsky.channels[2], model, generalSettings, firmware);
ui->A3Layout->addWidget(analogs[2]); ui->A3Layout->addWidget(analogs[2]);
connect(analogs[2], SIGNAL(modified()), this, SLOT(onAnalogModified())); connect(analogs[2], SIGNAL(modified()), this, SLOT(onAnalogModified()));
@ -522,7 +527,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
telemetryCustomScreens[i] = tab; telemetryCustomScreens[i] = tab;
} }
if (IS_ARM(GetEepromInterface()->getBoard())) { if (IS_ARM(firmware->getBoard())) {
ui->bladesCount->setMinimum(1); ui->bladesCount->setMinimum(1);
ui->bladesCount->setMaximum(128); ui->bladesCount->setMaximum(128);
} }
@ -537,6 +542,19 @@ TelemetryPanel::~TelemetryPanel()
delete ui; delete ui;
} }
void TelemetryPanel::update()
{
if (IS_TARANIS(firmware->getBoard())) {
if (model.moduleData[0].protocol == OFF && model.moduleData[1].protocol == PPM) {
ui->telemetryProtocol->setEnabled(true);
}
else {
ui->telemetryProtocol->setEnabled(false);
ui->telemetryProtocol->setCurrentIndex(0);
}
}
}
void TelemetryPanel::setup() void TelemetryPanel::setup()
{ {
QString firmware_id = g.profile[g.id()].fwType(); QString firmware_id = g.profile[g.id()].fwType();
@ -545,7 +563,7 @@ void TelemetryPanel::setup()
ui->rssiAlarm1SB->setValue(model.frsky.rssiAlarms[0].value); ui->rssiAlarm1SB->setValue(model.frsky.rssiAlarms[0].value);
ui->rssiAlarm2SB->setValue(model.frsky.rssiAlarms[1].value); ui->rssiAlarm2SB->setValue(model.frsky.rssiAlarms[1].value);
if (!IS_TARANIS(GetEepromInterface()->getBoard())) { if (!IS_TARANIS(firmware->getBoard())) {
ui->rssiAlarm1CB->setCurrentIndex(model.frsky.rssiAlarms[0].level); ui->rssiAlarm1CB->setCurrentIndex(model.frsky.rssiAlarms[0].level);
ui->rssiAlarm2CB->setCurrentIndex(model.frsky.rssiAlarms[1].level); ui->rssiAlarm2CB->setCurrentIndex(model.frsky.rssiAlarms[1].level);
} }

View file

@ -81,6 +81,7 @@ class TelemetryPanel : public ModelPanel
public: public:
TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware); TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, FirmwareInterface * firmware);
virtual ~TelemetryPanel(); virtual ~TelemetryPanel();
virtual void update();
private slots: private slots:
void on_telemetryProtocol_currentIndexChanged(int index); void on_telemetryProtocol_currentIndexChanged(int index);

View file

@ -46,16 +46,6 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<item>
<property name="text">
<string>FrSky S.PORT</string>
</property>
</item>
<item>
<property name="text">
<string>FrSky D</string>
</property>
</item>
</widget> </widget>
</item> </item>
</layout> </layout>

View file

@ -1397,7 +1397,7 @@ void menuGeneralHardware(uint8_t event)
case ITEM_SETUP_HW_UART3_MODE: case ITEM_SETUP_HW_UART3_MODE:
g_eeGeneral.uart3Mode = selectMenuItem(HW_SETTINGS_COLUMN, y, STR_UART3MODE, STR_UART3MODES, g_eeGeneral.uart3Mode, 0, UART_MODE_MAX, attr, event); g_eeGeneral.uart3Mode = selectMenuItem(HW_SETTINGS_COLUMN, y, STR_UART3MODE, STR_UART3MODES, g_eeGeneral.uart3Mode, 0, UART_MODE_MAX, attr, event);
if (checkIncDec_Ret) { if (checkIncDec_Ret) {
uart3Init(g_eeGeneral.uart3Mode, g_model.telemetryProtocol); uart3Init(g_eeGeneral.uart3Mode, MODEL_TELEMETRY_PROTOCOL);
} }
break; break;
} }

View file

@ -5600,9 +5600,17 @@ enum menuModelTelemetryItems {
#define IF_FAS_OFFSET(x) #define IF_FAS_OFFSET(x)
#endif #endif
#if defined(PCBTARANIS)
#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.externalModule == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW,
#elif defined(CPUARM)
#define TELEMETRY_TYPE_ROWS 0,
#else
#define TELEMETRY_TYPE_ROWS
#endif
void menuModelTelemetry(uint8_t event) void menuModelTelemetry(uint8_t event)
{ {
MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CASE_CPUARM(0) CHANNEL_ROWS, CHANNEL_ROWS, CASE_CPUARM(CHANNEL_ROWS) CASE_CPUARM(CHANNEL_ROWS) RSSI_ROWS, USRDATA_LINES 0, 0, IF_FAS_OFFSET(0) CASE_CPUARM(0) CASE_VARIO(LABEL(Vario)) CASE_VARIO(0) CASE_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, CASE_CPUARM(SCREEN_TYPE_ROWS) CASE_CPUARM(2) CASE_CPUARM(2) CASE_CPUARM(2) CASE_CPUARM(2)}); MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, TELEMETRY_TYPE_ROWS CHANNEL_ROWS, CHANNEL_ROWS, CASE_CPUARM(CHANNEL_ROWS) CASE_CPUARM(CHANNEL_ROWS) RSSI_ROWS, USRDATA_LINES 0, 0, IF_FAS_OFFSET(0) CASE_CPUARM(0) CASE_VARIO(LABEL(Vario)) CASE_VARIO(0) CASE_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, CASE_CPUARM(SCREEN_TYPE_ROWS) CASE_CPUARM(2) CASE_CPUARM(2) CASE_CPUARM(2) CASE_CPUARM(2)});
uint8_t sub = m_posVert - 1; uint8_t sub = m_posVert - 1;
@ -5621,6 +5629,13 @@ void menuModelTelemetry(uint8_t event)
for (uint8_t i=0; i<LCD_LINES-1; i++) { for (uint8_t i=0; i<LCD_LINES-1; i++) {
uint8_t y = 1 + 1*FH + i*FH; uint8_t y = 1 + 1*FH + i*FH;
uint8_t k = i + s_pgOfs; uint8_t k = i + s_pgOfs;
#if defined(CPUARM)
for (int j=0; j<=k; j++) {
if (mstate_tab[j+1] == HIDDEN_ROW)
k++;
}
#endif
uint8_t blink = ((s_editMode>0) ? BLINK|INVERS : INVERS); uint8_t blink = ((s_editMode>0) ? BLINK|INVERS : INVERS);
uint8_t attr = (sub == k ? blink : 0); uint8_t attr = (sub == k ? blink : 0);
#if defined(CPUARM) #if defined(CPUARM)

View file

@ -594,24 +594,24 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
break; break;
} }
#if defined(CPUARM) if (l_posVert == 0 || (l_posVert==2 && MAXCOL(vertpos_t(1)) >= HIDDEN_ROW) || (l_posVert==3 && MAXCOL(vertpos_t(1)) >= HIDDEN_ROW && MAXCOL(vertpos_t(2)) >= HIDDEN_ROW)) {
if (l_posVert<1) { s_pgOfs = 0;
s_pgOfs=0;
} }
else if (menuTab && horTab) { else if (menuTab && horTab) {
if (maxrow > LCD_LINES-1) { if (maxrow > LCD_LINES-1) {
while (1) { while (1) {
vertpos_t line = s_pgOfs+1; vertpos_t firstLine = s_pgOfs + (MAXCOL(vertpos_t(1)) == HIDDEN_ROW ? 2 : 1);
vertpos_t line = firstLine;
for (int numLines=0; line<=maxrow && numLines<LCD_LINES-1; line++) { for (int numLines=0; line<=maxrow && numLines<LCD_LINES-1; line++) {
if (MAXCOL(line) != HIDDEN_ROW) { if (MAXCOL(line) != HIDDEN_ROW) {
numLines++; numLines++;
} }
} }
int max = line - s_pgOfs - 1; int max = line - firstLine;
if (l_posVert > max+s_pgOfs) { if (l_posVert > max+firstLine-1) {
s_pgOfs++; s_pgOfs++;
} }
else if (l_posVert < 1+s_pgOfs) { else if (l_posVert < firstLine) {
s_pgOfs--; s_pgOfs--;
} }
else { else {
@ -630,25 +630,13 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
} }
} }
#if LCD_W >= 212 if (maxrow > LCD_LINES-1 && scrollbar_X) {
if (maxrow > LCD_LINES-1 && scrollbar_X)
displayScrollbar(scrollbar_X, FH, LCD_H-FH, s_pgOfs, menuTab ? maxrow : maxrow+1, LCD_LINES-1); displayScrollbar(scrollbar_X, FH, LCD_H-FH, s_pgOfs, menuTab ? maxrow : maxrow+1, LCD_LINES-1);
#endif }
#else
uint8_t max = menuTab ? LCD_LINES-1 : LCD_LINES-2;
if (l_posVert<1) s_pgOfs=0;
else if (l_posVert>max+s_pgOfs) s_pgOfs = l_posVert-max;
else if (l_posVert<1+s_pgOfs) s_pgOfs = l_posVert-1;
#endif
m_posVert = l_posVert; m_posVert = l_posVert;
m_posHorz = l_posHorz; m_posHorz = l_posHorz;
if (s_pgOfs > 0) {
l_posVert--;
if (l_posVert == s_pgOfs && CURSOR_NOT_ALLOWED_IN_ROW(l_posVert)) {
s_pgOfs = l_posVert-1;
}
}
return true; return true;
} }
@ -982,8 +970,9 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
// cosmetics on 9x // cosmetics on 9x
if (s_pgOfs > 0) { if (s_pgOfs > 0) {
l_posVert--; l_posVert--;
if (l_posVert == s_pgOfs && CURSOR_NOT_ALLOWED_IN_ROW(l_posVert)) if (l_posVert == s_pgOfs && CURSOR_NOT_ALLOWED_IN_ROW(l_posVert)) {
s_pgOfs = l_posVert-1; s_pgOfs = l_posVert-1;
}
} }
#endif #endif
return true; return true;

View file

@ -468,13 +468,13 @@ void displayWarning(uint8_t event);
#endif #endif
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
#define POS_VERT_INIT (menuTab ? (MAXCOL((uint16_t)1) == 255 ? 2 : 1) : 0) #define POS_VERT_INIT (menuTab ? (MAXCOL((uint16_t)1) >= HIDDEN_ROW ? (MAXCOL((uint16_t)2) >= HIDDEN_ROW ? 3 : 2) : 1) : 0)
#define POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0) #define POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0)
#define EDIT_MODE_INIT 0 // TODO enum #define EDIT_MODE_INIT 0 // TODO enum
#else #else
#define POS_VERT_INIT 0 #define POS_VERT_INIT 0
#define POS_HORZ_INIT(posVert) 0 #define POS_HORZ_INIT(posVert) 0
#define EDIT_MODE_INIT -1 #define EDIT_MODE_INIT -1
#endif #endif
#endif #endif

View file

@ -3406,7 +3406,7 @@ inline void opentxInit(OPENTX_INIT_ARGS)
backlightOn(); backlightOn();
#if defined(PCBTARANIS) #if defined(PCBTARANIS)
uart3Init(g_eeGeneral.uart3Mode, g_model.telemetryProtocol); uart3Init(g_eeGeneral.uart3Mode, MODEL_TELEMETRY_PROTOCOL);
#endif #endif
#if defined(CPUARM) #if defined(CPUARM)

View file

@ -277,8 +277,9 @@ enum AlarmsCheckSteps {
void telemetryWakeup() void telemetryWakeup()
{ {
#if defined(CPUARM) #if defined(CPUARM)
if (telemetryProtocol != g_model.telemetryProtocol) { uint8_t requiredTelemetryProtocol = MODEL_TELEMETRY_PROTOCOL;
telemetryProtocol = g_model.telemetryProtocol; if (telemetryProtocol != requiredTelemetryProtocol) {
telemetryProtocol = requiredTelemetryProtocol;
telemetryInit(); telemetryInit();
} }
#endif #endif

View file

@ -470,4 +470,10 @@ void telemetryInterrupt10ms(void);
void frskySetCellVoltage(uint8_t battnumber, frskyCellVoltage_t cellVolts); void frskySetCellVoltage(uint8_t battnumber, frskyCellVoltage_t cellVolts);
void frskyUpdateCells(void); void frskyUpdateCells(void);
#if defined(PCBTARANIS)
#define MODEL_TELEMETRY_PROTOCOL ((g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.externalModule == MODULE_TYPE_PPM) ? g_model.telemetryProtocol : PROTOCOL_FRSKY_SPORT)
#elif defined(CPUARM)
#define MODEL_TELEMETRY_PROTOCOL g_model.telemetryProtocol
#endif
#endif #endif