1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-19 14:25:11 +03:00

Compilation fixes

This commit is contained in:
Bertrand Songis 2019-04-16 20:39:50 +02:00
parent 84e24a4189
commit c7bd0d3ea1
17 changed files with 119 additions and 136 deletions

View file

@ -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

View file

@ -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

View file

@ -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; c<NUM_LINE_ITEMS; c++) {
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};
drawSource(pos[c], y, value, cellAttr);
if (cellAttr && s_editMode>0) {

View file

@ -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<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;
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;
case 2:
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1);
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1);
break;
}
}

View file

@ -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);

View file

@ -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; c<NUM_LINE_ITEMS; c++) {
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};
drawSource(pos[c], y, value, cellAttr);
if (cellAttr && s_editMode>0) {

View file

@ -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<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;
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;
case 2:
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1);
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1);
break;
}
}

View file

@ -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);

View file

@ -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()) {

View file

@ -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);

View file

@ -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<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;
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;
case 2:
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.varioCenterSilent, 1);
CHECK_INCDEC_MODELVAR_ZERO(event, g_model.varioData.centerSilent, 1);
break;
}
}

View file

@ -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);
}

View file

@ -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)) {

View file

@ -340,7 +340,7 @@ PACK(typedef struct {
GVarData_v218 gvars[MAX_GVARS_218];
FrSkyTelemetryData frsky;
VarioData frsky;
RssiAlarmData rssiAlarms;
MODELDATA_EXTRA_218

View file

@ -165,7 +165,7 @@ void copyRssiAlarmData(A * dest, B * src)
}
template <class A, class B>
void copyFrSkyTelemetryData(A * dest, B * src)
void copyVarioData(A * dest, B * src)
{
dest->varioSource = src->varioSource;
dest->varioCenterSilent = src->varioCenterSilent;

View file

@ -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);
}

View file

@ -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)