From a34652e99c56855596fcec3bd2060511b764b12e Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 16 Apr 2012 18:56:34 +0000 Subject: [PATCH] Revert last 2 commits --- src/frsky.cpp | 145 +++++++++++++++--------------------------- src/frsky.h | 20 +++--- src/general_menus.cpp | 2 +- src/model_menus.cpp | 56 ++-------------- src/myeeprom.h | 9 +-- src/o9xstrings.cpp | 5 -- src/o9xstrings.h | 5 -- src/open9x.cpp | 6 +- src/translations/en.h | 5 -- 9 files changed, 75 insertions(+), 178 deletions(-) diff --git a/src/frsky.cpp b/src/frsky.cpp index cf32e752c..1b3f29283 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -243,60 +243,41 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskyHubData, baroAltitude_bp): - case offsetof(FrskyHubData, baroAltitude_ap): - if((!g_model.frsky.use_baroAltitude_ap & (offsetof(FrskyHubData, baroAltitude_bp) == (uint8_t)structPos)) | - (g_model.frsky.use_baroAltitude_ap & (offsetof(FrskyHubData, baroAltitude_ap) == (uint8_t)structPos))){ - //here is baro altitude suggested 0.01m accuracy, i.e. baroAltitude_ap in range [0:99] - if(g_model.frsky.use_baroAltitude_ap){ - uint16_t alt_sign = frskyHubData.baroAltitude_bp/abs(frskyHubData.baroAltitude_bp); - frskyHubData.baroAltitude_full = frskyHubData.baroAltitude_bp*100 + frskyHubData.baroAltitude_ap*alt_sign; - }else{ - frskyHubData.baroAltitude_full = frskyHubData.baroAltitude_bp; - } - if(++frskyHubData.queuePointer>=5) - frskyHubData.queuePointer = 0; - - int8_t tmp = frskyHubData.queuePointer + 1; - if(tmp >= 5) - tmp = 0; - - frskyHubData.baroAltitudeQueue_full[frskyHubData.queuePointer] = - frskyHubData.baroAltitude_full; - - frskyHubData.varioSpeed = - frskyHubData.baroAltitudeQueue_full[frskyHubData.queuePointer] - - frskyHubData.baroAltitudeQueue_full[tmp]; + // 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; + if (frskyHubData.baroAltitude_bp < frskyHubData.minAltitude) + frskyHubData.minAltitude = frskyHubData.baroAltitude_bp; - // First received barometer altitude => Altitude offset - if (!frskyHubData.baroAltitudeOffset) - frskyHubData.baroAltitudeOffset = -frskyHubData.baroAltitude_full; - frskyHubData.baroAltitude_full += frskyHubData.baroAltitudeOffset; - if(g_model.frsky.use_baroAltitude_only){ - if (frskyHubData.baroAltitude_full > frskyHubData.maxAltitude_full) - frskyHubData.maxAltitude_full = frskyHubData.baroAltitude_full; - if (frskyHubData.baroAltitude_full < frskyHubData.minAltitude_full) - frskyHubData.minAltitude_full = frskyHubData.baroAltitude_full; - } - - - } + { + int16_t actVario = frskyHubData.baroAltitude_bp - frskyHubData.lastBaroAltitude_bp; + frskyHubData.varioAcc2 = frskyHubData.varioAcc2 - frskyHubData.varioQueue[frskyHubData.queuePointer]; + frskyHubData.varioQueue[frskyHubData.queuePointer] = actVario; + uint8_t tmp = frskyHubData.queuePointer + 5; + if (tmp >= 10) + tmp -= 10; + tmp = (uint8_t)frskyHubData.varioQueue[tmp]; + frskyHubData.varioAcc2 = frskyHubData.varioAcc2 + (int8_t)tmp; + frskyHubData.varioAcc1 = frskyHubData.varioAcc1 + actVario - (int8_t)tmp; + frskyHubData.varioSpeed = frskyHubData.varioAcc1 - frskyHubData.varioAcc2; + if (++frskyHubData.queuePointer >= 10) + frskyHubData.queuePointer = 0; + frskyHubData.lastBaroAltitude_bp = frskyHubData.baroAltitude_bp; + } break; case offsetof(FrskyHubData, gpsAltitude_ap): - if(g_model.frsky.use_baroAltitude_ap){ - frskyHubData.gpsAltitude_full = frskyHubData.gpsAltitude_bp*100; - } else { - frskyHubData.gpsAltitude_full = frskyHubData.gpsAltitude_bp; - } if (!frskyHubData.gpsAltitudeOffset) - frskyHubData.gpsAltitudeOffset = -frskyHubData.gpsAltitude_full; - frskyHubData.gpsAltitude_full += frskyHubData.gpsAltitudeOffset; - if(!g_model.frsky.use_baroAltitude_only){ - if (frskyHubData.gpsAltitude_full > frskyHubData.maxAltitude_full) - frskyHubData.maxAltitude_full = frskyHubData.gpsAltitude_full; - if (frskyHubData.gpsAltitude_full < frskyHubData.minAltitude_full) - frskyHubData.minAltitude_full = frskyHubData.gpsAltitude_full; - } + frskyHubData.gpsAltitudeOffset = -frskyHubData.gpsAltitude_bp; + frskyHubData.gpsAltitude_bp += frskyHubData.gpsAltitudeOffset; + if (frskyHubData.gpsAltitude_bp > frskyHubData.maxAltitude) + frskyHubData.maxAltitude = frskyHubData.gpsAltitude_bp; + if (frskyHubData.gpsAltitude_bp < frskyHubData.minAltitude) + frskyHubData.minAltitude = frskyHubData.gpsAltitude_bp; + if (!frskyHubData.pilotLatitude && !frskyHubData.pilotLongitude) { // First received GPS position => Pilot GPS position getGpsPilotPosition(); @@ -644,39 +625,30 @@ void check_frsky() if (isFunctionActive(FUNC_VARIO)) { #if defined(AUDIO) + uint8_t warble = 0; +#endif + int8_t verticalSpeed = limit((int16_t)-100, (int16_t)(frskyHubData.varioSpeed/10), (int16_t)+100); -#define VARIO_SPEED_LIMIT 10 //m/s - int16_t verticalSpeed = 0; - //vertical speed in 0.01m/s now - if(g_model.frsky.use_baroAltitude_ap)//means if additional data enabled then _ap unit is 0.01 - verticalSpeed = limit((int16_t)-VARIO_SPEED_LIMIT*100, (int16_t)(frskyHubData.varioSpeed), (int16_t)+VARIO_SPEED_LIMIT*100); - else - verticalSpeed = limit((int16_t)-VARIO_SPEED_LIMIT, (int16_t)(frskyHubData.varioSpeed), (int16_t)+VARIO_SPEED_LIMIT)*100; - - uint8_t SoundAltBeepNextFreq = (0); - uint8_t SoundAltBeepNextTime = (0); - if(verticalSpeed < g_model.frsky.varioSpeedUpMin*VARIO_LIM_MUL && verticalSpeed > g_model.frsky.varioSpeedDownMin*(-VARIO_LIM_MUL)) //check thresholds here in cm/s - { - SoundAltBeepNextFreq = (0); - SoundAltBeepNextTime = (0); - }else{ - SoundAltBeepNextFreq = (((verticalSpeed * 56) + 77400)/10)/10/30; - SoundAltBeepNextTime = ((1600 - verticalSpeed) / 100); - if(verticalSpeed > 0){ - if ((int16_t)(g_tmr10ms - s_varioTmr) > (int16_t)(SoundAltBeepNextTime*2)) { - s_varioTmr = g_tmr10ms; - audio.playNow(SoundAltBeepNextFreq, SoundAltBeepNextTime, 0, 0, 0); - } - } else {//negative vertical speed gives sound without pauses - if (g_tmr10ms - s_varioTmr > SoundAltBeepNextTime) { - s_varioTmr = g_tmr10ms; - audio.playNow(SoundAltBeepNextFreq, SoundAltBeepNextTime+2, 0, 0, 0); - } - } - } + uint16_t interval; + if (verticalSpeed == 0) { + interval = 300; + } + else { + if (verticalSpeed < 0) { + verticalSpeed = -verticalSpeed; + warble = 1; + } + interval = (uint8_t)200 / verticalSpeed; + } + if (g_tmr10ms - s_varioTmr > interval) { + s_varioTmr = g_tmr10ms; + if (warble) + AUDIO_VARIO_DOWN(); + else + AUDIO_VARIO_UP(); + } } -#endif //AUDIO -#endif //FRSKY_HUB || WS_HOW_HIGH +#endif } bool FRSKY_alarmRaised(uint8_t idx) @@ -823,9 +795,7 @@ void resetTelemetry() frskyHubData.cellsCount = 6; frskyHubData.gpsAltitude_bp = 50; - frskyHubData.gpsAltitude_full = 5000; frskyHubData.baroAltitude_bp = 50; - frskyHubData.baroAltitude_full = 5000; frskyHubData.minAltitude = 10; frskyHubData.maxAltitude = 500; @@ -1104,16 +1074,7 @@ void menuProcFrsky(uint8_t event) putsTime(x, 1+FH+2*FH*i, value, att, att); } else { - if(g_model.frsky.use_baroAltitude_ap & - ((field == TELEM_VSPD) | - (field == TELEM_ALT) | - (field == TELEM_MIN_ALT) | - (field == TELEM_MAX_ALT))){ - putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, att|PREC2); - } - else { - putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, att); - } + putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, att); lcd_putsiAtt(j*65, 1+FH+2*FH*i, STR_VTELEMCHNS, field, 0); } } diff --git a/src/frsky.h b/src/frsky.h index e126bb5cd..9da0a0e8d 100644 --- a/src/frsky.h +++ b/src/frsky.h @@ -105,33 +105,33 @@ PACK(struct FrskyHubData { int16_t accelZ; // 0x26 1/256th gram (-8g ~ +8g) uint8_t gpsDistNeeded:1; // 1bits out of 16bits spare reused int8_t gpsFix:2; // 2bits out of 16bits spare reused: -1=never fixed, 0=not fixed now, 1=fixed - uint8_t spare1:1; // + uint8_t spare1:1; // uint8_t cellsCount:4; // 4bits out of 16bits spare reused uint8_t minCellVolts; // 8bits out of 16bits spare reused uint16_t current; // 0x28 Current - int32_t minAltitude_full; //4 bytes from varioQueue reused - int32_t maxAltitude_full; //4 bytes from varioQueue reused - int8_t dummy1[2];//varioQueue[10]; // circular-buffer 2 - uint8_t queuePointer; // circular-buffer pointer 3 - int8_t spare2;// 4 - int16_t dummy2;//lastBaroAltitude; 6 + int8_t varioQueue[10]; // circular-buffer + uint8_t queuePointer; // circular-buffer pointer + int8_t spare2; + int16_t lastBaroAltitude_bp; int16_t varioSpeed; /* next fields must keep this order! */ - int32_t gpsAltitude_full;//4 bytes fro minAltitude and maxAltitude reused + int16_t minAltitude; + int16_t maxAltitude; uint16_t maxRpm; int16_t maxTemperature1; int16_t maxTemperature2; uint16_t maxGpsSpeed; uint16_t maxGpsDistance; /* end */ - int32_t baroAltitude_full;// 4 bytes from varioAcc1 and varioAcc2 reused + int16_t varioAcc1; + int16_t varioAcc2; uint16_t volts_bp; // 0x3A uint16_t volts_ap; // 0x3B // end of FrSky Hub data uint16_t gpsDistance; int16_t gpsAltitudeOffset; uint8_t minCellMinVolts; - int32_t baroAltitudeQueue_full[5];//20 + }); #elif defined(WS_HOW_HIGH) diff --git a/src/general_menus.cpp b/src/general_menus.cpp index 5e8b007e1..9193a5fee 100644 --- a/src/general_menus.cpp +++ b/src/general_menus.cpp @@ -72,7 +72,7 @@ const MenuFuncP_PROGMEM menuTabDiag[] PROGMEM = { }; #define GENERAL_PARAM_OFS 17*FW -uint8_t onoffMenuItem( uint8_t value, uint8_t y, const pm_char *s, uint8_t condition, uint8_t event ) +uint8_t onoffMenuItem( uint8_t value, uint8_t y, const prog_char *s, uint8_t condition, uint8_t event ) { lcd_putsLeft(y, s); menu_lcd_onoff( GENERAL_PARAM_OFS, y, value, condition ) ; diff --git a/src/model_menus.cpp b/src/model_menus.cpp index 10c3edf01..8a54d6969 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -1662,7 +1662,7 @@ void menuProcMixAll(uint8_t event) void menuProcLimits(uint8_t event) { -#ifdef LIMITS_US +#ifdef PPM_CENTER_ADJUSTABLE #define LIMITS_ITEMS_COUNT 4 #else #define LIMITS_ITEMS_COUNT 3 @@ -1672,7 +1672,7 @@ void menuProcLimits(uint8_t event) int8_t sub = m_posVert - 1; -#ifdef LIMITS_US +#ifdef PPM_CENTER_ADJUSTABLE if (sub >= 0) { lcd_outdezAtt(12*FW, 0, PPM_CENTER+g_model.servoCenter[sub]+g_chans512[sub]/2, 0); lcd_puts(12*FW, 0, STR_US); @@ -1697,7 +1697,7 @@ void menuProcLimits(uint8_t event) LimitData *ld = limitaddress(k) ; -#ifndef LIMITS_US +#ifndef PPM_CENTER_ADJUSTABLE int16_t v = (ld->revert) ? -ld->offset : ld->offset; char swVal = '-'; // '-', '<', '>' @@ -1753,7 +1753,7 @@ void menuProcLimits(uint8_t event) } break; case 3: -#ifdef LIMITS_US +#ifdef PPM_CENTER_ADJUSTABLE lcd_putcAtt(17*FW-2, y, ld->revert ? 127 : 126, attr); #else lcd_putsiAtt(18*FW, y, STR_MMMINV, ld->revert, attr); @@ -1762,7 +1762,7 @@ void menuProcLimits(uint8_t event) CHECK_INCDEC_MODELVAR(event, ld->revert, 0, 1); } break; -#ifdef LIMITS_US +#ifdef PPM_CENTER_ADJUSTABLE case 4: lcd_outdezAtt(21*FW+2, y, PPM_CENTER+g_model.servoCenter[k], attr); if (active) { @@ -2001,8 +2001,8 @@ void menuProcFunctionSwitches(uint8_t event) #define TELEM_COL2 (9*FW+2) void menuProcTelemetry(uint8_t event) { -#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)// v v v v 4 new menu items for baro alt/vario - MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 29, {0, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 1, (uint8_t)-1, 0, 0, (uint8_t)-1, 0, 0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, (uint8_t)-1, 2, 2, 2, 2}); +#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 27, {0, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 1, (uint8_t)-1, 0, 0, (uint8_t)-1, 1, 1, 1, 1, (uint8_t)-1, 2, 2, 2, 2}); #else MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 24, {0, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 1, (uint8_t)-1, 1, 1, 1, 1, (uint8_t)-1, 2, 2, 2, 2}); #endif @@ -2150,48 +2150,6 @@ void menuProcTelemetry(uint8_t event) CHECK_INCDEC_MODELVAR(event, g_model.frsky.blades, 0, 2); } subN++; - - if(s_pgOfs