barometric Vario function changed
new menu items added to handle new function sound function changed for Vario frsky data structure changed to fit new variables, some spares reused
This commit is contained in:
+92
-53
@@ -243,41 +243,60 @@ void parseTelemHubByte(uint8_t byte)
|
||||
break;
|
||||
|
||||
case offsetof(FrskyHubData, baroAltitude_bp):
|
||||
// First received barometer altitude => Altitude offset
|
||||
if (!frskyHubData.baroAltitudeOffset)
|
||||
frskyHubData.baroAltitudeOffset = -frskyHubData.baroAltitude_bp;
|
||||
frskyHubData.baroAltitude_bp += frskyHubData.baroAltitudeOffset;
|
||||
if (frskyHubData.baroAltitude_bp > frskyHubData.maxAltitude)
|
||||
frskyHubData.maxAltitude = frskyHubData.baroAltitude_bp;
|
||||
if (frskyHubData.baroAltitude_bp < frskyHubData.minAltitude)
|
||||
frskyHubData.minAltitude = frskyHubData.baroAltitude_bp;
|
||||
case offsetof(FrskyHubData, baroAltitude_ap):
|
||||
if((!g_model.frsky.use_baroAltitude_ap & (offsetof(FrskyHubData, baroAltitude_bp) == (uint8_t)structPos)) |
|
||||
(g_model.frsky.use_baroAltitude_ap & (offsetof(FrskyHubData, baroAltitude_ap) == (uint8_t)structPos))){
|
||||
//here is baro altitude suggested 0.01m accuracy, i.e. baroAltitude_ap in range [0:99]
|
||||
if(g_model.frsky.use_baroAltitude_ap){
|
||||
uint16_t alt_sign = frskyHubData.baroAltitude_bp/abs(frskyHubData.baroAltitude_bp);
|
||||
frskyHubData.baroAltitude_full = frskyHubData.baroAltitude_bp*100 + frskyHubData.baroAltitude_ap*alt_sign;
|
||||
}else{
|
||||
frskyHubData.baroAltitude_full = frskyHubData.baroAltitude_bp;
|
||||
}
|
||||
if(++frskyHubData.queuePointer>=5)
|
||||
frskyHubData.queuePointer = 0;
|
||||
|
||||
int8_t tmp = frskyHubData.queuePointer + 1;
|
||||
if(tmp >= 5)
|
||||
tmp = 0;
|
||||
|
||||
frskyHubData.baroAltitudeQueue_full[frskyHubData.queuePointer] =
|
||||
frskyHubData.baroAltitude_full;
|
||||
|
||||
frskyHubData.varioSpeed =
|
||||
frskyHubData.baroAltitudeQueue_full[frskyHubData.queuePointer] -
|
||||
frskyHubData.baroAltitudeQueue_full[tmp];
|
||||
|
||||
{
|
||||
int16_t actVario = frskyHubData.baroAltitude_bp - frskyHubData.lastBaroAltitude_bp;
|
||||
frskyHubData.varioAcc2 = frskyHubData.varioAcc2 - frskyHubData.varioQueue[frskyHubData.queuePointer];
|
||||
frskyHubData.varioQueue[frskyHubData.queuePointer] = actVario;
|
||||
uint8_t tmp = frskyHubData.queuePointer + 5;
|
||||
if (tmp >= 10)
|
||||
tmp -= 10;
|
||||
tmp = (uint8_t)frskyHubData.varioQueue[tmp];
|
||||
frskyHubData.varioAcc2 = frskyHubData.varioAcc2 + (int8_t)tmp;
|
||||
frskyHubData.varioAcc1 = frskyHubData.varioAcc1 + actVario - (int8_t)tmp;
|
||||
frskyHubData.varioSpeed = frskyHubData.varioAcc1 - frskyHubData.varioAcc2;
|
||||
if (++frskyHubData.queuePointer >= 10)
|
||||
frskyHubData.queuePointer = 0;
|
||||
frskyHubData.lastBaroAltitude_bp = frskyHubData.baroAltitude_bp;
|
||||
}
|
||||
// First received barometer altitude => Altitude offset
|
||||
if (!frskyHubData.baroAltitudeOffset)
|
||||
frskyHubData.baroAltitudeOffset = -frskyHubData.baroAltitude_full;
|
||||
frskyHubData.baroAltitude_full += frskyHubData.baroAltitudeOffset;
|
||||
if(g_model.frsky.use_baroAltitude_only){
|
||||
if (frskyHubData.baroAltitude_full > frskyHubData.maxAltitude_full)
|
||||
frskyHubData.maxAltitude_full = frskyHubData.baroAltitude_full;
|
||||
if (frskyHubData.baroAltitude_full < frskyHubData.minAltitude_full)
|
||||
frskyHubData.minAltitude_full = frskyHubData.baroAltitude_full;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case offsetof(FrskyHubData, gpsAltitude_ap):
|
||||
if(g_model.frsky.use_baroAltitude_ap){
|
||||
frskyHubData.gpsAltitude_full = frskyHubData.gpsAltitude_bp*100;
|
||||
} else {
|
||||
frskyHubData.gpsAltitude_full = frskyHubData.gpsAltitude_bp;
|
||||
}
|
||||
if (!frskyHubData.gpsAltitudeOffset)
|
||||
frskyHubData.gpsAltitudeOffset = -frskyHubData.gpsAltitude_bp;
|
||||
frskyHubData.gpsAltitude_bp += frskyHubData.gpsAltitudeOffset;
|
||||
if (frskyHubData.gpsAltitude_bp > frskyHubData.maxAltitude)
|
||||
frskyHubData.maxAltitude = frskyHubData.gpsAltitude_bp;
|
||||
if (frskyHubData.gpsAltitude_bp < frskyHubData.minAltitude)
|
||||
frskyHubData.minAltitude = frskyHubData.gpsAltitude_bp;
|
||||
|
||||
frskyHubData.gpsAltitudeOffset = -frskyHubData.gpsAltitude_full;
|
||||
frskyHubData.gpsAltitude_full += frskyHubData.gpsAltitudeOffset;
|
||||
if(!g_model.frsky.use_baroAltitude_only){
|
||||
if (frskyHubData.gpsAltitude_full > frskyHubData.maxAltitude_full)
|
||||
frskyHubData.maxAltitude_full = frskyHubData.gpsAltitude_full;
|
||||
if (frskyHubData.gpsAltitude_full < frskyHubData.minAltitude_full)
|
||||
frskyHubData.minAltitude_full = frskyHubData.gpsAltitude_full;
|
||||
}
|
||||
if (!frskyHubData.pilotLatitude && !frskyHubData.pilotLongitude) {
|
||||
// First received GPS position => Pilot GPS position
|
||||
getGpsPilotPosition();
|
||||
@@ -625,30 +644,39 @@ void check_frsky()
|
||||
|
||||
if (isFunctionActive(FUNC_VARIO)) {
|
||||
#if defined(AUDIO)
|
||||
uint8_t warble = 0;
|
||||
#endif
|
||||
int8_t verticalSpeed = limit((int16_t)-100, (int16_t)(frskyHubData.varioSpeed/10), (int16_t)+100);
|
||||
|
||||
uint16_t interval;
|
||||
if (verticalSpeed == 0) {
|
||||
interval = 300;
|
||||
}
|
||||
else {
|
||||
if (verticalSpeed < 0) {
|
||||
verticalSpeed = -verticalSpeed;
|
||||
warble = 1;
|
||||
}
|
||||
interval = (uint8_t)200 / verticalSpeed;
|
||||
}
|
||||
if (g_tmr10ms - s_varioTmr > interval) {
|
||||
s_varioTmr = g_tmr10ms;
|
||||
if (warble)
|
||||
AUDIO_VARIO_DOWN();
|
||||
else
|
||||
AUDIO_VARIO_UP();
|
||||
}
|
||||
#define VARIO_SPEED_LIMIT 10 //m/s
|
||||
int16_t verticalSpeed = 0;
|
||||
//vertical speed in 0.01m/s now
|
||||
if(g_model.frsky.use_baroAltitude_ap)//means if additional data enabled then _ap unit is 0.01
|
||||
verticalSpeed = limit((int16_t)-VARIO_SPEED_LIMIT*100, (int16_t)(frskyHubData.varioSpeed), (int16_t)+VARIO_SPEED_LIMIT*100);
|
||||
else
|
||||
verticalSpeed = limit((int16_t)-VARIO_SPEED_LIMIT, (int16_t)(frskyHubData.varioSpeed), (int16_t)+VARIO_SPEED_LIMIT)*100;
|
||||
|
||||
uint8_t SoundAltBeepNextFreq = (0);
|
||||
uint8_t SoundAltBeepNextTime = (0);
|
||||
if(verticalSpeed < g_model.frsky.varioSpeedUpMin*VARIO_LIM_MUL && verticalSpeed > g_model.frsky.varioSpeedDownMin*(-VARIO_LIM_MUL)) //check thresholds here in cm/s
|
||||
{
|
||||
SoundAltBeepNextFreq = (0);
|
||||
SoundAltBeepNextTime = (0);
|
||||
}else{
|
||||
SoundAltBeepNextFreq = (((verticalSpeed * 56) + 77400)/10)/10/30;
|
||||
SoundAltBeepNextTime = ((1600 - verticalSpeed) / 100);
|
||||
if(verticalSpeed > 0){
|
||||
if ((int16_t)(g_tmr10ms - s_varioTmr) > (int16_t)(SoundAltBeepNextTime*2)) {
|
||||
s_varioTmr = g_tmr10ms;
|
||||
audio.playNow(SoundAltBeepNextFreq, SoundAltBeepNextTime, 0, 0, 0);
|
||||
}
|
||||
} else {//negative vertical speed gives sound without pauses
|
||||
if (g_tmr10ms - s_varioTmr > SoundAltBeepNextTime) {
|
||||
s_varioTmr = g_tmr10ms;
|
||||
audio.playNow(SoundAltBeepNextFreq, SoundAltBeepNextTime+2, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif //AUDIO
|
||||
#endif //FRSKY_HUB || WS_HOW_HIGH
|
||||
}
|
||||
|
||||
bool FRSKY_alarmRaised(uint8_t idx)
|
||||
@@ -795,7 +823,9 @@ void resetTelemetry()
|
||||
frskyHubData.cellsCount = 6;
|
||||
|
||||
frskyHubData.gpsAltitude_bp = 50;
|
||||
frskyHubData.gpsAltitude_full = 5000;
|
||||
frskyHubData.baroAltitude_bp = 50;
|
||||
frskyHubData.baroAltitude_full = 5000;
|
||||
frskyHubData.minAltitude = 10;
|
||||
frskyHubData.maxAltitude = 500;
|
||||
|
||||
@@ -1074,7 +1104,16 @@ void menuProcFrsky(uint8_t event)
|
||||
putsTime(x, 1+FH+2*FH*i, value, att, att);
|
||||
}
|
||||
else {
|
||||
putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, att);
|
||||
if(g_model.frsky.use_baroAltitude_ap &
|
||||
((field == TELEM_VSPD) |
|
||||
(field == TELEM_ALT) |
|
||||
(field == TELEM_MIN_ALT) |
|
||||
(field == TELEM_MAX_ALT))){
|
||||
putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, att|PREC2);
|
||||
}
|
||||
else {
|
||||
putsTelemetryChannel(j ? 128 : 63, i==3 ? 1+7*FH : 1+2*FH+2*FH*i, field-1, value, att);
|
||||
}
|
||||
lcd_putsiAtt(j*65, 1+FH+2*FH*i, STR_VTELEMCHNS, field, 0);
|
||||
}
|
||||
}
|
||||
|
||||
+10
-10
@@ -105,33 +105,33 @@ PACK(struct FrskyHubData {
|
||||
int16_t accelZ; // 0x26 1/256th gram (-8g ~ +8g)
|
||||
uint8_t gpsDistNeeded:1; // 1bits out of 16bits spare reused
|
||||
int8_t gpsFix:2; // 2bits out of 16bits spare reused: -1=never fixed, 0=not fixed now, 1=fixed
|
||||
uint8_t spare1:1; //
|
||||
uint8_t spare1:1; //
|
||||
uint8_t cellsCount:4; // 4bits out of 16bits spare reused
|
||||
uint8_t minCellVolts; // 8bits out of 16bits spare reused
|
||||
uint16_t current; // 0x28 Current
|
||||
int8_t varioQueue[10]; // circular-buffer
|
||||
uint8_t queuePointer; // circular-buffer pointer
|
||||
int8_t spare2;
|
||||
int16_t lastBaroAltitude_bp;
|
||||
int32_t minAltitude_full; //4 bytes from varioQueue reused
|
||||
int32_t maxAltitude_full; //4 bytes from varioQueue reused
|
||||
int8_t dummy1[2];//varioQueue[10]; // circular-buffer 2
|
||||
uint8_t queuePointer; // circular-buffer pointer 3
|
||||
int8_t spare2;// 4
|
||||
int16_t dummy2;//lastBaroAltitude; 6
|
||||
int16_t varioSpeed;
|
||||
/* next fields must keep this order! */
|
||||
int16_t minAltitude;
|
||||
int16_t maxAltitude;
|
||||
int32_t gpsAltitude_full;//4 bytes fro minAltitude and maxAltitude reused
|
||||
uint16_t maxRpm;
|
||||
int16_t maxTemperature1;
|
||||
int16_t maxTemperature2;
|
||||
uint16_t maxGpsSpeed;
|
||||
uint16_t maxGpsDistance;
|
||||
/* end */
|
||||
int16_t varioAcc1;
|
||||
int16_t varioAcc2;
|
||||
int32_t baroAltitude_full;// 4 bytes from varioAcc1 and varioAcc2 reused
|
||||
uint16_t volts_bp; // 0x3A
|
||||
uint16_t volts_ap; // 0x3B
|
||||
// end of FrSky Hub data
|
||||
uint16_t gpsDistance;
|
||||
int16_t gpsAltitudeOffset;
|
||||
uint8_t minCellMinVolts;
|
||||
|
||||
int32_t baroAltitudeQueue_full[5];//20
|
||||
});
|
||||
|
||||
#elif defined(WS_HOW_HIGH)
|
||||
|
||||
+44
-2
@@ -2001,8 +2001,8 @@ void menuProcFunctionSwitches(uint8_t event)
|
||||
#define TELEM_COL2 (9*FW+2)
|
||||
void menuProcTelemetry(uint8_t event)
|
||||
{
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 27, {0, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 1, (uint8_t)-1, 0, 0, (uint8_t)-1, 1, 1, 1, 1, (uint8_t)-1, 2, 2, 2, 2});
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)// v v v v 4 new menu items for baro alt/vario
|
||||
MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 29, {0, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 1, (uint8_t)-1, 0, 0, (uint8_t)-1, 0, 0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, (uint8_t)-1, 2, 2, 2, 2});
|
||||
#else
|
||||
MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, 24, {0, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 0, 2, 2, (uint8_t)-1, 1, 1, (uint8_t)-1, 1, 1, 1, 1, (uint8_t)-1, 2, 2, 2, 2});
|
||||
#endif
|
||||
@@ -2150,6 +2150,48 @@ void menuProcTelemetry(uint8_t event)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.blades, 0, 2);
|
||||
}
|
||||
subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_putsLeft(y, STR_BARO_VARIO);
|
||||
}
|
||||
subN++;
|
||||
|
||||
if(s_pgOfs<subN) {//setup baro altimeter after point data to be used
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_puts(4, y, STR_BARO_PR);
|
||||
menu_lcd_onoff( TELEM_COL2, y, g_model.frsky.use_baroAltitude_ap, sub==subN ) ;
|
||||
if (sub==subN)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.use_baroAltitude_ap, 0, 1);
|
||||
}
|
||||
subN++;
|
||||
|
||||
if(s_pgOfs<subN) {//use barometer altitude only if ON and use GPS altitude if OFF
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_puts(4, y, STR_BARO_ONLY);
|
||||
menu_lcd_onoff( TELEM_COL2, y, g_model.frsky.use_baroAltitude_only, sub==subN ) ;
|
||||
if (sub==subN)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.use_baroAltitude_only, 0, 1);
|
||||
}
|
||||
subN++;
|
||||
|
||||
if(s_pgOfs<subN) {
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_puts(4, y, STR_BARO_DWN_LIM);
|
||||
lcd_outdezAtt(TELEM_COL2+FWNUM, y, -VARIO_LIM_MUL*g_model.frsky.varioSpeedDownMin, (sub==subN ? INVERS : 0)|PREC2);//TODO: EDIT DECIMALS HERE
|
||||
if (sub==subN)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSpeedDownMin, 0, 15);
|
||||
}
|
||||
subN++;
|
||||
|
||||
if(s_pgOfs<subN) {//g_model.frsky.varioSpeedUpMin
|
||||
y = (subN-s_pgOfs)*FH;
|
||||
lcd_puts(4, y, STR_BARO_UP_LIM);
|
||||
lcd_outdezAtt(TELEM_COL2+FWNUM, y, VARIO_LIM_MUL*g_model.frsky.varioSpeedUpMin, (sub==subN ? INVERS : 0)|PREC2);//TODO: EDIT DECIMALS HERE
|
||||
if (sub==subN)
|
||||
CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSpeedUpMin, 0, 15);
|
||||
}
|
||||
subN++;
|
||||
#endif
|
||||
|
||||
// Display
|
||||
|
||||
+7
-2
@@ -347,20 +347,25 @@ PACK(typedef struct t_FrSkyBarData {
|
||||
uint16_t barMax:6; // ditto for max display (would usually = ratio)
|
||||
}) FrSkyBarData;
|
||||
|
||||
enum FrskyUsrProtocols {
|
||||
enum FrskyUsrProtocols {//probably to add x3mfly protocol here
|
||||
PROTO_NONE,
|
||||
PROTO_FRSKY_HUB,
|
||||
PROTO_WS_HOW_HIGH
|
||||
};
|
||||
|
||||
#define VARIO_LIM_MUL 20 //to get 0.2m steps
|
||||
|
||||
PACK(typedef struct t_FrSkyData {
|
||||
FrSkyChannelData channels[2];
|
||||
uint8_t usrProto:3; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh
|
||||
uint8_t imperial:1;
|
||||
uint8_t blades:2; // How many blades for RPMs, 0=2 blades, 1=3 blades
|
||||
uint8_t spare:2;
|
||||
uint8_t use_baroAltitude_ap:1;//used 2 spare bits here
|
||||
uint8_t use_baroAltitude_only:1;
|
||||
FrSkyBarData bars[4];
|
||||
FrSkyRSSIAlarm rssiAlarms[2];
|
||||
uint8_t varioSpeedUpMin:4; //if increment in 0.2m/s = 3.0m/s max
|
||||
uint8_t varioSpeedDownMin:4; //too small but enough in most cases
|
||||
}) FrSkyData;
|
||||
|
||||
#ifdef MAVLINK
|
||||
|
||||
@@ -148,6 +148,11 @@ const pm_char STR_BAR[] PROGMEM = TR_BAR;
|
||||
const pm_char STR_ALARM[] PROGMEM = TR_ALARM;
|
||||
const pm_char STR_USRDATA[] PROGMEM = TR_USRDATA;
|
||||
const pm_char STR_BLADES[] PROGMEM = TR_BLADES; // TODO check that it is optimized away when no FRSKY
|
||||
const pm_char STR_BARO_VARIO[] PROGMEM = TR_BARO_VARIO;
|
||||
const pm_char STR_BARO_PR[] PROGMEM = TR_BARO_PR;
|
||||
const pm_char STR_BARO_ONLY[] PROGMEM = TR_BARO_ONLY;
|
||||
const pm_char STR_BARO_UP_LIM[] PROGMEM = TR_BARO_UP_LIM;
|
||||
const pm_char STR_BARO_DWN_LIM[] PROGMEM = TR_BARO_DWN_LIM;
|
||||
const pm_char STR_BARS[] PROGMEM = TR_BARS;
|
||||
const pm_char STR_DISPLAY[] PROGMEM = TR_DISPLAY;
|
||||
const pm_char STR_BEEPERMODE[] PROGMEM = TR_BEEPERMODE;
|
||||
|
||||
@@ -235,6 +235,11 @@ extern const pm_char STR_BAR[];
|
||||
extern const pm_char STR_ALARM[];
|
||||
extern const pm_char STR_USRDATA[];
|
||||
extern const pm_char STR_BLADES[];
|
||||
extern const pm_char STR_BARO_VARIO[];
|
||||
extern const pm_char STR_BARO_PR[];
|
||||
extern const pm_char STR_BARO_ONLY[];
|
||||
extern const pm_char STR_BARO_UP_LIM[];
|
||||
extern const pm_char STR_BARO_DWN_LIM[];
|
||||
extern const pm_char STR_BARS[];
|
||||
extern const pm_char STR_DISPLAY[];
|
||||
extern const pm_char STR_BEEPERMODE[];
|
||||
|
||||
+4
-2
@@ -423,7 +423,7 @@ int16_t getValue(uint8_t i)
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_RSSI_TX) return frskyRSSI[1].value;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_RSSI_RX) return frskyRSSI[0].value;
|
||||
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_ALT) return frskyHubData.baroAltitude_bp;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_ALT) return frskyHubData.baroAltitude_full;
|
||||
#endif
|
||||
#if defined(FRSKY_HUB)
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_RPM) return frskyHubData.rpm;
|
||||
@@ -440,7 +440,9 @@ int16_t getValue(uint8_t i)
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_VSPD) return frskyHubData.varioSpeed;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_A1) return frskyTelemetry[0].min;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_A2) return frskyTelemetry[1].min;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MAX_DIST) return *(((int16_t*)(&frskyHubData.minAltitude))+i-(CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_ALT-1));
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_ALT) return frskyHubData.minAltitude_full;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MAX_ALT) return frskyHubData.maxAltitude_full;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MAX_DIST) return *(((int16_t*)(&frskyHubData.minAltitude_full))+i-(CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_ALT-1));
|
||||
#endif
|
||||
#endif
|
||||
else return 0;
|
||||
|
||||
@@ -236,6 +236,11 @@
|
||||
#define TR_ALARM "Alarm"
|
||||
#define TR_USRDATA "UsrData"
|
||||
#define TR_BLADES "Blades"
|
||||
#define TR_BARO_VARIO "Baro Vario"
|
||||
#define TR_BARO_PR "Use AP"
|
||||
#define TR_BARO_ONLY "BaroOnly"
|
||||
#define TR_BARO_UP_LIM "Up Lim"
|
||||
#define TR_BARO_DWN_LIM "Down Lim"
|
||||
#define TR_BARS "Bars"
|
||||
#define TR_DISPLAY "Display"
|
||||
#ifdef AUDIO
|
||||
|
||||
Reference in New Issue
Block a user