From 2f033ff4555220c0d01b06f6a40ea7ed44081eda Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 27 Jul 2012 12:26:39 +0000 Subject: [PATCH] A few new changes in EEPROM which were in the TODO list --- src/frsky.cpp | 12 ++++----- src/model_menus.cpp | 22 +++++++++------- src/myeeprom.h | 63 +++++++++++++++++++++------------------------ 3 files changed, 48 insertions(+), 49 deletions(-) diff --git a/src/frsky.cpp b/src/frsky.cpp index 831bdbe90..94e962e9a 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -278,7 +278,7 @@ void parseTelemHubByte(uint8_t byte) // First received barometer altitude => Altitude offset if (!frskyData.hub.baroAltitudeOffset) frskyData.hub.baroAltitudeOffset = -frskyData.hub.baroAltitude_bp; - if (g_model.varioSource == VARIO_SOURCE_BARO_V1) { + if (g_model.frsky.varioSource == VARIO_SOURCE_BARO_V1) { evalVario(frskyData.hub.baroAltitude_bp, 0); } frskyData.hub.baroAltitude_bp += frskyData.hub.baroAltitudeOffset; @@ -286,7 +286,7 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskyHubData, baroAltitude_ap): - if (g_model.varioSource == VARIO_SOURCE_BARO_V2) { + if (g_model.frsky.varioSource == VARIO_SOURCE_BARO_V2) { evalVario(frskyData.hub.baroAltitude_bp-frskyData.hub.baroAltitudeOffset, frskyData.hub.baroAltitude_ap); } break; @@ -390,8 +390,8 @@ void processFrskyPacket(uint8_t *packet) frskyData.rssi[0].set(packet[3]); frskyData.rssi[1].set(packet[4] / 2); frskyStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected - if (g_model.varioSource >= VARIO_SOURCE_A1) { - frskyData.hub.varioSpeed = applyChannelRatio(g_model.varioSource - VARIO_SOURCE_A1, frskyData.analog[g_model.varioSource - VARIO_SOURCE_A1].value); + if (g_model.frsky.varioSource >= VARIO_SOURCE_A1) { + frskyData.hub.varioSpeed = applyChannelRatio(g_model.frsky.varioSource - VARIO_SOURCE_A1, frskyData.analog[g_model.frsky.varioSource - VARIO_SOURCE_A1].value); } break; #if defined(FRSKY_HUB) || defined (WS_HOW_HIGH) @@ -1108,8 +1108,8 @@ uint8_t getTelemCustomField(uint8_t line, uint8_t col) #if defined(PCBARM) return g_model.frsky.lines[2*line+col]; #else - uint8_t result = (col==0 ? (g_model.frskyLines[line] & 0x0f) : ((g_model.frskyLines[line] & 0xf0) / 16)); - result += (((g_model.frskyLinesXtra >> (4*line+2*col)) & 0x03) * 16); + uint8_t result = (col==0 ? (g_model.frsky.lines[line] & 0x0f) : ((g_model.frsky.lines[line] & 0xf0) / 16)); + result += (((g_model.frsky.linesXtra >> (4*line+2*col)) & 0x03) * 16); return result; #endif } diff --git a/src/model_menus.cpp b/src/model_menus.cpp index cd45434a7..810ded265 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -1144,6 +1144,8 @@ void menuProcCurveOne(uint8_t event) case EVT_ENTRY: #if defined(ROTARY_ENCODERS) s_editMode = -1; +#else + s_editMode = 1; #endif killEvents(KEY_MENU); break; @@ -2865,25 +2867,25 @@ void menuProcTelemetry(uint8_t event) case ITEM_TELEMETRY_VARIO_SOURCE: lcd_puts(4, y, STR_SOURCE); - lcd_putsiAtt(TELEM_COL2, y, STR_VARIOSRC, g_model.varioSource, attr); - if (attr) CHECK_INCDEC_MODELVAR(event, g_model.varioSource, VARIO_SOURCE_FIRST, VARIO_SOURCE_LAST-1); + lcd_putsiAtt(TELEM_COL2, y, STR_VARIOSRC, g_model.frsky.varioSource, attr); + if (attr) CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSource, VARIO_SOURCE_FIRST, VARIO_SOURCE_LAST-1); break; case ITEM_TELEMETRY_VARIO_SPEED: lcd_puts(4, y, STR_LIMIT); - if (!g_model.varioSpeedDownMin) + if (!g_model.frsky.varioSpeedDownMin) lcd_putsAtt(TELEM_COL2, y, STR_OFF, ((attr && m_posHorz==0) ? blink : 0)); else - lcd_outdezAtt(TELEM_COL2, y, -VARIO_SPEED_LIMIT_MUL*(VARIO_SPEED_LIMIT_DOWN_OFF - g_model.varioSpeedDownMin), ((attr && m_posHorz==0) ? blink : 0)|PREC2|LEFT); - lcd_outdezAtt(TELEM_COL2+6*FW, y, VARIO_SPEED_LIMIT_MUL*(g_model.varioSpeedUpMin - VARIO_SPEED_LIMIT_UP_CENTER), ((attr && m_posHorz==1) ? blink : 0)|PREC2|LEFT); + lcd_outdezAtt(TELEM_COL2, y, -VARIO_SPEED_LIMIT_MUL*(VARIO_SPEED_LIMIT_DOWN_OFF - g_model.frsky.varioSpeedDownMin), ((attr && m_posHorz==0) ? blink : 0)|PREC2|LEFT); + lcd_outdezAtt(TELEM_COL2+6*FW, y, VARIO_SPEED_LIMIT_MUL*(g_model.frsky.varioSpeedUpMin - VARIO_SPEED_LIMIT_UP_CENTER), ((attr && m_posHorz==1) ? blink : 0)|PREC2|LEFT); if (attr && (s_editMode>0 || p1valdiff)) { switch (m_posHorz) { case 0: - g_model.varioSpeedDownMin = checkIncDec(event, g_model.varioSpeedDownMin, 0, VARIO_SPEED_LIMIT_DOWN_OFF, EE_MODEL); + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSpeedDownMin, 0, VARIO_SPEED_LIMIT_DOWN_OFF); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.varioSpeedUpMin, 0, VARIO_SPEED_LIMIT_UP_MAX); + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSpeedUpMin, 0, VARIO_SPEED_LIMIT_UP_MAX); break; } } @@ -2908,11 +2910,11 @@ void menuProcTelemetry(uint8_t event) #if defined (PCBARM) g_model.frsky.lines[2*j+c] = value; #else - g_model.frskyLines[j] = (c==0 ? ((g_model.frskyLines[j] & 0xf0) + (value & 0x0f)) : (g_model.frskyLines[j] & 0x0f) + ((value & 0x0f) << 4)); + g_model.frsky.lines[j] = (c==0 ? ((g_model.frsky.lines[j] & 0xf0) + (value & 0x0f)) : (g_model.frsky.lines[j] & 0x0f) + ((value & 0x0f) << 4)); uint16_t mask = 0x3 << (4*j+2*c); - g_model.frskyLinesXtra &= ~mask; + g_model.frsky.linesXtra &= ~mask; mask = (value / 16) << (4*j+2*c); - g_model.frskyLinesXtra |= mask; + g_model.frsky.linesXtra |= mask; #endif } } diff --git a/src/myeeprom.h b/src/myeeprom.h index 428f911eb..a813c1b3b 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -458,7 +458,7 @@ PACK(typedef struct t_FrSkyBarData { }) FrSkyBarData; #else PACK(typedef struct t_FrSkyBarData { - uint16_t source:4; // TODO modification in next EEPROM + uint16_t source:4; uint16_t barMin:6; // minimum for bar display uint16_t barMax:6; // ditto for max display (would usually = ratio) }) FrSkyBarData; @@ -479,25 +479,38 @@ enum FrskySource { }; #if defined(PCBARM) -#define CUSTOM_TELEMETRY_VIEW \ - uint8_t lines[4*2*2]; \ - uint8_t spare[4] +PACK(typedef struct t_FrSkyData { + FrSkyChannelData channels[2]; + FrSkyRSSIAlarm rssiAlarms[2]; + uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh + uint8_t voltsSource; + uint8_t blades; // How many blades for RPMs, 0=2 blades, 1=3 blades + uint8_t currentSource; + FrSkyBarData bars[4]; + uint8_t lines[4*2*2]; + uint8_t varioSource; + uint8_t varioSpeedUpMin; // if increment in 0.2m/s = 3.0m/s max + uint8_t varioSpeedDownMin; + uint8_t spare[4]; +}) FrSkyData; #else -#define CUSTOM_TELEMETRY_VIEW -#endif - PACK(typedef struct t_FrSkyData { FrSkyChannelData channels[2]; uint8_t usrProto:2; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh - uint8_t voltsSource:2; uint8_t blades:2; // How many blades for RPMs, 0=2 blades, 1=3 blades - uint8_t currentSource:2; + uint8_t spare1:4; + uint8_t voltsSource:3; + uint8_t currentSource:3; + uint8_t spare2:2; FrSkyBarData bars[4]; FrSkyRSSIAlarm rssiAlarms[2]; - - CUSTOM_TELEMETRY_VIEW; - + uint8_t lines[4]; + uint16_t linesXtra; + uint8_t varioSource:3; + uint8_t varioSpeedUpMin:5; // if increment in 0.2m/s = 3.0m/s max + uint8_t varioSpeedDownMin; }) FrSkyData; +#endif #ifdef MAVLINK #define ROTARY_TYPE_OFF 0 @@ -643,9 +656,9 @@ enum Dsm2Variants { }; #ifdef MAVLINK -#define EXTDATA MavlinkData mavlink +#define TELEMETRY_DATA MavlinkData mavlink #else -#define EXTDATA FrSkyData frsky +#define TELEMETRY_DATA FrSkyData frsky #endif #if defined(PCBV4) || defined(PCBARM) @@ -654,15 +667,6 @@ enum Dsm2Variants { #define BeepANACenter uint8_t #endif -#if !defined(PCBARM) -// TODO modification in next EEPROM -#define TEMP_CUSTOM_TELEMETRY_VIEW \ - uint8_t frskyLines[4]; \ - uint16_t frskyLinesXtra -#else -#define TEMP_CUSTOM_TELEMETRY_VIEW -#endif - PACK(typedef struct t_ModelData { char name[10]; // must be first for eeLoadModelName TimerData timers[MAX_TIMERS]; @@ -674,7 +678,7 @@ PACK(typedef struct t_ModelData { uint8_t pulsePol:1; uint8_t extendedLimits:1; uint8_t extendedTrims:1; - uint8_t frskyFas2111:1; + uint8_t spare1:1; int8_t ppmDelay; BeepANACenter beepANACenter; // 1<<0->A1.. 1<<6->A7 MixData mixData[MAX_MIXERS]; @@ -689,23 +693,16 @@ PACK(typedef struct t_ModelData { SwashRingData swashR; PhaseData phaseData[MAX_PHASES]; - EXTDATA; - int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5ms increments uint8_t thrTraceSrc; uint8_t modelId; - TEMP_CUSTOM_TELEMETRY_VIEW; - int8_t servoCenter[NUM_CHNOUT]; - // TODO:temporary place, need to move to frskydata - uint8_t varioSource:3; - uint8_t varioSpeedUpMin:5; // if increment in 0.2m/s = 3.0m/s max - uint8_t varioSpeedDownMin; - uint8_t switchWarningStates; + TELEMETRY_DATA; + ROTARY_ENCODER_ARRAY_EXTRA; }) ModelData;