A few new changes in EEPROM which were in the TODO list

This commit is contained in:
bsongis
2012-07-27 12:26:39 +00:00
parent 66ea773f5f
commit 2f033ff455
3 changed files with 48 additions and 49 deletions
+6 -6
View File
@@ -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
}
+12 -10
View File
@@ -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
}
}
+30 -33
View File
@@ -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;