From f7b8eeeec517b3f918802b9fdc9d5c1aebd187fb Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 16 Mar 2012 17:56:44 +0000 Subject: [PATCH] More fields displayed in Custom Telemetry Screen Vario Function Switch (first part) --- src/audio.h | 2 + src/beeper.h | 2 + src/drivers.cpp | 33 +++++++- src/frsky.cpp | 182 ++++++++++++++++++++++++------------------ src/frsky.h | 11 ++- src/lcd.h | 1 + src/main_views.cpp | 10 ++- src/model_menus.cpp | 4 +- src/myeeprom.h | 20 ++++- src/o9xstrings.cpp | 2 +- src/o9xstrings.h | 6 +- src/open9x.cpp | 28 ++++--- src/simpgmspace.h | 3 +- src/templates.cpp | 2 +- src/translations/en.h | 4 +- src/translations/fr.h | 4 +- src/translations/se.h | 4 +- 17 files changed, 208 insertions(+), 110 deletions(-) diff --git a/src/audio.h b/src/audio.h index 3254d0640..278042ee4 100644 --- a/src/audio.h +++ b/src/audio.h @@ -215,6 +215,8 @@ void audioDefevent(uint8_t e); #define AUDIO_MIX_WARNING_2() audioDefevent(AU_MIX_WARNING_2) #define AUDIO_MIX_WARNING_3() audioDefevent(AU_MIX_WARNING_3) #define AUDIO_POT_STICK_MIDDLE() audioDefevent(AU_POT_STICK_MIDDLE) +#define AUDIO_VARIO_UP() audioDefevent(AU_KEYPAD_UP) +#define AUDIO_VARIO_DOWN() audioDefevent(AU_KEYPAD_DOWN) #if defined(PCBSTD) #define AUDIO_DRIVER() audio.driver() diff --git a/src/beeper.h b/src/beeper.h index ec3ccb71e..0fd744684 100644 --- a/src/beeper.h +++ b/src/beeper.h @@ -63,6 +63,8 @@ extern void beep(uint8_t val); #define AUDIO_MIX_WARNING_2() beep(1) #define AUDIO_MIX_WARNING_3() beep(1) #define AUDIO_POT_STICK_MIDDLE() beep(2) +#define AUDIO_VARIO_UP() beep(0) +#define AUDIO_VARIO_DOWN() beep(0) #define IS_AUDIO_BUSY() (g_beepCnt || beepAgain || beepOn) diff --git a/src/drivers.cpp b/src/drivers.cpp index e63ee8b0a..c2a0e34ac 100644 --- a/src/drivers.cpp +++ b/src/drivers.cpp @@ -481,8 +481,39 @@ void per10ms() #endif #endif - // These moved here from perOut() [gruvin9x.cpp] to improve beep trigger reliability. + // These moved here from perOut() to improve beep trigger reliability. if(mixWarning & 1) if(((g_tmr10ms&0xFF)== 0)) AUDIO_MIX_WARNING_1(); if(mixWarning & 2) if(((g_tmr10ms&0xFF)== 64) || ((g_tmr10ms&0xFF)== 72)) AUDIO_MIX_WARNING_2(); if(mixWarning & 4) if(((g_tmr10ms&0xFF)==128) || ((g_tmr10ms&0xFF)==136) || ((g_tmr10ms&0xFF)==144)) AUDIO_MIX_WARNING_3(); + +#if defined(FRSKY_HUB) or defined(WS_HOW_HIGH) + static uint16_t s_varioTmr = 0; + + if (isFunctionActive(FUNC_VARIO)) { +#if defined(AUDIO) + uint8_t warble = 0; +#endif + int8_t verticalSpeed = frskyHubData.baroAltitude_bp; // TODO to be modified of course!! + + uint16_t interval; + if (verticalSpeed == 0) { + interval = 300; + } + else { + if (verticalSpeed < 0) { + verticalSpeed = -verticalSpeed; + warble = 1; + } + if (verticalSpeed > 100) verticalSpeed = 100; + interval = (uint16_t)200 / verticalSpeed; + } + if (g_tmr10ms - s_varioTmr > interval) { + s_varioTmr = g_tmr10ms; + if (warble) + AUDIO_VARIO_DOWN(); + else + AUDIO_VARIO_UP(); + } + } +#endif } diff --git a/src/frsky.cpp b/src/frsky.cpp index 39c8a008f..d77e6a298 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -204,13 +204,15 @@ void parseTelemHubByte(uint8_t byte) return; } + state = TS_IDLE; + if ((uint8_t)structPos == offsetof(FrskyHubData, gpsLatitude_bp)) { if (lowByte || byte) frskyHubData.gpsFix = 1; else if (frskyHubData.gpsFix > 0 && frskyHubData.gpsLatitude_bp > 1) frskyHubData.gpsFix = 0; } - if ((uint8_t)structPos == offsetof(FrskyHubData, gpsLongitude_bp)) { + else if ((uint8_t)structPos == offsetof(FrskyHubData, gpsLongitude_bp)) { if (lowByte || byte) frskyHubData.gpsFix = 1; else if (frskyHubData.gpsFix > 0 && frskyHubData.gpsLongitude_bp > 1) @@ -220,71 +222,89 @@ void parseTelemHubByte(uint8_t byte) if ((uint8_t)structPos == offsetof(FrskyHubData, gpsAltitude_bp) || ((uint8_t)structPos >= offsetof(FrskyHubData, gpsAltitude_ap) && (uint8_t)structPos <= offsetof(FrskyHubData, gpsLatitudeNS) && (uint8_t)structPos != offsetof(FrskyHubData, baroAltitude_bp) && (uint8_t)structPos != offsetof(FrskyHubData, baroAltitude_ap))) { // If we don't have a fix, we may discard the value - if (frskyHubData.gpsFix <= 0) { - state = TS_IDLE; + if (frskyHubData.gpsFix <= 0) return; - } } ((uint8_t*)&frskyHubData)[structPos] = lowByte; ((uint8_t*)&frskyHubData)[structPos+1] = byte; - // TODO switch here ... + switch ((uint8_t)structPos) { - if ((uint8_t)structPos == offsetof(FrskyHubData, rpm)) { - frskyHubData.rpm /= (g_model.frsky.blades+2); - } + case offsetof(FrskyHubData, rpm): + frskyHubData.rpm /= (g_model.frsky.blades+2); + if (frskyHubData.rpm > frskyHubData.maxRpm) + frskyHubData.maxRpm = frskyHubData.rpm; + break; - if ((uint8_t)structPos == offsetof(FrskyHubData, baroAltitude_bp)) { - // First received altitude => Altitude offset - if (!frskyHubData.baroAltitudeOffset) - frskyHubData.baroAltitudeOffset = -frskyHubData.baroAltitude_bp; - frskyHubData.baroAltitude_bp += frskyHubData.baroAltitudeOffset; - if (frskyHubData.baroAltitude_bp > frskyHubData.maxAltitude) - frskyHubData.maxAltitude = frskyHubData.baroAltitude_bp; - } + case offsetof(FrskyHubData, temperature1): + if (frskyHubData.temperature1 > frskyHubData.maxTemperature1) + frskyHubData.maxTemperature1 = frskyHubData.temperature1; + break; - if ((uint8_t)structPos == offsetof(FrskyHubData, gpsAltitude_ap)) { - if (!frskyHubData.gpsAltitudeOffset) - frskyHubData.gpsAltitudeOffset = -frskyHubData.gpsAltitude_bp; - frskyHubData.gpsAltitude_bp += frskyHubData.gpsAltitudeOffset; - if (frskyHubData.gpsAltitude_bp > frskyHubData.maxAltitude) - frskyHubData.maxAltitude = frskyHubData.gpsAltitude_bp; + case offsetof(FrskyHubData, temperature2): + if (frskyHubData.temperature2 > frskyHubData.maxTemperature2) + frskyHubData.maxTemperature2 = frskyHubData.temperature2; + break; - if (!frskyHubData.pilotLatitude && !frskyHubData.pilotLongitude) { - // First received GPS position => Pilot GPS position - getGpsPilotPosition(); - } - else if (frskyHubData.gpsDistNeeded || g_menuStack[0] == menuProcFrsky) { - getGpsDistance(); - } - } + case offsetof(FrskyHubData, baroAltitude_bp): + // First received barometer altitude => Altitude offset + if (!frskyHubData.baroAltitudeOffset) + frskyHubData.baroAltitudeOffset = -frskyHubData.baroAltitude_bp; + frskyHubData.baroAltitude_bp += frskyHubData.baroAltitudeOffset; + if (frskyHubData.baroAltitude_bp > frskyHubData.maxAltitude) + frskyHubData.maxAltitude = frskyHubData.baroAltitude_bp; + break; - if ((uint8_t)structPos == offsetof(FrskyHubData, gpsSpeed_bp)) { - // Speed => Max speed - if (frskyHubData.maxGpsSpeed < frskyHubData.gpsSpeed_bp) - frskyHubData.maxGpsSpeed = frskyHubData.gpsSpeed_bp; - } + case offsetof(FrskyHubData, gpsAltitude_ap): + if (!frskyHubData.gpsAltitudeOffset) + frskyHubData.gpsAltitudeOffset = -frskyHubData.gpsAltitude_bp; + frskyHubData.gpsAltitude_bp += frskyHubData.gpsAltitudeOffset; + if (frskyHubData.gpsAltitude_bp > frskyHubData.maxAltitude) + frskyHubData.maxAltitude = frskyHubData.gpsAltitude_bp; - if ((uint8_t)structPos == offsetof(FrskyHubData, volts)) { - // Voltage => Cell number + Cell voltage - uint8_t battnumber = ((frskyHubData.volts & 0x00F0) >> 4); - if (battnumber < 12) { - if (frskyHubData.cellsCount < battnumber+1) { - frskyHubData.cellsCount = battnumber+1; + if (!frskyHubData.pilotLatitude && !frskyHubData.pilotLongitude) { + // First received GPS position => Pilot GPS position + getGpsPilotPosition(); } - uint8_t cellVolts = (uint8_t)(((((frskyHubData.volts & 0xFF00) >> 8) + ((frskyHubData.volts & 0x000F) << 8)))/10); - frskyHubData.cellVolts[battnumber] = cellVolts; - if (!frskyHubData.minCellVolts || cellVolts < frskyHubData.minCellVolts) - frskyHubData.minCellVolts = cellVolts; + else if (frskyHubData.gpsDistNeeded || g_menuStack[0] == menuProcFrsky) { + getGpsDistance(); + } + break; + + case offsetof(FrskyHubData, gpsSpeed_bp): + // Speed => Max speed + if (frskyHubData.gpsSpeed_bp < frskyHubData.maxGpsSpeed) + frskyHubData.maxGpsSpeed = frskyHubData.gpsSpeed_bp; + break; + + case offsetof(FrskyHubData, volts): + // Voltage => Cell number + Cell voltage + { + uint8_t battnumber = ((frskyHubData.volts & 0x00F0) >> 4); + if (battnumber < 12) { + if (frskyHubData.cellsCount < battnumber+1) { + frskyHubData.cellsCount = battnumber+1; + } + uint8_t cellVolts = (uint8_t)(((((frskyHubData.volts & 0xFF00) >> 8) + ((frskyHubData.volts & 0x000F) << 8)))/10); + frskyHubData.cellVolts[battnumber] = cellVolts; + if (!frskyHubData.minCellVolts || cellVolts < frskyHubData.minCellVolts) + frskyHubData.minCellVolts = cellVolts; + } + break; } - } - if ((uint8_t)structPos == offsetof(FrskyHubData, hour)) { - frskyHubData.hour = ((uint8_t)(frskyHubData.hour + g_eeGeneral.timezone + 24)) % 24; - } + case offsetof(FrskyHubData, hour): + frskyHubData.hour = ((uint8_t)(frskyHubData.hour + g_eeGeneral.timezone + 24)) % 24; + break; - state = TS_IDLE; + case offsetof(FrskyHubData, accelX): + case offsetof(FrskyHubData, accelY): + case offsetof(FrskyHubData, accelZ): + *(int16_t*)(&((uint8_t*)&frskyHubData)[structPos]) /= 10; + break; + + } } #endif @@ -620,22 +640,18 @@ void frskyAlarmsRefresh() } #endif -// TODO change names -// Optimize? void FrskyRSSI::set(uint8_t value) { this->value = (((uint16_t)this->value * 7) + value + 4) / 8; - if (!min || min > value) + if (!min || value < min) min = value; } void FrskyData::set(uint8_t value) { - this->value = value; - if (!max || max < value) + FrskyRSSI::set(value); + if (!max || value > max) max = value; - if (!min || min > value) - min = value; } void resetTelemetry() @@ -674,6 +690,8 @@ void resetTelemetry() frskyHubData.gpsAltitude_bp = 50; frskyHubData.baroAltitude_bp = 50; frskyHubData.maxAltitude = 500; + + frskyHubData.accelY = 100; #endif } @@ -763,8 +781,8 @@ enum FrskyViews { e_frsky_custom, e_frsky_bars, e_frsky_a1a2, - e_frsky_gps_position, // TODO rename - FRSKY_VIEW_MAX = e_frsky_gps_position + e_frsky_after_flight, + FRSKY_VIEW_MAX = e_frsky_after_flight }; static uint8_t s_frsky_view = e_frsky_custom; @@ -783,7 +801,7 @@ void displayRssiLine() } else { lcd_putsAtt(7*FW, 7*FH+1, STR_NODATA, BLINK); - lcd_filled_rect(0, DISPLAY_H-8, DISPLAY_W, 8); + lcd_status_line(); } } @@ -797,7 +815,7 @@ void displayGpsTime() lcd_outdezNAtt(9*FW+2, TIME_LINE, frskyHubData.min, att, 2); lcd_putcAtt(11*FW-1, TIME_LINE, ':', att); lcd_outdezNAtt(12*FW-1, TIME_LINE, frskyHubData.sec, att, 2); - lcd_filled_rect(0, TIME_LINE-1, DISPLAY_W, 8); + lcd_status_line(); } #endif @@ -851,9 +869,9 @@ void menuProcFrsky(uint8_t event) if (frskyStreaming > 0) { if (field == TELEM_ACC) { lcd_putsLeft(7*FH+1, STR_ACCEL); - lcd_outdezNAtt(4*FW, 7*FH+1, (int32_t)frskyHubData.accelX/10, LEFT|PREC2); - lcd_outdezNAtt(10*FW, 7*FH+1, (int32_t)frskyHubData.accelY/10, LEFT|PREC2); - lcd_outdezNAtt(16*FW, 7*FH+1, (int32_t)frskyHubData.accelZ/10, LEFT|PREC2); + lcd_outdezNAtt(4*FW, 7*FH+1, frskyHubData.accelX, LEFT|PREC2); + lcd_outdezNAtt(10*FW, 7*FH+1, frskyHubData.accelY, LEFT|PREC2); + lcd_outdezNAtt(16*FW, 7*FH+1, frskyHubData.accelZ, LEFT|PREC2); break; } else if (field == TELEM_GPS_TIME) { @@ -867,21 +885,21 @@ void menuProcFrsky(uint8_t event) } } if (field) { - // TODO change name STR_VTELEMBARS - lcd_putsiAtt(j*65, 1+FH+2*FH*i, STR_VTELEMBARS, field, 0); + // TODO change name STR_VTELEMCHNS + lcd_putsiAtt(j*65, 1+FH+2*FH*i, STR_VTELEMCHNS, field, 0); int16_t value = getValue(CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+field-1); putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, i==3 ? NO_UNIT : DBLSIZE|NO_UNIT); } } } - lcd_filled_rect(0, 7*FH, DISPLAY_W, 8); // TODO optim function? + lcd_status_line(); } else if (s_frsky_view == e_frsky_bars) { // The bars uint8_t bars_height = 5; for (int8_t i=3; i>=0; i--) { if (g_model.frsky.bars[i].source && (51-g_model.frsky.bars[i].barMax) > g_model.frsky.bars[i].barMin) { - lcd_putsiAtt(0, bars_height+bars_height+1+i*(bars_height+6), STR_VTELEMBARS, g_model.frsky.bars[i].source, 0); + lcd_putsiAtt(0, bars_height+bars_height+1+i*(bars_height+6), STR_VTELEMCHNS, g_model.frsky.bars[i].source, 0); lcd_rect(25, bars_height+6+i*(bars_height+6), 101, bars_height+2); uint16_t value = getValue(CSW_CHOUT_BASE+NUM_CHNOUT+MAX_TIMERS+g_model.frsky.bars[i].source-1); uint16_t threshold = 0; @@ -946,11 +964,11 @@ void menuProcFrsky(uint8_t event) displayRssiLine(); } #ifdef FRSKY_HUB - else if (s_frsky_view == e_frsky_gps_position) { + else if (s_frsky_view == e_frsky_after_flight) { // Latitude -#define LAT_LINE (2*FH-4) - lcd_putsLeft( LAT_LINE, PSTR("Lat:")); - lcd_outdezAtt(lcd_lastPos, LAT_LINE, frskyHubData.gpsLatitude_bp / 100, LEFT); // ddd before '.' +#define LAT_LINE (1*FH) + lcd_putsLeft( LAT_LINE, PSTR("Lat")); + lcd_outdezAtt(4*FW, LAT_LINE, frskyHubData.gpsLatitude_bp / 100, LEFT); // ddd before '.' lcd_putc(lcd_lastPos, LAT_LINE, '@'); uint8_t mn = frskyHubData.gpsLatitude_bp % 100; lcd_outdezNAtt(lcd_lastPos+FW, LAT_LINE, mn, LEFT|LEADING0, 2); // mm before '.' @@ -959,9 +977,9 @@ void menuProcFrsky(uint8_t event) lcd_putc(lcd_lastPos+1, LAT_LINE, frskyHubData.gpsLatitudeNS ? frskyHubData.gpsLatitudeNS : '-'); // Longitude -#define LONG_LINE (3*FH-3) - lcd_putsLeft(LONG_LINE, PSTR("Lon:")); - lcd_outdezAtt(lcd_lastPos, LONG_LINE, frskyHubData.gpsLongitude_bp / 100, LEFT); // ddd before '.' +#define LONG_LINE (2*FH) + lcd_putsLeft(LONG_LINE, PSTR("Lon")); + lcd_outdezAtt(5*FW, LONG_LINE, frskyHubData.gpsLongitude_bp / 100, LEFT); // ddd before '.' lcd_putc(lcd_lastPos, LONG_LINE, '@'); mn = frskyHubData.gpsLongitude_bp % 100; lcd_outdezNAtt(lcd_lastPos+FW, LONG_LINE, mn, LEFT|LEADING0, 2); // mm before '.' @@ -969,14 +987,22 @@ void menuProcFrsky(uint8_t event) lcd_outdezNAtt(lcd_lastPos+2, LONG_LINE, frskyHubData.gpsLongitude_ap, LEFT|UNSIGN|LEADING0, 4); // after '.' lcd_putc(lcd_lastPos+1, LONG_LINE, frskyHubData.gpsLongitudeEW ? frskyHubData.gpsLongitudeEW : '-'); -#define COURSE_LINE (4*FH-2) +#define COURSE_LINE (3*FH) // Course / Heading - lcd_putsLeft(COURSE_LINE, PSTR("Hdg:")); - lcd_outdezNAtt(lcd_lastPos, COURSE_LINE, frskyHubData.gpsCourse_bp, LEFT|LEADING0, 3); // before '.' + lcd_putsLeft(COURSE_LINE, PSTR("Hdg")); + lcd_outdezNAtt(5*FW, COURSE_LINE, frskyHubData.gpsCourse_bp, LEFT|LEADING0, 3); // before '.' lcd_plot(lcd_lastPos, COURSE_LINE+6, 0); // small decimal point lcd_outdezAtt(lcd_lastPos+2, COURSE_LINE, frskyHubData.gpsCourse_ap, LEFT); // after '.' lcd_putc(lcd_lastPos, COURSE_LINE, '@'); +#define RSSI_LINE (4*FH) + // Rssi + lcd_putsLeft(RSSI_LINE, PSTR("Rssi")); + lcd_puts(5*FW, RSSI_LINE, STR_TX); + lcd_outdezNAtt(lcd_lastPos, RSSI_LINE, frskyRSSI[1].min, LEFT|LEADING0, 2); + lcd_puts(10*FW, RSSI_LINE, STR_RX); + lcd_outdezNAtt(lcd_lastPos, RSSI_LINE, frskyRSSI[0].min, LEFT|LEADING0, 2); + displayGpsTime(); } #endif diff --git a/src/frsky.h b/src/frsky.h index 4fb68001d..473a827c1 100644 --- a/src/frsky.h +++ b/src/frsky.h @@ -52,7 +52,6 @@ enum AlarmLevel { #define ALARM_GREATER(channel, alarm) ((g_model.frsky.channels[channel].alarms_greater >> alarm) & 1) #define ALARM_LEVEL(channel, alarm) ((g_model.frsky.channels[channel].alarms_level >> (2*alarm)) & 3) -// TODO change names class FrskyRSSI { public: uint8_t value; @@ -115,10 +114,16 @@ PACK(struct FrskyHubData { uint16_t volts_ap; // 0x3B // end of FrSky Hub data uint16_t gpsDistance; - uint16_t maxGpsDistance; - uint16_t maxGpsSpeed; int16_t gpsAltitudeOffset; + uint8_t minCellMinVolts; + uint8_t minCellMaxVolts; + /* order is important starting from here */ int16_t maxAltitude; + uint16_t maxRpm; + int16_t maxTemperature1; + int16_t maxTemperature2; + uint16_t maxGpsSpeed; + uint16_t maxGpsDistance; }); #elif defined(WS_HOW_HIGH) diff --git a/src/lcd.h b/src/lcd.h index d142736b8..98eecd3db 100644 --- a/src/lcd.h +++ b/src/lcd.h @@ -125,6 +125,7 @@ extern void lcd_vlineStip(uint8_t x, int8_t y, int8_t h, uint8_t pat); extern void lcd_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t pat=SOLID, uint8_t att=0); extern void lcd_filled_rect(uint8_t x, int8_t y, uint8_t w, uint8_t h, uint8_t pat=SOLID, uint8_t att=0); +#define lcd_status_line() lcd_filled_rect(0, 7*FH, DISPLAY_W, 8) inline void lcd_square(uint8_t x, uint8_t y, uint8_t w, uint8_t att=0) { lcd_rect(x, y, w, w, SOLID, att); } #define DO_CROSS(xx,yy,ww) \ diff --git a/src/main_views.cpp b/src/main_views.cpp index 637e5423e..8e8429da0 100644 --- a/src/main_views.cpp +++ b/src/main_views.cpp @@ -52,8 +52,14 @@ void doMainScreenGrphics() DO_CROSS(LBOX_CENTERX,LBOX_CENTERY,3) DO_CROSS(RBOX_CENTERX,RBOX_CENTERY,3) - lcd_square(LBOX_CENTERX+(calibratedStick[CONVERT_MODE(0+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, LBOX_CENTERY-(calibratedStick[CONVERT_MODE(1+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND); - lcd_square(RBOX_CENTERX+(calibratedStick[CONVERT_MODE(3+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, RBOX_CENTERY-(calibratedStick[CONVERT_MODE(2+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND); + int16_t calibStickVert = calibratedStick[CONVERT_MODE(1+1)-1]; + if (g_eeGeneral.throttleReversed && CONVERT_MODE(1+1)-1 == THR_STICK) + calibStickVert = -calibStickVert; + lcd_square(LBOX_CENTERX+(calibratedStick[CONVERT_MODE(0+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, LBOX_CENTERY-(calibStickVert*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND); + calibStickVert = calibratedStick[CONVERT_MODE(2+1)-1]; + if (g_eeGeneral.throttleReversed && CONVERT_MODE(2+1)-1 == THR_STICK) + calibStickVert = -calibStickVert; + lcd_square(RBOX_CENTERX+(calibratedStick[CONVERT_MODE(3+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, RBOX_CENTERY-(calibStickVert*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND); // Optimization by Mike Blandford { diff --git a/src/model_menus.cpp b/src/model_menus.cpp index c30b12ea6..b8fd178f9 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -2003,7 +2003,7 @@ void menuProcTelemetry(uint8_t event) y = (subN-s_pgOfs)*FH; for (uint8_t k=0; k<2; k++) { uint8_t value = getTelemCustomField(j, k); - lcd_putsiAtt(k==0?4:TELEM_COL2, y, STR_VTELEMBARS, value, (sub==subN && m_posHorz==k) ? blink : 0); + lcd_putsiAtt(k==0?4:TELEM_COL2, y, STR_VTELEMCHNS, value, (sub==subN && m_posHorz==k) ? blink : 0); if (sub==subN && m_posHorz==k && (s_editMode>0 || p1valdiff)) { CHECK_INCDEC_MODELVAR(event, value, 0, (j==3 && k==0) ? STATUS_MAX : DISPLAY_MAX); if (checkIncDec_Ret) { @@ -2031,7 +2031,7 @@ void menuProcTelemetry(uint8_t event) for (uint8_t j=0; j<4; j++) { if (s_pgOfs #include #include +#include #undef min #undef max @@ -224,8 +225,6 @@ void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t size); -#undef offsetof -#define offsetof(st, m) ((size_t) ( (char *)&((st *)(0))->m - (char *)0 )) #define wdt_reset() sleep(1) #endif diff --git a/src/templates.cpp b/src/templates.cpp index 10dfb66ea..d5c9aac46 100644 --- a/src/templates.cpp +++ b/src/templates.cpp @@ -209,7 +209,7 @@ void applyTemplate(uint8_t idx) // Servo Test case TMPL_SERVO_TEST: - md=setDest(15, true); md->srcRaw=MIXSRC_SW1; md->weight=110; md->mltpx=MLTPX_REP; md->delayUp = 6; md->delayDown = 6; md->speedUp = 8; md->speedDown = 8; + md=setDest(15, true); md->srcRaw=MIXSRC_SW1; md->weight=110; md->mltpx=MLTPX_ADD; md->delayUp = 6; md->delayDown = 6; md->speedUp = 8; md->speedDown = 8; setSwitch(1, CS_VNEG, CSW_CHOUT_BASE+16, 0); break; diff --git a/src/translations/en.h b/src/translations/en.h index 234e832fb..568cdf679 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -91,8 +91,8 @@ #define LEN_FUNCSOUNDS "\006" #define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick ""Haptc1""Haptc2""Haptc3" -#define LEN_VTELEMBARS "\004" -#define TR_VTELEMBARS "---\0""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Cell""Dist""ACCx""ACCy""ACCz""TMR1""TMR2""ACC\0""Time" +#define LEN_VTELEMCHNS "\004" +#define TR_VTELEMCHNS "---\0""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""t1\0 ""t2\0 ""Spd\0""Dist""Cell""Tx\0 ""Rx\0 ""AccX""AccY""AccZ""Hdg\0""a1\0 ""a2\0 ""cell""CELL""ALT\0""RPM\0""T1\0 ""T2\0 ""SPD\0""DIST""Tmr1""Tmr2""ACC\0""Time" #define LEN_VTELEMUNIT "\003" #define TR_VTELEMUNIT "v\0 ""A\0 ""-\0 ""kts""kmh""M/h""m\0 ""@\0 ""%\0" diff --git a/src/translations/fr.h b/src/translations/fr.h index b1e3e252a..b345b6dae 100644 --- a/src/translations/fr.h +++ b/src/translations/fr.h @@ -91,8 +91,8 @@ #define LEN_FUNCSOUNDS "\006" #define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick ""Haptc1""Haptc2""Haptc3" -#define LEN_VTELEMBARS "\004" -#define TR_VTELEMBARS "---\0""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Cell""Dist""ACCx""ACCy""ACCz""TMR1""TMR2""ACC\0""Time" +#define LEN_VTELEMCHNS "\004" +#define TR_VTELEMCHNS "---\0""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""t1\0 ""t2\0 ""Spd\0""Dist""Cell""Tx\0 ""Rx\0 ""AccX""AccY""AccZ""Hdg\0""a1\0 ""a2\0 ""cell""CELL""ALT\0""RPM\0""T1\0 ""T2\0 ""SPD\0""DIST""Tmr1""Tmr2""ACC\0""Time" #define LEN_VTELEMUNIT "\003" #define TR_VTELEMUNIT "v\0 ""A\0 ""-\0 ""kts""kmh""M/h""m\0 ""@\0 ""%\0" diff --git a/src/translations/se.h b/src/translations/se.h index 42f6fbe1c..bec7ad3c7 100644 --- a/src/translations/se.h +++ b/src/translations/se.h @@ -91,8 +91,8 @@ #define LEN_FUNCSOUNDS "\006" #define TR_FUNCSOUNDS "Varn1 ""Varn2 ""F\200r ""Ring ""SciFi ""Robot ""Pip ""Tada ""Syrsa ""Siren ""Alarm ""Ratata""Tick ""Vibr1 ""Vibr2 ""Vibr3 " -#define LEN_VTELEMBARS "\004" -#define TR_VTELEMBARS "---\0""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Cell""Dist""ACCx""ACCy""ACCz""TMR1""TMR2""ACC\0""Time" +#define LEN_VTELEMCHNS "\004" +#define TR_VTELEMCHNS "---\0""A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""t1\0 ""t2\0 ""Spd\0""Dist""Cell""Tx\0 ""Rx\0 ""AccX""AccY""AccZ""Hdg\0""a1\0 ""a2\0 ""cell""CELL""ALT\0""RPM\0""T1\0 ""T2\0 ""SPD\0""DIST""Tmr1""Tmr2""ACC\0""Time" #define LEN_VTELEMUNIT "\003" #define TR_VTELEMUNIT "v\0 ""A\0 ""-\0 ""kts""kmh""M/h""m\0 ""@\0 ""%\0"