Correct maximums for Gauges

Flash saving
This commit is contained in:
bsongis
2012-03-16 19:16:39 +00:00
parent 052252ae37
commit f795510e0c
10 changed files with 44 additions and 67 deletions
+33 -22
View File
@@ -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)
+1
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
}
-1
View File
@@ -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
View File
@@ -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
View File
@@ -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;
-11
View File
@@ -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
View File
@@ -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 "
-11
View File
@@ -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 "