mirror of
https://github.com/opentx/opentx.git
synced 2025-07-22 15:55:26 +03:00
Issue #541 fixed
This commit is contained in:
parent
f41f1a3f7b
commit
7d88ff506e
4 changed files with 39 additions and 19 deletions
|
@ -5582,18 +5582,14 @@ void menuModelTelemetry(uint8_t event)
|
||||||
lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE5;
|
lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
putsStrIdx(0, y, PSTR(INDENT"Line"), lineIndex+1, m_posHorz<0 ? attr : 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(GAUGES)
|
#if defined(GAUGES)
|
||||||
if (IS_BARS_SCREEN(screenIndex)) {
|
if (IS_BARS_SCREEN(screenIndex)) {
|
||||||
FrSkyBarData & bar = g_model.frsky.screens[screenIndex].bars[lineIndex];
|
FrSkyBarData & bar = g_model.frsky.screens[screenIndex].bars[lineIndex];
|
||||||
uint8_t barSource = bar.source;
|
uint8_t barSource = bar.source;
|
||||||
lcd_putsiAtt(TELEM_COL1, y, STR_VTELEMCHNS, barSource, m_posHorz==0 ? attr : 0);
|
lcd_putsiAtt(TELEM_COL1, y, STR_VTELEMCHNS, barSource, m_posHorz==0 ? attr : 0);
|
||||||
if (barSource) {
|
if (barSource) {
|
||||||
putsTelemetryChannel(TELEM_BARS_COLMIN, y, barSource-1, convertTelemValue(barSource, bar.barMin), (m_posHorz==1 ? attr : 0) | LEFT);
|
putsTelemetryChannel(TELEM_BARS_COLMIN, y, barSource-1, convertBarTelemValue(barSource, bar.barMin), (m_posHorz==1 ? attr : 0) | LEFT);
|
||||||
putsTelemetryChannel(TELEM_BARS_COLMAX, y, barSource-1, convertTelemValue(barSource, 255-bar.barMax), (m_posHorz==2 ? attr : 0) | LEFT);
|
putsTelemetryChannel(TELEM_BARS_COLMAX, y, barSource-1, convertBarTelemValue(barSource, 255-bar.barMax), (m_posHorz==2 ? attr : 0) | LEFT);
|
||||||
}
|
}
|
||||||
else if (attr) {
|
else if (attr) {
|
||||||
MOVE_CURSOR_FROM_HERE();
|
MOVE_CURSOR_FROM_HERE();
|
||||||
|
@ -5604,14 +5600,14 @@ void menuModelTelemetry(uint8_t event)
|
||||||
bar.source = checkIncDecModel(event, barSource, 0, TELEM_DISPLAY_MAX);
|
bar.source = checkIncDecModel(event, barSource, 0, TELEM_DISPLAY_MAX);
|
||||||
if (checkIncDec_Ret) {
|
if (checkIncDec_Ret) {
|
||||||
bar.barMin = 0;
|
bar.barMin = 0;
|
||||||
bar.barMax = 255-maxTelemValue(bar.source);
|
bar.barMax = 255 - maxBarTelemValue(bar.source);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
bar.barMin = checkIncDec(event, bar.barMin, 0, 254-bar.barMax, EE_MODEL|NO_INCDEC_MARKS);
|
bar.barMin = checkIncDec(event, bar.barMin, 0, 254-bar.barMax, EE_MODEL|NO_INCDEC_MARKS);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
bar.barMax = 255 - checkIncDec(event, 255-bar.barMax, bar.barMin+1, maxTelemValue(barSource), EE_MODEL|NO_INCDEC_MARKS);
|
bar.barMax = 255 - checkIncDec(event, 255-bar.barMax, bar.barMin+1, maxBarTelemValue(barSource), EE_MODEL|NO_INCDEC_MARKS);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,8 +214,8 @@ void menuTelemetryFrsky(uint8_t event)
|
||||||
for (int8_t i=3; i>=0; i--) {
|
for (int8_t i=3; i>=0; i--) {
|
||||||
FrSkyBarData & bar = screen.bars[i];
|
FrSkyBarData & bar = screen.bars[i];
|
||||||
uint8_t source = bar.source;
|
uint8_t source = bar.source;
|
||||||
getvalue_t barMin = convertTelemValue(source, bar.barMin);
|
getvalue_t barMin = convertBarTelemValue(source, bar.barMin);
|
||||||
getvalue_t barMax = convertTelemValue(source, 255-bar.barMax);
|
getvalue_t barMax = convertBarTelemValue(source, 255-bar.barMax);
|
||||||
if (source && barMax > barMin) {
|
if (source && barMax > barMin) {
|
||||||
uint8_t y = barHeight+6+i*(barHeight+6);
|
uint8_t y = barHeight+6+i*(barHeight+6);
|
||||||
lcd_putsiAtt(0, y+barHeight-5, STR_VTELEMCHNS, source, 0);
|
lcd_putsiAtt(0, y+barHeight-5, STR_VTELEMCHNS, source, 0);
|
||||||
|
@ -234,7 +234,7 @@ void menuTelemetryFrsky(uint8_t event)
|
||||||
threshold = g_model.frsky.channels[source-TELEM_A1].alarms_value[0];
|
threshold = g_model.frsky.channels[source-TELEM_A1].alarms_value[0];
|
||||||
#if defined(FRSKY_HUB)
|
#if defined(FRSKY_HUB)
|
||||||
else
|
else
|
||||||
threshold = convertTelemValue(source, barsThresholds[source-TELEM_ALT]);
|
threshold = convertBarTelemValue(source, barsThresholds[source-TELEM_ALT]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (threshold) {
|
if (threshold) {
|
||||||
|
|
|
@ -1854,7 +1854,7 @@ csw_telemetry_value_t maxTelemValue(uint8_t channel)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
getvalue_t convertTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
getvalue_t convert16bitsTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
||||||
{
|
{
|
||||||
getvalue_t result;
|
getvalue_t result;
|
||||||
switch (channel) {
|
switch (channel) {
|
||||||
|
@ -1867,8 +1867,14 @@ getvalue_t convertTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
getvalue_t convertTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
csw_telemetry_value_t max8bitsTelemValue(uint8_t channel)
|
||||||
|
{
|
||||||
|
return min<csw_telemetry_value_t>(255, maxTelemValue(channel));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
getvalue_t convert8bitsTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
||||||
{
|
{
|
||||||
getvalue_t result;
|
getvalue_t result;
|
||||||
switch (channel) {
|
switch (channel) {
|
||||||
|
@ -1878,6 +1884,10 @@ getvalue_t convertTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
||||||
break;
|
break;
|
||||||
#if defined(FRSKY)
|
#if defined(FRSKY)
|
||||||
case TELEM_ALT:
|
case TELEM_ALT:
|
||||||
|
#if defined(CPUARM)
|
||||||
|
result = 100 * (value * 8 - 500);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case TELEM_GPSALT:
|
case TELEM_GPSALT:
|
||||||
case TELEM_MAX_ALT:
|
case TELEM_MAX_ALT:
|
||||||
case TELEM_MIN_ALT:
|
case TELEM_MIN_ALT:
|
||||||
|
@ -1915,18 +1925,17 @@ getvalue_t convertTelemValue(uint8_t channel, csw_telemetry_value_t value)
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
getvalue_t convertCswTelemValue(CustomSwData * cs)
|
getvalue_t convertCswTelemValue(CustomSwData * cs)
|
||||||
{
|
{
|
||||||
getvalue_t val;
|
getvalue_t val;
|
||||||
#if defined(CPUARM)
|
#if defined(CPUARM)
|
||||||
val = convertTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, cs->v2);
|
val = convert16bitsTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, cs->v2);
|
||||||
#else
|
#else
|
||||||
if (cswFamily(cs->func)==CS_VOFS)
|
if (cswFamily(cs->func)==CS_VOFS)
|
||||||
val = convertTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, 128+cs->v2);
|
val = convert8bitsTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, 128+cs->v2);
|
||||||
else
|
else
|
||||||
val = convertTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, 128+cs->v2) - convertTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, 128);
|
val = convert8bitsTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, 128+cs->v2) - convert8bitsTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1, 128);
|
||||||
#endif
|
#endif
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1632,9 +1632,24 @@ extern uint8_t barsThresholds[THLD_MAX];
|
||||||
#define maxTelemValue(channel) 255
|
#define maxTelemValue(channel) 255
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
getvalue_t convertTelemValue(uint8_t channel, csw_telemetry_value_t value);
|
#if defined(CPUARM)
|
||||||
|
getvalue_t convert16bitsTelemValue(uint8_t channel, csw_telemetry_value_t value);
|
||||||
|
csw_telemetry_value_t max8bitsTelemValue(uint8_t channel);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
getvalue_t convert8bitsTelemValue(uint8_t channel, csw_telemetry_value_t value);
|
||||||
getvalue_t convertCswTelemValue(CustomSwData * cs);
|
getvalue_t convertCswTelemValue(CustomSwData * cs);
|
||||||
|
|
||||||
|
#if defined(CPUARM)
|
||||||
|
#define convertTelemValue(channel, value) convert16bitsTelemValue(channel, value)
|
||||||
|
#define convertBarTelemValue(channel, value) convert8bitsTelemValue(channel, value)
|
||||||
|
#define maxBarTelemValue(channel) max8bitsTelemValue(channel)
|
||||||
|
#else
|
||||||
|
#define convertTelemValue(channel, value) convert8bitsTelemValue(channel, value)
|
||||||
|
#define convertBarTelemValue(channel, value) convert8bitsTelemValue(channel, value)
|
||||||
|
#define maxBarTelemValue(channel) maxTelemValue(channel)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(FRSKY) || defined(CPUARM)
|
#if defined(FRSKY) || defined(CPUARM)
|
||||||
lcdint_t applyChannelRatio(uint8_t channel, lcdint_t val);
|
lcdint_t applyChannelRatio(uint8_t channel, lcdint_t val);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue