mirror of
https://github.com/opentx/opentx.git
synced 2025-07-19 22:35:12 +03:00
Compilation fixes
This commit is contained in:
parent
84e24a4189
commit
c7bd0d3ea1
17 changed files with 119 additions and 136 deletions
|
@ -91,7 +91,7 @@ enum CurveType {
|
||||||
#define LEN_MODEL_NAME 15
|
#define LEN_MODEL_NAME 15
|
||||||
#define LEN_TIMER_NAME 8
|
#define LEN_TIMER_NAME 8
|
||||||
#define LEN_FLIGHT_MODE_NAME 10
|
#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_EXPOMIX_NAME 6
|
||||||
#define LEN_CHANNEL_NAME 6
|
#define LEN_CHANNEL_NAME 6
|
||||||
#define LEN_INPUT_NAME 4
|
#define LEN_INPUT_NAME 4
|
||||||
|
@ -104,7 +104,7 @@ enum CurveType {
|
||||||
#define LEN_TIMER_NAME 8
|
#define LEN_TIMER_NAME 8
|
||||||
#define LEN_FLIGHT_MODE_NAME 10
|
#define LEN_FLIGHT_MODE_NAME 10
|
||||||
#define LEN_BITMAP_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_CHANNEL_NAME 6
|
||||||
#define LEN_INPUT_NAME 4
|
#define LEN_INPUT_NAME 4
|
||||||
#define LEN_CURVE_NAME 3
|
#define LEN_CURVE_NAME 3
|
||||||
|
@ -327,7 +327,7 @@ enum TelemetryScreenType {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
#define MAX_TELEMETRY_SCREENS 4
|
#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 IS_BARS_SCREEN(screenIndex) (TELEMETRY_SCREEN_TYPE(screenIndex) == TELEMETRY_SCREEN_TYPE_GAUGES)
|
||||||
|
|
||||||
#define FAILSAFE_CHANNEL_HOLD 2000
|
#define FAILSAFE_CHANNEL_HOLD 2000
|
||||||
|
|
|
@ -304,7 +304,7 @@ PACK(struct TelemetryScriptData {
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
union FrSkyScreenData {
|
union TelemetryScreenData {
|
||||||
FrSkyBarData bars[4];
|
FrSkyBarData bars[4];
|
||||||
FrSkyLineData lines[4];
|
FrSkyLineData lines[4];
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS)
|
||||||
|
@ -313,32 +313,14 @@ union FrSkyScreenData {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(COLORLCD)
|
PACK(struct VarioData {
|
||||||
PACK(struct FrSkyTelemetryData { // TODO EEPROM change, rename to VarioData
|
uint8_t source:7;
|
||||||
uint8_t varioSource:7;
|
uint8_t centerSilent:1;
|
||||||
uint8_t varioCenterSilent:1;
|
int8_t centerMax;
|
||||||
int8_t varioCenterMax;
|
int8_t centerMin;
|
||||||
int8_t varioCenterMin;
|
int8_t min;
|
||||||
int8_t varioMin;
|
int8_t max;
|
||||||
int8_t varioMax;
|
|
||||||
uint8_t rssiSource;
|
|
||||||
});
|
});
|
||||||
#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
|
* Telemetry Sensor structure
|
||||||
|
@ -561,12 +543,11 @@ PACK(struct CustomScreenData {
|
||||||
NOBACKUP(CustomScreenData screenData[MAX_CUSTOM_SCREENS]); \
|
NOBACKUP(CustomScreenData screenData[MAX_CUSTOM_SCREENS]); \
|
||||||
NOBACKUP(Topbar::PersistentData topbarData); \
|
NOBACKUP(Topbar::PersistentData topbarData); \
|
||||||
NOBACKUP(uint8_t view);
|
NOBACKUP(uint8_t view);
|
||||||
#elif defined(PCBTARANIS)
|
|
||||||
#define CUSTOM_SCREENS_DATA \
|
|
||||||
NOBACKUP(uint8_t view);
|
|
||||||
#else
|
#else
|
||||||
#define CUSTOM_SCREENS_DATA
|
#define CUSTOM_SCREENS_DATA \
|
||||||
// TODO other boards could have their custom screens here as well
|
uint8_t screensType; /* 2bits per screen (None/Gauges/Numbers/Script) */ \
|
||||||
|
TelemetryScreenData screens[MAX_TELEMETRY_SCREENS]; \
|
||||||
|
uint8_t view;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PACK(struct ModelData {
|
PACK(struct ModelData {
|
||||||
|
@ -602,7 +583,12 @@ PACK(struct ModelData {
|
||||||
|
|
||||||
GVarData gvars[MAX_GVARS];
|
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(RssiAlarmData rssiAlarms);
|
||||||
|
|
||||||
NOBACKUP(uint8_t spare1:6);
|
NOBACKUP(uint8_t spare1:6);
|
||||||
|
@ -837,6 +823,8 @@ static inline void check_struct()
|
||||||
/* Difference between Taranis/Horus is LEN_EXPOMIX_NAME */
|
/* Difference between Taranis/Horus is LEN_EXPOMIX_NAME */
|
||||||
/* LEN_FUNCTION_NAME is the difference in CustomFunctionData */
|
/* LEN_FUNCTION_NAME is the difference in CustomFunctionData */
|
||||||
|
|
||||||
|
CHKSIZE(VarioData, 5);
|
||||||
|
|
||||||
#if defined(PCBX7) || defined(PCBXLITE) || defined(PCBX3)
|
#if defined(PCBX7) || defined(PCBXLITE) || defined(PCBX3)
|
||||||
CHKSIZE(MixData, 20);
|
CHKSIZE(MixData, 20);
|
||||||
CHKSIZE(ExpoData, 17);
|
CHKSIZE(ExpoData, 17);
|
||||||
|
@ -848,13 +836,12 @@ static inline void check_struct()
|
||||||
CHKSIZE(SwashRingData, 8);
|
CHKSIZE(SwashRingData, 8);
|
||||||
CHKSIZE(FrSkyBarData, 6);
|
CHKSIZE(FrSkyBarData, 6);
|
||||||
CHKSIZE(FrSkyLineData, 4);
|
CHKSIZE(FrSkyLineData, 4);
|
||||||
CHKTYPE(union FrSkyScreenData, 24);
|
CHKTYPE(union TelemetryScreenData, 24);
|
||||||
CHKSIZE(FrSkyTelemetryData, 105);
|
|
||||||
CHKSIZE(ModelHeader, 12);
|
CHKSIZE(ModelHeader, 12);
|
||||||
CHKSIZE(CurveData, 4);
|
CHKSIZE(CurveData, 4);
|
||||||
#elif defined(PCBTARANIS)
|
#elif defined(PCBTARANIS)
|
||||||
CHKSIZE(MixData, 22);
|
CHKSIZE(MixData, 20);
|
||||||
CHKSIZE(ExpoData, 19);
|
CHKSIZE(ExpoData, 17);
|
||||||
CHKSIZE(LimitData, 13);
|
CHKSIZE(LimitData, 13);
|
||||||
CHKSIZE(LogicalSwitchData, 9);
|
CHKSIZE(LogicalSwitchData, 9);
|
||||||
CHKSIZE(CustomFunctionData, 11);
|
CHKSIZE(CustomFunctionData, 11);
|
||||||
|
@ -863,8 +850,7 @@ static inline void check_struct()
|
||||||
CHKSIZE(SwashRingData, 8);
|
CHKSIZE(SwashRingData, 8);
|
||||||
CHKSIZE(FrSkyBarData, 6);
|
CHKSIZE(FrSkyBarData, 6);
|
||||||
CHKSIZE(FrSkyLineData, 6);
|
CHKSIZE(FrSkyLineData, 6);
|
||||||
CHKTYPE(union FrSkyScreenData, 24);
|
CHKTYPE(union TelemetryScreenData, 24);
|
||||||
CHKSIZE(FrSkyTelemetryData, 105);
|
|
||||||
CHKSIZE(ModelHeader, 24);
|
CHKSIZE(ModelHeader, 24);
|
||||||
CHKSIZE(CurveData, 4);
|
CHKSIZE(CurveData, 4);
|
||||||
#elif defined(PCBHORUS)
|
#elif defined(PCBHORUS)
|
||||||
|
@ -875,8 +861,7 @@ static inline void check_struct()
|
||||||
CHKSIZE(FlightModeData, 44);
|
CHKSIZE(FlightModeData, 44);
|
||||||
CHKSIZE(TimerData, 16);
|
CHKSIZE(TimerData, 16);
|
||||||
CHKSIZE(SwashRingData, 8);
|
CHKSIZE(SwashRingData, 8);
|
||||||
CHKSIZE(FrSkyTelemetryData, 6);
|
CHKSIZE(ModelHeader, 31);
|
||||||
CHKSIZE(ModelHeader, 27);
|
|
||||||
CHKSIZE(CurveData, 4);
|
CHKSIZE(CurveData, 4);
|
||||||
CHKSIZE(CustomScreenData, 610);
|
CHKSIZE(CustomScreenData, 610);
|
||||||
CHKSIZE(Topbar::PersistentData, 216);
|
CHKSIZE(Topbar::PersistentData, 216);
|
||||||
|
@ -890,7 +875,6 @@ static inline void check_struct()
|
||||||
CHKSIZE(SwashRingData, 8);
|
CHKSIZE(SwashRingData, 8);
|
||||||
CHKSIZE(FrSkyBarData, 5);
|
CHKSIZE(FrSkyBarData, 5);
|
||||||
CHKSIZE(FrSkyLineData, 2);
|
CHKSIZE(FrSkyLineData, 2);
|
||||||
CHKSIZE(FrSkyTelemetryData, 89);
|
|
||||||
CHKSIZE(ModelHeader, 12);
|
CHKSIZE(ModelHeader, 12);
|
||||||
CHKTYPE(CurveData, 4);
|
CHKTYPE(CurveData, 4);
|
||||||
#else
|
#else
|
||||||
|
@ -899,7 +883,6 @@ static inline void check_struct()
|
||||||
CHKSIZE(SwashRingData, 3);
|
CHKSIZE(SwashRingData, 3);
|
||||||
CHKSIZE(FrSkyBarData, 3);
|
CHKSIZE(FrSkyBarData, 3);
|
||||||
CHKSIZE(FrSkyLineData, 2);
|
CHKSIZE(FrSkyLineData, 2);
|
||||||
CHKSIZE(FrSkyTelemetryData, 43);
|
|
||||||
CHKSIZE(ModelHeader, 11);
|
CHKSIZE(ModelHeader, 11);
|
||||||
CHKTYPE(CurveData, 1);
|
CHKTYPE(CurveData, 1);
|
||||||
|
|
||||||
|
@ -923,25 +906,25 @@ static inline void check_struct()
|
||||||
|
|
||||||
#if defined(PCBXLITES)
|
#if defined(PCBXLITES)
|
||||||
CHKSIZE(RadioData, 860);
|
CHKSIZE(RadioData, 860);
|
||||||
CHKSIZE(ModelData, 6055);
|
CHKSIZE(ModelData, 6117);
|
||||||
#elif defined(PCBXLITE)
|
#elif defined(PCBXLITE)
|
||||||
CHKSIZE(RadioData, 852);
|
CHKSIZE(RadioData, 852);
|
||||||
CHKSIZE(ModelData, 6055);
|
CHKSIZE(ModelData, 6117);
|
||||||
#elif defined(PCBX7)
|
#elif defined(PCBX7)
|
||||||
CHKSIZE(RadioData, 858);
|
CHKSIZE(RadioData, 858);
|
||||||
CHKSIZE(ModelData, 6055);
|
CHKSIZE(ModelData, 6117);
|
||||||
#elif defined(PCBX9E)
|
#elif defined(PCBX9E)
|
||||||
CHKSIZE(RadioData, 960);
|
CHKSIZE(RadioData, 960);
|
||||||
CHKSIZE(ModelData, 6550);
|
CHKSIZE(ModelData, 6550);
|
||||||
#elif defined(PCBX9D) || defined(PCBX9DP)
|
#elif defined(PCBX9D) || defined(PCBX9DP)
|
||||||
CHKSIZE(RadioData, 880);
|
CHKSIZE(RadioData, 880);
|
||||||
CHKSIZE(ModelData, 6537);
|
CHKSIZE(ModelData, 6281);
|
||||||
#elif defined(PCBSKY9X)
|
#elif defined(PCBSKY9X)
|
||||||
CHKSIZE(RadioData, 735);
|
CHKSIZE(RadioData, 735);
|
||||||
CHKSIZE(ModelData, 5216);
|
CHKSIZE(ModelData, 5279);
|
||||||
#elif defined(PCBHORUS)
|
#elif defined(PCBHORUS)
|
||||||
CHKSIZE(RadioData, 855);
|
CHKSIZE(RadioData, 855);
|
||||||
CHKSIZE(ModelData, 9722);
|
CHKSIZE(ModelData, 9726);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef CHKSIZE
|
#undef CHKSIZE
|
||||||
|
|
|
@ -69,13 +69,13 @@ void onTelemetryScriptFileSelectionMenu(const char *result)
|
||||||
int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE);
|
int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition - HEADER_LINE);
|
||||||
|
|
||||||
if (result == STR_UPDATE_LIST) {
|
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);
|
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (result != STR_EXIT) {
|
else if (result != STR_EXIT) {
|
||||||
// The user choosed a file in the list
|
// 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);
|
storageDirty(EE_MODEL);
|
||||||
LUA_LOAD_MODEL_SCRIPTS();
|
LUA_LOAD_MODEL_SCRIPTS();
|
||||||
}
|
}
|
||||||
|
@ -125,12 +125,12 @@ void menuModelDisplay(event_t event)
|
||||||
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
|
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);
|
TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
|
||||||
if (newScreenType != oldScreenType) {
|
if (newScreenType != oldScreenType) {
|
||||||
g_model.frsky.screensType = (g_model.frsky.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex));
|
g_model.screensType = (g_model.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex));
|
||||||
memset(&g_model.frsky.screens[screenIndex], 0, sizeof(g_model.frsky.screens[screenIndex]));
|
memset(&g_model.screens[screenIndex], 0, sizeof(g_model.screens[screenIndex]));
|
||||||
}
|
}
|
||||||
#if defined(LUA)
|
#if defined(LUA)
|
||||||
if (newScreenType == TELEMETRY_SCREEN_TYPE_SCRIPT) {
|
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 better function name for ---
|
||||||
// TODO function for these lines
|
// 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()) {
|
if (menuHorizontalPosition==1 && attr && event==EVT_KEY_BREAK(KEY_ENTER) && READ_ONLY_UNLOCKED()) {
|
||||||
s_editMode = 0;
|
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);
|
POPUP_MENU_START(onTelemetryScriptFileSelectionMenu);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -192,7 +192,7 @@ void menuModelDisplay(event_t event)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_BARS_SCREEN(screenIndex)) {
|
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);
|
drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition==0 ? attr : 0);
|
||||||
int16_t barMax, barMin;
|
int16_t barMax, barMin;
|
||||||
LcdFlags lf = LEFT;
|
LcdFlags lf = LEFT;
|
||||||
|
@ -237,7 +237,7 @@ void menuModelDisplay(event_t event)
|
||||||
else {
|
else {
|
||||||
for (int c=0; c<NUM_LINE_ITEMS; c++) {
|
for (int c=0; c<NUM_LINE_ITEMS; c++) {
|
||||||
LcdFlags cellAttr = (menuHorizontalPosition==c ? attr : 0);
|
LcdFlags cellAttr = (menuHorizontalPosition==c ? attr : 0);
|
||||||
source_t & value = g_model.frsky.screens[screenIndex].lines[lineIndex].sources[c];
|
source_t & value = g_model.screens[screenIndex].lines[lineIndex].sources[c];
|
||||||
const coord_t pos[] = {DISPLAY_COL1, DISPLAY_COL2, DISPLAY_COL3};
|
const coord_t pos[] = {DISPLAY_COL1, DISPLAY_COL2, DISPLAY_COL3};
|
||||||
drawSource(pos[c], y, value, cellAttr);
|
drawSource(pos[c], y, value, cellAttr);
|
||||||
if (cellAttr && s_editMode>0) {
|
if (cellAttr && s_editMode>0) {
|
||||||
|
|
|
@ -250,14 +250,14 @@ void menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_RSSI_SOURCE: {
|
case ITEM_TELEMETRY_RSSI_SOURCE: {
|
||||||
lcdDrawTextAlignedLeft(y, STR_SOURCE);
|
lcdDrawTextAlignedLeft(y, STR_SOURCE);
|
||||||
drawSource(TELEM_COL2, y, g_model.frsky.rssiSource ? MIXSRC_FIRST_TELEM + 3 * (g_model.frsky.rssiSource - 1) : 0, attr);
|
drawSource(TELEM_COL2, y, g_model.rssiSource ? MIXSRC_FIRST_TELEM + 3 * (g_model.rssiSource - 1) : 0, attr);
|
||||||
if (g_model.frsky.rssiSource) {
|
if (g_model.rssiSource) {
|
||||||
TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.frsky.rssiSource];
|
TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.rssiSource];
|
||||||
lcdDrawText(lcdNextPos, y, " ", attr);
|
lcdDrawText(lcdNextPos, y, " ", attr);
|
||||||
drawReceiverName(lcdNextPos, y, (sensor->instance >> 7) & 0x01, (sensor->instance >> 5) & 0x03, attr);
|
drawReceiverName(lcdNextPos, y, (sensor->instance >> 7) & 0x01, (sensor->instance >> 5) & 0x03, attr);
|
||||||
}
|
}
|
||||||
if (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;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -288,9 +288,9 @@ void menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_SOURCE:
|
case ITEM_TELEMETRY_VARIO_SOURCE:
|
||||||
lcdDrawTextAlignedLeft(y, STR_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) {
|
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;
|
break;
|
||||||
|
|
||||||
|
@ -299,15 +299,15 @@ void menuModelTelemetryFrsky(event_t event)
|
||||||
if (attr && CURSOR_ON_LINE()) {
|
if (attr && CURSOR_ON_LINE()) {
|
||||||
lcdDrawSolidFilledRect(TELEM_COL2-1, y-1, LCD_W-TELEM_COL2+1, FH+1);
|
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, y, -10+g_model.varioData.min, ((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+4*FW, y, 10+g_model.varioData.max, ((CURSOR_ON_LINE() || menuHorizontalPosition==1) ? attr : 0)|LEFT);
|
||||||
if (attr && s_editMode > 0) {
|
if (attr && s_editMode > 0) {
|
||||||
switch (menuHorizontalPosition) {
|
switch (menuHorizontalPosition) {
|
||||||
case 0:
|
case 0:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.min, -7, 7);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.max, -7, 7);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -315,19 +315,19 @@ void menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_CENTER:
|
case ITEM_TELEMETRY_VARIO_CENTER:
|
||||||
lcdDrawTextAlignedLeft(y, STR_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, y, -5+g_model.varioData.centerMin, ((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);
|
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.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0));
|
lcdDrawTextAtIndex(TELEM_COL2+8*FW, y, STR_VVARIOCENTER, g_model.varioData.centerSilent, (menuHorizontalPosition==2 ? attr : 0));
|
||||||
if (attr && s_editMode > 0) {
|
if (attr && s_editMode > 0) {
|
||||||
switch (menuHorizontalPosition) {
|
switch (menuHorizontalPosition) {
|
||||||
case 0:
|
case 0:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min<int8_t>(10, g_model.frsky.varioCenterMax+5));
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMin, -16, 5+min<int8_t>(10, g_model.varioData.centerMax+5));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max<int8_t>(-10, g_model.frsky.varioCenterMin-5), +15);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMax, -5+max<int8_t>(-10, g_model.varioData.centerMin-5), +15);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1);
|
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
// Custom Screen with gauges
|
||||||
uint8_t barHeight = 5;
|
uint8_t barHeight = 5;
|
||||||
|
@ -106,7 +106,7 @@ bool displayGaugesTelemetryScreen(FrSkyScreenData & screen)
|
||||||
return barHeight < 13;
|
return barHeight < 13;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool displayNumbersTelemetryScreen(FrSkyScreenData & screen)
|
bool displayNumbersTelemetryScreen(TelemetryScreenData & screen)
|
||||||
{
|
{
|
||||||
// Custom Screen with numbers
|
// Custom Screen with numbers
|
||||||
uint8_t fields_count = 0;
|
uint8_t fields_count = 0;
|
||||||
|
@ -162,7 +162,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen)
|
||||||
|
|
||||||
bool displayCustomTelemetryScreen(uint8_t index)
|
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)) {
|
if (IS_BARS_SCREEN(s_frsky_view)) {
|
||||||
return displayGaugesTelemetryScreen(screen);
|
return displayGaugesTelemetryScreen(screen);
|
||||||
|
|
|
@ -68,13 +68,13 @@ void onTelemetryScriptFileSelectionMenu(const char *result)
|
||||||
int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition);
|
int screenIndex = TELEMETRY_CURRENT_SCREEN(menuVerticalPosition);
|
||||||
|
|
||||||
if (result == STR_UPDATE_LIST) {
|
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);
|
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (result != STR_EXIT) {
|
else if (result != STR_EXIT) {
|
||||||
// The user choosed a file in the list
|
// 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);
|
storageDirty(EE_MODEL);
|
||||||
LUA_LOAD_MODEL_SCRIPTS();
|
LUA_LOAD_MODEL_SCRIPTS();
|
||||||
}
|
}
|
||||||
|
@ -103,17 +103,17 @@ void menuModelDisplay(event_t event)
|
||||||
|
|
||||||
case ITEM_DISPLAY_TOP_BAR_VOLTAGE:
|
case ITEM_DISPLAY_TOP_BAR_VOLTAGE:
|
||||||
lcdDrawTextAlignedLeft(y, STR_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) {
|
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;
|
break;
|
||||||
|
|
||||||
case ITEM_DISPLAY_TOP_BAR_ALTITUDE:
|
case ITEM_DISPLAY_TOP_BAR_ALTITUDE:
|
||||||
lcdDrawTextAlignedLeft(y, STR_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) {
|
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;
|
break;
|
||||||
|
|
||||||
|
@ -127,12 +127,12 @@ void menuModelDisplay(event_t event)
|
||||||
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
|
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);
|
TelemetryScreenType newScreenType = (TelemetryScreenType)editChoice(DISPLAY_COL2, y, "", STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (menuHorizontalPosition==0 ? attr : 0), event);
|
||||||
if (newScreenType != oldScreenType) {
|
if (newScreenType != oldScreenType) {
|
||||||
g_model.frsky.screensType = (g_model.frsky.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex));
|
g_model.screensType = (g_model.screensType & (~(0x03 << (2*screenIndex)))) | (newScreenType << (2*screenIndex));
|
||||||
memset(&g_model.frsky.screens[screenIndex], 0, sizeof(g_model.frsky.screens[screenIndex]));
|
memset(&g_model.screens[screenIndex], 0, sizeof(g_model.screens[screenIndex]));
|
||||||
}
|
}
|
||||||
#if defined(LUA)
|
#if defined(LUA)
|
||||||
if (newScreenType == TELEMETRY_SCREEN_TYPE_SCRIPT) {
|
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 better function name for ---
|
||||||
// TODO function for these lines
|
// 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()) {
|
if (menuHorizontalPosition==1 && attr && event==EVT_KEY_BREAK(KEY_ENTER) && READ_ONLY_UNLOCKED()) {
|
||||||
s_editMode = 0;
|
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);
|
POPUP_MENU_START(onTelemetryScriptFileSelectionMenu);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -194,7 +194,7 @@ void menuModelDisplay(event_t event)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_BARS_SCREEN(screenIndex)) {
|
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);
|
drawSource(DISPLAY_COL1, y, bar.source, menuHorizontalPosition==0 ? attr : 0);
|
||||||
int16_t barMax, barMin;
|
int16_t barMax, barMin;
|
||||||
LcdFlags lf = LEFT;
|
LcdFlags lf = LEFT;
|
||||||
|
@ -239,7 +239,7 @@ void menuModelDisplay(event_t event)
|
||||||
else {
|
else {
|
||||||
for (int c=0; c<NUM_LINE_ITEMS; c++) {
|
for (int c=0; c<NUM_LINE_ITEMS; c++) {
|
||||||
LcdFlags cellAttr = (menuHorizontalPosition==c ? attr : 0);
|
LcdFlags cellAttr = (menuHorizontalPosition==c ? attr : 0);
|
||||||
source_t & value = g_model.frsky.screens[screenIndex].lines[lineIndex].sources[c];
|
source_t & value = g_model.screens[screenIndex].lines[lineIndex].sources[c];
|
||||||
const coord_t pos[] = {DISPLAY_COL1, DISPLAY_COL2, DISPLAY_COL3};
|
const coord_t pos[] = {DISPLAY_COL1, DISPLAY_COL2, DISPLAY_COL3};
|
||||||
drawSource(pos[c], y, value, cellAttr);
|
drawSource(pos[c], y, value, cellAttr);
|
||||||
if (cellAttr && s_editMode>0) {
|
if (cellAttr && s_editMode>0) {
|
||||||
|
|
|
@ -277,23 +277,23 @@ void menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_SOURCE:
|
case ITEM_TELEMETRY_VARIO_SOURCE:
|
||||||
lcdDrawTextAlignedLeft(y, STR_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) {
|
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;
|
break;
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_RANGE:
|
case ITEM_TELEMETRY_VARIO_RANGE:
|
||||||
lcdDrawTextAlignedLeft(y, STR_RANGE);
|
lcdDrawTextAlignedLeft(y, STR_RANGE);
|
||||||
lcdDrawNumber(TELEM_COL2, y, -10+g_model.frsky.varioMin, (menuHorizontalPosition==0 ? 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.frsky.varioMax, (menuHorizontalPosition==1 ? attr : 0)|LEFT);
|
lcdDrawNumber(TELEM_COL2+7*FW, y, 10+g_model.varioData.max, (menuHorizontalPosition==1 ? attr : 0)|LEFT);
|
||||||
if (attr && s_editMode>0) {
|
if (attr && s_editMode>0) {
|
||||||
switch (menuHorizontalPosition) {
|
switch (menuHorizontalPosition) {
|
||||||
case 0:
|
case 0:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.min, -7, 7);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.max, -7, 7);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -301,19 +301,19 @@ void menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_CENTER:
|
case ITEM_TELEMETRY_VARIO_CENTER:
|
||||||
lcdDrawTextAlignedLeft(y, STR_CENTER);
|
lcdDrawTextAlignedLeft(y, STR_CENTER);
|
||||||
lcdDrawNumber(TELEM_COL2, y, -5+g_model.frsky.varioCenterMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT);
|
lcdDrawNumber(TELEM_COL2, y, -5+g_model.varioData.centerMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT);
|
||||||
lcdDrawNumber(TELEM_COL2+7*FW, y, 5+g_model.frsky.varioCenterMax, (menuHorizontalPosition==1 ? 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.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0));
|
lcdDrawTextAtIndex(TELEM_COL3, y, STR_VVARIOCENTER, g_model.varioData.centerSilent, (menuHorizontalPosition==2 ? attr : 0));
|
||||||
if (attr && s_editMode>0) {
|
if (attr && s_editMode>0) {
|
||||||
switch (menuHorizontalPosition) {
|
switch (menuHorizontalPosition) {
|
||||||
case 0:
|
case 0:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min<int8_t>(10, g_model.frsky.varioCenterMax+5));
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMin, -16, 5+min<int8_t>(10, g_model.varioData.centerMax+5));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max<int8_t>(-10, g_model.frsky.varioCenterMin-5), +15);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMax, -5+max<int8_t>(-10, g_model.varioData.centerMin-5), +15);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1);
|
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ void menuRadioDiagAnalogs(event_t event)
|
||||||
// RAS
|
// RAS
|
||||||
if((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) {
|
if((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) {
|
||||||
lcdDrawTextAlignedLeft(MENU_HEADER_HEIGHT+6*FH, "RAS");
|
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");
|
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);
|
lcdDrawNumber(LCD_W/2 + 10*FW-1, MENU_HEADER_HEIGHT+6*FH, telemetryData.xjtVersion, RIGHT);
|
||||||
|
|
||||||
|
|
|
@ -222,8 +222,8 @@ void displayTopBar()
|
||||||
|
|
||||||
/* Rx voltage */
|
/* Rx voltage */
|
||||||
altitude_icon_x = batt_icon_x+7*FW+3;
|
altitude_icon_x = batt_icon_x+7*FW+3;
|
||||||
if (g_model.frsky.voltsSource) {
|
if (g_model.voltsSource) {
|
||||||
uint8_t item = g_model.frsky.voltsSource-1;
|
uint8_t item = g_model.voltsSource-1;
|
||||||
if (item < MAX_TELEMETRY_SENSORS) {
|
if (item < MAX_TELEMETRY_SENSORS) {
|
||||||
TelemetryItem & voltsItem = telemetryItems[item];
|
TelemetryItem & voltsItem = telemetryItems[item];
|
||||||
if (voltsItem.isAvailable()) {
|
if (voltsItem.isAvailable()) {
|
||||||
|
@ -234,8 +234,8 @@ void displayTopBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Altitude */
|
/* Altitude */
|
||||||
if (g_model.frsky.altitudeSource) {
|
if (g_model.altitudeSource) {
|
||||||
uint8_t item = g_model.frsky.altitudeSource-1;
|
uint8_t item = g_model.altitudeSource-1;
|
||||||
if (item < MAX_TELEMETRY_SENSORS) {
|
if (item < MAX_TELEMETRY_SENSORS) {
|
||||||
TelemetryItem & altitudeItem = telemetryItems[item];
|
TelemetryItem & altitudeItem = telemetryItems[item];
|
||||||
if (altitudeItem.isAvailable()) {
|
if (altitudeItem.isAvailable()) {
|
||||||
|
|
|
@ -54,7 +54,7 @@ int barCoord(int value, int min, int max)
|
||||||
return ((BAR_WIDTH-1) * (value - min)) / (max - min);
|
return ((BAR_WIDTH-1) * (value - min)) / (max - min);
|
||||||
}
|
}
|
||||||
|
|
||||||
void displayGaugesTelemetryScreen(FrSkyScreenData & screen)
|
void displayGaugesTelemetryScreen(TelemetryScreenData & screen)
|
||||||
{
|
{
|
||||||
// Custom Screen with gauges
|
// Custom Screen with gauges
|
||||||
int barHeight = 5;
|
int barHeight = 5;
|
||||||
|
@ -94,7 +94,7 @@ void displayGaugesTelemetryScreen(FrSkyScreenData & screen)
|
||||||
displayRssiLine();
|
displayRssiLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool displayNumbersTelemetryScreen(FrSkyScreenData & screen)
|
bool displayNumbersTelemetryScreen(TelemetryScreenData & screen)
|
||||||
{
|
{
|
||||||
// Custom Screen with numbers
|
// Custom Screen with numbers
|
||||||
const coord_t pos[] = {0, 71, 143, 214};
|
const coord_t pos[] = {0, 71, 143, 214};
|
||||||
|
@ -159,7 +159,7 @@ bool displayNumbersTelemetryScreen(FrSkyScreenData & screen)
|
||||||
|
|
||||||
void displayCustomTelemetryScreen(uint8_t index)
|
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)) {
|
if (IS_BARS_SCREEN(s_frsky_view)) {
|
||||||
return displayGaugesTelemetryScreen(screen);
|
return displayGaugesTelemetryScreen(screen);
|
||||||
|
|
|
@ -310,23 +310,23 @@ bool menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_SOURCE:
|
case ITEM_TELEMETRY_VARIO_SOURCE:
|
||||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_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) {
|
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;
|
break;
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_RANGE:
|
case ITEM_TELEMETRY_VARIO_RANGE:
|
||||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RANGE);
|
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_RANGE);
|
||||||
lcdDrawNumber(TELEM_COL2, y, -10+g_model.frsky.varioMin, (menuHorizontalPosition==0 ? attr : 0)|LEFT);
|
lcdDrawNumber(TELEM_COL2, y, -10+g_model.varioData.min, (menuHorizontalPosition==0 ? attr : 0)|LEFT);
|
||||||
lcdDrawNumber(TELEM_COL3, y, 10+g_model.frsky.varioMax, (menuHorizontalPosition==1 ? attr : 0)|LEFT);
|
lcdDrawNumber(TELEM_COL3, y, 10+g_model.varioData.max, (menuHorizontalPosition==1 ? attr : 0)|LEFT);
|
||||||
if (attr && s_editMode>0) {
|
if (attr && s_editMode>0) {
|
||||||
switch (menuHorizontalPosition) {
|
switch (menuHorizontalPosition) {
|
||||||
case 0:
|
case 0:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.min, -7, 7);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.max, -7, 7);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -334,19 +334,19 @@ bool menuModelTelemetryFrsky(event_t event)
|
||||||
|
|
||||||
case ITEM_TELEMETRY_VARIO_CENTER:
|
case ITEM_TELEMETRY_VARIO_CENTER:
|
||||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_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_COL2, y, -5+g_model.varioData.centerMin, (menuHorizontalPosition==0 ? attr : 0)|PREC1|LEFT);
|
||||||
lcdDrawNumber(TELEM_COL3, y, 5+g_model.frsky.varioCenterMax, (menuHorizontalPosition==1 ? 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.frsky.varioCenterSilent, (menuHorizontalPosition==2 ? attr : 0));
|
lcdDrawTextAtIndex(TELEM_COL4, y, STR_VVARIOCENTER, g_model.varioData.centerSilent, (menuHorizontalPosition==2 ? attr : 0));
|
||||||
if (attr && s_editMode>0) {
|
if (attr && s_editMode>0) {
|
||||||
switch (menuHorizontalPosition) {
|
switch (menuHorizontalPosition) {
|
||||||
case 0:
|
case 0:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min<int8_t>(10, g_model.frsky.varioCenterMax+5));
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMin, -16, 5+min<int8_t>(10, g_model.varioData.centerMax+5));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max<int8_t>(-10, g_model.frsky.varioCenterMin-5), +15);
|
CHECK_INCDEC_MODELVAR(event, g_model.varioData.centerMax, -5+max<int8_t>(-10, g_model.varioData.centerMin-5), +15);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1);
|
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,7 +180,7 @@ bool menuStatsAnalogs(event_t event)
|
||||||
// RAS
|
// RAS
|
||||||
if ((isModuleXJT(INTERNAL_MODULE) && IS_INTERNAL_MODULE_ON()) || (isModulePXX(EXTERNAL_MODULE) && !IS_INTERNAL_MODULE_ON())) {
|
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");
|
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");
|
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);
|
lcdDrawNumber(LCD_W/2 + MENUS_MARGIN_LEFT+100, MENU_CONTENT_TOP+7*FH, telemetryData.xjtVersion);
|
||||||
}
|
}
|
||||||
|
|
|
@ -667,7 +667,7 @@ bool luaLoadTelemetryScript(uint8_t index)
|
||||||
TelemetryScreenType screenType = TELEMETRY_SCREEN_TYPE(index);
|
TelemetryScreenType screenType = TELEMETRY_SCREEN_TYPE(index);
|
||||||
|
|
||||||
if (screenType == TELEMETRY_SCREEN_TYPE_SCRIPT) {
|
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 (ZEXIST(script.file)) {
|
||||||
if (luaScriptsCount < MAX_SCRIPTS) {
|
if (luaScriptsCount < MAX_SCRIPTS) {
|
||||||
ScriptInternalData & sid = scriptInternalData[luaScriptsCount++];
|
ScriptInternalData & sid = scriptInternalData[luaScriptsCount++];
|
||||||
|
@ -943,7 +943,7 @@ bool luaDoOneRunPermanentScript(event_t evt, int i, uint32_t scriptType)
|
||||||
else {
|
else {
|
||||||
#if defined(PCBTARANIS)
|
#if defined(PCBTARANIS)
|
||||||
#if defined(SIMU) || defined(DEBUG)
|
#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;
|
filename = script.file;
|
||||||
#endif
|
#endif
|
||||||
if ((scriptType & RUN_TELEM_FG_SCRIPT) && (menuHandlers[0]==menuViewTelemetryFrsky && sid.reference==SCRIPT_TELEMETRY_FIRST+s_frsky_view)) {
|
if ((scriptType & RUN_TELEM_FG_SCRIPT) && (menuHandlers[0]==menuViewTelemetryFrsky && sid.reference==SCRIPT_TELEMETRY_FIRST+s_frsky_view)) {
|
||||||
|
|
|
@ -340,7 +340,7 @@ PACK(typedef struct {
|
||||||
|
|
||||||
GVarData_v218 gvars[MAX_GVARS_218];
|
GVarData_v218 gvars[MAX_GVARS_218];
|
||||||
|
|
||||||
FrSkyTelemetryData frsky;
|
VarioData frsky;
|
||||||
RssiAlarmData rssiAlarms;
|
RssiAlarmData rssiAlarms;
|
||||||
|
|
||||||
MODELDATA_EXTRA_218
|
MODELDATA_EXTRA_218
|
||||||
|
|
|
@ -165,7 +165,7 @@ void copyRssiAlarmData(A * dest, B * src)
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class A, class B>
|
template <class A, class B>
|
||||||
void copyFrSkyTelemetryData(A * dest, B * src)
|
void copyVarioData(A * dest, B * src)
|
||||||
{
|
{
|
||||||
dest->varioSource = src->varioSource;
|
dest->varioSource = src->varioSource;
|
||||||
dest->varioCenterSilent = src->varioCenterSilent;
|
dest->varioCenterSilent = src->varioCenterSilent;
|
||||||
|
|
|
@ -168,8 +168,8 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe
|
||||||
if (dataId == RSSI_ID) {
|
if (dataId == RSSI_ID) {
|
||||||
telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected
|
telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected
|
||||||
data = SPORT_DATA_U8(packet);
|
data = SPORT_DATA_U8(packet);
|
||||||
if (g_model.frsky.rssiSource) {
|
if (g_model.rssiSource) {
|
||||||
TelemetrySensor * sensor = & g_model.telemetrySensors[g_model.frsky.rssiSource];
|
TelemetrySensor * sensor = & g_model.telemetrySensors[g_model.rssiSource];
|
||||||
if (sensor->instance == instance) {
|
if (sensor->instance == instance) {
|
||||||
telemetryData.rssi.set(data);
|
telemetryData.rssi.set(data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,17 +29,17 @@ void varioWakeup()
|
||||||
uint8_t varioFlags;
|
uint8_t varioFlags;
|
||||||
|
|
||||||
int verticalSpeed = 0;
|
int verticalSpeed = 0;
|
||||||
if (g_model.frsky.varioSource) {
|
if (g_model.varioData.source) {
|
||||||
uint8_t item = g_model.frsky.varioSource-1;
|
uint8_t item = g_model.varioData.source-1;
|
||||||
if (item < MAX_TELEMETRY_SENSORS) {
|
if (item < MAX_TELEMETRY_SENSORS) {
|
||||||
verticalSpeed = telemetryItems[item].value * g_model.telemetrySensors[item].getPrecMultiplier();
|
verticalSpeed = telemetryItems[item].value * g_model.telemetrySensors[item].getPrecMultiplier();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int varioCenterMin = (int)g_model.frsky.varioCenterMin * 10 - 50;
|
int varioCenterMin = (int)g_model.varioData.centerMin * 10 - 50;
|
||||||
int varioCenterMax = (int)g_model.frsky.varioCenterMax * 10 + 50;
|
int varioCenterMax = (int)g_model.varioData.centerMax * 10 + 50;
|
||||||
int varioMax = (10+(int)g_model.frsky.varioMax) * 100;
|
int varioMax = (10+(int)g_model.varioData.max) * 100;
|
||||||
int varioMin = (-10+(int)g_model.frsky.varioMin) * 100;
|
int varioMin = (-10+(int)g_model.varioData.min) * 100;
|
||||||
|
|
||||||
if (verticalSpeed > varioMax)
|
if (verticalSpeed > varioMax)
|
||||||
verticalSpeed = varioMax;
|
verticalSpeed = varioMax;
|
||||||
|
@ -51,7 +51,7 @@ void varioWakeup()
|
||||||
varioDuration = 80; // continuous beep: we will enter again here before the tone ends
|
varioDuration = 80; // continuous beep: we will enter again here before the tone ends
|
||||||
varioFlags = PLAY_BACKGROUND|PLAY_NOW;
|
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);
|
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));
|
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)
|
if (verticalSpeed >= varioCenterMax || varioCenterMin == varioCenterMax)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue