OSD: Add missing alarms, and set visibility on availability

- Add missing airspeed alarms
- Slight reorganisation of alarms
- Only show alarms when they should be available
- Hide CRSF section when not using CRSF protocol
- Hide Baro temp and/or ESC telemetry elements when no barometer and/or ESC telemetry is available.
pull/1689/head
Darren Lines 2 years ago
parent d23638ca3e
commit a756f982f2

@ -3218,6 +3218,18 @@
"osdAlarmMAX_NEG_ALTITUDE_HELP": {
"message": "The altitude indicator will flash when altitude is negative and its absolute value is greater than this alarm. Useful when taking off from elevated places. Zero disables this alarm."
},
"osd_airspeed_min_alarm" : {
"message": "Minimum Airspeed"
},
"osd_airspeed_min_alarm_HELP" : {
"message": "The airspeed indicator will flash when the airspeed is below this threshold. Zero disables this alarm."
},
"osd_airspeed_max_alarm" : {
"message": "Maximum Airspeed"
},
"osd_airspeed_max_alarm_HELP" : {
"message": "The airspeed indicator will flash when the airspeed is above this threshold. Zero disables this alarm."
},
"osd_gforce_alarm": {
"message": "g force"
},

@ -94,8 +94,8 @@
<select id="plusCodeShort" class="update_preview" data-setting="osd_plus_code_short" data-live="true"></select>
<span data-i18n="osd_plus_code_short"></span>
</label>
<div for="rpmPrecision" class="helpicon cf_tip" data-i18n_title="osd_esc_rpm_precision_help"></div>
<label>
<div for="rpmPrecision" class="helpicon cf_tip osd_use_esc_telemetry" data-i18n_title="osd_esc_rpm_precision_help"></div>
<label class="osd_use_esc_telemetry">
<select id="rpmPrecision" class="update_preview" data-setting="osd_esc_rpm_precision" data-live="true"></select>
<span data-i18n="osd_esc_rpm_precision"></span>
</label>
@ -116,8 +116,8 @@
<select class="update_preview" data-setting="osd_right_sidebar_scroll" data-live="true"></select>
<span data-i18n="osd_right_sidebar_scroll"></span>
</label>
<div for="crsfLQFormat" class="helpicon cf_tip" data-i18n_title="osdSettingCRSF_LQ_FORMAT_HELP"></div>
<label>
<div for="crsfLQFormat" class="helpicon cf_tip osd_use_crsf" data-i18n_title="osdSettingCRSF_LQ_FORMAT_HELP"></div>
<label class="osd_use_crsf">
<select id="crsfLQFormat" class="update_preview" data-setting="osd_crsf_lq_format" data-live="true"></select>
<span data-i18n="osd_crsf_lq_format"></span>
</label>
@ -141,10 +141,22 @@
<input id="osd_rssi_alarm" data-setting="osd_rssi_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_rssi_alarm"></span>
</label>
<label for="time_alarm">
<input id="osd_time_alarm" data-setting="osd_time_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_time_alarm"></span>
<div for="link_quality_alarm" class="helpicon cf_tip osd_use_crsf" data-i18n_title="osdalarmLQ_HELP"></div>
<label for="link_quality_alarm" class="osd_use_crsf">
<input id="link_quality_alarm" data-setting="osd_link_quality_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_link_quality_alarm"></span>
</label>
<div for="rssi_dbm_alarm" class="helpicon cf_tip osd_use_crsf" data-i18n_title="osd_rssi_dbm_alarm_HELP"></div>
<label for="rssi_dbm_alarm" class="osd_use_crsf">
<input id="rssi_dbm_alarm" data-setting="osd_rssi_dbm_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_rssi_dbm_alarm"></span>
</label>
<div for="snr_alarm" class="helpicon cf_tip osd_use_crsf" data-i18n_title="osdalarmSNR_HELP"></div>
<label for="snr_alarm" class="osd_use_crsf">
<input id="snr_alarm" data-setting="osd_snr_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_snr_alarm"></span>
</label>
<label for="osd_alt_alarm">
<input id="osd_alt_alarm" data-setting="osd_alt_alarm" data-unit="m" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_alt_alarm"></span>
@ -159,26 +171,26 @@
<input id="osd_dist_alarm" data-setting="osd_dist_alarm" data-unit="m-lrg" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_dist_alarm"></span>
</label>
<div for="osd_gforce_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_HELP"></div>
<label for="osd_gforce_alarm">
<input id="osd_gforce_alarm" data-setting="osd_gforce_alarm" data-setting-multiplier="1" type="number" data-step="0.1" />
<span data-i18n="osd_gforce_alarm"></span>
<div for="osd_airspeed_min_alarm" class="helpicon cf_tip osd_use_airspeed_alarm" data-i18n_title="osd_airspeed_min_alarm_HELP"></div>
<label for="osd_airspeed_min_alarm" class="osd_use_airspeed_alarm">
<input id="osd_airspeed_min_alarm" data-setting="osd_airspeed_alarm_min" data-unit="cms" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_airspeed_min_alarm"></span>
</label>
<div for="osd_gforce_axis_alarm_min" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MIN_HELP"></div>
<label for="osd_gforce_axis_alarm_min">
<input id="osd_gforce_axis_alarm_min" data-setting="osd_gforce_axis_alarm_min" data-setting-multiplier="1" type="number" data-step="0.1" />
<span data-i18n="osd_gforce_axis_alarm_min"></span>
</label>
<div for="osd_gforce_axis_alarm_max" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MAX_HELP"></div>
<label for="osd_gforce_axis_alarm_max">
<input id="osd_gforce_axis_alarm_max" data-setting="osd_gforce_axis_alarm_max" data-setting-multiplier="1" type="number" data-step="0.1" />
<span data-i18n="osd_gforce_axis_alarm_max"></span>
<div for="osd_airspeed_max_alarm" class="helpicon cf_tip osd_use_airspeed_alarm" data-i18n_title="osd_airspeed_max_alarm_HELP"></div>
<label for="osd_airspeed_max_alarm" class="osd_use_airspeed_alarm">
<input id="osd_airspeed_max_alarm" data-setting="osd_airspeed_alarm_max" data-unit="cms" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_airspeed_max_alarm"></span>
</label>
<div for="osd_current_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmCURRENT_HELP"></div>
<label for="osd_current_alarm">
<input id="osd_current_alarm" data-setting="osd_current_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_current_alarm"></span>
</label>
<label for="time_alarm">
<input id="osd_time_alarm" data-setting="osd_time_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_time_alarm"></span>
</label>
<label for="imu_temp_alarm_min">
<input id="imu_temp_alarm_min" data-setting="osd_imu_temp_alarm_min" data-unit="decidegc" data-setting-multiplier="1" type="number" data-step="0.5" />
<span data-i18n="osd_imu_temp_alarm_min"></span>
@ -187,36 +199,37 @@
<input id="imu_temp_alarm_max" data-setting="osd_imu_temp_alarm_max" data-unit="decidegc" data-setting-multiplier="1" type="number" data-step="0.5" />
<span data-i18n="osd_imu_temp_alarm_max"></span>
</label>
<label for="baro_temp_alarm_min">
<label for="baro_temp_alarm_min" class="osd_use_baro_temp_alarm">
<input id="baro_temp_alarm_min" data-setting="osd_baro_temp_alarm_min" data-unit="decidegc" data-setting-multiplier="1" type="number" data-step="0.5" />
<span data-i18n="osd_baro_temp_alarm_min"></span>
</label>
<label for="baro_temp_alarm_max">
<label for="baro_temp_alarm_max" class="osd_use_baro_temp_alarm">
<input id="baro_temp_alarm_max" data-setting="osd_baro_temp_alarm_max" data-unit="decidegc" data-setting-multiplier="1" type="number" data-step="0.5" />
<span data-i18n="osd_baro_temp_alarm_max"></span>
</label>
<label for="esc_temp_alarm_min">
<label for="esc_temp_alarm_min" class="osd_use_esc_telemetry">
<input id="esc_temp_alarm_min" data-setting="osd_esc_temp_alarm_min" data-unit="decidegc" data-setting-multiplier="1" type="number" data-step="0.5" />
<span data-i18n="osd_esc_temp_alarm_min"></span>
</label>
<label for="esc_temp_alarm_max">
<label for="esc_temp_alarm_max" class="osd_use_esc_telemetry">
<input id="esc_temp_alarm_max" data-setting="osd_esc_temp_alarm_max" data-unit="decidegc" data-setting-multiplier="1" type="number" data-step="0.5" />
<span data-i18n="osd_esc_temp_alarm_max"></span>
</label>
<div for="link_quality_alarm" class="helpicon cf_tip" data-i18n_title="osdalarmLQ_HELP"></div>
<label for="link_quality_alarm">
<input id="link_quality_alarm" data-setting="osd_link_quality_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_link_quality_alarm"></span>
<div for="osd_gforce_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_HELP"></div>
<label for="osd_gforce_alarm">
<input id="osd_gforce_alarm" data-setting="osd_gforce_alarm" data-setting-multiplier="1" type="number" data-step="0.1" />
<span data-i18n="osd_gforce_alarm"></span>
</label>
<div for="rssi_dbm_alarm" class="helpicon cf_tip" data-i18n_title="osd_rssi_dbm_alarm_HELP"></div>
<label for="rssi_dbm_alarm">
<input id="rssi_dbm_alarm" data-setting="osd_rssi_dbm_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_rssi_dbm_alarm"></span>
<div for="osd_gforce_axis_alarm_min" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MIN_HELP"></div>
<label for="osd_gforce_axis_alarm_min">
<input id="osd_gforce_axis_alarm_min" data-setting="osd_gforce_axis_alarm_min" data-setting-multiplier="1" type="number" data-step="0.1" />
<span data-i18n="osd_gforce_axis_alarm_min"></span>
</label>
<div for="snr_alarm" class="helpicon cf_tip" data-i18n_title="osdalarmSNR_HELP"></div>
<label for="snr_alarm">
<input id="snr_alarm" data-setting="osd_snr_alarm" data-setting-multiplier="1" type="number" data-step="1" />
<span data-i18n="osd_snr_alarm"></span>
<div for="osd_gforce_axis_alarm_max" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MAX_HELP"></div>
<label for="osd_gforce_axis_alarm_max">
<input id="osd_gforce_axis_alarm_max" data-setting="osd_gforce_axis_alarm_max" data-setting-multiplier="1" type="number" data-step="0.1" />
<span data-i18n="osd_gforce_axis_alarm_max"></span>
</label>
</div>
</div>

