From 590a58a6e9b26042f5e5e8286242b5a56c812168 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 25 Feb 2014 16:57:01 +0100 Subject: [PATCH 1/7] Port of GPS modifications from SVN --- radio/src/gui/view_main.cpp | 4 +- radio/src/logs.cpp | 22 ++-- radio/src/maths.cpp | 23 +--- radio/src/opentx.cpp | 4 +- radio/src/telemetry/frsky.cpp | 8 +- radio/src/telemetry/frsky.h | 45 ++++--- radio/src/telemetry/frsky_sport.cpp | 186 ++++++++++++++-------------- radio/src/telemetry/frsky_sport.h | 63 +++++----- 8 files changed, 166 insertions(+), 189 deletions(-) diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index 5eb4575bd..c172f20dc 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -268,9 +268,9 @@ void displayTopBar() } /* Altitude */ - if (g_model.frsky.altitudeDisplayed && frskyData.hub.baroAltitudeOffset) { + if (g_model.frsky.altitudeDisplayed && TELEMETRY_BARO_ALT_AVAILABLE()) { LCD_ICON(altitude_icon_x, BAR_Y, ICON_ALTITUDE); - putsTelemetryValue(altitude_icon_x+2*FW-1, BAR_Y+1, TELEMETRY_ALT_BP, UNIT_METERS, LEFT); + putsTelemetryValue(altitude_icon_x+2*FW-1, BAR_Y+1, TELEMETRY_RELATIVE_BARO_ALT_BP, UNIT_METERS, LEFT); } } diff --git a/radio/src/logs.cpp b/radio/src/logs.cpp index 41cf29b8d..f3d4aa618 100644 --- a/radio/src/logs.cpp +++ b/radio/src/logs.cpp @@ -149,7 +149,7 @@ const pm_char * openLogs() #if defined(PCBTARANIS) f_puts("Rud,Ele,Thr,Ail,S1,S2,LS,RS,SA,SB,SC,SD,SE,SF,SG,SH\n", &g_oLogFile); #else - f_puts("Rud,Ele,Thr,Ail,P1,P2,P3,THR,RUD,ELE,ID0,ID1,ID2,AIL,GEA,TRN\n", &g_oLogFile); + f_puts("Rud,Ele,Thr,Ail,P1,P2,P3,THR,RUD,ELE,3POS,AIL,GEA,TRN\n", &g_oLogFile); #endif } else { @@ -214,7 +214,7 @@ void writeLogs() #if defined(FRSKY_HUB) if (IS_USR_PROTO_FRSKY_HUB()) { - f_printf(&g_oLogFile, "%4d-%02d-%02d,%02d:%02d:%02d,%03d.%04d%c,%03d.%04d%c,%03d.%02d,%d.%02d,%d.%02d," TELEMETRY_ALT_FORMAT TELEMETRY_VSPEED_FORMAT "%d,%d,%d,%d," TELEMETRY_CELLS_FORMAT TELEMETRY_CURRENT_FORMAT "%d," TELEMETRY_VFAS_FORMAT "%d,%d,%d,", + f_printf(&g_oLogFile, "%4d-%02d-%02d,%02d:%02d:%02d,%03d.%04d%c,%03d.%04d%c,%03d.%02d," TELEMETRY_GPS_SPEED_FORMAT TELEMETRY_GPS_ALT_FORMAT TELEMETRY_BARO_ALT_FORMAT TELEMETRY_VSPEED_FORMAT "%d,%d,%d,%d," TELEMETRY_CELLS_FORMAT TELEMETRY_CURRENT_FORMAT "%d," TELEMETRY_VFAS_FORMAT "%d,%d,%d,", frskyData.hub.year+2000, frskyData.hub.month, frskyData.hub.day, @@ -229,20 +229,18 @@ void writeLogs() frskyData.hub.gpsLatitudeNS ? frskyData.hub.gpsLatitudeNS : '-', frskyData.hub.gpsCourse_bp, frskyData.hub.gpsCourse_ap, - TELEMETRY_GPS_SPEED_BP, - TELEMETRY_GPS_SPEED_AP, - TELEMETRY_GPS_ALT_BP, - TELEMETRY_GPS_ALT_AP, - TELEMETRY_ALT, - TELEMETRY_VSPEED, + TELEMETRY_GPS_SPEED_ARGS + TELEMETRY_GPS_ALT_ARGS + TELEMETRY_BARO_ALT_ARGS + TELEMETRY_VSPEED_ARGS frskyData.hub.temperature1, frskyData.hub.temperature2, frskyData.hub.rpm, frskyData.hub.fuelLevel, - TELEMETRY_CELLS, - TELEMETRY_CURRENT, + TELEMETRY_CELLS_ARGS + TELEMETRY_CURRENT_ARGS frskyData.hub.currentConsumption, - TELEMETRY_VFAS, + TELEMETRY_VFAS_ARGS frskyData.hub.accelX, frskyData.hub.accelY, frskyData.hub.accelZ); @@ -251,7 +249,7 @@ void writeLogs() #if defined(WS_HOW_HIGH) if (IS_USR_PROTO_WS_HOW_HIGH()) { - f_printf(&g_oLogFile, "%d,", TELEMETRY_ALT_BP); + f_printf(&g_oLogFile, "%d,", TELEMETRY_RELATIVE_BARO_ALT_BP); } #endif diff --git a/radio/src/maths.cpp b/radio/src/maths.cpp index 271aac8f3..cdd135966 100644 --- a/radio/src/maths.cpp +++ b/radio/src/maths.cpp @@ -48,18 +48,6 @@ lcdint_t applyChannelRatio(uint8_t channel, lcdint_t val) } #endif -#if defined(PCBTARANIS) -double gpsToDouble(bool neg, int16_t bp, int16_t ap) -{ - double result = ap; - result /= 10000; - result += (bp % 100); - result /= 60; - result += (bp / 100); - return neg?-result:result; -} -#endif - #if defined(FRSKY_HUB) void extractLatitudeLongitude(uint32_t * latitude, uint32_t * longitude) { @@ -70,17 +58,8 @@ void extractLatitudeLongitude(uint32_t * latitude, uint32_t * longitude) *longitude = ((uint32_t)(qr.quot) * 1000000) + (((uint32_t)(qr.rem) * 10000 + frskyData.hub.gpsLongitude_ap) * 5) / 3; } -#if defined(PCBTARANIS) -double pilotLatitude; -double pilotLongitude; -#endif - void getGpsPilotPosition() { -#if defined(PCBTARANIS) - pilotLatitude = gpsToDouble(frskyData.hub.gpsLatitudeNS=='S', frskyData.hub.gpsLatitude_bp, frskyData.hub.gpsLatitude_ap); - pilotLongitude = gpsToDouble(frskyData.hub.gpsLongitudeEW=='W', frskyData.hub.gpsLongitude_bp, frskyData.hub.gpsLongitude_ap); -#endif extractLatitudeLongitude(&frskyData.hub.pilotLatitude, &frskyData.hub.pilotLongitude); uint32_t lat = frskyData.hub.pilotLatitude / 10000; uint32_t angle2 = (lat*lat) / 10000; @@ -105,7 +84,7 @@ void getGpsDistance() dist = frskyData.hub.distFromEarthAxis * angle / 1000000; result += dist*dist; - dist = abs(frskyData.hub.baroAltitudeOffset ? TELEMETRY_ALT_BP : TELEMETRY_GPS_ALT_BP); + dist = abs(TELEMETRY_BARO_ALT_AVAILABLE() ? TELEMETRY_RELATIVE_BARO_ALT_BP : TELEMETRY_RELATIVE_GPS_ALT_BP); result += dist*dist; frskyData.hub.gpsDistance = isqrt32(result); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 36d95d213..c5808702b 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1275,7 +1275,7 @@ getvalue_t getValue(uint8_t i) #if defined(FRSKY_SPORT) else if (i==MIXSRC_FIRST_TELEM-1+TELEM_ALT) return frskyData.hub.baroAltitude; #elif defined(FRSKY_HUB) || defined(WS_HOW_HIGH) - else if (i==MIXSRC_FIRST_TELEM-1+TELEM_ALT) return TELEMETRY_ALT_BP; + else if (i==MIXSRC_FIRST_TELEM-1+TELEM_ALT) return TELEMETRY_RELATIVE_BARO_ALT_BP; #endif #if defined(FRSKY_HUB) else if (i==MIXSRC_FIRST_TELEM-1+TELEM_RPM) return frskyData.hub.rpm; @@ -1284,7 +1284,7 @@ getvalue_t getValue(uint8_t i) else if (i==MIXSRC_FIRST_TELEM-1+TELEM_T2) return frskyData.hub.temperature2; else if (i==MIXSRC_FIRST_TELEM-1+TELEM_SPEED) return TELEMETRY_GPS_SPEED_BP; else if (i==MIXSRC_FIRST_TELEM-1+TELEM_DIST) return frskyData.hub.gpsDistance; - else if (i==MIXSRC_FIRST_TELEM-1+TELEM_GPSALT) return TELEMETRY_GPS_ALT_BP; + else if (i==MIXSRC_FIRST_TELEM-1+TELEM_GPSALT) return TELEMETRY_RELATIVE_GPS_ALT_BP; else if (i==MIXSRC_FIRST_TELEM-1+TELEM_CELL) return (int16_t)TELEMETRY_MIN_CELL_VOLTAGE; else if (i==MIXSRC_FIRST_TELEM-1+TELEM_CELLS_SUM) return (int16_t)frskyData.hub.cellsSum; else if (i==MIXSRC_FIRST_TELEM-1+TELEM_VFAS) return (int16_t)frskyData.hub.vfas; diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 8e2a4bda2..1ef552dbf 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -71,10 +71,10 @@ FrskyData frskyData; #if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) void checkMinMaxAltitude() { - if (TELEMETRY_ALT_BP > frskyData.hub.maxAltitude) - frskyData.hub.maxAltitude = TELEMETRY_ALT_BP; - if (TELEMETRY_ALT_BP < frskyData.hub.minAltitude) - frskyData.hub.minAltitude = TELEMETRY_ALT_BP; + if (TELEMETRY_RELATIVE_BARO_ALT_BP > frskyData.hub.maxAltitude) + frskyData.hub.maxAltitude = TELEMETRY_RELATIVE_BARO_ALT_BP; + if (TELEMETRY_RELATIVE_BARO_ALT_BP < frskyData.hub.minAltitude) + frskyData.hub.minAltitude = TELEMETRY_RELATIVE_BARO_ALT_BP; } #endif diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 5acce01ac..56aafe12f 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -221,31 +221,38 @@ bool FRSKY_alarmRaised(uint8_t idx); void resetTelemetry(); +#define TELEMETRY_STREAMING() (frskyStreaming > 0) + #define TELEMETRY_CELL_VOLTAGE(k) (frskyData.hub.cellVolts[k] * 2) #define TELEMETRY_MIN_CELL_VOLTAGE (frskyData.hub.minCellVolts * 2) -#define TELEMETRY_ALT_BP frskyData.hub.baroAltitude_bp -#define TELEMETRY_ALT_AP frskyData.hub.baroAltitude_ap -#define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp -#define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap -#define TELEMETRY_GPS_ALT_AP frskyData.hub.gpsAltitude_ap -#define TELEMETRY_GPS_ALT_BP frskyData.hub.gpsAltitude_bp -#define TELEMETRY_ALT frskyData.hub.baroAltitude_bp, frskyData.hub.baroAltitude_ap -#define TELEMETRY_ALT_FORMAT "%d.%02d," -#define TELEMETRY_CELLS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, TELEMETRY_CELL_VOLTAGE(0)/100, TELEMETRY_CELL_VOLTAGE(0)%100, TELEMETRY_CELL_VOLTAGE(1)/100, TELEMETRY_CELL_VOLTAGE(1)%100, TELEMETRY_CELL_VOLTAGE(2)/100, TELEMETRY_CELL_VOLTAGE(2)%100, TELEMETRY_CELL_VOLTAGE(3)/100, TELEMETRY_CELL_VOLTAGE(3)%100, TELEMETRY_CELL_VOLTAGE(4)/100, TELEMETRY_CELL_VOLTAGE(4)%100, TELEMETRY_CELL_VOLTAGE(5)/100, TELEMETRY_CELL_VOLTAGE(5)%100 -#define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," -#define TELEMETRY_CURRENT frskyData.hub.current / 100, frskyData.hub.current % 100 -#define TELEMETRY_CURRENT_FORMAT "%d.%02d," -#define TELEMETRY_VFAS frskyData.hub.vfas / 10, frskyData.hub.vfas % 10 -#define TELEMETRY_VFAS_FORMAT "%d.%d," -#define TELEMETRY_VSPEED frskyData.hub.varioSpeed < 0 ? '-' : ' ', frskyData.hub.varioSpeed / 100, frskyData.hub.varioSpeed % 100 -#define TELEMETRY_VSPEED_FORMAT "%c%d.%02d," -#define TELEMETRY_STREAMING() (frskyStreaming > 0) +#define TELEMETRY_BARO_ALT_AVAILABLE() (frskyData.hub.baroAltitudeOffset) + +#define TELEMETRY_RELATIVE_BARO_ALT_BP frskyData.hub.baroAltitude_bp +#define TELEMETRY_RELATIVE_BARO_ALT_AP frskyData.hub.baroAltitude_ap +#define TELEMETRY_RELATIVE_GPS_ALT_BP frskyData.hub.gpsAltitude_bp +#define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp +#define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap + +#define TELEMETRY_BARO_ALT_FORMAT "%d," +#define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude_bp, +#define TELEMETRY_GPS_ALT_FORMAT "%d," +#define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude_bp, +#define TELEMETRY_GPS_SPEED_FORMAT "%d.%02d," +#define TELEMETRY_GPS_SPEED_ARGS TELEMETRY_GPS_SPEED_BP, TELEMETRY_GPS_SPEED_AP, +#define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," +#define TELEMETRY_CELLS_ARGS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, frskyData.hub.cellVolts[0]*2/100, frskyData.hub.cellVolts[0]*2%100, frskyData.hub.cellVolts[1]*2/100, frskyData.hub.cellVolts[1]*2%100, frskyData.hub.cellVolts[2]*2/100, frskyData.hub.cellVolts[2]*2%100, frskyData.hub.cellVolts[3]*2/100, frskyData.hub.cellVolts[3]*2%100, frskyData.hub.cellVolts[4]*2/100, frskyData.hub.cellVolts[4]*2%100, frskyData.hub.cellVolts[5]*2/100, frskyData.hub.cellVolts[5]*2%100, +#define TELEMETRY_CURRENT_FORMAT "%d.%02d," +#define TELEMETRY_CURRENT_ARGS frskyData.hub.current / 100, frskyData.hub.current % 100, +#define TELEMETRY_VFAS_FORMAT "%d.%d," +#define TELEMETRY_VFAS_ARGS frskyData.hub.vfas / 10, frskyData.hub.vfas % 10, +#define TELEMETRY_VSPEED_FORMAT "%c%d.%02d," +#define TELEMETRY_VSPEED_ARGS frskyData.hub.varioSpeed < 0 ? '-' : ' ', frskyData.hub.varioSpeed / 100, frskyData.hub.varioSpeed % 100, #if defined(FRSKY_HUB) - #define TELEMETRY_OPENXSENSOR() (frskyData.hub.openXsensor) + #define TELEMETRY_OPENXSENSOR() (frskyData.hub.openXsensor) #else - #define TELEMETRY_OPENXSENSOR() (0) + #define TELEMETRY_OPENXSENSOR() (0) #endif #endif diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index ac46c7252..42aafb3ce 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -187,8 +187,7 @@ void processHubPacket(uint8_t id, uint16_t value) if (frskyData.hub.rpm > frskyData.hub.maxRpm) frskyData.hub.maxRpm = frskyData.hub.rpm; break; -//case GPS_COURS_BP_ID: - //frskyData.hub.gpsCourse_bp = value; + case TEMP1_ID: if (frskyData.hub.temperature1 > frskyData.hub.maxTemperature1) frskyData.hub.maxTemperature1 = frskyData.hub.temperature1; @@ -200,7 +199,7 @@ void processHubPacket(uint8_t id, uint16_t value) break; case CURRENT_ID: - if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + if (((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) frskyData.hub.current += g_model.frsky.fasOffset; else frskyData.hub.current = 0; @@ -227,17 +226,17 @@ void processHubPacket(uint8_t id, uint16_t value) break; case GPS_ALT_AP_ID: - frskyData.hub.gpsAltitude_bp = frskyData.hub.gpsAltitude_bp*100; + { + frskyData.hub.gpsAltitude = (frskyData.hub.gpsAltitude_bp * 100) + frskyData.hub.gpsAltitude_ap; if (!frskyData.hub.gpsAltitudeOffset) - frskyData.hub.gpsAltitudeOffset = -frskyData.hub.gpsAltitude_bp; - frskyData.hub.gpsAltitude_bp += frskyData.hub.gpsAltitudeOffset; + frskyData.hub.gpsAltitudeOffset = -frskyData.hub.gpsAltitude; if (!frskyData.hub.baroAltitudeOffset) { - if (frskyData.hub.gpsAltitude_bp > frskyData.hub.maxAltitude*100) - frskyData.hub.maxAltitude = frskyData.hub.gpsAltitude_bp/100; - if (frskyData.hub.gpsAltitude_bp < frskyData.hub.minAltitude*100) - frskyData.hub.minAltitude = frskyData.hub.gpsAltitude_bp/100; + int altitude = TELEMETRY_RELATIVE_GPS_ALT_BP; + if (altitude > frskyData.hub.maxAltitude) + frskyData.hub.maxAltitude = altitude; + if (altitude < frskyData.hub.minAltitude) + frskyData.hub.minAltitude = altitude; } - if (!frskyData.hub.pilotLatitude && !frskyData.hub.pilotLongitude) { // First received GPS position => Pilot GPS position getGpsPilotPosition(); @@ -246,6 +245,7 @@ void processHubPacket(uint8_t id, uint16_t value) getGpsDistance(); } break; + } case GPS_SPEED_BP_ID: // Speed => Max speed @@ -310,10 +310,10 @@ void processSportPacket(uint8_t *packet) /* uint8_t dataId = packet[0]; */ uint8_t prim = packet[1]; uint16_t appId = *((uint16_t *)(packet+2)); - static uint8_t t_coor; - if (!checkSportPacket(packet)) + if (!checkSportPacket(packet)) { return; + } switch (prim) { @@ -387,7 +387,7 @@ void processSportPacket(uint8_t *packet) } else if (appId >= CURR_FIRST_ID && appId <= CURR_LAST_ID) { frskyData.hub.current = SPORT_DATA_U32(packet); - if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + if (((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) frskyData.hub.current += g_model.frsky.fasOffset; else frskyData.hub.current = 0; @@ -399,91 +399,87 @@ void processSportPacket(uint8_t *packet) } else if (appId >= GPS_SPEED_FIRST_ID && appId <= GPS_SPEED_LAST_ID) { frskyData.hub.gpsSpeed_bp = SPORT_DATA_U32(packet); - frskyData.hub.gpsSpeed_bp = (frskyData.hub.gpsSpeed_bp * 46) / 25/1000; + frskyData.hub.gpsSpeed_bp = (frskyData.hub.gpsSpeed_bp * 46) / 25 / 1000; if (frskyData.hub.gpsSpeed_bp > frskyData.hub.maxGpsSpeed) frskyData.hub.maxGpsSpeed = frskyData.hub.gpsSpeed_bp; } - else if(appId>=GPS_TIME_DATE_FIRST_ID && appId<=GPS_TIME_DATE_LAST_ID) { - uint32_t gps_time_date = SPORT_DATA_U32(packet); - if(gps_time_date & 0x000000ff) { - frskyData.hub.year = (uint16_t)((gps_time_date & 0xff000000)>>24); - frskyData.hub.month =(uint8_t)((gps_time_date & 0x00ff0000)>>16); - frskyData.hub.day = (uint8_t)((gps_time_date & 0x0000ff00)>>8); - } - else { - frskyData.hub.hour =(uint8_t) ((gps_time_date & 0xff000000)>>24); - frskyData.hub.min = (uint8_t)((gps_time_date & 0x00ff0000)>>16); - frskyData.hub.sec =(uint16_t) ((gps_time_date & 0x0000ff00)>>8); - frskyData.hub.hour = ((uint8_t)(frskyData.hub.hour + g_eeGeneral.timezone + 24)) % 24; - } - } - else if(appId>=GPS_COURS_FIRST_ID && appId<=GPS_COURS_LAST_ID) { - uint32_t course = SPORT_DATA_U32(packet); - frskyData.hub.gpsCourse_bp = course/100; - frskyData.hub.gpsCourse_ap = course%100; - } - else if (appId>=GPS_ALT_FIRST_ID && appId<=GPS_ALT_LAST_ID) { - int32_t gps_altitude; - gps_altitude = SPORT_DATA_S32(packet); - frskyData.hub.gpsAltitude_bp = gps_altitude; - - if (!frskyData.hub.gpsAltitudeOffset) - frskyData.hub.gpsAltitudeOffset = -frskyData.hub.gpsAltitude_bp; - - frskyData.hub.gpsAltitude_bp += frskyData.hub.gpsAltitudeOffset; + else if (appId >= GPS_TIME_DATE_FIRST_ID && appId <= GPS_TIME_DATE_LAST_ID) { + uint32_t gps_time_date = SPORT_DATA_U32(packet); + if (gps_time_date & 0x000000ff) { + frskyData.hub.year = (uint16_t) ((gps_time_date & 0xff000000) >> 24); + frskyData.hub.month = (uint8_t) ((gps_time_date & 0x00ff0000) >> 16); + frskyData.hub.day = (uint8_t) ((gps_time_date & 0x0000ff00) >> 8); + } + else { + frskyData.hub.hour = (uint8_t) ((gps_time_date & 0xff000000) >> 24); + frskyData.hub.min = (uint8_t) ((gps_time_date & 0x00ff0000) >> 16); + frskyData.hub.sec = (uint16_t) ((gps_time_date & 0x0000ff00) >> 8); + frskyData.hub.hour = ((uint8_t) (frskyData.hub.hour + g_eeGeneral.timezone + 24)) % 24; + } + } + else if (appId >= GPS_COURS_FIRST_ID && appId <= GPS_COURS_LAST_ID) { + uint32_t course = SPORT_DATA_U32(packet); + frskyData.hub.gpsCourse_bp = course / 100; + frskyData.hub.gpsCourse_ap = course % 100; + } + else if (appId >= GPS_ALT_FIRST_ID && appId <= GPS_ALT_LAST_ID) { + frskyData.hub.gpsAltitude = SPORT_DATA_S32(packet); + + if (!frskyData.hub.gpsAltitudeOffset) + frskyData.hub.gpsAltitudeOffset = -frskyData.hub.gpsAltitude; - if (!frskyData.hub.baroAltitudeOffset) { - if (frskyData.hub.gpsAltitude_bp > frskyData.hub.maxAltitude*100) - frskyData.hub.maxAltitude = frskyData.hub.gpsAltitude_bp/100; - - if (frskyData.hub.gpsAltitude_bp < frskyData.hub.minAltitude*100) - frskyData.hub.minAltitude = frskyData.hub.gpsAltitude_bp/100; - } - - if (!frskyData.hub.pilotLatitude && !frskyData.hub.pilotLongitude) { - // First received GPS position => Pilot GPS position - if(t_coor) - getGpsPilotPosition(); - } - else if (frskyData.hub.gpsDistNeeded || g_menuStack[g_menuStackPtr] == menuTelemetryFrsky) { - getGpsDistance(); - } - } - else if(appId>=GPS_LONG_LATI_FIRST_ID && appId<=GPS_LONG_LATI_LAST_ID) { - uint32_t gps_long_lati_data = SPORT_DATA_U32(packet); - if (gps_long_lati_data) - { - frskyData.hub.gpsFix = 1; - t_coor = 1; - } - - uint32_t gps_long_lati_b1w,gps_long_lati_a1w; - gps_long_lati_b1w = (gps_long_lati_data&0x3fffffff)/10000; - gps_long_lati_a1w = (gps_long_lati_data&0x3fffffff)%10000; - switch ((gps_long_lati_data & 0xc0000000)>>30) { - case 0: { - frskyData.hub.gpsLatitude_bp = (gps_long_lati_b1w/60*100)+(gps_long_lati_b1w%60); - frskyData.hub.gpsLatitude_ap = gps_long_lati_a1w; - frskyData.hub.gpsLatitudeNS = 'N'; - }break; - case 1: { - frskyData.hub.gpsLatitude_bp = (gps_long_lati_b1w/60*100) + (gps_long_lati_b1w%60); - frskyData.hub.gpsLatitude_ap = gps_long_lati_a1w; - frskyData.hub.gpsLatitudeNS = 'S'; }break; - case 2: { - frskyData.hub.gpsLongitude_bp = (gps_long_lati_b1w/60*100) +(gps_long_lati_b1w%60); - frskyData.hub.gpsLongitude_ap = gps_long_lati_a1w; - frskyData.hub.gpsLongitudeEW = 'E'; }break; - case 3: { - frskyData.hub.gpsLongitude_bp = (gps_long_lati_b1w/60*100) +(gps_long_lati_b1w%60); - frskyData.hub.gpsLongitude_ap = gps_long_lati_a1w; - frskyData.hub.gpsLongitudeEW = 'W';}break; - } - if (frskyData.hub.gpsFix > 0 && frskyData.hub.gpsLatitude_bp > 1) - frskyData.hub.gpsFix = 0; - if (frskyData.hub.gpsFix > 0 && frskyData.hub.gpsLongitude_bp > 1) - frskyData.hub.gpsFix = 0; - } + if (!frskyData.hub.baroAltitudeOffset) { + int altitude = TELEMETRY_RELATIVE_GPS_ALT_BP; + if (altitude > frskyData.hub.maxAltitude) + frskyData.hub.maxAltitude = altitude; + if (altitude < frskyData.hub.minAltitude) + frskyData.hub.minAltitude = altitude; + } + + if (frskyData.hub.gpsFix > 0) { + if (!frskyData.hub.pilotLatitude && !frskyData.hub.pilotLongitude) { + // First received GPS position => Pilot GPS position + getGpsPilotPosition(); + } + else if (frskyData.hub.gpsDistNeeded || g_menuStack[g_menuStackPtr] == menuTelemetryFrsky) { + getGpsDistance(); + } + } + } + else if (appId >= GPS_LONG_LATI_FIRST_ID && appId <= GPS_LONG_LATI_LAST_ID) { + uint32_t gps_long_lati_data = SPORT_DATA_U32(packet); + uint32_t gps_long_lati_b1w, gps_long_lati_a1w; + gps_long_lati_b1w = (gps_long_lati_data & 0x3fffffff) / 10000; + gps_long_lati_a1w = (gps_long_lati_data & 0x3fffffff) % 10000; + switch ((gps_long_lati_data & 0xc0000000) >> 30) { + case 0: + frskyData.hub.gpsLatitude_bp = (gps_long_lati_b1w / 60 * 100) + (gps_long_lati_b1w % 60); + frskyData.hub.gpsLatitude_ap = gps_long_lati_a1w; + frskyData.hub.gpsLatitudeNS = 'N'; + break; + case 1: + frskyData.hub.gpsLatitude_bp = (gps_long_lati_b1w / 60 * 100) + (gps_long_lati_b1w % 60); + frskyData.hub.gpsLatitude_ap = gps_long_lati_a1w; + frskyData.hub.gpsLatitudeNS = 'S'; + break; + case 2: + frskyData.hub.gpsLongitude_bp = (gps_long_lati_b1w / 60 * 100) + (gps_long_lati_b1w % 60); + frskyData.hub.gpsLongitude_ap = gps_long_lati_a1w; + frskyData.hub.gpsLongitudeEW = 'E'; + break; + case 3: + frskyData.hub.gpsLongitude_bp = (gps_long_lati_b1w / 60 * 100) + (gps_long_lati_b1w % 60); + frskyData.hub.gpsLongitude_ap = gps_long_lati_a1w; + frskyData.hub.gpsLongitudeEW = 'W'; + break; + } + if (frskyData.hub.gpsLongitudeEW && frskyData.hub.gpsLatitudeNS) { + frskyData.hub.gpsFix = 1; + } + else if (frskyData.hub.gpsFix > 0) { + frskyData.hub.gpsFix = 0; + } + } else if (appId >= CELLS_FIRST_ID && appId <= CELLS_LAST_ID) { uint32_t cells = SPORT_DATA_U32(packet); diff --git a/radio/src/telemetry/frsky_sport.h b/radio/src/telemetry/frsky_sport.h index 4b39022a1..2bcc29bb7 100644 --- a/radio/src/telemetry/frsky_sport.h +++ b/radio/src/telemetry/frsky_sport.h @@ -129,6 +129,7 @@ PACK(struct FrskySerialData { uint16_t maxPower; /* end */ + int32_t gpsAltitude; uint8_t gpsDistNeeded; int8_t gpsFix; // -1=never fixed, 0=fix lost, 1=fixed @@ -177,41 +178,37 @@ bool FRSKY_alarmRaised(uint8_t idx); void resetTelemetry(); -#define TELEMETRY_CELL_VOLTAGE(k) frskyData.hub.cellVolts[k] -#define TELEMETRY_MIN_CELL_VOLTAGE frskyData.hub.minCellVolts -#define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp -#define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap -#define TELEMETRY_GPS_SPEED_LOG frskyData.hub.gpsSpeed_bp<0?'-':' ',abs(frskyData.hub.gpsSpeed_bp/1000),abs(frskyData.hub.gpsSpeed_bp%1000) -#define TELEMETRY_GPS_ALT_AP (frskyData.hub.gpsAltitude_bp%100) -#define TELEMETRY_GPS_ALT_BP (frskyData.hub.gpsAltitude_bp/100) -#define TELEMETRY_GPS_ALT_LOG frskyData.hub.gpsAltitude_bp < 0 ? '-':' ',abs(frskyData.hub.gpsAltitude_bp/100),abs(frskyData.hub.gpsAltitude_bp%100) -#define TELEMETRY_ALT_BP (frskyData.hub.baroAltitude / 100) -#define TELEMETRY_ALT_AP (frskyData.hub.baroAltitude % 100) -#define TELEMETRY_ALT frskyData.hub.baroAltitude < 0 ? '-' : ' ', abs(frskyData.hub.baroAltitude / 100), abs(frskyData.hub.baroAltitude % 100) -#define TELEMETRY_ALT_FORMAT "%c%d.%02d," -#define TELEMETRY_CELLS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, TELEMETRY_CELL_VOLTAGE(0)/100, TELEMETRY_CELL_VOLTAGE(0)%100, TELEMETRY_CELL_VOLTAGE(1)/100, TELEMETRY_CELL_VOLTAGE(1)%100, TELEMETRY_CELL_VOLTAGE(2)/100, TELEMETRY_CELL_VOLTAGE(2)%100, TELEMETRY_CELL_VOLTAGE(3)/100, TELEMETRY_CELL_VOLTAGE(3)%100, TELEMETRY_CELL_VOLTAGE(4)/100, TELEMETRY_CELL_VOLTAGE(4)%100, TELEMETRY_CELL_VOLTAGE(5)/100, TELEMETRY_CELL_VOLTAGE(5)%100 -#define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," -#define TELEMETRY_CURRENT frskyData.hub.current / 10, frskyData.hub.current % 10 -#define TELEMETRY_CURRENT_FORMAT "%d.%d," -#define TELEMETRY_VFAS frskyData.hub.vfas / 10, frskyData.hub.vfas % 10 -#define TELEMETRY_VFAS_FORMAT "%d.%d," -#define TELEMETRY_VSPEED frskyData.hub.varioSpeed < 0 ? '-' : ' ', abs(frskyData.hub.varioSpeed / 100), abs(frskyData.hub.varioSpeed % 100) -#define TELEMETRY_VSPEED_FORMAT "%c%d.%02d," +#define TELEMETRY_STREAMING() (frskyData.rssi[0].value > 0) -/* Would be great, but f_printf() doesn't take floats... -#define TELEMETRY_ALT float(frskyData.hub.baroAltitude)/100 -#define TELEMETRY_ALT_FORMAT "%.2f," -#define TELEMETRY_CELLS float(frskyData.hub.cellsSum)/10, float(frskyData.hub.cellVolts[0])/100, float(frskyData.hub.cellVolts[1])/100, float(frskyData.hub.cellVolts[2])/100, float(frskyData.hub.cellVolts[3])/100, float(frskyData.hub.cellVolts[4])/100, float(frskyData.hub.cellVolts[5])/100 -#define TELEMETRY_CELLS_FORMAT "%.1f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f," -#define TELEMETRY_CURRENT float(frskyData.hub.current)/100 -#define TELEMETRY_CURRENT_FORMAT "%.2f," -#define TELEMETRY_VFAS float(frskyData.hub.vfas)/10 -#define TELEMETRY_VFAS_FORMAT "%.1f," -#define TELEMETRY_VSPEED float(frskyData.hub.varioSpeed)/100 -#define TELEMETRY_VSPEED_FORMAT "%.2f," -*/ +#define TELEMETRY_CELL_VOLTAGE(k) frskyData.hub.cellVolts[k] +#define TELEMETRY_MIN_CELL_VOLTAGE frskyData.hub.minCellVolts -#define TELEMETRY_STREAMING() (frskyData.rssi[0].value > 0) +#define TELEMETRY_BARO_ALT_AVAILABLE() (frskyData.hub.baroAltitudeOffset) + +#define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp +#define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap + +#define TELEMETRY_ABSOLUTE_GPS_ALT (frskyData.hub.gpsAltitude) +#define TELEMETRY_RELATIVE_GPS_ALT (frskyData.hub.gpsAltitude + frskyData.hub.gpsAltitudeOffset) +#define TELEMETRY_RELATIVE_GPS_ALT_BP (TELEMETRY_RELATIVE_GPS_ALT / 100) + +#define TELEMETRY_RELATIVE_BARO_ALT_BP (frskyData.hub.baroAltitude / 100) +#define TELEMETRY_RELATIVE_BARO_ALT_AP (frskyData.hub.baroAltitude % 100) + +#define TELEMETRY_BARO_ALT_FORMAT "%c%d.%02d," +#define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude < 0 ? '-' : ' ', abs(frskyData.hub.baroAltitude / 100), abs(frskyData.hub.baroAltitude % 100), +#define TELEMETRY_GPS_ALT_FORMAT "%c%d.%02d," +#define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude < 0 ? '-' : ' ', abs(frskyData.hub.gpsAltitude / 100), abs(frskyData.hub.gpsAltitude % 100), +#define TELEMETRY_GPS_SPEED_FORMAT "%c%d.%02d," +#define TELEMETRY_GPS_SPEED_ARGS frskyData.hub.gpsSpeed_bp < 0 ? '-' : ' ', abs(frskyData.hub.gpsSpeed_bp / 1000), abs(frskyData.hub.gpsSpeed_bp % 1000), +#define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," +#define TELEMETRY_CELLS_ARGS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, TELEMETRY_CELL_VOLTAGE(0)/100, TELEMETRY_CELL_VOLTAGE(0)%100, TELEMETRY_CELL_VOLTAGE(1)/100, TELEMETRY_CELL_VOLTAGE(1)%100, TELEMETRY_CELL_VOLTAGE(2)/100, TELEMETRY_CELL_VOLTAGE(2)%100, TELEMETRY_CELL_VOLTAGE(3)/100, TELEMETRY_CELL_VOLTAGE(3)%100, TELEMETRY_CELL_VOLTAGE(4)/100, TELEMETRY_CELL_VOLTAGE(4)%100, TELEMETRY_CELL_VOLTAGE(5)/100, TELEMETRY_CELL_VOLTAGE(5)%100, +#define TELEMETRY_CURRENT_FORMAT "%d.%d," +#define TELEMETRY_CURRENT_ARGS frskyData.hub.current / 10, frskyData.hub.current % 10, +#define TELEMETRY_VFAS_FORMAT "%d.%d," +#define TELEMETRY_VFAS_ARGS frskyData.hub.vfas / 10, frskyData.hub.vfas % 10, +#define TELEMETRY_VSPEED_FORMAT "%c%d.%02d," +#define TELEMETRY_VSPEED_ARGS frskyData.hub.varioSpeed < 0 ? '-' : ' ', abs(frskyData.hub.varioSpeed / 100), abs(frskyData.hub.varioSpeed % 100), #endif From 2e58969aa1ef2d2d9a91791d2b827160f6c336e8 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 25 Feb 2014 18:05:54 +0100 Subject: [PATCH 2/7] Fix problem with GPS speed unit used with voice --- radio/src/gui/view_main.cpp | 2 +- radio/src/lcd.cpp | 8 ++++---- radio/src/maths.cpp | 1 + radio/src/myeeprom.h | 4 ++-- radio/src/opentx.cpp | 16 +++++++++------- radio/src/telemetry/frsky_sport.cpp | 3 +++ radio/src/translations/tts_cz.cpp | 11 +++++++---- radio/src/translations/tts_de.cpp | 11 +++++++---- radio/src/translations/tts_en.cpp | 13 ++++++++----- radio/src/translations/tts_es.cpp | 11 +++++++---- radio/src/translations/tts_fr.cpp | 11 +++++++---- radio/src/translations/tts_it.cpp | 11 +++++++---- radio/src/translations/tts_pl.cpp | 11 +++++++---- radio/src/translations/tts_pt.cpp | 11 +++++++---- radio/src/translations/tts_se.cpp | 11 +++++++---- radio/src/translations/tts_sk.cpp | 11 +++++++---- radio/util/tts.py | 4 ++-- 17 files changed, 93 insertions(+), 57 deletions(-) diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index c172f20dc..d275b9bce 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -270,7 +270,7 @@ void displayTopBar() /* Altitude */ if (g_model.frsky.altitudeDisplayed && TELEMETRY_BARO_ALT_AVAILABLE()) { LCD_ICON(altitude_icon_x, BAR_Y, ICON_ALTITUDE); - putsTelemetryValue(altitude_icon_x+2*FW-1, BAR_Y+1, TELEMETRY_RELATIVE_BARO_ALT_BP, UNIT_METERS, LEFT); + putsTelemetryValue(altitude_icon_x+2*FW-1, BAR_Y+1, TELEMETRY_RELATIVE_BARO_ALT_BP, UNIT_SPEED, LEFT); } } diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 85ef0a709..5ceebe511 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1185,14 +1185,14 @@ void putsTelemetryValue(xcoord_t x, uint8_t y, lcdint_t val, uint8_t unit, uint8 } const pm_uint8_t bchunit_ar[] PROGMEM = { - UNIT_METERS, // Alt + UNIT_DIST, // Alt UNIT_RAW, // Rpm UNIT_PERCENT, // Fuel UNIT_DEGREES, // T1 UNIT_DEGREES, // T2 UNIT_KTS, // Speed - UNIT_METERS, // Dist - UNIT_METERS, // GPS Alt + UNIT_DIST, // Dist + UNIT_DIST, // GPS Alt }; void putsTelemetryChannel(xcoord_t x, uint8_t y, uint8_t channel, lcdint_t val, uint8_t att) @@ -1276,7 +1276,7 @@ void putsTelemetryChannel(xcoord_t x, uint8_t y, uint8_t channel, lcdint_t val, #if defined(FRSKY_SPORT) case TELEM_ALT-1: - putsTelemetryValue(x, y, val/10, UNIT_METERS, att|PREC1); + putsTelemetryValue(x, y, val/10, UNIT_DIST, att|PREC1); break; #elif defined(WS_HOW_HIGH) case TELEM_ALT-1: diff --git a/radio/src/maths.cpp b/radio/src/maths.cpp index cdd135966..a453cae3b 100644 --- a/radio/src/maths.cpp +++ b/radio/src/maths.cpp @@ -88,6 +88,7 @@ void getGpsDistance() result += dist*dist; frskyData.hub.gpsDistance = isqrt32(result); + TRACE("distance = %d", frskyData.hub.gpsDistance); if (frskyData.hub.gpsDistance > frskyData.hub.maxGpsDistance) frskyData.hub.maxGpsDistance = frskyData.hub.gpsDistance; } diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 94b6cbb9e..ab4e51061 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -901,8 +901,8 @@ enum TelemetryUnit { UNIT_AMPS, UNIT_METERS_PER_SECOND, UNIT_RAW, - UNIT_KMH, - UNIT_METERS, + UNIT_SPEED, + UNIT_DIST, UNIT_DEGREES, UNIT_PERCENT, UNIT_MILLIAMPS, diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index c5808702b..c019a4b51 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2112,22 +2112,24 @@ FORCEINLINE void convertUnit(getvalue_t & val, uint8_t & unit) val *= 115; val >>= 6; } - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { // m to ft *105/32 val = val * 3 + (val >> 2) + (val >> 5); } if (unit == UNIT_FEET) { - unit = UNIT_METERS; + unit = UNIT_DIST; } if (unit == UNIT_KTS) { - unit = UNIT_KMH; + // kts to mph + unit = UNIT_SPEED; + val = (val * 31) / 27; } } else { if (unit == UNIT_KTS) { // kts to km/h - unit = UNIT_KMH; - val = (val * 46) / 25; + unit = UNIT_SPEED; + val = (val * 50) / 27; } } } @@ -3238,7 +3240,7 @@ PLAY_FUNCTION(playValue, uint8_t idx) case MIXSRC_FIRST_TELEM+TELEM_ALT-1: #if defined(PCBTARANIS) - PLAY_NUMBER(val/10, 1+UNIT_METERS, PREC1); + PLAY_NUMBER(val/10, 1+UNIT_DIST, PREC1); break; #endif case MIXSRC_FIRST_TELEM+TELEM_MIN_ALT-1: @@ -3248,7 +3250,7 @@ PLAY_FUNCTION(playValue, uint8_t idx) PLAY_NUMBER(val, 1+UNIT_FEET, 0); else #endif - PLAY_NUMBER(val, 1+UNIT_METERS, 0); + PLAY_NUMBER(val, 1+UNIT_DIST, 0); break; case MIXSRC_FIRST_TELEM+TELEM_RPM-1: diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 42aafb3ce..311029341 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -774,6 +774,9 @@ void resetTelemetry() frskyData.hub.gpsLongitude_ap = 9533; getGpsDistance(); + frskyData.hub.gpsSpeed_bp = 100; + frskyData.hub.gpsSpeed_ap = 50; + frskyData.hub.cellsCount = 6; frskyData.hub.baroAltitudeOffset = 500 * 100; diff --git a/radio/src/translations/tts_cz.cpp b/radio/src/translations/tts_cz.cpp index c2bbe6037..d7da90e03 100644 --- a/radio/src/translations/tts_cz.cpp +++ b/radio/src/translations/tts_cz.cpp @@ -41,8 +41,8 @@ enum CzechPrompts { CZ_PROMPT_AMPS = CZ_PROMPT_UNITS_BASE+(UNIT_AMPS*4), CZ_PROMPT_METERS_PER_SECOND = CZ_PROMPT_UNITS_BASE+(UNIT_METERS_PER_SECOND*4), CZ_PROMPT_SPARE1 = CZ_PROMPT_UNITS_BASE+(UNIT_RAW*4), - CZ_PROMPT_KMH = CZ_PROMPT_UNITS_BASE+(UNIT_KMH*4), - CZ_PROMPT_METERS = CZ_PROMPT_UNITS_BASE+(UNIT_METERS*4), + CZ_PROMPT_KMH = CZ_PROMPT_UNITS_BASE+(UNIT_SPEED*4), + CZ_PROMPT_METERS = CZ_PROMPT_UNITS_BASE+(UNIT_DIST*4), CZ_PROMPT_DEGREES = CZ_PROMPT_UNITS_BASE+(UNIT_DEGREES*4), CZ_PROMPT_PERCENT = CZ_PROMPT_UNITS_BASE+(UNIT_PERCENT*4), CZ_PROMPT_MILLIAMPS = CZ_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4), @@ -120,12 +120,15 @@ I18N_PLAY_FUNCTION(cz, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_de.cpp b/radio/src/translations/tts_de.cpp index 1afadbf4e..fe4d86117 100644 --- a/radio/src/translations/tts_de.cpp +++ b/radio/src/translations/tts_de.cpp @@ -43,8 +43,8 @@ enum GermanPrompts { DE_PROMPT_AMPS = DE_PROMPT_UNITS_BASE+UNIT_AMPS, DE_PROMPT_METERS_PER_SECOND = DE_PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND, DE_PROMPT_SPARE1 = DE_PROMPT_UNITS_BASE+UNIT_RAW, - DE_PROMPT_KMH = DE_PROMPT_UNITS_BASE+UNIT_KMH, - DE_PROMPT_METERS = DE_PROMPT_UNITS_BASE+UNIT_METERS, + DE_PROMPT_KMH = DE_PROMPT_UNITS_BASE+UNIT_SPEED, + DE_PROMPT_METERS = DE_PROMPT_UNITS_BASE+UNIT_DIST, DE_PROMPT_DEGREES = DE_PROMPT_UNITS_BASE+UNIT_DEGREES, DE_PROMPT_PERCENT = DE_PROMPT_UNITS_BASE+UNIT_PERCENT, DE_PROMPT_MILLIAMPS = DE_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, @@ -110,12 +110,15 @@ I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_en.cpp b/radio/src/translations/tts_en.cpp index 1f874f305..e195eec63 100644 --- a/radio/src/translations/tts_en.cpp +++ b/radio/src/translations/tts_en.cpp @@ -50,8 +50,8 @@ enum EnglishPrompts { EN_PROMPT_AMPS = EN_PROMPT_UNITS_BASE+(UNIT_AMPS*2), EN_PROMPT_METERS_PER_SECOND = EN_PROMPT_UNITS_BASE+(UNIT_METERS_PER_SECOND*2), EN_PROMPT_SPARE1 = EN_PROMPT_UNITS_BASE+(UNIT_RAW*2), - EN_PROMPT_KMH = EN_PROMPT_UNITS_BASE+(UNIT_KMH*2), - EN_PROMPT_METERS = EN_PROMPT_UNITS_BASE+(UNIT_METERS*2), + EN_PROMPT_KMH = EN_PROMPT_UNITS_BASE+(UNIT_SPEED*2), + EN_PROMPT_METERS = EN_PROMPT_UNITS_BASE+(UNIT_DIST*2), EN_PROMPT_DEGREES = EN_PROMPT_UNITS_BASE+(UNIT_DEGREES*2), EN_PROMPT_PERCENT = EN_PROMPT_UNITS_BASE+(UNIT_PERCENT*2), EN_PROMPT_MILLIAMPS = EN_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2), @@ -59,7 +59,7 @@ enum EnglishPrompts { EN_PROMPT_WATTS = EN_PROMPT_UNITS_BASE+(UNIT_WATTS*2), EN_PROMPT_DB = EN_PROMPT_UNITS_BASE+(UNIT_DBM*2), EN_PROMPT_FEET = EN_PROMPT_UNITS_BASE+(UNIT_FEET*2), - EN_PROMPT_KTS = EN_PROMPT_UNITS_BASE+(UNIT_KTS*2), + EN_PROMPT_MPH = EN_PROMPT_UNITS_BASE+(UNIT_KTS*2), EN_PROMPT_HOURS = EN_PROMPT_UNITS_BASE+(UNIT_HOURS*2), EN_PROMPT_MINUTES = EN_PROMPT_UNITS_BASE+(UNIT_MINUTES*2), EN_PROMPT_SECONDS = EN_PROMPT_UNITS_BASE+(UNIT_SECONDS*2), @@ -97,12 +97,15 @@ I18N_PLAY_FUNCTION(en, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_SPEED && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_es.cpp b/radio/src/translations/tts_es.cpp index 928abf46b..386a8f73a 100644 --- a/radio/src/translations/tts_es.cpp +++ b/radio/src/translations/tts_es.cpp @@ -67,8 +67,8 @@ enum SpanishPrompts { ES_PROMPT_AMPS = ES_PROMPT_UNITS_BASE+UNIT_AMPS, ES_PROMPT_METERS_PER_SECOND = ES_PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND, ES_PROMPT_SPARE1 = ES_PROMPT_UNITS_BASE+UNIT_RAW, - ES_PROMPT_KMH = ES_PROMPT_UNITS_BASE+UNIT_KMH, - ES_PROMPT_METERS = ES_PROMPT_UNITS_BASE+UNIT_METERS, + ES_PROMPT_KMH = ES_PROMPT_UNITS_BASE+UNIT_SPEED, + ES_PROMPT_METERS = ES_PROMPT_UNITS_BASE+UNIT_DIST, ES_PROMPT_DEGREES = ES_PROMPT_UNITS_BASE+UNIT_DEGREES, ES_PROMPT_PERCENT = ES_PROMPT_UNITS_BASE+UNIT_PERCENT, ES_PROMPT_MILLIAMPS = ES_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, @@ -134,12 +134,15 @@ I18N_PLAY_FUNCTION(es, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_fr.cpp b/radio/src/translations/tts_fr.cpp index a377be4b6..032e42d0f 100644 --- a/radio/src/translations/tts_fr.cpp +++ b/radio/src/translations/tts_fr.cpp @@ -48,8 +48,8 @@ enum FrenchPrompts { FR_PROMPT_AMPS = FR_PROMPT_UNITS_BASE+UNIT_AMPS, FR_PROMPT_METERS_PER_SECOND = FR_PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND, FR_PROMPT_SPARE1 = FR_PROMPT_UNITS_BASE+UNIT_RAW, - FR_PROMPT_KMH = FR_PROMPT_UNITS_BASE+UNIT_KMH, - FR_PROMPT_METERS = FR_PROMPT_UNITS_BASE+UNIT_METERS, + FR_PROMPT_KMH = FR_PROMPT_UNITS_BASE+UNIT_SPEED, + FR_PROMPT_METERS = FR_PROMPT_UNITS_BASE+UNIT_DIST, FR_PROMPT_DEGREES = FR_PROMPT_UNITS_BASE+UNIT_DEGREES, FR_PROMPT_PERCENT = FR_PROMPT_UNITS_BASE+UNIT_PERCENT, FR_PROMPT_MILLIAMPS = FR_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, @@ -116,12 +116,15 @@ I18N_PLAY_FUNCTION(fr, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_it.cpp b/radio/src/translations/tts_it.cpp index 77dd000f3..8cd0a1a95 100644 --- a/radio/src/translations/tts_it.cpp +++ b/radio/src/translations/tts_it.cpp @@ -44,8 +44,8 @@ enum ItalianPrompts { IT_PROMPT_AMPS = IT_PROMPT_UNITS_BASE+UNIT_AMPS, IT_PROMPT_METERS_PER_SECOND = IT_PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND, IT_PROMPT_SPARE1 = IT_PROMPT_UNITS_BASE+UNIT_RAW, - IT_PROMPT_KMH = IT_PROMPT_UNITS_BASE+UNIT_KMH, - IT_PROMPT_METERS = IT_PROMPT_UNITS_BASE+UNIT_METERS, + IT_PROMPT_KMH = IT_PROMPT_UNITS_BASE+UNIT_SPEED, + IT_PROMPT_METERS = IT_PROMPT_UNITS_BASE+UNIT_DIST, IT_PROMPT_DEGREES = IT_PROMPT_UNITS_BASE+UNIT_DEGREES, IT_PROMPT_PERCENT = IT_PROMPT_UNITS_BASE+UNIT_PERCENT, IT_PROMPT_MILLIAMPS = IT_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, @@ -106,12 +106,15 @@ I18N_PLAY_FUNCTION(it, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_pl.cpp b/radio/src/translations/tts_pl.cpp index 5a6ec0ebf..a143afad4 100644 --- a/radio/src/translations/tts_pl.cpp +++ b/radio/src/translations/tts_pl.cpp @@ -42,8 +42,8 @@ enum PolishPrompts { PL_PROMPT_AMPS = PL_PROMPT_UNITS_BASE+(UNIT_AMPS*4), PL_PROMPT_METERS_PER_SECOND = PL_PROMPT_UNITS_BASE+(UNIT_METERS_PER_SECOND*4), PL_PROMPT_SPARE1 = PL_PROMPT_UNITS_BASE+(UNIT_RAW*4), - PL_PROMPT_KMH = PL_PROMPT_UNITS_BASE+(UNIT_KMH*4), - PL_PROMPT_METERS = PL_PROMPT_UNITS_BASE+(UNIT_METERS*4), + PL_PROMPT_KMH = PL_PROMPT_UNITS_BASE+(UNIT_SPEED*4), + PL_PROMPT_METERS = PL_PROMPT_UNITS_BASE+(UNIT_DIST*4), PL_PROMPT_DEGREES = PL_PROMPT_UNITS_BASE+(UNIT_DEGREES*4), PL_PROMPT_PERCENT = PL_PROMPT_UNITS_BASE+(UNIT_PERCENT*4), PL_PROMPT_MILLIAMPS = PL_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4), @@ -129,12 +129,15 @@ I18N_PLAY_FUNCTION(pl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_pt.cpp b/radio/src/translations/tts_pt.cpp index affb4e17a..1f0745b77 100644 --- a/radio/src/translations/tts_pt.cpp +++ b/radio/src/translations/tts_pt.cpp @@ -67,8 +67,8 @@ enum PortuguesePrompts { PT_PROMPT_AMPS = PT_PROMPT_UNITS_BASE+UNIT_AMPS, PT_PROMPT_METERS_PER_SECOND = PT_PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND, PT_PROMPT_SPARE1 = PT_PROMPT_UNITS_BASE+UNIT_RAW, - PT_PROMPT_KMH = PT_PROMPT_UNITS_BASE+UNIT_KMH, - PT_PROMPT_METERS = PT_PROMPT_UNITS_BASE+UNIT_METERS, + PT_PROMPT_KMH = PT_PROMPT_UNITS_BASE+UNIT_SPEED, + PT_PROMPT_METERS = PT_PROMPT_UNITS_BASE+UNIT_DIST, PT_PROMPT_DEGREES = PT_PROMPT_UNITS_BASE+UNIT_DEGREES, PT_PROMPT_PERCENT = PT_PROMPT_UNITS_BASE+UNIT_PERCENT, PT_PROMPT_MILLIAMPS = PT_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, @@ -119,12 +119,15 @@ I18N_PLAY_FUNCTION(pt, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_se.cpp b/radio/src/translations/tts_se.cpp index 97e81cb05..2a6f92bb4 100644 --- a/radio/src/translations/tts_se.cpp +++ b/radio/src/translations/tts_se.cpp @@ -51,8 +51,8 @@ enum SwedishPrompts { SE_PROMPT_AMPS = SE_PROMPT_UNITS_BASE+(UNIT_AMPS*2), SE_PROMPT_METERS_PER_SECOND = SE_PROMPT_UNITS_BASE+(UNIT_METERS_PER_SECOND*2), SE_PROMPT_SPARE1 = SE_PROMPT_UNITS_BASE+(UNIT_RAW*2), - SE_PROMPT_KMH = SE_PROMPT_UNITS_BASE+(UNIT_KMH*2), - SE_PROMPT_METERS = SE_PROMPT_UNITS_BASE+(UNIT_METERS*2), + SE_PROMPT_KMH = SE_PROMPT_UNITS_BASE+(UNIT_SPEED*2), + SE_PROMPT_METERS = SE_PROMPT_UNITS_BASE+(UNIT_DIST*2), SE_PROMPT_DEGREES = SE_PROMPT_UNITS_BASE+(UNIT_DEGREES*2), SE_PROMPT_PERCENT = SE_PROMPT_UNITS_BASE+(UNIT_PERCENT*2), SE_PROMPT_MILLIAMPS = SE_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2), @@ -84,12 +84,15 @@ I18N_PLAY_FUNCTION(se, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/src/translations/tts_sk.cpp b/radio/src/translations/tts_sk.cpp index a2935a7ea..5b574e108 100644 --- a/radio/src/translations/tts_sk.cpp +++ b/radio/src/translations/tts_sk.cpp @@ -56,8 +56,8 @@ enum SlovakPrompts { SK_PROMPT_AMPS = SK_PROMPT_UNITS_BASE+(UNIT_AMPS*4), SK_PROMPT_METERS_PER_SECOND = SK_PROMPT_UNITS_BASE+(UNIT_METERS_PER_SECOND*4), SK_PROMPT_SPARE1 = SK_PROMPT_UNITS_BASE+(UNIT_RAW*4), - SK_PROMPT_KMH = SK_PROMPT_UNITS_BASE+(UNIT_KMH*4), - SK_PROMPT_METERS = SK_PROMPT_UNITS_BASE+(UNIT_METERS*4), + SK_PROMPT_KMH = SK_PROMPT_UNITS_BASE+(UNIT_SPEED*4), + SK_PROMPT_METERS = SK_PROMPT_UNITS_BASE+(UNIT_DIST*4), SK_PROMPT_DEGREES = SK_PROMPT_UNITS_BASE+(UNIT_DEGREES*4), SK_PROMPT_PERCENT = SK_PROMPT_UNITS_BASE+(UNIT_PERCENT*4), SK_PROMPT_MILLIAMPS = SK_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4), @@ -135,12 +135,15 @@ I18N_PLAY_FUNCTION(sk, playNumber, getvalue_t number, uint8_t unit, uint8_t att) unit--; convertUnit(number, unit); if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_METERS) { + if (unit == UNIT_DIST) { unit = UNIT_FEET; } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } } #if defined(CPUARM) - if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_METERS && number >= 100))) { + if ((att & PREC1) && (unit == UNIT_FEET || (unit == UNIT_DIST && number >= 100))) { number /= 10; att -= PREC1; } diff --git a/radio/util/tts.py b/radio/util/tts.py index 8375be05c..17aca7b60 100644 --- a/radio/util/tts.py +++ b/radio/util/tts.py @@ -137,7 +137,7 @@ def ttsEn(): "amp", "amps", "meter per second", "meters per second", "", "", - "kilometer per hour","kilometers per hour", + "kilometer per hour", "kilometers per hour", "meter", "meters", "degree", "degrees", "percent", "percent", @@ -146,7 +146,7 @@ def ttsEn(): "watt", "watts", "db", "db", "foot", "feet", - "knot", "knots", + "mile per hour", "miles per hour", "hour", "hours", "minute", "minutes", "second", "seconds", From 31526f7fe2a3375519f15524e55b9614147ec9e1 Mon Sep 17 00:00:00 2001 From: bsongis Date: Tue, 25 Feb 2014 23:13:34 +0100 Subject: [PATCH 3/7] Compilation error --- radio/src/maths.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/radio/src/maths.cpp b/radio/src/maths.cpp index a453cae3b..46e01b94a 100644 --- a/radio/src/maths.cpp +++ b/radio/src/maths.cpp @@ -48,6 +48,18 @@ lcdint_t applyChannelRatio(uint8_t channel, lcdint_t val) } #endif +#if defined(PCBTARANIS) +double gpsToDouble(bool neg, int16_t bp, int16_t ap) +{ + double result = ap; + result /= 10000; + result += (bp % 100); + result /= 60; + result += (bp / 100); + return neg?-result:result; +} +#endif + #if defined(FRSKY_HUB) void extractLatitudeLongitude(uint32_t * latitude, uint32_t * longitude) { @@ -58,8 +70,17 @@ void extractLatitudeLongitude(uint32_t * latitude, uint32_t * longitude) *longitude = ((uint32_t)(qr.quot) * 1000000) + (((uint32_t)(qr.rem) * 10000 + frskyData.hub.gpsLongitude_ap) * 5) / 3; } +#if defined(PCBTARANIS) +double pilotLatitude; +double pilotLongitude; +#endif + void getGpsPilotPosition() { +#if defined(PCBTARANIS) + pilotLatitude = gpsToDouble(frskyData.hub.gpsLatitudeNS=='S', frskyData.hub.gpsLatitude_bp, frskyData.hub.gpsLatitude_ap); + pilotLongitude = gpsToDouble(frskyData.hub.gpsLongitudeEW=='W', frskyData.hub.gpsLongitude_bp, frskyData.hub.gpsLongitude_ap); +#endif extractLatitudeLongitude(&frskyData.hub.pilotLatitude, &frskyData.hub.pilotLongitude); uint32_t lat = frskyData.hub.pilotLatitude / 10000; uint32_t angle2 = (lat*lat) / 10000; @@ -88,7 +109,6 @@ void getGpsDistance() result += dist*dist; frskyData.hub.gpsDistance = isqrt32(result); - TRACE("distance = %d", frskyData.hub.gpsDistance); if (frskyData.hub.gpsDistance > frskyData.hub.maxGpsDistance) frskyData.hub.maxGpsDistance = frskyData.hub.gpsDistance; } From cf9eaf11fb6685f65eccbc5ab06f31af4895675a Mon Sep 17 00:00:00 2001 From: bsongis Date: Wed, 26 Feb 2014 08:57:45 +0100 Subject: [PATCH 4/7] Speed unit in logs depending on imperial parameter --- radio/src/logs.cpp | 16 +++++++++++++--- radio/src/telemetry/frsky.h | 5 +++-- radio/src/telemetry/frsky_sport.h | 5 +++-- radio/src/translations.cpp | 2 +- radio/src/translations.h | 6 +++--- radio/src/translations/cz.h.txt | 4 ++-- radio/src/translations/de.h.txt | 4 ++-- radio/src/translations/en.h | 19 ++++++++++++------- radio/src/translations/es.h.txt | 4 ++-- radio/src/translations/fi.h.txt | 4 ++-- radio/src/translations/fr.h.txt | 4 ++-- radio/src/translations/it.h.txt | 4 ++-- radio/src/translations/pl.h.txt | 4 ++-- radio/src/translations/pt.h.txt | 4 ++-- radio/src/translations/se.h.txt | 4 ++-- 15 files changed, 53 insertions(+), 36 deletions(-) diff --git a/radio/src/logs.cpp b/radio/src/logs.cpp index f3d4aa618..e0f93b578 100644 --- a/radio/src/logs.cpp +++ b/radio/src/logs.cpp @@ -137,13 +137,17 @@ const pm_char * openLogs() #endif #if defined(FRSKY_HUB) - if (IS_USR_PROTO_FRSKY_HUB()) - f_puts("GPS Date,GPS Time,Long,Lat,Course,GPS Speed,GPS Alt,Baro Alt,Vertical Speed,Temp1,Temp2,RPM,Fuel,Cell volts,Cell 1,Cell 2,Cell 3,Cell 4,Cell 5,Cell 6,Current,Consumption,Vfas,AccelX,AccelY,AccelZ,", &g_oLogFile); + if (IS_USR_PROTO_FRSKY_HUB()) { + f_puts("GPS Date,GPS Time,Long,Lat,Course,GPS Speed(", &g_oLogFile); + f_puts(TELEMETRY_GPS_SPEED_UNIT, &g_oLogFile); + f_puts("),GPS Alt,Baro Alt,Vertical Speed,Temp1,Temp2,RPM,Fuel,Cell volts,Cell 1,Cell 2,Cell 3,Cell 4,Cell 5,Cell 6,Current,Consumption,Vfas,AccelX,AccelY,AccelZ,", &g_oLogFile); + } #endif #if defined(WS_HOW_HIGH) - if (IS_USR_PROTO_WS_HOW_HIGH()) + if (IS_USR_PROTO_WS_HOW_HIGH()) { f_puts("WSHH Alt,", &g_oLogFile); + } #endif #if defined(PCBTARANIS) @@ -170,6 +174,12 @@ void closeLogs() lastLogTime = 0; } +getvalue_t getConvertedTelemetryValue(getvalue_t val, uint8_t unit) +{ + convertUnit(val, unit); + return val; +} + // TODO test when disk full void writeLogs() { diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 56aafe12f..7f1a1af9d 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -238,8 +238,9 @@ void resetTelemetry(); #define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude_bp, #define TELEMETRY_GPS_ALT_FORMAT "%d," #define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude_bp, -#define TELEMETRY_GPS_SPEED_FORMAT "%d.%02d," -#define TELEMETRY_GPS_SPEED_ARGS TELEMETRY_GPS_SPEED_BP, TELEMETRY_GPS_SPEED_AP, +#define TELEMETRY_GPS_SPEED_UNIT (IS_IMPERIAL_ENABLE() ? SPEED_UNIT_IMP : SPEED_UNIT_METR) +#define TELEMETRY_GPS_SPEED_FORMAT "%d," +#define TELEMETRY_GPS_SPEED_ARGS getConvertedTelemetryValue(frskyData.hub.gpsSpeed_bp, UNIT_KTS), #define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," #define TELEMETRY_CELLS_ARGS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, frskyData.hub.cellVolts[0]*2/100, frskyData.hub.cellVolts[0]*2%100, frskyData.hub.cellVolts[1]*2/100, frskyData.hub.cellVolts[1]*2%100, frskyData.hub.cellVolts[2]*2/100, frskyData.hub.cellVolts[2]*2%100, frskyData.hub.cellVolts[3]*2/100, frskyData.hub.cellVolts[3]*2%100, frskyData.hub.cellVolts[4]*2/100, frskyData.hub.cellVolts[4]*2%100, frskyData.hub.cellVolts[5]*2/100, frskyData.hub.cellVolts[5]*2%100, #define TELEMETRY_CURRENT_FORMAT "%d.%02d," diff --git a/radio/src/telemetry/frsky_sport.h b/radio/src/telemetry/frsky_sport.h index 2bcc29bb7..b63d1869f 100644 --- a/radio/src/telemetry/frsky_sport.h +++ b/radio/src/telemetry/frsky_sport.h @@ -199,8 +199,9 @@ void resetTelemetry(); #define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude < 0 ? '-' : ' ', abs(frskyData.hub.baroAltitude / 100), abs(frskyData.hub.baroAltitude % 100), #define TELEMETRY_GPS_ALT_FORMAT "%c%d.%02d," #define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude < 0 ? '-' : ' ', abs(frskyData.hub.gpsAltitude / 100), abs(frskyData.hub.gpsAltitude % 100), -#define TELEMETRY_GPS_SPEED_FORMAT "%c%d.%02d," -#define TELEMETRY_GPS_SPEED_ARGS frskyData.hub.gpsSpeed_bp < 0 ? '-' : ' ', abs(frskyData.hub.gpsSpeed_bp / 1000), abs(frskyData.hub.gpsSpeed_bp % 1000), +#define TELEMETRY_GPS_SPEED_UNIT (IS_IMPERIAL_ENABLE() ? SPEED_UNIT_IMP : SPEED_UNIT_METR) +#define TELEMETRY_GPS_SPEED_FORMAT "%d," +#define TELEMETRY_GPS_SPEED_ARGS getConvertedTelemetryValue(frskyData.hub.gpsSpeed_bp, UNIT_KTS), #define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," #define TELEMETRY_CELLS_ARGS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, TELEMETRY_CELL_VOLTAGE(0)/100, TELEMETRY_CELL_VOLTAGE(0)%100, TELEMETRY_CELL_VOLTAGE(1)/100, TELEMETRY_CELL_VOLTAGE(1)%100, TELEMETRY_CELL_VOLTAGE(2)/100, TELEMETRY_CELL_VOLTAGE(2)%100, TELEMETRY_CELL_VOLTAGE(3)/100, TELEMETRY_CELL_VOLTAGE(3)%100, TELEMETRY_CELL_VOLTAGE(4)/100, TELEMETRY_CELL_VOLTAGE(4)%100, TELEMETRY_CELL_VOLTAGE(5)/100, TELEMETRY_CELL_VOLTAGE(5)%100, #define TELEMETRY_CURRENT_FORMAT "%d.%d," diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 074c45a14..862f5ab87 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -76,7 +76,7 @@ const pm_char STR_OPEN9X[] PROGMEM = #if defined(FRSKY) || defined(CPUARM) #if defined(CPUARM) ISTR(VTELEMUNIT_IMP) - ISTR(VTELEMUNIT_NORM) + ISTR(VTELEMUNIT_METR) #else ISTR(VTELEMUNIT) #endif diff --git a/radio/src/translations.h b/radio/src/translations.h index 88aa521ac..1d5d99c9c 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -125,8 +125,8 @@ extern const pm_char STR_OPEN9X[]; #if defined(FRSKY) || defined(CPUARM) #if defined(CPUARM) #define OFS_VTELEMUNIT_IMP (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) - #define OFS_VTELEMUNIT_NORM (OFS_VTELEMUNIT_IMP + sizeof(TR_VTELEMUNIT_IMP)) - #define OFS_VALARM (OFS_VTELEMUNIT_NORM + sizeof(TR_VTELEMUNIT_NORM)) + #define OFS_VTELEMUNIT_METR (OFS_VTELEMUNIT_IMP + sizeof(TR_VTELEMUNIT_IMP)) + #define OFS_VALARM (OFS_VTELEMUNIT_METR + sizeof(TR_VTELEMUNIT_METR)) #else #define OFS_VTELEMUNIT (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) #define OFS_VALARM (OFS_VTELEMUNIT + sizeof(TR_VTELEMUNIT)) @@ -220,7 +220,7 @@ extern const pm_char STR_OPEN9X[]; #if defined(FRSKY) || defined(CPUARM) #if defined(CPUARM) - #define STR_VTELEMUNIT (STR_OPEN9X + (g_eeGeneral.imperial ? OFS_VTELEMUNIT_IMP : OFS_VTELEMUNIT_NORM)) + #define STR_VTELEMUNIT (STR_OPEN9X + (g_eeGeneral.imperial ? OFS_VTELEMUNIT_IMP : OFS_VTELEMUNIT_METR)) #else #define STR_VTELEMUNIT (STR_OPEN9X + OFS_VTELEMUNIT) #endif diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 1fa49ad61..497777cb3 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metrické""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 909c3ab62..d88994a0d 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "V\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 5d8b9dedc..29602e920 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -263,20 +263,25 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT_METR LENGTH_UNIT_METR "@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" - #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT_IMP LENGTH_UNIT_IMP "@\0 ""%\0 ""mA\0""mAh""W\0 " #else #if defined(IMPERIAL_UNITS) - #define LENGTH_UNIT "ft\0" - #define SPEED_UNIT "kts" + #define LENGTH_UNIT LENGTH_UNIT_IMP + #define SPEED_UNIT SPEED_UNIT_IMP #else - #define LENGTH_UNIT "m\0 " - #define SPEED_UNIT "kmh" + #define LENGTH_UNIT LENGTH_UNIT_METR + #define SPEED_UNIT SPEED_UNIT_METR #endif #define LEN_VTELEMUNIT "\003" #define TR_VTELEMUNIT "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT LENGTH_UNIT "@\0 ""%\0 ""mA\0""mAh""W\0 " diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 6f250d2a3..6c66a6251 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 41a84c5de..7e510a6c8 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 5baae5672..d362683fc 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\012") #define TR_VUNITSSYSTEM TR("Métr.\0""Impér.", "Métriques\0""Impériales") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 1a16a18b2..f158f0e3b 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\011") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metriche\0""Imperiali") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a06512468..d54106845 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -277,8 +277,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\012") #define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metryczne\0""Imperialne") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "V\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 68d0a8616..8030dd0b0 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index ef4d117be..e34f3e6d5 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -266,8 +266,8 @@ #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metri.""Imper.", "Metriska""Imperial") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " + #define LEN_VTELEMUNIT_METR "\003" + #define TR_VTELEMUNIT_METR "v\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " #define LEN_VTELEMUNIT_IMP "\003" #define TR_VTELEMUNIT_IMP "v\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " #else From 2d678b781e42f36ffcde2cd0b99e4df08d787000 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Fri, 28 Feb 2014 11:18:38 +0100 Subject: [PATCH 5/7] Units in all languages --- radio/src/translations/cz.h.txt | 5 +++++ radio/src/translations/de.h.txt | 5 +++++ radio/src/translations/es.h.txt | 5 +++++ radio/src/translations/fi.h.txt | 5 +++++ radio/src/translations/fr.h.txt | 5 +++++ radio/src/translations/it.h.txt | 5 +++++ radio/src/translations/pl.h.txt | 5 +++++ radio/src/translations/pt.h.txt | 5 +++++ radio/src/translations/se.h.txt | 5 +++++ 9 files changed, 45 insertions(+) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 9cb94f48a..87e729301 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metrické""Imperial") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index f4224758f..af609a1a3 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Uhr1""Uhr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""H\203he""Umdr""Fuel""T1\0 ""T2\0 ""Gesc""Dist""GH\203h""Zell""Zels""Vfas""Strm""Verb""Leis""BesX""BesY""BesZ""Rich""VGes""ASpd""dTE\0""A1-\0""A2-\0""H\203h-""H\203h+""Umd+""T1+\0""T2+\0""Ges+""Dst+""Cel-""Vfs-""Str+""Pwr+""Besc""Zeit" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metrik""Imper.", "Metrisch\0 ""Imperial") diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 2a5faf073..861747449 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Hora" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 5789c02ea..f5cb26f8d 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index d210ee35e..c922ee01a 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Chr1""Chr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vit\0""Dist""AltG""Elem""Velm""Vfas""Cour""Cnsm""Puis""AccX""AccY""AccZ""Cap\0""VitV""VitA""dET\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vit+""Dst+""Elm-""Vfs-""Cur+""Pui+""Acc\0""Tmps" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\012") #define TR_VUNITSSYSTEM TR("Métr.\0""Impér.", "Métriques\0""Impériales") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 8c8555caa..e380674cf 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vel\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsm""Powr""AccX""AccY""AccZ""Dir\0""VelV""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Time" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\011") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metriche\0""Imperiali") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index d2e87f5b4..a7f05ffc9 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Wys\0""Rpm\0""Pali""T1\0 ""T2\0 ""Spd\0""Dyst""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Moc\0""AccX""AccY""AccZ""Hdg\0""VSpd""ASpd""dTE\0""A1-\0""A2-\0""Wys-""Wys+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cel-""Vfs-""Cur+""Moc+""Acc\0""Time" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\012") #define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metryczne\0""Imperialne") diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 30a999788..8e0fd3d11 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VVel""ASpd""dTE\0""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Cel-""Vfs-""Cur+""Pwr+""Acc\0""Hora" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metric""Imper.", "Metric\0 ""Imperial") diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index b05eac28d..a3efe2c4b 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -273,6 +273,11 @@ #endif #define TR_VTELEMCHNS "---\0""Batt""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Höjd""Varv""Tank""T1\0 ""T2\0 ""Fart""Avst""GHjd""Batt""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VFrt""ASpd""dTE\0""A1-\0""A2-\0""Hjd-""Hjd+""Rpm+""T1+\0""T2+\0""Frt+""Avs+""Cur+""Pwr+""Acc\0""Tid\0" +#define LENGTH_UNIT_IMP "ft\0" +#define SPEED_UNIT_IMP "mph" +#define LENGTH_UNIT_METR "m\0 " +#define SPEED_UNIT_METR "kmh" + #if defined(CPUARM) #define LEN_VUNITSSYSTEM TR("\006", "\010") #define TR_VUNITSSYSTEM TR("Metri.""Imper.", "Metriska""Imperial") From c8f1758bc12edeed3a1981741afed20c4bdccbbb Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 3 Mar 2014 15:33:26 +0100 Subject: [PATCH 6/7] =?UTF-8?q?Conversion=20of=20=C2=B0C->=C2=B0F=20on=20H?= =?UTF-8?q?DG=20Altitude=20stored=20as=20feet=20in=20logs=20when=20imperia?= =?UTF-8?q?l=20mode=20chosen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- radio/src/gui/menu_general.cpp | 4 ++-- radio/src/gui/view_main.cpp | 2 +- radio/src/gui/view_statistics.cpp | 8 ++++---- radio/src/lcd.cpp | 9 +++++---- radio/src/logs.cpp | 6 +++++- radio/src/myeeprom.h | 3 ++- radio/src/opentx.cpp | 8 ++++++-- radio/src/telemetry/frsky.h | 1 + radio/src/telemetry/frsky_sport.h | 4 +++- radio/src/translations/tts_cz.cpp | 2 +- radio/src/translations/tts_de.cpp | 2 +- radio/src/translations/tts_en.cpp | 2 +- radio/src/translations/tts_es.cpp | 2 +- radio/src/translations/tts_fr.cpp | 2 +- radio/src/translations/tts_it.cpp | 2 +- radio/src/translations/tts_pl.cpp | 2 +- radio/src/translations/tts_pt.cpp | 2 +- radio/src/translations/tts_se.cpp | 2 +- radio/src/translations/tts_sk.cpp | 2 +- 19 files changed, 39 insertions(+), 26 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index e8bd44897..87200d5d8 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -477,7 +477,7 @@ void menuGeneralSetup(uint8_t event) #if defined(PCBSKY9X) case ITEM_SETUP_TEMPERATURE_WARNING: lcd_putsLeft(y, STR_TEMPWARNING); - putsTelemetryValue(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.temperatureWarn, UNIT_DEGREES, attr|LEFT) ; + putsTelemetryValue(RADIO_SETUP_2ND_COLUMN, y, g_eeGeneral.temperatureWarn, UNIT_TEMPERATURE, attr|LEFT) ; if(attr) CHECK_INCDEC_GENVAR(event, g_eeGeneral.temperatureWarn, 0, 120); // 0 means no alarm break; #endif @@ -1187,7 +1187,7 @@ void menuGeneralDiagAna(uint8_t event) #if defined(PCBSKY9X) lcd_putsLeft(7*FH+1, STR_TEMP_CALIB); - putsTelemetryValue(LEN_CALIB_FIELDS*FW+4*FW, 7*FH+1, getTemperature(), UNIT_DEGREES, (m_posVert==3 ? INVERS : 0)) ; + putsTelemetryValue(LEN_CALIB_FIELDS*FW+4*FW, 7*FH+1, getTemperature(), UNIT_TEMPERATURE, (m_posVert==3 ? INVERS : 0)) ; if (m_posVert==3) CHECK_INCDEC_GENVAR(event, g_eeGeneral.temperatureCalib, -100, 100); #endif } diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index d275b9bce..1cebc93c3 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -406,7 +406,7 @@ void displayBattVoltage() void displayVoltageOrAlarm() { if (g_vbat100mV > g_eeGeneral.vBatWarn && g_eeGeneral.temperatureWarn && getTemperature() >= g_eeGeneral.temperatureWarn) { - putsTelemetryValue(6*FW-1, 3*FH, getTemperature(), UNIT_DEGREES, BLINK|INVERS|DBLSIZE); + putsTelemetryValue(6*FW-1, 3*FH, getTemperature(), UNIT_TEMPERATURE, BLINK|INVERS|DBLSIZE); } else if (g_vbat100mV > g_eeGeneral.vBatWarn && g_eeGeneral.mAhWarn && (g_eeGeneral.mAhUsed + Current_used * (488 + g_eeGeneral.currentCalib)/8192/36) / 500 >= g_eeGeneral.mAhWarn) { putsTelemetryValue(7*FW-1, 3*FH, (g_eeGeneral.mAhUsed + Current_used*(488 + g_eeGeneral.currentCalib)/8192/36)/10, UNIT_MAH, BLINK|INVERS|DBLSIZE); diff --git a/radio/src/gui/view_statistics.cpp b/radio/src/gui/view_statistics.cpp index 10573b8bd..36c4d5b78 100644 --- a/radio/src/gui/view_statistics.cpp +++ b/radio/src/gui/view_statistics.cpp @@ -152,8 +152,8 @@ void menuStatisticsDebug(uint8_t event) #if defined(PCBSKY9X) lcd_putsLeft(3*FH, STR_CPU_TEMP); - putsTelemetryValue(MENU_DEBUG_COL_OFS, 3*FH, getTemperature(), UNIT_DEGREES, 0); - putsTelemetryValue(20*FW+2, 3*FH, maxTemperature+g_eeGeneral.temperatureCalib, UNIT_DEGREES, 0); + putsTelemetryValue(MENU_DEBUG_COL_OFS, 3*FH, getTemperature(), UNIT_TEMPERATURE, 0); + putsTelemetryValue(20*FW+2, 3*FH, maxTemperature+g_eeGeneral.temperatureCalib, UNIT_TEMPERATURE, 0); #endif #if defined(PCBSKY9X) @@ -169,8 +169,8 @@ void menuStatisticsDebug(uint8_t event) lcd_putsAtt(9*FW+2, 4*FH, PSTR("Upgr.TinyApp"),INVERS); } else { - putsTelemetryValue(MENU_DEBUG_COL_OFS, 4*FH, Coproc_temp, UNIT_DEGREES, 0); - putsTelemetryValue(20*FW+2, 4*FH, Coproc_maxtemp, UNIT_DEGREES, 0); + putsTelemetryValue(MENU_DEBUG_COL_OFS, 4*FH, Coproc_temp, UNIT_TEMPERATURE, 0); + putsTelemetryValue(20*FW+2, 4*FH, Coproc_maxtemp, UNIT_TEMPERATURE, 0); } #elif defined(PCBTARANIS) && !defined(SIMU) lcd_putsLeft(4*FH, "Free Mem"); diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 5ceebe511..32087bde7 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1180,16 +1180,17 @@ void putsTelemetryValue(xcoord_t x, uint8_t y, lcdint_t val, uint8_t unit, uint8 { convertUnit(val, unit); lcd_outdezAtt(x, y, val, att & (~NO_UNIT)); - if (!(att & NO_UNIT) && unit != UNIT_RAW) + if (!(att & NO_UNIT) && unit != UNIT_RAW) { lcd_putsiAtt(lcdLastPos/*+1*/, y, STR_VTELEMUNIT, unit, 0); + } } const pm_uint8_t bchunit_ar[] PROGMEM = { UNIT_DIST, // Alt UNIT_RAW, // Rpm UNIT_PERCENT, // Fuel - UNIT_DEGREES, // T1 - UNIT_DEGREES, // T2 + UNIT_TEMPERATURE, // T1 + UNIT_TEMPERATURE, // T2 UNIT_KTS, // Speed UNIT_DIST, // Dist UNIT_DIST, // GPS Alt @@ -1299,7 +1300,7 @@ void putsTelemetryChannel(xcoord_t x, uint8_t y, uint8_t channel, lcdint_t val, if (channel >= TELEM_MIN_ALT-1 && channel <= TELEM_MAX_ALT-1) unit = 0; if (channel == TELEM_HDG-1) - unit = 3; + unit = UNIT_HDG; putsTelemetryValue(x, y, val, pgm_read_byte(bchunit_ar+unit), att); break; } diff --git a/radio/src/logs.cpp b/radio/src/logs.cpp index e0f93b578..cb9ecb697 100644 --- a/radio/src/logs.cpp +++ b/radio/src/logs.cpp @@ -140,7 +140,9 @@ const pm_char * openLogs() if (IS_USR_PROTO_FRSKY_HUB()) { f_puts("GPS Date,GPS Time,Long,Lat,Course,GPS Speed(", &g_oLogFile); f_puts(TELEMETRY_GPS_SPEED_UNIT, &g_oLogFile); - f_puts("),GPS Alt,Baro Alt,Vertical Speed,Temp1,Temp2,RPM,Fuel,Cell volts,Cell 1,Cell 2,Cell 3,Cell 4,Cell 5,Cell 6,Current,Consumption,Vfas,AccelX,AccelY,AccelZ,", &g_oLogFile); + f_puts("),GPS Alt,Baro Alt(", &g_oLogFile); + f_puts(TELEMETRY_BARO_ALT_UNIT, &g_oLogFile); + f_puts("),Vertical Speed,Temp1,Temp2,RPM,Fuel,Cell volts,Cell 1,Cell 2,Cell 3,Cell 4,Cell 5,Cell 6,Current,Consumption,Vfas,AccelX,AccelY,AccelZ,", &g_oLogFile); } #endif @@ -223,6 +225,8 @@ void writeLogs() #endif #if defined(FRSKY_HUB) + TELEMETRY_BARO_ALT_PREPARE(); + if (IS_USR_PROTO_FRSKY_HUB()) { f_printf(&g_oLogFile, "%4d-%02d-%02d,%02d:%02d:%02d,%03d.%04d%c,%03d.%04d%c,%03d.%02d," TELEMETRY_GPS_SPEED_FORMAT TELEMETRY_GPS_ALT_FORMAT TELEMETRY_BARO_ALT_FORMAT TELEMETRY_VSPEED_FORMAT "%d,%d,%d,%d," TELEMETRY_CELLS_FORMAT TELEMETRY_CURRENT_FORMAT "%d," TELEMETRY_VFAS_FORMAT "%d,%d,%d,", frskyData.hub.year+2000, diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index ee857d95a..35a07a447 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -910,7 +910,7 @@ enum TelemetryUnit { UNIT_RAW, UNIT_SPEED, UNIT_DIST, - UNIT_DEGREES, + UNIT_TEMPERATURE, UNIT_PERCENT, UNIT_MILLIAMPS, UNIT_A1A2_MAX = UNIT_MILLIAMPS, @@ -924,6 +924,7 @@ enum TelemetryUnit { UNIT_SECONDS, UNIT_RPMS, UNIT_G, + UNIT_HDG, }; #if defined(CPUARM) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index e6e83c1a3..1d69e1a6a 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2127,7 +2127,7 @@ getvalue_t convertCswTelemValue(LogicalSwitchData * cs) FORCEINLINE void convertUnit(getvalue_t & val, uint8_t & unit) { if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_DEGREES) { + if (unit == UNIT_TEMPERATURE) { val += 18; val *= 115; val >>= 6; @@ -2152,6 +2152,10 @@ FORCEINLINE void convertUnit(getvalue_t & val, uint8_t & unit) val = (val * 50) / 27; } } + + if (unit == UNIT_HDG) { + unit = UNIT_TEMPERATURE; + } } #endif @@ -3295,7 +3299,7 @@ PLAY_FUNCTION(playValue, uint8_t idx) break; case MIXSRC_FIRST_TELEM+TELEM_HDG-1: - PLAY_NUMBER(val, 1+UNIT_DEGREES, 0); + PLAY_NUMBER(val, 1+UNIT_HDG, 0); break; default: diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 7f1a1af9d..ff223d268 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -227,6 +227,7 @@ void resetTelemetry(); #define TELEMETRY_MIN_CELL_VOLTAGE (frskyData.hub.minCellVolts * 2) #define TELEMETRY_BARO_ALT_AVAILABLE() (frskyData.hub.baroAltitudeOffset) +#define TELEMETRY_BARO_ALT_UNIT (IS_IMPERIAL_ENABLE() ? LENGTH_UNIT_IMP : LENGTH_UNIT_METR) #define TELEMETRY_RELATIVE_BARO_ALT_BP frskyData.hub.baroAltitude_bp #define TELEMETRY_RELATIVE_BARO_ALT_AP frskyData.hub.baroAltitude_ap diff --git a/radio/src/telemetry/frsky_sport.h b/radio/src/telemetry/frsky_sport.h index b63d1869f..80424e45d 100644 --- a/radio/src/telemetry/frsky_sport.h +++ b/radio/src/telemetry/frsky_sport.h @@ -184,6 +184,7 @@ void resetTelemetry(); #define TELEMETRY_MIN_CELL_VOLTAGE frskyData.hub.minCellVolts #define TELEMETRY_BARO_ALT_AVAILABLE() (frskyData.hub.baroAltitudeOffset) +#define TELEMETRY_BARO_ALT_UNIT (IS_IMPERIAL_ENABLE() ? LENGTH_UNIT_IMP : LENGTH_UNIT_METR) #define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp #define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap @@ -195,8 +196,9 @@ void resetTelemetry(); #define TELEMETRY_RELATIVE_BARO_ALT_BP (frskyData.hub.baroAltitude / 100) #define TELEMETRY_RELATIVE_BARO_ALT_AP (frskyData.hub.baroAltitude % 100) +#define TELEMETRY_BARO_ALT_PREPARE() div_t baroAltitudeDivision = div(getConvertedTelemetryValue(frskyData.hub.baroAltitude, UNIT_DIST), 100) #define TELEMETRY_BARO_ALT_FORMAT "%c%d.%02d," -#define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude < 0 ? '-' : ' ', abs(frskyData.hub.baroAltitude / 100), abs(frskyData.hub.baroAltitude % 100), +#define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude < 0 ? '-' : ' ', abs(baroAltitudeDivision.quot), abs(baroAltitudeDivision.rem), #define TELEMETRY_GPS_ALT_FORMAT "%c%d.%02d," #define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude < 0 ? '-' : ' ', abs(frskyData.hub.gpsAltitude / 100), abs(frskyData.hub.gpsAltitude % 100), #define TELEMETRY_GPS_SPEED_UNIT (IS_IMPERIAL_ENABLE() ? SPEED_UNIT_IMP : SPEED_UNIT_METR) diff --git a/radio/src/translations/tts_cz.cpp b/radio/src/translations/tts_cz.cpp index d7da90e03..fb45783ab 100644 --- a/radio/src/translations/tts_cz.cpp +++ b/radio/src/translations/tts_cz.cpp @@ -43,7 +43,7 @@ enum CzechPrompts { CZ_PROMPT_SPARE1 = CZ_PROMPT_UNITS_BASE+(UNIT_RAW*4), CZ_PROMPT_KMH = CZ_PROMPT_UNITS_BASE+(UNIT_SPEED*4), CZ_PROMPT_METERS = CZ_PROMPT_UNITS_BASE+(UNIT_DIST*4), - CZ_PROMPT_DEGREES = CZ_PROMPT_UNITS_BASE+(UNIT_DEGREES*4), + CZ_PROMPT_DEGREES = CZ_PROMPT_UNITS_BASE+(UNIT_TEMPERATURE*4), CZ_PROMPT_PERCENT = CZ_PROMPT_UNITS_BASE+(UNIT_PERCENT*4), CZ_PROMPT_MILLIAMPS = CZ_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4), CZ_PROMPT_MAH = CZ_PROMPT_UNITS_BASE+(UNIT_MAH*4), diff --git a/radio/src/translations/tts_de.cpp b/radio/src/translations/tts_de.cpp index fe4d86117..af09eeb53 100644 --- a/radio/src/translations/tts_de.cpp +++ b/radio/src/translations/tts_de.cpp @@ -45,7 +45,7 @@ enum GermanPrompts { DE_PROMPT_SPARE1 = DE_PROMPT_UNITS_BASE+UNIT_RAW, DE_PROMPT_KMH = DE_PROMPT_UNITS_BASE+UNIT_SPEED, DE_PROMPT_METERS = DE_PROMPT_UNITS_BASE+UNIT_DIST, - DE_PROMPT_DEGREES = DE_PROMPT_UNITS_BASE+UNIT_DEGREES, + DE_PROMPT_DEGREES = DE_PROMPT_UNITS_BASE+UNIT_TEMPERATURE, DE_PROMPT_PERCENT = DE_PROMPT_UNITS_BASE+UNIT_PERCENT, DE_PROMPT_MILLIAMPS = DE_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, DE_PROMPT_MAH = DE_PROMPT_UNITS_BASE+UNIT_MAH, diff --git a/radio/src/translations/tts_en.cpp b/radio/src/translations/tts_en.cpp index e195eec63..c7cfcb79f 100644 --- a/radio/src/translations/tts_en.cpp +++ b/radio/src/translations/tts_en.cpp @@ -52,7 +52,7 @@ enum EnglishPrompts { EN_PROMPT_SPARE1 = EN_PROMPT_UNITS_BASE+(UNIT_RAW*2), EN_PROMPT_KMH = EN_PROMPT_UNITS_BASE+(UNIT_SPEED*2), EN_PROMPT_METERS = EN_PROMPT_UNITS_BASE+(UNIT_DIST*2), - EN_PROMPT_DEGREES = EN_PROMPT_UNITS_BASE+(UNIT_DEGREES*2), + EN_PROMPT_DEGREES = EN_PROMPT_UNITS_BASE+(UNIT_TEMPERATURE*2), EN_PROMPT_PERCENT = EN_PROMPT_UNITS_BASE+(UNIT_PERCENT*2), EN_PROMPT_MILLIAMPS = EN_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2), EN_PROMPT_MAH = EN_PROMPT_UNITS_BASE+(UNIT_MAH*2), diff --git a/radio/src/translations/tts_es.cpp b/radio/src/translations/tts_es.cpp index 386a8f73a..9a9b7ca74 100644 --- a/radio/src/translations/tts_es.cpp +++ b/radio/src/translations/tts_es.cpp @@ -69,7 +69,7 @@ enum SpanishPrompts { ES_PROMPT_SPARE1 = ES_PROMPT_UNITS_BASE+UNIT_RAW, ES_PROMPT_KMH = ES_PROMPT_UNITS_BASE+UNIT_SPEED, ES_PROMPT_METERS = ES_PROMPT_UNITS_BASE+UNIT_DIST, - ES_PROMPT_DEGREES = ES_PROMPT_UNITS_BASE+UNIT_DEGREES, + ES_PROMPT_DEGREES = ES_PROMPT_UNITS_BASE+UNIT_TEMPERATURE, ES_PROMPT_PERCENT = ES_PROMPT_UNITS_BASE+UNIT_PERCENT, ES_PROMPT_MILLIAMPS = ES_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, ES_PROMPT_MAH = ES_PROMPT_UNITS_BASE+UNIT_MAH, diff --git a/radio/src/translations/tts_fr.cpp b/radio/src/translations/tts_fr.cpp index 032e42d0f..a5eca4723 100644 --- a/radio/src/translations/tts_fr.cpp +++ b/radio/src/translations/tts_fr.cpp @@ -50,7 +50,7 @@ enum FrenchPrompts { FR_PROMPT_SPARE1 = FR_PROMPT_UNITS_BASE+UNIT_RAW, FR_PROMPT_KMH = FR_PROMPT_UNITS_BASE+UNIT_SPEED, FR_PROMPT_METERS = FR_PROMPT_UNITS_BASE+UNIT_DIST, - FR_PROMPT_DEGREES = FR_PROMPT_UNITS_BASE+UNIT_DEGREES, + FR_PROMPT_DEGREES = FR_PROMPT_UNITS_BASE+UNIT_TEMPERATURE, FR_PROMPT_PERCENT = FR_PROMPT_UNITS_BASE+UNIT_PERCENT, FR_PROMPT_MILLIAMPS = FR_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, FR_PROMPT_MAH = FR_PROMPT_UNITS_BASE+UNIT_MAH, diff --git a/radio/src/translations/tts_it.cpp b/radio/src/translations/tts_it.cpp index 8cd0a1a95..080b6ae10 100644 --- a/radio/src/translations/tts_it.cpp +++ b/radio/src/translations/tts_it.cpp @@ -46,7 +46,7 @@ enum ItalianPrompts { IT_PROMPT_SPARE1 = IT_PROMPT_UNITS_BASE+UNIT_RAW, IT_PROMPT_KMH = IT_PROMPT_UNITS_BASE+UNIT_SPEED, IT_PROMPT_METERS = IT_PROMPT_UNITS_BASE+UNIT_DIST, - IT_PROMPT_DEGREES = IT_PROMPT_UNITS_BASE+UNIT_DEGREES, + IT_PROMPT_DEGREES = IT_PROMPT_UNITS_BASE+UNIT_TEMPERATURE, IT_PROMPT_PERCENT = IT_PROMPT_UNITS_BASE+UNIT_PERCENT, IT_PROMPT_MILLIAMPS = IT_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, IT_PROMPT_MAH = IT_PROMPT_UNITS_BASE+UNIT_MAH, diff --git a/radio/src/translations/tts_pl.cpp b/radio/src/translations/tts_pl.cpp index a143afad4..3772c6054 100644 --- a/radio/src/translations/tts_pl.cpp +++ b/radio/src/translations/tts_pl.cpp @@ -44,7 +44,7 @@ enum PolishPrompts { PL_PROMPT_SPARE1 = PL_PROMPT_UNITS_BASE+(UNIT_RAW*4), PL_PROMPT_KMH = PL_PROMPT_UNITS_BASE+(UNIT_SPEED*4), PL_PROMPT_METERS = PL_PROMPT_UNITS_BASE+(UNIT_DIST*4), - PL_PROMPT_DEGREES = PL_PROMPT_UNITS_BASE+(UNIT_DEGREES*4), + PL_PROMPT_DEGREES = PL_PROMPT_UNITS_BASE+(UNIT_TEMPERATURE*4), PL_PROMPT_PERCENT = PL_PROMPT_UNITS_BASE+(UNIT_PERCENT*4), PL_PROMPT_MILLIAMPS = PL_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4), PL_PROMPT_MAH = PL_PROMPT_UNITS_BASE+(UNIT_MAH*4), diff --git a/radio/src/translations/tts_pt.cpp b/radio/src/translations/tts_pt.cpp index 1f0745b77..0744cefd3 100644 --- a/radio/src/translations/tts_pt.cpp +++ b/radio/src/translations/tts_pt.cpp @@ -69,7 +69,7 @@ enum PortuguesePrompts { PT_PROMPT_SPARE1 = PT_PROMPT_UNITS_BASE+UNIT_RAW, PT_PROMPT_KMH = PT_PROMPT_UNITS_BASE+UNIT_SPEED, PT_PROMPT_METERS = PT_PROMPT_UNITS_BASE+UNIT_DIST, - PT_PROMPT_DEGREES = PT_PROMPT_UNITS_BASE+UNIT_DEGREES, + PT_PROMPT_DEGREES = PT_PROMPT_UNITS_BASE+UNIT_TEMPERATURE, PT_PROMPT_PERCENT = PT_PROMPT_UNITS_BASE+UNIT_PERCENT, PT_PROMPT_MILLIAMPS = PT_PROMPT_UNITS_BASE+UNIT_MILLIAMPS, PT_PROMPT_MAH = PT_PROMPT_UNITS_BASE+UNIT_MAH, diff --git a/radio/src/translations/tts_se.cpp b/radio/src/translations/tts_se.cpp index 2a6f92bb4..c4c10c548 100644 --- a/radio/src/translations/tts_se.cpp +++ b/radio/src/translations/tts_se.cpp @@ -53,7 +53,7 @@ enum SwedishPrompts { SE_PROMPT_SPARE1 = SE_PROMPT_UNITS_BASE+(UNIT_RAW*2), SE_PROMPT_KMH = SE_PROMPT_UNITS_BASE+(UNIT_SPEED*2), SE_PROMPT_METERS = SE_PROMPT_UNITS_BASE+(UNIT_DIST*2), - SE_PROMPT_DEGREES = SE_PROMPT_UNITS_BASE+(UNIT_DEGREES*2), + SE_PROMPT_DEGREES = SE_PROMPT_UNITS_BASE+(UNIT_TEMPERATURE*2), SE_PROMPT_PERCENT = SE_PROMPT_UNITS_BASE+(UNIT_PERCENT*2), SE_PROMPT_MILLIAMPS = SE_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2), SE_PROMPT_MAH = SE_PROMPT_UNITS_BASE+(UNIT_MAH*2), diff --git a/radio/src/translations/tts_sk.cpp b/radio/src/translations/tts_sk.cpp index 5b574e108..1e10bddef 100644 --- a/radio/src/translations/tts_sk.cpp +++ b/radio/src/translations/tts_sk.cpp @@ -58,7 +58,7 @@ enum SlovakPrompts { SK_PROMPT_SPARE1 = SK_PROMPT_UNITS_BASE+(UNIT_RAW*4), SK_PROMPT_KMH = SK_PROMPT_UNITS_BASE+(UNIT_SPEED*4), SK_PROMPT_METERS = SK_PROMPT_UNITS_BASE+(UNIT_DIST*4), - SK_PROMPT_DEGREES = SK_PROMPT_UNITS_BASE+(UNIT_DEGREES*4), + SK_PROMPT_DEGREES = SK_PROMPT_UNITS_BASE+(UNIT_TEMPERATURE*4), SK_PROMPT_PERCENT = SK_PROMPT_UNITS_BASE+(UNIT_PERCENT*4), SK_PROMPT_MILLIAMPS = SK_PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*4), SK_PROMPT_MAH = SK_PROMPT_UNITS_BASE+(UNIT_MAH*4), From 88b7374c6c264ceb45b948ec37ff38b80fa63be2 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 3 Mar 2014 15:42:13 +0100 Subject: [PATCH 7/7] Compilation error --- radio/src/telemetry/frsky.h | 55 +++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index c2952aa75..9e97989e0 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -225,40 +225,41 @@ bool FRSKY_alarmRaised(uint8_t idx); void resetTelemetry(); -#define TELEMETRY_STREAMING() (frskyStreaming > 0) +#define TELEMETRY_STREAMING() (frskyStreaming > 0) -#define TELEMETRY_CELL_VOLTAGE(k) (frskyData.hub.cellVolts[k] * 2) -#define TELEMETRY_MIN_CELL_VOLTAGE (frskyData.hub.minCellVolts * 2) +#define TELEMETRY_CELL_VOLTAGE(k) (frskyData.hub.cellVolts[k] * 2) +#define TELEMETRY_MIN_CELL_VOLTAGE (frskyData.hub.minCellVolts * 2) -#define TELEMETRY_BARO_ALT_AVAILABLE() (frskyData.hub.baroAltitudeOffset) -#define TELEMETRY_BARO_ALT_UNIT (IS_IMPERIAL_ENABLE() ? LENGTH_UNIT_IMP : LENGTH_UNIT_METR) +#define TELEMETRY_BARO_ALT_AVAILABLE() (frskyData.hub.baroAltitudeOffset) +#define TELEMETRY_BARO_ALT_UNIT (IS_IMPERIAL_ENABLE() ? LENGTH_UNIT_IMP : LENGTH_UNIT_METR) -#define TELEMETRY_RELATIVE_BARO_ALT_BP frskyData.hub.baroAltitude_bp -#define TELEMETRY_RELATIVE_BARO_ALT_AP frskyData.hub.baroAltitude_ap -#define TELEMETRY_RELATIVE_GPS_ALT_BP frskyData.hub.gpsAltitude_bp -#define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp -#define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap +#define TELEMETRY_RELATIVE_BARO_ALT_BP frskyData.hub.baroAltitude_bp +#define TELEMETRY_RELATIVE_BARO_ALT_AP frskyData.hub.baroAltitude_ap +#define TELEMETRY_RELATIVE_GPS_ALT_BP frskyData.hub.gpsAltitude_bp +#define TELEMETRY_GPS_SPEED_BP frskyData.hub.gpsSpeed_bp +#define TELEMETRY_GPS_SPEED_AP frskyData.hub.gpsSpeed_ap -#define TELEMETRY_BARO_ALT_FORMAT "%d," -#define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude_bp, -#define TELEMETRY_GPS_ALT_FORMAT "%d," -#define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude_bp, -#define TELEMETRY_GPS_SPEED_UNIT (IS_IMPERIAL_ENABLE() ? SPEED_UNIT_IMP : SPEED_UNIT_METR) -#define TELEMETRY_GPS_SPEED_FORMAT "%d," -#define TELEMETRY_GPS_SPEED_ARGS getConvertedTelemetryValue(frskyData.hub.gpsSpeed_bp, UNIT_KTS), -#define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," -#define TELEMETRY_CELLS_ARGS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, frskyData.hub.cellVolts[0]*2/100, frskyData.hub.cellVolts[0]*2%100, frskyData.hub.cellVolts[1]*2/100, frskyData.hub.cellVolts[1]*2%100, frskyData.hub.cellVolts[2]*2/100, frskyData.hub.cellVolts[2]*2%100, frskyData.hub.cellVolts[3]*2/100, frskyData.hub.cellVolts[3]*2%100, frskyData.hub.cellVolts[4]*2/100, frskyData.hub.cellVolts[4]*2%100, frskyData.hub.cellVolts[5]*2/100, frskyData.hub.cellVolts[5]*2%100, -#define TELEMETRY_CURRENT_FORMAT "%d.%02d," -#define TELEMETRY_CURRENT_ARGS frskyData.hub.current / 100, frskyData.hub.current % 100, -#define TELEMETRY_VFAS_FORMAT "%d.%d," -#define TELEMETRY_VFAS_ARGS frskyData.hub.vfas / 10, frskyData.hub.vfas % 10, -#define TELEMETRY_VSPEED_FORMAT "%c%d.%02d," -#define TELEMETRY_VSPEED_ARGS frskyData.hub.varioSpeed < 0 ? '-' : ' ', frskyData.hub.varioSpeed / 100, frskyData.hub.varioSpeed % 100, +#define TELEMETRY_BARO_ALT_PREPARE() +#define TELEMETRY_BARO_ALT_FORMAT "%d," +#define TELEMETRY_BARO_ALT_ARGS frskyData.hub.baroAltitude_bp, +#define TELEMETRY_GPS_ALT_FORMAT "%d," +#define TELEMETRY_GPS_ALT_ARGS frskyData.hub.gpsAltitude_bp, +#define TELEMETRY_GPS_SPEED_UNIT (IS_IMPERIAL_ENABLE() ? SPEED_UNIT_IMP : SPEED_UNIT_METR) +#define TELEMETRY_GPS_SPEED_FORMAT "%d," +#define TELEMETRY_GPS_SPEED_ARGS getConvertedTelemetryValue(frskyData.hub.gpsSpeed_bp, UNIT_KTS), +#define TELEMETRY_CELLS_FORMAT "%d.%d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d," +#define TELEMETRY_CELLS_ARGS frskyData.hub.cellsSum / 10, frskyData.hub.cellsSum % 10, frskyData.hub.cellVolts[0]*2/100, frskyData.hub.cellVolts[0]*2%100, frskyData.hub.cellVolts[1]*2/100, frskyData.hub.cellVolts[1]*2%100, frskyData.hub.cellVolts[2]*2/100, frskyData.hub.cellVolts[2]*2%100, frskyData.hub.cellVolts[3]*2/100, frskyData.hub.cellVolts[3]*2%100, frskyData.hub.cellVolts[4]*2/100, frskyData.hub.cellVolts[4]*2%100, frskyData.hub.cellVolts[5]*2/100, frskyData.hub.cellVolts[5]*2%100, +#define TELEMETRY_CURRENT_FORMAT "%d.%02d," +#define TELEMETRY_CURRENT_ARGS frskyData.hub.current / 100, frskyData.hub.current % 100, +#define TELEMETRY_VFAS_FORMAT "%d.%d," +#define TELEMETRY_VFAS_ARGS frskyData.hub.vfas / 10, frskyData.hub.vfas % 10, +#define TELEMETRY_VSPEED_FORMAT "%c%d.%02d," +#define TELEMETRY_VSPEED_ARGS frskyData.hub.varioSpeed < 0 ? '-' : ' ', frskyData.hub.varioSpeed / 100, frskyData.hub.varioSpeed % 100, #if defined(FRSKY_HUB) - #define TELEMETRY_OPENXSENSOR() (frskyData.hub.openXsensor) + #define TELEMETRY_OPENXSENSOR() (frskyData.hub.openXsensor) #else - #define TELEMETRY_OPENXSENSOR() (0) + #define TELEMETRY_OPENXSENSOR() (0) #endif #endif