diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index e6a69007f..1f137f1fe 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -91,7 +91,7 @@ enum CurveType { #define LEN_MODEL_NAME 15 #define LEN_TIMER_NAME 8 #define LEN_FLIGHT_MODE_NAME 10 - #define LEN_BITMAP_NAME 10 // TODO next EEPROM change: we need 14 here as we have to store the file extension + #define LEN_BITMAP_NAME 14 #define LEN_EXPOMIX_NAME 6 #define LEN_CHANNEL_NAME 6 #define LEN_INPUT_NAME 4 @@ -104,7 +104,7 @@ enum CurveType { #define LEN_TIMER_NAME 8 #define LEN_FLIGHT_MODE_NAME 10 #define LEN_BITMAP_NAME 10 - #define LEN_EXPOMIX_NAME 8 // TODO next EEPROM change: 6 seem enough + #define LEN_EXPOMIX_NAME 6 #define LEN_CHANNEL_NAME 6 #define LEN_INPUT_NAME 4 #define LEN_CURVE_NAME 3 @@ -327,7 +327,7 @@ enum TelemetryScreenType { #endif }; #define MAX_TELEMETRY_SCREENS 4 -#define TELEMETRY_SCREEN_TYPE(screenIndex) TelemetryScreenType((g_model.frsky.screensType >> (2*(screenIndex))) & 0x03) +#define TELEMETRY_SCREEN_TYPE(screenIndex) TelemetryScreenType((g_model.screensType >> (2*(screenIndex))) & 0x03) #define IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_GAUGES) #define FAILSAFE_CHANNEL_HOLD 2000 diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 0b650a407..e0abf2026 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -304,7 +304,7 @@ PACK(struct TelemetryScriptData { }); #endif -union FrSkyScreenData { +union TelemetryScreenData { FrSkyBarData bars[4]; FrSkyLineData lines[4]; #if defined(PCBTARANIS) @@ -313,32 +313,14 @@ union FrSkyScreenData { }; #endif -#if defined(COLORLCD) -PACK(struct FrSkyTelemetryData { // TODO EEPROM change, rename to VarioData - uint8_t varioSource:7; - uint8_t varioCenterSilent:1; - int8_t varioCenterMax; - int8_t varioCenterMin; - int8_t varioMin; - int8_t varioMax; - uint8_t rssiSource; +PACK(struct VarioData { + uint8_t source:7; + uint8_t centerSilent:1; + int8_t centerMax; + int8_t centerMin; + int8_t min; + int8_t max; }); -#else -// TODO remove this also on Taranis -PACK(struct FrSkyTelemetryData { - uint8_t voltsSource; - uint8_t altitudeSource; - uint8_t screensType; // 2bits per screen (None/Gauges/Numbers/Script) - FrSkyScreenData screens[MAX_TELEMETRY_SCREENS]; // TODO EEPROM change should not be here anymore - uint8_t varioSource:7; - uint8_t varioCenterSilent:1; - int8_t varioCenterMax; - int8_t varioCenterMin; - int8_t varioMin; - int8_t varioMax; - uint8_t rssiSource; -}); -#endif /* * Telemetry Sensor structure @@ -561,12 +543,11 @@ PACK(struct CustomScreenData { NOBACKUP(CustomScreenData screenData[MAX_CUSTOM_SCREENS]); \ NOBACKUP(Topbar::PersistentData topbarData); \ NOBACKUP(uint8_t view); -#elif defined(PCBTARANIS) - #define CUSTOM_SCREENS_DATA \ - NOBACKUP(uint8_t view); #else - #define CUSTOM_SCREENS_DATA - // TODO other boards could have their custom screens here as well +#define CUSTOM_SCREENS_DATA \ + uint8_t screensType; /* 2bits per screen (None/Gauges/Numbers/Script) */ \ + TelemetryScreenData screens[MAX_TELEMETRY_SCREENS]; \ + uint8_t view; #endif PACK(struct ModelData { @@ -602,7 +583,12 @@ PACK(struct ModelData { GVarData gvars[MAX_GVARS]; - NOBACKUP(FrSkyTelemetryData frsky); + NOBACKUP(VarioData varioData); + NOBACKUP(uint8_t rssiSource); +#if defined(PCBX9) + NOBACKUP(uint8_t voltsSource); + NOBACKUP(uint8_t altitudeSource); +#endif NOBACKUP(RssiAlarmData rssiAlarms); NOBACKUP(uint8_t spare1:6); @@ -837,6 +823,8 @@ static inline void check_struct() /* Difference between Taranis/Horus is LEN_EXPOMIX_NAME */ /* LEN_FUNCTION_NAME is the difference in CustomFunctionData */ + CHKSIZE(VarioData, 5); + #if defined(PCBX7) || defined(PCBXLITE) || defined(PCBX3) CHKSIZE(MixData, 20); CHKSIZE(ExpoData, 17); @@ -848,13 +836,12 @@ static inline void check_struct() CHKSIZE(SwashRingData, 8); CHKSIZE(FrSkyBarData, 6); CHKSIZE(FrSkyLineData, 4); - CHKTYPE(union FrSkyScreenData, 24); - CHKSIZE(FrSkyTelemetryData, 105); + CHKTYPE(union TelemetryScreenData, 24); CHKSIZE(ModelHeader, 12); CHKSIZE(CurveData, 4); #elif defined(PCBTARANIS) - CHKSIZE(MixData, 22); - CHKSIZE(ExpoData, 19); + CHKSIZE(MixData, 20); + CHKSIZE(ExpoData, 17); CHKSIZE(LimitData, 13); CHKSIZE(LogicalSwitchData, 9); CHKSIZE(CustomFunctionData, 11); @@ -863,8 +850,7 @@ static inline void check_struct() CHKSIZE(SwashRingData, 8); CHKSIZE(FrSkyBarData, 6); CHKSIZE(FrSkyLineData, 6); - CHKTYPE(union FrSkyScreenData, 24); - CHKSIZE(FrSkyTelemetryData, 105); + CHKTYPE(union TelemetryScreenData, 24); CHKSIZE(ModelHeader, 24); CHKSIZE(CurveData, 4); #elif defined(PCBHORUS) @@ -875,8 +861,7 @@ static inline void check_struct() CHKSIZE(FlightModeData, 44); CHKSIZE(TimerData, 16); CHKSIZE(SwashRingData, 8); - CHKSIZE(FrSkyTelemetryData, 6); - CHKSIZE(ModelHeader, 27); + CHKSIZE(ModelHeader, 31); CHKSIZE(CurveData, 4); CHKSIZE(CustomScreenData, 610); CHKSIZE(Topbar::PersistentData, 216); @@ -890,7 +875,6 @@ static inline void check_struct() CHKSIZE(SwashRingData, 8); CHKSIZE(FrSkyBarData, 5); CHKSIZE(FrSkyLineData, 2); - CHKSIZE(FrSkyTelemetryData, 89); CHKSIZE(ModelHeader, 12); CHKTYPE(CurveData, 4); #else @@ -899,7 +883,6 @@ static inline void check_struct() CHKSIZE(SwashRingData, 3); CHKSIZE(FrSkyBarData, 3); CHKSIZE(FrSkyLineData, 2); - CHKSIZE(FrSkyTelemetryData, 43); CHKSIZE(ModelHeader, 11); CHKTYPE(CurveData, 1); @@ -923,25 +906,25 @@ static inline void check_struct() #if defined(PCBXLITES) CHKSIZE(RadioData, 860); - CHKSIZE(ModelData, 6055); + CHKSIZE(ModelData, 6117); #elif defined(PCBXLITE) CHKSIZE(RadioData, 852); - CHKSIZE(ModelData, 6055); + CHKSIZE(ModelData, 6117); #elif defined(PCBX7) CHKSIZE(RadioData, 858); - CHKSIZE(ModelData, 6055); + CHKSIZE(ModelData, 6117); #elif defined(PCBX9E) CHKSIZE(RadioData, 960); CHKSIZE(ModelData, 6550); #elif defined(PCBX9D) || defined(PCBX9DP) CHKSIZE(RadioData, 880); - CHKSIZE(ModelData, 6537); + CHKSIZE(ModelData, 6281); #elif defined(PCBSKY9X) CHKSIZE(RadioData, 735); - CHKSIZE(ModelData, 5216); + CHKSIZE(ModelData, 5279); #elif defined(PCBHORUS) CHKSIZE(RadioData, 855); - CHKSIZE(ModelData, 9722); + CHKSIZE(ModelData, 9726); #endif #undef CHKSIZE diff --git a/radio/src/gui/128x64/model_display.cpp b/radio/src/gui/128x64/model_display.cpp index 03cd4c094..3928c44ef 100644 --- a/radio/src/gui/128x64/model_display.cpp +++ b/radio/src/gui/128x64/model_display.cpp @@ -69,13 +69,13 @@ void onTelemetryScriptFileSelectionMenu(const char *result) int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE); if (result == STR_UPDATE_LIST) { - if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.frsky.screens[screenIndex].script.file), NULL)) { + if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { POPUP_WARNING(STR_NO_SCRIPTS_ON_SD); } } else if (result != STR_EXIT) { // The user choosed a file in the list - memcpy(g_model.frsky.screens[screenIndex].script.file, result, sizeof(g_model.frsky.screens[screenIndex].script.file)); + memcpy(g_model.screens[screenIndex].script.file, result, sizeof(g_model.screens[screenIndex].script.file)); storageDirty(EE_MODEL); LUA_LOAD_MODEL_SCRIPTS(); } @@ -125,12 +125,12 @@ void menuModelDisplay(event_t event) TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); if (newScreenType != oldScreenType) { - g_model.frsky.screensType = (g_model.frsky.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex)); - memset(&g_model.frsky.screens[screenIndex], 0, sizeof(g_model.frsky.screens[screenIndex])); + g_model.screensType = (g_model.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex)); + memset(&g_model.screens[screenIndex], 0, sizeof(g_model.screens[screenIndex])); } #if defined(LUA) if (newScreenType == TELEMETRY_SCREEN_TYPE_SCRIPT) { - TelemetryScriptData & scriptData = g_model.frsky.screens[screenIndex].script; + TelemetryScriptData & scriptData = g_model.screens[screenIndex].script; // TODO better function name for --- // TODO function for these lines @@ -141,7 +141,7 @@ void menuModelDisplay(event_t event) if (menuHorizontalPosition==1 && attr && event==EVT_KEY_BREAK(KEY_ENTER) && READ_ONLY_UNLOCKED()) { s_editMode = 0; - if (sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.frsky.screens[screenIndex].script.file), g_model.frsky.screens[screenIndex].script.file)) { + if (sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), g_model.screens[screenIndex].script.file)) { POPUP_MENU_START(onTelemetryScriptFileSelectionMenu); } else { @@ -192,7 +192,7 @@ void menuModelDisplay(event_t event) } if (IS_BARS_SCREEN(screenIndex)) { - FrSkyBarData & bar = g_model.frsky.screens[screenIndex].bars[lineIndex]; + FrSkyBarData & bar = g_model.screens[screenIndex].bars[lineIndex]; drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition==0 ? attr : 0); int16_t barMax, barMin; LcdFlags lf = LEFT; @@ -237,7 +237,7 @@ void menuModelDisplay(event_t event) else { for (int c=0; c0) { diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index 4a529ae5c..29495ff18 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -250,14 +250,14 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_RSSI_SOURCE: { lcdDrawTextAlignedLeft(y, STR_SOURCE); - drawSource(TELEM_COL2, y, g_model.frsky.rssiSource ? MIXSRC_FIRST_TELEM + 3 * (g_model.frsky.rssiSource - 1) : 0, attr); - if (g_model.frsky.rssiSource) { - TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.frsky.rssiSource]; + drawSource(TELEM_COL2, y, g_model.rssiSource ? MIXSRC_FIRST_TELEM + 3 * (g_model.rssiSource - 1) : 0, attr); + if (g_model.rssiSource) { + TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.rssiSource]; lcdDrawText(lcdNextPos, y, " ", attr); drawReceiverName(lcdNextPos, y, (sensor->instance >> 7) & 0x01, (sensor->instance >> 5) & 0x03, attr); } if (attr) { - g_model.frsky.rssiSource = checkIncDec(event, g_model.frsky.rssiSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL | NO_INCDEC_MARKS, isRssiSensorAvailable); + g_model.rssiSource = checkIncDec(event, g_model.rssiSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL | NO_INCDEC_MARKS, isRssiSensorAvailable); } break; } @@ -288,9 +288,9 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_VARIO_SOURCE: lcdDrawTextAlignedLeft(y, STR_SOURCE); - drawSource(TELEM_COL2, y, g_model.frsky.varioSource ? MIXSRC_FIRST_TELEM+3*(g_model.frsky.varioSource-1) : 0, attr); + drawSource(TELEM_COL2, y, g_model.varioData.source ? MIXSRC_FIRST_TELEM+3*(g_model.varioData.source-1) : 0, attr); if (attr) { - g_model.frsky.varioSource = checkIncDec(event, g_model.frsky.varioSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); + g_model.varioData.source = checkIncDec(event, g_model.varioData.source, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); } break; @@ -299,15 +299,15 @@ void menuModelTelemetryFrsky(event_t event) if (attr && CURSOR_ON_LINE()) { lcdDrawSolidFilledRect(TELEM_COL2-1, y-1, LCD_W-TELEM_COL2+1, FH+1); } - lcdDrawNumber(TELEM_COL2, y, -10+g_model.frsky.varioMin, ((CURSOR_ON_LINE() || menuHorizontalPosition==0) ? attr : 0)|LEFT); - lcdDrawNumber(TELEM_COL2+4*FW, y, 10+g_model.frsky.varioMax, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|LEFT); + lcdDrawNumber(TELEM_COL2, y, -10+g_model.varioData.min, ((CURSOR_ON_LINE() || menuHorizontalPosition==0) ? attr : 0)|LEFT); + lcdDrawNumber(TELEM_COL2+4*FW, y, 10+g_model.varioData.max, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|LEFT); if (attr && s_editMode > 0) { switch (menuHorizontalPosition) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.min, -7, 7); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.max, -7, 7); break; } } @@ -315,19 +315,19 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_VARIO_CENTER: lcdDrawTextAlignedLeft(y, STR_CENTER); - lcdDrawNumber(TELEM_COL2, y, -5+g_model.frsky.varioCenterMin, ((CURSOR_ON_LINE() || menuHorizontalPosition==0) ? attr : 0)|PREC1|LEFT); - lcdDrawNumber(TELEM_COL2+4*FW, y, 5+g_model.frsky.varioCenterMax, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|PREC1|LEFT); - lcdDrawTextAtIndex(TELEM_COL2+8*FW, y, STR_VVARIOCENTER, g_model.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0)); + lcdDrawNumber(TELEM_COL2, y, -5+g_model.varioData.centerMin, ((CURSOR_ON_LINE() || menuHorizontalPosition==0) ? attr : 0)|PREC1|LEFT); + lcdDrawNumber(TELEM_COL2+4*FW, y, 5+g_model.varioData.centerMax, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|PREC1|LEFT); + lcdDrawTextAtIndex(TELEM_COL2+8*FW, y, STR_VVARIOCENTER, g_model.varioData.centerSilent, (menuHorizontalPosition==2 ? attr : 0)); if (attr && s_editMode > 0) { switch (menuHorizontalPosition) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min(10, g_model.frsky.varioCenterMax+5)); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMin, -16, 5+min(10, g_model.varioData.centerMax+5)); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max(-10, g_model.frsky.varioCenterMin-5), +15); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMax, -5+max(-10, g_model.varioData.centerMin-5), +15); break; case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1); + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1); break; } } diff --git a/radio/src/gui/128x64/view_telemetry.cpp b/radio/src/gui/128x64/view_telemetry.cpp index f76bc9769..4889efd5a 100644 --- a/radio/src/gui/128x64/view_telemetry.cpp +++ b/radio/src/gui/128x64/view_telemetry.cpp @@ -59,7 +59,7 @@ uint8_t barCoord(int16_t value, int16_t min, int16_t max) } -bool displayGaugesTelemetryScreen(FrSkyScreenData & screen) +bool displayGaugesTelemetryScreen(TelemetryScreenData & screen) { // Custom Screen with gauges uint8_t barHeight = 5; @@ -106,7 +106,7 @@ bool displayGaugesTelemetryScreen(FrSkyScreenData & screen) return barHeight < 13; } -bool displayNumbersTelemetryScreen(FrSkyScreenData & screen) +bool displayNumbersTelemetryScreen(TelemetryScreenData & screen) { // Custom Screen with numbers uint8_t fields_count = 0; @@ -162,7 +162,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen) bool displayCustomTelemetryScreen(uint8_t index) { - FrSkyScreenData & screen = g_model.frsky.screens[index]; + TelemetryScreenData & screen = g_model.screens[index]; if (IS_BARS_SCREEN(s_frsky_view)) { return displayGaugesTelemetryScreen(screen); diff --git a/radio/src/gui/212x64/model_display.cpp b/radio/src/gui/212x64/model_display.cpp index 0f17b6b1b..a7ffa120c 100644 --- a/radio/src/gui/212x64/model_display.cpp +++ b/radio/src/gui/212x64/model_display.cpp @@ -68,13 +68,13 @@ void onTelemetryScriptFileSelectionMenu(const char *result) int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition); if (result == STR_UPDATE_LIST) { - if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.frsky.screens[screenIndex].script.file), NULL)) { + if (!sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), NULL)) { POPUP_WARNING(STR_NO_SCRIPTS_ON_SD); } } else if (result != STR_EXIT) { // The user choosed a file in the list - memcpy(g_model.frsky.screens[screenIndex].script.file, result, sizeof(g_model.frsky.screens[screenIndex].script.file)); + memcpy(g_model.screens[screenIndex].script.file, result, sizeof(g_model.screens[screenIndex].script.file)); storageDirty(EE_MODEL); LUA_LOAD_MODEL_SCRIPTS(); } @@ -103,17 +103,17 @@ void menuModelDisplay(event_t event) case ITEM_DISPLAY_TOP_BAR_VOLTAGE: lcdDrawTextAlignedLeft(y, STR_VOLTAGE); - drawSource(DISPLAY_COL2, y, g_model.frsky.voltsSource ? MIXSRC_FIRST_TELEM+3*(g_model.frsky.voltsSource-1) : 0, attr); + drawSource(DISPLAY_COL2, y, g_model.voltsSource ? MIXSRC_FIRST_TELEM+3*(g_model.voltsSource-1) : 0, attr); if (attr) { - g_model.frsky.voltsSource = checkIncDec(event, g_model.frsky.voltsSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isVoltsSensor); + g_model.voltsSource = checkIncDec(event, g_model.voltsSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isVoltsSensor); } break; case ITEM_DISPLAY_TOP_BAR_ALTITUDE: lcdDrawTextAlignedLeft(y, STR_ALTITUDE); - drawSource(DISPLAY_COL2, y, g_model.frsky.altitudeSource ? MIXSRC_FIRST_TELEM+3*(g_model.frsky.altitudeSource-1) : 0, attr); + drawSource(DISPLAY_COL2, y, g_model.altitudeSource ? MIXSRC_FIRST_TELEM+3*(g_model.altitudeSource-1) : 0, attr); if (attr) { - g_model.frsky.altitudeSource = checkIncDec(event, g_model.frsky.altitudeSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isAltSensor); + g_model.altitudeSource = checkIncDec(event, g_model.altitudeSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isAltSensor); } break; @@ -127,12 +127,12 @@ void menuModelDisplay(event_t event) TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex); TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event); if (newScreenType != oldScreenType) { - g_model.frsky.screensType = (g_model.frsky.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex)); - memset(&g_model.frsky.screens[screenIndex], 0, sizeof(g_model.frsky.screens[screenIndex])); + g_model.screensType = (g_model.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex)); + memset(&g_model.screens[screenIndex], 0, sizeof(g_model.screens[screenIndex])); } #if defined(LUA) if (newScreenType == TELEMETRY_SCREEN_TYPE_SCRIPT) { - TelemetryScriptData & scriptData = g_model.frsky.screens[screenIndex].script; + TelemetryScriptData & scriptData = g_model.screens[screenIndex].script; // TODO better function name for --- // TODO function for these lines @@ -143,7 +143,7 @@ void menuModelDisplay(event_t event) if (menuHorizontalPosition==1 && attr && event==EVT_KEY_BREAK(KEY_ENTER) && READ_ONLY_UNLOCKED()) { s_editMode = 0; - if (sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.frsky.screens[screenIndex].script.file), g_model.frsky.screens[screenIndex].script.file)) { + if (sdListFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.screens[screenIndex].script.file), g_model.screens[screenIndex].script.file)) { POPUP_MENU_START(onTelemetryScriptFileSelectionMenu); } else { @@ -194,7 +194,7 @@ void menuModelDisplay(event_t event) } if (IS_BARS_SCREEN(screenIndex)) { - FrSkyBarData & bar = g_model.frsky.screens[screenIndex].bars[lineIndex]; + FrSkyBarData & bar = g_model.screens[screenIndex].bars[lineIndex]; drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition==0 ? attr : 0); int16_t barMax, barMin; LcdFlags lf = LEFT; @@ -239,7 +239,7 @@ void menuModelDisplay(event_t event) else { for (int c=0; c0) { diff --git a/radio/src/gui/212x64/model_telemetry.cpp b/radio/src/gui/212x64/model_telemetry.cpp index 77fd48fa7..8c86d3060 100644 --- a/radio/src/gui/212x64/model_telemetry.cpp +++ b/radio/src/gui/212x64/model_telemetry.cpp @@ -277,23 +277,23 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_VARIO_SOURCE: lcdDrawTextAlignedLeft(y, STR_SOURCE); - drawSource(TELEM_COL2, y, g_model.frsky.varioSource ? MIXSRC_FIRST_TELEM+3*(g_model.frsky.varioSource-1) : 0, attr); + drawSource(TELEM_COL2, y, g_model.varioData.source ? MIXSRC_FIRST_TELEM+3*(g_model.varioData.source-1) : 0, attr); if (attr) { - g_model.frsky.varioSource = checkIncDec(event, g_model.frsky.varioSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); + g_model.varioData.source = checkIncDec(event, g_model.varioData.source, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); } break; case ITEM_TELEMETRY_VARIO_RANGE: lcdDrawTextAlignedLeft(y, STR_RANGE); - lcdDrawNumber(TELEM_COL2, y, -10+g_model.frsky.varioMin, (menuHorizontalPosition==0 ? attr : 0)|LEFT); - lcdDrawNumber(TELEM_COL2+7*FW, y, 10+g_model.frsky.varioMax, (menuHorizontalPosition==1 ? attr : 0)|LEFT); + lcdDrawNumber(TELEM_COL2, y, -10+g_model.varioData.min, (menuHorizontalPosition==0 ? attr : 0)|LEFT); + lcdDrawNumber(TELEM_COL2+7*FW, y, 10+g_model.varioData.max, (menuHorizontalPosition==1 ? attr : 0)|LEFT); if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.min, -7, 7); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.max, -7, 7); break; } } @@ -301,19 +301,19 @@ void menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_VARIO_CENTER: lcdDrawTextAlignedLeft(y, STR_CENTER); - lcdDrawNumber(TELEM_COL2, y, -5+g_model.frsky.varioCenterMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT); - lcdDrawNumber(TELEM_COL2+7*FW, y, 5+g_model.frsky.varioCenterMax, (menuHorizontalPosition==1 ? attr : 0)|PREC1|LEFT); - lcdDrawTextAtIndex(TELEM_COL3, y, STR_VVARIOCENTER, g_model.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0)); + lcdDrawNumber(TELEM_COL2, y, -5+g_model.varioData.centerMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT); + lcdDrawNumber(TELEM_COL2+7*FW, y, 5+g_model.varioData.centerMax, (menuHorizontalPosition==1 ? attr : 0)|PREC1|LEFT); + lcdDrawTextAtIndex(TELEM_COL3, y, STR_VVARIOCENTER, g_model.varioData.centerSilent, (menuHorizontalPosition==2 ? attr : 0)); if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min(10, g_model.frsky.varioCenterMax+5)); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMin, -16, 5+min(10, g_model.varioData.centerMax+5)); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max(-10, g_model.frsky.varioCenterMin-5), +15); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMax, -5+max(-10, g_model.varioData.centerMin-5), +15); break; case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1); + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1); break; } } diff --git a/radio/src/gui/212x64/radio_diaganas.cpp b/radio/src/gui/212x64/radio_diaganas.cpp index 39f656b81..3827d959a 100644 --- a/radio/src/gui/212x64/radio_diaganas.cpp +++ b/radio/src/gui/212x64/radio_diaganas.cpp @@ -42,7 +42,7 @@ void menuRadioDiagAnalogs(event_t event) // RAS if((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) { lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+6*FH, "RAS"); - lcdDrawNumber(10*FW-1, MENU_HEADER_HEIGHT+6*FH, telemetryData.swr.value, RIGHT); + lcdDrawNumber(10*FW-1, MENU_HEADER_HEIGHT+6*FH, telemetryData.swrInternal.value, RIGHT); lcdDrawText(LCD_W/2, MENU_HEADER_HEIGHT+6*FH, "XJTVER"); lcdDrawNumber(LCD_W/2 + 10*FW-1, MENU_HEADER_HEIGHT+6*FH, telemetryData.xjtVersion, RIGHT); diff --git a/radio/src/gui/212x64/view_main.cpp b/radio/src/gui/212x64/view_main.cpp index f3b129085..99285ceb3 100644 --- a/radio/src/gui/212x64/view_main.cpp +++ b/radio/src/gui/212x64/view_main.cpp @@ -222,8 +222,8 @@ void displayTopBar() /* Rx voltage */ altitude_icon_x = batt_icon_x+7*FW+3; - if (g_model.frsky.voltsSource) { - uint8_t item = g_model.frsky.voltsSource-1; + if (g_model.voltsSource) { + uint8_t item = g_model.voltsSource-1; if (item < MAX_TELEMETRY_SENSORS) { TelemetryItem & voltsItem = telemetryItems[item]; if (voltsItem.isAvailable()) { @@ -234,8 +234,8 @@ void displayTopBar() } /* Altitude */ - if (g_model.frsky.altitudeSource) { - uint8_t item = g_model.frsky.altitudeSource-1; + if (g_model.altitudeSource) { + uint8_t item = g_model.altitudeSource-1; if (item < MAX_TELEMETRY_SENSORS) { TelemetryItem & altitudeItem = telemetryItems[item]; if (altitudeItem.isAvailable()) { diff --git a/radio/src/gui/212x64/view_telemetry.cpp b/radio/src/gui/212x64/view_telemetry.cpp index f0b862466..2d6b759c6 100644 --- a/radio/src/gui/212x64/view_telemetry.cpp +++ b/radio/src/gui/212x64/view_telemetry.cpp @@ -54,7 +54,7 @@ int barCoord(int value, int min, int max) return ((BAR_WIDTH-1) * (value - min)) / (max - min); } -void displayGaugesTelemetryScreen(FrSkyScreenData & screen) +void displayGaugesTelemetryScreen(TelemetryScreenData & screen) { // Custom Screen with gauges int barHeight = 5; @@ -94,7 +94,7 @@ void displayGaugesTelemetryScreen(FrSkyScreenData & screen) displayRssiLine(); } -bool displayNumbersTelemetryScreen(FrSkyScreenData & screen) +bool displayNumbersTelemetryScreen(TelemetryScreenData & screen) { // Custom Screen with numbers const coord_t pos[] = {0, 71, 143, 214}; @@ -159,7 +159,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen) void displayCustomTelemetryScreen(uint8_t index) { - FrSkyScreenData & screen = g_model.frsky.screens[index]; + TelemetryScreenData & screen = g_model.screens[index]; if (IS_BARS_SCREEN(s_frsky_view)) { return displayGaugesTelemetryScreen(screen); diff --git a/radio/src/gui/480x272/model_telemetry.cpp b/radio/src/gui/480x272/model_telemetry.cpp index 235484268..539061244 100644 --- a/radio/src/gui/480x272/model_telemetry.cpp +++ b/radio/src/gui/480x272/model_telemetry.cpp @@ -310,23 +310,23 @@ bool menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_VARIO_SOURCE: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_SOURCE); - drawSource(TELEM_COL2, y, g_model.frsky.varioSource ? MIXSRC_FIRST_TELEM+3*(g_model.frsky.varioSource-1) : 0, attr); + drawSource(TELEM_COL2, y, g_model.varioData.source ? MIXSRC_FIRST_TELEM+3*(g_model.varioData.source-1) : 0, attr); if (attr) { - g_model.frsky.varioSource = checkIncDec(event, g_model.frsky.varioSource, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); + g_model.varioData.source = checkIncDec(event, g_model.varioData.source, 0, MAX_TELEMETRY_SENSORS, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); } break; case ITEM_TELEMETRY_VARIO_RANGE: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RANGE); - lcdDrawNumber(TELEM_COL2, y, -10+g_model.frsky.varioMin, (menuHorizontalPosition==0 ? attr : 0)|LEFT); - lcdDrawNumber(TELEM_COL3, y, 10+g_model.frsky.varioMax, (menuHorizontalPosition==1 ? attr : 0)|LEFT); + lcdDrawNumber(TELEM_COL2, y, -10+g_model.varioData.min, (menuHorizontalPosition==0 ? attr : 0)|LEFT); + lcdDrawNumber(TELEM_COL3, y, 10+g_model.varioData.max, (menuHorizontalPosition==1 ? attr : 0)|LEFT); if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.min, -7, 7); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.max, -7, 7); break; } } @@ -334,19 +334,19 @@ bool menuModelTelemetryFrsky(event_t event) case ITEM_TELEMETRY_VARIO_CENTER: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_CENTER); - lcdDrawNumber(TELEM_COL2, y, -5+g_model.frsky.varioCenterMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT); - lcdDrawNumber(TELEM_COL3, y, 5+g_model.frsky.varioCenterMax, (menuHorizontalPosition==1 ? attr : 0)|PREC1|LEFT); - lcdDrawTextAtIndex(TELEM_COL4, y, STR_VVARIOCENTER, g_model.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0)); + lcdDrawNumber(TELEM_COL2, y, -5+g_model.varioData.centerMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT); + lcdDrawNumber(TELEM_COL3, y, 5+g_model.varioData.centerMax, (menuHorizontalPosition==1 ? attr : 0)|PREC1|LEFT); + lcdDrawTextAtIndex(TELEM_COL4, y, STR_VVARIOCENTER, g_model.varioData.centerSilent, (menuHorizontalPosition==2 ? attr : 0)); if (attr && s_editMode>0) { switch (menuHorizontalPosition) { case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min(10, g_model.frsky.varioCenterMax+5)); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMin, -16, 5+min(10, g_model.varioData.centerMax+5)); break; case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max(-10, g_model.frsky.varioCenterMin-5), +15); + CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMax, -5+max(-10, g_model.varioData.centerMin-5), +15); break; case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1); + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1); break; } } diff --git a/radio/src/gui/480x272/view_statistics.cpp b/radio/src/gui/480x272/view_statistics.cpp index 77631254a..82c1ba739 100644 --- a/radio/src/gui/480x272/view_statistics.cpp +++ b/radio/src/gui/480x272/view_statistics.cpp @@ -180,7 +180,7 @@ bool menuStatsAnalogs(event_t event) // RAS if ((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) { lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP+7*FH, "RAS"); - lcdDrawNumber(MENUS_MARGIN_LEFT+100, MENU_CONTENT_TOP+7*FH, telemetryData.swr.value); + lcdDrawNumber(MENUS_MARGIN_LEFT+100, MENU_CONTENT_TOP+7*FH, telemetryData.swrInternal.value); lcdDrawText(MENUS_MARGIN_LEFT + LCD_W/2, MENU_CONTENT_TOP+7*FH, "XJTVER"); lcdDrawNumber(LCD_W/2 + MENUS_MARGIN_LEFT+100, MENU_CONTENT_TOP+7*FH, telemetryData.xjtVersion); } diff --git a/radio/src/lua/interface.cpp b/radio/src/lua/interface.cpp index adb212ba7..5468bd44a 100644 --- a/radio/src/lua/interface.cpp +++ b/radio/src/lua/interface.cpp @@ -667,7 +667,7 @@ bool luaLoadTelemetryScript(uint8_t index) TelemetryScreenType screenType = TELEMETRY_SCREEN_TYPE(index); if (screenType == TELEMETRY_SCREEN_TYPE_SCRIPT) { - TelemetryScriptData & script = g_model.frsky.screens[index].script; + TelemetryScriptData & script = g_model.screens[index].script; if (ZEXIST(script.file)) { if (luaScriptsCount < MAX_SCRIPTS) { ScriptInternalData & sid = scriptInternalData[luaScriptsCount++]; @@ -943,7 +943,7 @@ bool luaDoOneRunPermanentScript(event_t evt, int i, uint32_t scriptType) else { #if defined(PCBTARANIS) #if defined(SIMU) || defined(DEBUG) - TelemetryScriptData & script = g_model.frsky.screens[sid.reference-SCRIPT_TELEMETRY_FIRST].script; + TelemetryScriptData & script = g_model.screens[sid.reference-SCRIPT_TELEMETRY_FIRST].script; filename = script.file; #endif if ((scriptType & RUN_TELEM_FG_SCRIPT) && (menuHandlers[0]==menuViewTelemetryFrsky && sid.reference==SCRIPT_TELEMETRY_FIRST+s_frsky_view)) { diff --git a/radio/src/storage/conversions/datastructs_218.h b/radio/src/storage/conversions/datastructs_218.h index eb48e2a06..dfa779fb5 100644 --- a/radio/src/storage/conversions/datastructs_218.h +++ b/radio/src/storage/conversions/datastructs_218.h @@ -340,7 +340,7 @@ PACK(typedef struct { GVarData_v218 gvars[MAX_GVARS_218]; - FrSkyTelemetryData frsky; + VarioData frsky; RssiAlarmData rssiAlarms; MODELDATA_EXTRA_218 diff --git a/radio/src/storage/datacopy.cpp b/radio/src/storage/datacopy.cpp index 99caa414a..515779b90 100644 --- a/radio/src/storage/datacopy.cpp +++ b/radio/src/storage/datacopy.cpp @@ -165,7 +165,7 @@ void copyRssiAlarmData(A * dest, B * src) } template -void copyFrSkyTelemetryData(A * dest, B * src) +void copyVarioData(A * dest, B * src) { dest->varioSource = src->varioSource; dest->varioCenterSilent = src->varioCenterSilent; diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index ae4a8c0d1..da05316a5 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -168,8 +168,8 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe if (dataId == RSSI_ID) { telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected data = SPORT_DATA_U8(packet); - if (g_model.frsky.rssiSource) { - TelemetrySensor * sensor = & g_model.telemetrySensors[g_model.frsky.rssiSource]; + if (g_model.rssiSource) { + TelemetrySensor * sensor = & g_model.telemetrySensors[g_model.rssiSource]; if (sensor->instance == instance) { telemetryData.rssi.set(data); } diff --git a/radio/src/vario.cpp b/radio/src/vario.cpp index 149d6cda3..d99a8ee09 100644 --- a/radio/src/vario.cpp +++ b/radio/src/vario.cpp @@ -29,17 +29,17 @@ void varioWakeup() uint8_t varioFlags; int verticalSpeed = 0; - if (g_model.frsky.varioSource) { - uint8_t item = g_model.frsky.varioSource-1; + if (g_model.varioData.source) { + uint8_t item = g_model.varioData.source-1; if (item < MAX_TELEMETRY_SENSORS) { verticalSpeed = telemetryItems[item].value * g_model.telemetrySensors[item].getPrecMultiplier(); } } - int varioCenterMin = (int)g_model.frsky.varioCenterMin * 10 - 50; - int varioCenterMax = (int)g_model.frsky.varioCenterMax * 10 + 50; - int varioMax = (10+(int)g_model.frsky.varioMax) * 100; - int varioMin = (-10+(int)g_model.frsky.varioMin) * 100; + int varioCenterMin = (int)g_model.varioData.centerMin * 10 - 50; + int varioCenterMax = (int)g_model.varioData.centerMax * 10 + 50; + int varioMax = (10+(int)g_model.varioData.max) * 100; + int varioMin = (-10+(int)g_model.varioData.min) * 100; if (verticalSpeed > varioMax) verticalSpeed = varioMax; @@ -51,7 +51,7 @@ void varioWakeup() varioDuration = 80; // continuous beep: we will enter again here before the tone ends varioFlags = PLAY_BACKGROUND|PLAY_NOW; } - else if (verticalSpeed >= varioCenterMax || !g_model.frsky.varioCenterSilent) { + else if (verticalSpeed >= varioCenterMax || !g_model.varioData.centerSilent) { varioFreq = VARIO_FREQUENCY_ZERO + (g_eeGeneral.varioPitch*10) + (((VARIO_FREQUENCY_RANGE+(g_eeGeneral.varioRange*10)) * (verticalSpeed-varioCenterMin)) / varioMax); int varioPeriod = VARIO_REPEAT_MAX + ((VARIO_REPEAT_ZERO+(g_eeGeneral.varioRepeat*10)-VARIO_REPEAT_MAX) * (varioMax-verticalSpeed) * (varioMax-verticalSpeed)) / ((varioMax-varioCenterMin) * (varioMax-varioCenterMin)); if (verticalSpeed >= varioCenterMax || varioCenterMin == varioCenterMax)