1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 16:25:16 +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();
ui->UnitCB->setCurrentIndex(analog.type);
if (!IS_TARANIS(GetEepromInterface()->getBoard())) {
if (!IS_TARANIS(firmware->getBoard())) {
ui->alarm1LevelCB->setCurrentIndex(analog.alarms[0].level);
ui->alarm1GreaterCB->setCurrentIndex(analog.alarms[0].greater);
ui->alarm2LevelCB->setCurrentIndex(analog.alarms[1].level);
@ -487,6 +487,11 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
}
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);
}
else {
@ -502,7 +507,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
ui->A2Layout->addWidget(analogs[1]);
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);
ui->A3Layout->addWidget(analogs[2]);
connect(analogs[2], SIGNAL(modified()), this, SLOT(onAnalogModified()));
@ -522,7 +527,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
telemetryCustomScreens[i] = tab;
}
if (IS_ARM(GetEepromInterface()->getBoard())) {
if (IS_ARM(firmware->getBoard())) {
ui->bladesCount->setMinimum(1);
ui->bladesCount->setMaximum(128);
}
@ -537,6 +542,19 @@ TelemetryPanel::~TelemetryPanel()
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()
{
QString firmware_id = g.profile[g.id()].fwType();
@ -545,7 +563,7 @@ void TelemetryPanel::setup()
ui->rssiAlarm1SB->setValue(model.frsky.rssiAlarms[0].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->rssiAlarm2CB->setCurrentIndex(model.frsky.rssiAlarms[1].level);
}

View file

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

View file

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

View file

@ -1397,7 +1397,7 @@ void menuGeneralHardware(uint8_t event)
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);
if (checkIncDec_Ret) {
uart3Init(g_eeGeneral.uart3Mode, g_model.telemetryProtocol);
uart3Init(g_eeGeneral.uart3Mode, MODEL_TELEMETRY_PROTOCOL);
}
break;
}

View file

@ -5600,9 +5600,17 @@ enum menuModelTelemetryItems {
#define IF_FAS_OFFSET(x)
#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)
{
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;
@ -5621,6 +5629,13 @@ void menuModelTelemetry(uint8_t event)
for (uint8_t i=0; i<LCD_LINES-1; i++) {
uint8_t y = 1 + 1*FH + i*FH;
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 attr = (sub == k ? blink : 0);
#if defined(CPUARM)

View file

@ -594,24 +594,24 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
break;
}
#if defined(CPUARM)
if (l_posVert<1) {
s_pgOfs=0;
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)) {
s_pgOfs = 0;
}
else if (menuTab && horTab) {
if (maxrow > LCD_LINES-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++) {
if (MAXCOL(line) != HIDDEN_ROW) {
numLines++;
}
}
int max = line - s_pgOfs - 1;
if (l_posVert > max+s_pgOfs) {
int max = line - firstLine;
if (l_posVert > max+firstLine-1) {
s_pgOfs++;
}
else if (l_posVert < 1+s_pgOfs) {
else if (l_posVert < firstLine) {
s_pgOfs--;
}
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);
#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_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;
}
@ -982,8 +970,9 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
// cosmetics on 9x
if (s_pgOfs > 0) {
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;
}
}
#endif
return true;

View file

@ -468,13 +468,13 @@ void displayWarning(uint8_t event);
#endif
#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 EDIT_MODE_INIT 0 // TODO enum
#define EDIT_MODE_INIT 0 // TODO enum
#else
#define POS_VERT_INIT 0
#define POS_VERT_INIT 0
#define POS_HORZ_INIT(posVert) 0
#define EDIT_MODE_INIT -1
#define EDIT_MODE_INIT -1
#endif
#endif

View file

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

View file

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

View file

@ -470,4 +470,10 @@ void telemetryInterrupt10ms(void);
void frskySetCellVoltage(uint8_t battnumber, frskyCellVoltage_t cellVolts);
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