1
0
Fork 0
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:
Bertrand Songis 2014-01-28 17:51:35 +01:00
parent f41f1a3f7b
commit 7d88ff506e
4 changed files with 39 additions and 19 deletions

View file

@ -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;
} }
} }

View file

@ -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) {

View file

@ -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;
} }

View file

@ -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