Correct maximums for Gauges
Flash saving
This commit is contained in:
+33
-22
@@ -695,28 +695,35 @@ void resetTelemetry()
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t maxTelemValue(uint8_t channel)
|
||||
{
|
||||
switch (channel) {
|
||||
case TELEM_FUEL:
|
||||
return 100;
|
||||
default:
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
|
||||
int16_t convertTelemValue(uint8_t channel, uint8_t value)
|
||||
{
|
||||
// TODO enum
|
||||
|
||||
int16_t result;
|
||||
|
||||
switch (channel) {
|
||||
case 2:
|
||||
// Altitude
|
||||
case TELEM_ALT:
|
||||
result = value * 4;
|
||||
break;
|
||||
case 3:
|
||||
// RPMs
|
||||
case TELEM_RPM:
|
||||
result = value * 50;
|
||||
break;
|
||||
case 7:
|
||||
case 8:
|
||||
// SPEED
|
||||
case TELEM_T1:
|
||||
case TELEM_T2:
|
||||
result = (int16_t)value - 30;
|
||||
break;
|
||||
case TELEM_SPEED:
|
||||
case TELEM_CELL:
|
||||
result = value * 2;
|
||||
break;
|
||||
case 9:
|
||||
// DIST
|
||||
case TELEM_DIST:
|
||||
result = value * 8;
|
||||
break;
|
||||
default:
|
||||
@@ -734,23 +741,23 @@ void putsTelemetryValue(uint8_t x, uint8_t y, int16_t val, uint8_t unit, uint8_t
|
||||
}
|
||||
|
||||
const pm_uint8_t bchunit_ar[] = {
|
||||
UNIT_VOLTS, // A1
|
||||
UNIT_VOLTS, // A2
|
||||
UNIT_VOLTS, // A1 // TODO needed?
|
||||
UNIT_VOLTS, // A2 // TODO needed?
|
||||
UNIT_METERS, // Alt
|
||||
UNIT_RAW, // Rpm
|
||||
UNIT_PERCENT, // Fuel
|
||||
UNIT_DEGREES, // T1
|
||||
UNIT_DEGREES, // T2
|
||||
UNIT_KMH, // Speed
|
||||
UNIT_VOLTS, // Cell
|
||||
UNIT_METERS // Dist
|
||||
UNIT_METERS, // Dist
|
||||
UNIT_VOLTS, // Cell // TODO needed?
|
||||
};
|
||||
|
||||
void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, uint8_t att)
|
||||
{
|
||||
switch (channel) {
|
||||
case 0:
|
||||
case 1:
|
||||
case TELEM_A1-1:
|
||||
case TELEM_A2-1:
|
||||
// A1 and A2
|
||||
{
|
||||
// TODO optimize this, avoid int32_t
|
||||
@@ -768,8 +775,12 @@ void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, ui
|
||||
}
|
||||
}
|
||||
putsTelemetryValue(x, y, converted_value, g_model.frsky.channels[channel].type, att);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case TELEM_CELL-1:
|
||||
putsTelemetryValue(x, y, val, UNIT_VOLTS, att|PREC2);
|
||||
break;
|
||||
|
||||
default:
|
||||
putsTelemetryValue(x, y, val, pgm_read_byte(bchunit_ar+channel), att);
|
||||
@@ -907,9 +918,9 @@ void menuProcFrsky(uint8_t event)
|
||||
if (g_model.frsky.bars[i].source <= 2)
|
||||
threshold = g_model.frsky.channels[g_model.frsky.bars[i].source-1].alarms_value[0];
|
||||
else
|
||||
threshold = convertTelemValue(g_model.frsky.bars[i].source-1, barsThresholds[g_model.frsky.bars[i].source-3]);
|
||||
int16_t barMin = convertTelemValue(g_model.frsky.bars[i].source-1, (g_model.frsky.bars[i].barMin * 5));
|
||||
int16_t barMax = convertTelemValue(g_model.frsky.bars[i].source-1, ((51 - g_model.frsky.bars[i].barMax) * 5));
|
||||
threshold = convertTelemValue(g_model.frsky.bars[i].source, barsThresholds[g_model.frsky.bars[i].source-3]);
|
||||
int16_t barMin = convertTelemValue(g_model.frsky.bars[i].source, (g_model.frsky.bars[i].barMin * 5));
|
||||
int16_t barMax = convertTelemValue(g_model.frsky.bars[i].source, ((51 - g_model.frsky.bars[i].barMax) * 5));
|
||||
if (threshold) {
|
||||
thresholdX = (uint8_t)(int16_t)((int16_t)100 * (threshold - barMin) / (barMax - barMin));
|
||||
if (thresholdX > 100)
|
||||
|
||||
@@ -164,6 +164,7 @@ bool FRSKY_alarmRaised(uint8_t idx);
|
||||
|
||||
void resetTelemetry();
|
||||
uint8_t getTelemCustomField(uint8_t line, uint8_t col);
|
||||
uint8_t maxTelemValue(uint8_t channel);
|
||||
int16_t convertTelemValue(uint8_t channel, uint8_t value);
|
||||
|
||||
void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, uint8_t att);
|
||||
|
||||
+1
-1
@@ -475,7 +475,7 @@ void putsChnRaw(uint8_t x, uint8_t y, uint8_t idx, uint8_t att)
|
||||
putsStrIdx(x, y, STR_TMR, idx - (NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT), att);
|
||||
#ifdef FRSKY
|
||||
else
|
||||
lcd_putsiAtt(x, y, STR_TELEMCHNS, idx-1-(NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT+MAX_TIMERS), att);
|
||||
lcd_putsiAtt(x, y, STR_VTELEMCHNS, idx-(NUM_STICKS+NUM_POTS+2+3+NUM_PPM+NUM_CHNOUT+MAX_TIMERS), att);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -1686,7 +1686,7 @@ void menuProcCustomSwitches(uint8_t event)
|
||||
|
||||
#if defined(FRSKY)
|
||||
if (cs.v1 > NUM_XCHNCSW-NUM_TELEMETRY) {
|
||||
putsTelemetryChannel(20*FW, y, cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), 128+cs.v2), m_posHorz==2 ? attr : 0);
|
||||
putsTelemetryChannel(20*FW, y, cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY+1), convertTelemValue(cs.v1 - (NUM_XCHNCSW-NUM_TELEMETRY), 128+cs.v2), m_posHorz==2 ? attr : 0);
|
||||
v2_min = -128; v2_max = 127;
|
||||
}
|
||||
else
|
||||
@@ -2033,8 +2033,8 @@ void menuProcTelemetry(uint8_t event)
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_putsiAtt(4, y, STR_VTELEMCHNS, g_model.frsky.bars[j].source, (sub==subN && m_posHorz==0) ? blink : 0);
|
||||
if (g_model.frsky.bars[j].source) {
|
||||
putsTelemetryChannel(TELEM_COL2-3*FW, y, g_model.frsky.bars[j].source-1, convertTelemValue(g_model.frsky.bars[j].source-1, g_model.frsky.bars[j].barMin*5), (sub==subN && m_posHorz==1 ? blink : 0) | LEFT);
|
||||
putsTelemetryChannel(14*FW-3, y, g_model.frsky.bars[j].source-1, convertTelemValue(g_model.frsky.bars[j].source-1, (51-g_model.frsky.bars[j].barMax)*5), (sub==subN && m_posHorz==2 ? blink : 0) | LEFT);
|
||||
putsTelemetryChannel(TELEM_COL2-3*FW, y, g_model.frsky.bars[j].source-1, convertTelemValue(g_model.frsky.bars[j].source, g_model.frsky.bars[j].barMin*5), (sub==subN && m_posHorz==1 ? blink : 0) | LEFT);
|
||||
putsTelemetryChannel(14*FW-3, y, g_model.frsky.bars[j].source-1, convertTelemValue(g_model.frsky.bars[j].source, (51-g_model.frsky.bars[j].barMax)*5), (sub==subN && m_posHorz==2 ? blink : 0) | LEFT);
|
||||
}
|
||||
else {
|
||||
if (sub == subN) m_posHorz = 0;
|
||||
@@ -2048,7 +2048,7 @@ void menuProcTelemetry(uint8_t event)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.bars[j].barMin, 0, 50-g_model.frsky.bars[j].barMax);
|
||||
break;
|
||||
case 2:
|
||||
g_model.frsky.bars[j].barMax = 51 - checkIncDec(event, 51 - g_model.frsky.bars[j].barMax, g_model.frsky.bars[j].barMin+1, 51, EE_MODEL);
|
||||
g_model.frsky.bars[j].barMax = 51 - checkIncDec(event, 51 - g_model.frsky.bars[j].barMax, g_model.frsky.bars[j].barMin+1, maxTelemValue(g_model.frsky.bars[j].source) / 5, EE_MODEL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,6 @@ const pm_char STR_OPEN9X[] PROGMEM =
|
||||
ISTR(VALARM)
|
||||
ISTR(VALARMFN)
|
||||
ISTR(VTELPROTO)
|
||||
ISTR(TELEMCHNS)
|
||||
#endif
|
||||
#ifdef TEMPLATES
|
||||
ISTR(VTEMPLATES)
|
||||
|
||||
+1
-2
@@ -83,8 +83,7 @@ extern const pm_char STR_OPEN9X[];
|
||||
#define OFS_VALARM (OFS_VTELEMUNIT + sizeof(TR_VTELEMUNIT))
|
||||
#define OFS_VALARMFN (OFS_VALARM + sizeof(TR_VALARM))
|
||||
#define OFS_VTELPROTO (OFS_VALARMFN + sizeof(TR_VALARMFN))
|
||||
#define OFS_TELEMCHNS (OFS_VTELPROTO + sizeof(TR_VTELPROTO))
|
||||
#define OFS_ENDTELEM (OFS_TELEMCHNS + sizeof(TR_TELEMCHNS))
|
||||
#define OFS_ENDTELEM (OFS_VTELPROTO + sizeof(TR_VTELPROTO))
|
||||
#else
|
||||
#define OFS_ENDTELEM (OFS_FUNCSOUNDS + sizeof(TR_FUNCSOUNDS))
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -395,7 +395,7 @@ bool __getSwitch(int8_t swtch)
|
||||
#if defined(FRSKY)
|
||||
// Telemetry
|
||||
if (cs.v1 > CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS) {
|
||||
y = convertTelemValue(cs.v1-(CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+1), 128+cs.v2);
|
||||
y = convertTelemValue(cs.v1-(CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS), 128+cs.v2);
|
||||
if (cs.v1 > CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+2/*A1 and A2*/) {
|
||||
// Fill the threshold array
|
||||
barsThresholds[cs.v1-CSW_CHOUT_BASE-NUM_CHNOUT-MAX_TIMERS-3] = 128 + cs.v2;
|
||||
|
||||
@@ -139,17 +139,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt"
|
||||
|
||||
#if defined(FRSKY_HUB)
|
||||
#define LEN_TELEMCHNS "\004"
|
||||
#define TR_TELEMCHNS "AD1 AD2 ALT RPM FUELT@1 T@2 SPD\0CELL"
|
||||
#elif defined(WS_HOW_HIGH)
|
||||
#define LEN_TELEMCHNS "\003"
|
||||
#define TR_TELEMCHNS "AD1AD2ALT"
|
||||
#elif defined(FRSKY)
|
||||
#define LEN_TELEMCHNS "\003"
|
||||
#define TR_TELEMCHNS "AD1AD2"
|
||||
#endif
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
|
||||
+3
-14
@@ -117,9 +117,9 @@
|
||||
#define TR_VTELPROTO "NoneHub "
|
||||
#endif
|
||||
|
||||
#define LEN2_VTEMPLATES 14
|
||||
#define LEN_VTEMPLATES "\016"
|
||||
#define TR_VTEMPLATES "Suppr Mixages\0""4 Voies simple\0""Coupure Gaz \0""Empennage V \0""Elevon\\Delta \0""eCCPM \0""Conf. Helico \0""Servo Test \0"
|
||||
#define LEN2_VTEMPLATES 15
|
||||
#define LEN_VTEMPLATES "\017"
|
||||
#define TR_VTEMPLATES "Suppr Mixages\0\0""4 Voies simple\0""Coupure Gaz \0""Empennage V \0""Elevon\\Delta \0""eCCPM \0""Conf. Helico \0""Servo Test \0"
|
||||
|
||||
#define LEN_VSWASHTYPE "\004"
|
||||
#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90 "
|
||||
@@ -139,17 +139,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "OFF""ABS""GZs""GZ%""GZt"
|
||||
|
||||
#if defined(FRSKY_HUB)
|
||||
#define LEN_TELEMCHNS "\004"
|
||||
#define TR_TELEMCHNS "AD1 AD2 ALT RPM FUELT@1 T@2 SPD\0CELL"
|
||||
#elif defined(WS_HOW_HIGH)
|
||||
#define LEN_TELEMCHNS "\003"
|
||||
#define TR_TELEMCHNS "AD1AD2ALT"
|
||||
#elif defined(FRSKY)
|
||||
#define LEN_TELEMCHNS "\003"
|
||||
#define TR_TELEMCHNS "AD1AD2"
|
||||
#endif
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
|
||||
@@ -139,17 +139,6 @@
|
||||
#define LEN_VTMRMODES "\003"
|
||||
#define TR_VTMRMODES "AV ""ABS""THs""TH%""THt"
|
||||
|
||||
#if defined(FRSKY_HUB)
|
||||
#define LEN_TELEMCHNS "\004"
|
||||
#define TR_TELEMCHNS "AD1 AD2 H\205JDVARVTANKT@1 T@2 FARTBATT"
|
||||
#elif defined(WS_HOW_HIGH)
|
||||
#define LEN_TELEMCHNS "\003"
|
||||
#define TR_TELEMCHNS "AD1AD2H\205J"
|
||||
#elif defined(FRSKY)
|
||||
#define LEN_TELEMCHNS "\003"
|
||||
#define TR_TELEMCHNS "AD1AD2"
|
||||
#endif
|
||||
|
||||
#define LEN_DSM2MODE "\007"
|
||||
#define TR_DSM2MODE "LP4/LP5DSMonlyDSMX "
|
||||
|
||||
|
||||
Reference in New Issue
Block a user