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": { "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." "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": { "osd_gforce_alarm": {
"message": "g force" "message": "g force"
}, },

@ -94,8 +94,8 @@
<select id="plusCodeShort" class="update_preview" data-setting="osd_plus_code_short" data-live="true"></select> <select id="plusCodeShort" class="update_preview" data-setting="osd_plus_code_short" data-live="true"></select>
<span data-i18n="osd_plus_code_short"></span> <span data-i18n="osd_plus_code_short"></span>
</label> </label>
<div for="rpmPrecision" class="helpicon cf_tip" data-i18n_title="osd_esc_rpm_precision_help"></div> <div for="rpmPrecision" class="helpicon cf_tip osd_use_esc_telemetry" data-i18n_title="osd_esc_rpm_precision_help"></div>
<label> <label class="osd_use_esc_telemetry">
<select id="rpmPrecision" class="update_preview" data-setting="osd_esc_rpm_precision" data-live="true"></select> <select id="rpmPrecision" class="update_preview" data-setting="osd_esc_rpm_precision" data-live="true"></select>
<span data-i18n="osd_esc_rpm_precision"></span> <span data-i18n="osd_esc_rpm_precision"></span>
</label> </label>
@ -116,8 +116,8 @@
<select class="update_preview" data-setting="osd_right_sidebar_scroll" data-live="true"></select> <select class="update_preview" data-setting="osd_right_sidebar_scroll" data-live="true"></select>
<span data-i18n="osd_right_sidebar_scroll"></span> <span data-i18n="osd_right_sidebar_scroll"></span>
</label> </label>
<div for="crsfLQFormat" class="helpicon cf_tip" data-i18n_title="osdSettingCRSF_LQ_FORMAT_HELP"></div> <div for="crsfLQFormat" class="helpicon cf_tip osd_use_crsf" data-i18n_title="osdSettingCRSF_LQ_FORMAT_HELP"></div>
<label> <label class="osd_use_crsf">
<select id="crsfLQFormat" class="update_preview" data-setting="osd_crsf_lq_format" data-live="true"></select> <select id="crsfLQFormat" class="update_preview" data-setting="osd_crsf_lq_format" data-live="true"></select>
<span data-i18n="osd_crsf_lq_format"></span> <span data-i18n="osd_crsf_lq_format"></span>
</label> </label>
@ -141,10 +141,22 @@
<input id="osd_rssi_alarm" data-setting="osd_rssi_alarm" data-setting-multiplier="1" type="number" data-step="1" /> <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> <span data-i18n="osd_rssi_alarm"></span>
</label> </label>
<label for="time_alarm"> <div for="link_quality_alarm" class="helpicon cf_tip osd_use_crsf" data-i18n_title="osdalarmLQ_HELP"></div>
<input id="osd_time_alarm" data-setting="osd_time_alarm" data-setting-multiplier="1" type="number" data-step="1" /> <label for="link_quality_alarm" class="osd_use_crsf">
<span data-i18n="osd_time_alarm"></span> <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>
<label for="osd_alt_alarm"> <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" /> <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> <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" /> <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> <span data-i18n="osd_dist_alarm"></span>
</label> </label>
<div for="osd_gforce_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_HELP"></div> <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_gforce_alarm"> <label for="osd_airspeed_min_alarm" class="osd_use_airspeed_alarm">
<input id="osd_gforce_alarm" data-setting="osd_gforce_alarm" data-setting-multiplier="1" type="number" data-step="0.1" /> <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_gforce_alarm"></span> <span data-i18n="osd_airspeed_min_alarm"></span>
</label> </label>
<div for="osd_gforce_axis_alarm_min" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MIN_HELP"></div> <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_gforce_axis_alarm_min"> <label for="osd_airspeed_max_alarm" class="osd_use_airspeed_alarm">
<input id="osd_gforce_axis_alarm_min" data-setting="osd_gforce_axis_alarm_min" data-setting-multiplier="1" type="number" data-step="0.1" /> <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_gforce_axis_alarm_min"></span> <span data-i18n="osd_airspeed_max_alarm"></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>
</label> </label>
<div for="osd_current_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmCURRENT_HELP"></div> <div for="osd_current_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmCURRENT_HELP"></div>
<label for="osd_current_alarm"> <label for="osd_current_alarm">
<input id="osd_current_alarm" data-setting="osd_current_alarm" data-setting-multiplier="1" type="number" data-step="1" /> <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> <span data-i18n="osd_current_alarm"></span>
</label> </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"> <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" /> <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> <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" /> <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> <span data-i18n="osd_imu_temp_alarm_max"></span>
</label> </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" /> <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> <span data-i18n="osd_baro_temp_alarm_min"></span>
</label> </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" /> <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> <span data-i18n="osd_baro_temp_alarm_max"></span>
</label> </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" /> <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> <span data-i18n="osd_esc_temp_alarm_min"></span>
</label> </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" /> <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> <span data-i18n="osd_esc_temp_alarm_max"></span>
</label> </label>
<div for="link_quality_alarm" class="helpicon cf_tip" data-i18n_title="osdalarmLQ_HELP"></div>
<label for="link_quality_alarm"> <div for="osd_gforce_alarm" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_HELP"></div>
<input id="link_quality_alarm" data-setting="osd_link_quality_alarm" data-setting-multiplier="1" type="number" data-step="1" /> <label for="osd_gforce_alarm">
<span data-i18n="osd_link_quality_alarm"></span> <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> </label>
<div for="rssi_dbm_alarm" class="helpicon cf_tip" data-i18n_title="osd_rssi_dbm_alarm_HELP"></div> <div for="osd_gforce_axis_alarm_min" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MIN_HELP"></div>
<label for="rssi_dbm_alarm"> <label for="osd_gforce_axis_alarm_min">
<input id="rssi_dbm_alarm" data-setting="osd_rssi_dbm_alarm" data-setting-multiplier="1" type="number" data-step="1" /> <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_rssi_dbm_alarm"></span> <span data-i18n="osd_gforce_axis_alarm_min"></span>
</label> </label>
<div for="snr_alarm" class="helpicon cf_tip" data-i18n_title="osdalarmSNR_HELP"></div> <div for="osd_gforce_axis_alarm_max" class="helpicon cf_tip" data-i18n_title="osdAlarmGFORCE_AXIS_MAX_HELP"></div>
<label for="snr_alarm"> <label for="osd_gforce_axis_alarm_max">
<input id="snr_alarm" data-setting="osd_snr_alarm" data-setting-multiplier="1" type="number" data-step="1" /> <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_snr_alarm"></span> <span data-i18n="osd_gforce_axis_alarm_max"></span>
</label> </label>
</div> </div>
</div> </div>

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

Loading…
Cancel
Save