@ -124,8 +124,12 @@ SYM.AH_CROSSHAIRS = new Array(0x166, 0x1A4, new Array(0x190, 0x191, 0x192), new
var video_type = null;
var FONT = FONT || {};
var useESCTelemetry = false;
var useBaro = false;
var useCRSFRx = false;
var usePitot = false;
var FONT = FONT || {};
FONT.initData = function () {
if (FONT.data) {
return;
@ -868,7 +872,7 @@ OSD.constants = {
name: 'AIR_SPEED',
id: 27,
enabled: function() {
return SENSOR_CONFIG.pitot != 0;
return usePitot;
},
preview: function(osd_data) {
var speed;
@ -893,7 +897,7 @@ OSD.constants = {
name: 'AIR_MAX_SPEED',
id: 127,
enabled: function() {
return SENSOR_CONFIG.pitot != 0;
return usePitot;
},
preview: function(osd_data) {
// 3 chars
@ -923,6 +927,9 @@ OSD.constants = {
name: 'ESC_RPM',
id: 106,
min_version: '2.3.0',
enabled: function() {
return useESCTelemetry;
},
preview: function(){
let rpmPreview = '112974'.substr((6 - parseInt(Settings.getInputValue('osd_esc_rpm_precision'))));
return FONT.symbol(SYM.RPM) + rpmPreview;
@ -988,6 +995,9 @@ OSD.constants = {
{
name: 'BARO_TEMPERATURE',
id: 87,
enabled: function() {
return useBaro;
},
preview: function(osd_data) {
switch (OSD.data.preferences.units) {
case 0: // Imperial
@ -1001,6 +1011,9 @@ OSD.constants = {
name: 'ESC_TEMPERATURE',
id: 107,
min_version: '2.5.0',
enabled: function() {
return useESCTelemetry;
},
preview: function(osd_data) {
switch (OSD.data.preferences.units) {
case 0: // Imperial
@ -1668,6 +1681,9 @@ OSD.constants = {
},
{
name: 'osdGroupCRSF',
enabled: function() {
return useCRSFRx;
},
items: [
{
name: 'CRSF_RSSI_DBM',
@ -2638,13 +2654,14 @@ OSD.GUI.updateFields = function() {
})
);
}
// TODO: If we add more switches somewhere else, this
// needs to be called after all of them have been set up
GUI.switchery();
// Update the OSD preview
refreshOSDSwitchIndicators();
updateCraftName();
// Update the OSD preview
refreshOSDSwitchIndicators();
updateCraftName();
};
OSD.GUI.removeBottomLines = function(){
@ -2752,6 +2769,13 @@ OSD.GUI.updateDjiView = function(on) {
OSD.GUI.updateDjiMessageElements($('#useCraftnameForMessages').is(':checked'));
};
OSD.GUI.updateAlarms = function() {
$(".osd_use_airspeed_alarm").toggle(usePitot);
$(".osd_use_baro_temp_alarm").toggle(useBaro);
$(".osd_use_esc_telemetry").toggle(useESCTelemetry);
$(".osd_use_crsf").toggle(useCRSFRx);
};
OSD.GUI.updateMapPreview = function(mapCenter, name, directionSymbol, centerSymbol) {
if ($('input[name="' + name + '"]').prop('checked')) {
var mapInitialX = OSD.data.display_size.x - 2;
@ -2962,6 +2986,7 @@ OSD.GUI.updateAll = function() {
layouts.hide();
layouts.off('change');
}
$('.osd_search').on('input', function() {
OSD.GUI.updateFields();
});
@ -2972,6 +2997,7 @@ OSD.GUI.updateAll = function() {
OSD.GUI.updatePreviews();
OSD.GUI.updateGuidesView(false);
OSD.GUI.updateDjiView(OSD.data.isDjiHdFpv && !OSD.data.isMspDisplay);
OSD.GUI.updateAlarms();
};
OSD.GUI.update = function() {
@ -3201,9 +3227,28 @@ TABS.osd.initialize = function (callback) {
OSD.GUI.updateDjiMessageElements(this.checked);
});
// Update RX data for Crossfire detection
mspHelper.loadRxConfig(function() {
useCRSFRx = (RX_CONFIG.serialrx_provider == 6);
});
// Get status of ESC Telemetry
useESCTelemetry = false;
MSP.send_message(MSPCodes.MSP2_CF_SERIAL_CONFIG, false, false, function() {
for (var portIndex = 0; portIndex < SERIAL_CONFIG.ports.length; portIndex++) {
var serialPort = SERIAL_CONFIG.ports[portIndex];
if (serialPort.functions.indexOf("ESC") >= 0) {
useESCTelemetry = true;
break;
}
}
});
// Update SENSOR_CONFIG, used to detect
// OSD_AIR_SPEED
mspHelper.loadSensorConfig(function () {
useBaro = (SENSOR_CONFIG.barometer != 0);
usePitot = (SENSOR_CONFIG.pitot != 0);
GUI.content_ready(callback);
});
}));
@ -3230,7 +3275,7 @@ function refreshOSDSwitchIndicators() {
}
OSD.GUI.updatePreviews();
}
};
function updateCraftName() {
let generalGroup = OSD.constants.ALL_DISPLAY_GROUPS.filter(function(e) {
@ -3254,7 +3299,7 @@ function updateCraftName() {
}
OSD.GUI.updatePreviews();
}
};
TABS.osd.cleanup = function (callback) {
PortHandler.flush_callbacks();

Loading…
Cancel
Save