VARIO_EXTENDED new feature
Limits changed: Down speed min in range OFF,[-10.0:0] in 0.1 steps OFF means no sound at all, this variant useful if pilot/model is aerobatic Up speed min in range [-1.5:1.5] in 0.1 steps strange negative values for positive vertical speeds means next: in normal fly glider model has negative speed always, for example -1m/s if any weak thermal flows found then vertical speed can be reduced but still negative, but it is symptom of thermal flow which can be very close! now it is possible to detect if negative Up speed limit is set.
This commit is contained in:
+7
-7
@@ -643,22 +643,22 @@ void check_frsky()
|
||||
static uint16_t s_varioTmr = 0;
|
||||
if (isFunctionActive(FUNC_VARIO)) {
|
||||
#if defined(AUDIO)
|
||||
int16_t verticalSpeed = 0;
|
||||
// TODO: get negative values in Up Speed to shift zero, i.e. get positive sound on small negative speeds
|
||||
// positive values in g_model.varioSpeedUpMin must works same as now
|
||||
// negative must make an offset in sounds
|
||||
// also changes need in model_menus.cpp
|
||||
verticalSpeed = limit((int16_t)(-VARIO_SPEED_LIMIT*100), (int16_t)frskyHubData.varioSpeed, (int16_t)(+VARIO_SPEED_LIMIT*100));
|
||||
int16_t varioSpeedUpMin = (g_model.varioSpeedUpMin - VARIO_SPEED_LIMIT_UP_CENTER)*VARIO_SPEED_LIMIT_MUL;
|
||||
int16_t varioSpeedDownMin = (VARIO_SPEED_LIMIT_DOWN_OFF - g_model.varioSpeedDownMin)*(-VARIO_SPEED_LIMIT_MUL);
|
||||
int16_t verticalSpeed = limit((int16_t)(-VARIO_SPEED_LIMIT*100), (int16_t)frskyHubData.varioSpeed, (int16_t)(+VARIO_SPEED_LIMIT*100));
|
||||
|
||||
uint8_t SoundAltBeepNextFreq = 0;
|
||||
uint8_t SoundAltBeepNextTime = 0;
|
||||
static uint8_t SoundAltBeepFreq = 0;
|
||||
static uint8_t SoundAltBeepTime = 0;
|
||||
if ((verticalSpeed < g_model.varioSpeedUpMin*VARIO_SPEED_LIMIT_MUL) && (verticalSpeed > (VARIO_SPEED_LIMIT_DOWN_OFF - g_model.varioSpeedDownMin)*(-VARIO_SPEED_LIMIT_MUL))) { //check thresholds here in cm/s
|
||||
if ((verticalSpeed < varioSpeedUpMin) && (verticalSpeed > varioSpeedDownMin)) { //check thresholds here in cm/s
|
||||
SoundAltBeepNextFreq = (0);
|
||||
SoundAltBeepNextTime = (0);
|
||||
}
|
||||
else {
|
||||
if((varioSpeedUpMin < 0) & (verticalSpeed >= varioSpeedUpMin)){
|
||||
verticalSpeed = verticalSpeed - varioSpeedUpMin;
|
||||
}
|
||||
SoundAltBeepNextFreq = (verticalSpeed * 10 + 16000) >> 8;
|
||||
SoundAltBeepNextTime = (1600 - verticalSpeed) / 100;
|
||||
if (verticalSpeed > 0) {
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ class FrskyData: public FrskyRSSI {
|
||||
#define VARIO_SPEED_LIMIT_MUL 10 //to get 0.2m steps
|
||||
#define VARIO_SPEED_LIMIT_DOWN_OFF (100+1) //100 steps + OFF
|
||||
#define VARIO_SPEED_LIMIT_UP_CENTER 15
|
||||
#define VARIO_SPEED_LIMIT_UP_MAX 31
|
||||
#define VARIO_SPEED_LIMIT_UP_MAX 30
|
||||
|
||||
#if defined(FRSKY_HUB)
|
||||
PACK(struct FrskyHubData {
|
||||
|
||||
+1
-1
@@ -2344,7 +2344,7 @@ void menuProcTelemetry(uint8_t event)
|
||||
lcd_putsAtt(TELEM_COL2, y, STR_OFF, ((attr && m_posHorz==0) ? blink : 0));
|
||||
else
|
||||
lcd_outdezAtt(TELEM_COL2, y, -VARIO_SPEED_LIMIT_MUL*(VARIO_SPEED_LIMIT_DOWN_OFF - g_model.varioSpeedDownMin), ((attr && m_posHorz==0) ? blink : 0)|PREC2|LEFT);
|
||||
lcd_outdezAtt(TELEM_COL2+6*FW, y, VARIO_SPEED_LIMIT_MUL*g_model.varioSpeedUpMin, ((attr && m_posHorz==1) ? blink : 0)|PREC2|LEFT);
|
||||
lcd_outdezAtt(TELEM_COL2+6*FW, y, VARIO_SPEED_LIMIT_MUL*(g_model.varioSpeedUpMin - VARIO_SPEED_LIMIT_UP_CENTER), ((attr && m_posHorz==1) ? blink : 0)|PREC2|LEFT);
|
||||
|
||||
if (attr && (s_editMode>0 || p1valdiff)) {
|
||||
switch (m_posHorz) {
|
||||
|
||||
Reference in New Issue
Block a user