CF/BF - Update for API v0.35.0 - OSD SLAVE.
parent
158b36cd9c
commit
0520f0d473
3
js/fc.js
3
js/fc.js
|
@ -74,7 +74,8 @@ var FC = {
|
||||||
accelerometerTrims: [0, 0],
|
accelerometerTrims: [0, 0],
|
||||||
name: '',
|
name: '',
|
||||||
numProfiles: 3,
|
numProfiles: 3,
|
||||||
rateProfile: 0
|
rateProfile: 0,
|
||||||
|
boardType: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
FEATURE_CONFIG = {
|
FEATURE_CONFIG = {
|
||||||
|
|
14
js/gui.js
14
js/gui.js
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var TABS = {}; // filled by individual tab js file
|
var TABS = {}; // filled by individual tab js file
|
||||||
|
@ -12,12 +13,14 @@ var GUI_control = function () {
|
||||||
this.operating_system;
|
this.operating_system;
|
||||||
this.interval_array = [];
|
this.interval_array = [];
|
||||||
this.timeout_array = [];
|
this.timeout_array = [];
|
||||||
|
|
||||||
this.defaultAllowedTabsWhenDisconnected = [
|
this.defaultAllowedTabsWhenDisconnected = [
|
||||||
'landing',
|
'landing',
|
||||||
'firmware_flasher',
|
'firmware_flasher',
|
||||||
'help'
|
'help'
|
||||||
];
|
];
|
||||||
this.defaultAllowedTabsWhenConnected = [
|
this.defaultAllowedFCTabsWhenConnected = [
|
||||||
|
'setup',
|
||||||
'failsafe',
|
'failsafe',
|
||||||
'transponder',
|
'transponder',
|
||||||
'osd',
|
'osd',
|
||||||
|
@ -37,7 +40,14 @@ var GUI_control = function () {
|
||||||
'receiver',
|
'receiver',
|
||||||
'sensors',
|
'sensors',
|
||||||
'servos',
|
'servos',
|
||||||
'setup'
|
];
|
||||||
|
this.defaultAllowedOSDTabsWhenConnected = [
|
||||||
|
'setup',
|
||||||
|
'osd',
|
||||||
|
'power',
|
||||||
|
'sensors',
|
||||||
|
'transponder',
|
||||||
|
'cli',
|
||||||
];
|
];
|
||||||
this.allowedTabs = this.defaultAllowedTabsWhenDisconnected;
|
this.allowedTabs = this.defaultAllowedTabsWhenDisconnected;
|
||||||
|
|
||||||
|
|
|
@ -611,6 +611,12 @@ MspHelper.prototype.process_data = function(dataHandler) {
|
||||||
}
|
}
|
||||||
CONFIG.boardIdentifier = identifier;
|
CONFIG.boardIdentifier = identifier;
|
||||||
CONFIG.boardVersion = data.readU16();
|
CONFIG.boardVersion = data.readU16();
|
||||||
|
if (semver.gte(CONFIG.apiVersion, "1.35.0")) {
|
||||||
|
CONFIG.boardType = data.readU8();
|
||||||
|
} else {
|
||||||
|
CONFIG.boardType = 0;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSPCodes.MSP_NAME:
|
case MSPCodes.MSP_NAME:
|
||||||
|
|
|
@ -263,9 +263,32 @@ function onConnect() {
|
||||||
GUI.timeout_remove('connecting'); // kill connecting timer
|
GUI.timeout_remove('connecting'); // kill connecting timer
|
||||||
$('div#connectbutton a.connect_state').text(chrome.i18n.getMessage('disconnect')).addClass('active');
|
$('div#connectbutton a.connect_state').text(chrome.i18n.getMessage('disconnect')).addClass('active');
|
||||||
$('div#connectbutton a.connect').addClass('active');
|
$('div#connectbutton a.connect').addClass('active');
|
||||||
|
|
||||||
$('#tabs ul.mode-disconnected').hide();
|
$('#tabs ul.mode-disconnected').hide();
|
||||||
$('#tabs ul.mode-connected-cli').show();
|
$('#tabs ul.mode-connected-cli').show();
|
||||||
|
|
||||||
|
|
||||||
|
// show only appropriate tabs
|
||||||
|
$('#tabs ul.mode-connected li').hide();
|
||||||
|
$('#tabs ul.mode-connected li').filter(function (index) {
|
||||||
|
var classes = $(this).attr("class").split(/\s+/);
|
||||||
|
var found = false;
|
||||||
|
$.each(GUI.allowedTabs, function (index, value) {
|
||||||
|
var tabName = "tab_" + value;
|
||||||
|
if ($.inArray(tabName, classes) >= 0) {
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (CONFIG.boardType == 0) {
|
||||||
|
if (classes.indexOf("osd-required") >= 0) {
|
||||||
|
found = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}).show();
|
||||||
|
|
||||||
if (CONFIG.flightControllerVersion !== '') {
|
if (CONFIG.flightControllerVersion !== '') {
|
||||||
FEATURE_CONFIG.features = new Features(CONFIG);
|
FEATURE_CONFIG.features = new Features(CONFIG);
|
||||||
|
|
||||||
|
@ -277,8 +300,10 @@ function onConnect() {
|
||||||
MSP.send_message(MSPCodes.MSP_STATUS_EX, false, false);
|
MSP.send_message(MSPCodes.MSP_STATUS_EX, false, false);
|
||||||
MSP.send_message(MSPCodes.MSP_DATAFLASH_SUMMARY, false, false);
|
MSP.send_message(MSPCodes.MSP_DATAFLASH_SUMMARY, false, false);
|
||||||
|
|
||||||
|
if (CONFIG.boardType == 0 || CONFIG.boardType == 2) {
|
||||||
startLiveDataRefreshTimer();
|
startLiveDataRefreshTimer();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var sensor_state = $('#sensor-status');
|
var sensor_state = $('#sensor-status');
|
||||||
sensor_state.show();
|
sensor_state.show();
|
||||||
|
@ -349,7 +374,7 @@ function sensor_status(sensors_detected) {
|
||||||
$('.accicon', e_sensor_status).removeClass('active');
|
$('.accicon', e_sensor_status).removeClass('active');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (true) { // Gyro status is not reported by FC
|
if (CONFIG.boardType == 0 || CONFIG.boardType == 2) { // Gyro status is not reported by FC
|
||||||
$('.gyro', e_sensor_status).addClass('on');
|
$('.gyro', e_sensor_status).addClass('on');
|
||||||
$('.gyroicon', e_sensor_status).addClass('active');
|
$('.gyroicon', e_sensor_status).addClass('active');
|
||||||
} else {
|
} else {
|
||||||
|
|
3
main.js
3
main.js
|
@ -466,12 +466,13 @@ function updateTabList(features) {
|
||||||
} else {
|
} else {
|
||||||
$('#tabs ul.mode-connected li.tab_transponder').hide();
|
$('#tabs ul.mode-connected li.tab_transponder').hide();
|
||||||
}
|
}
|
||||||
|
/* FIXME this approach doesn't work for OSD SLAVE boards as they don't have an 'OSD' feature.
|
||||||
if (features.isEnabled('OSD')) {
|
if (features.isEnabled('OSD')) {
|
||||||
$('#tabs ul.mode-connected li.tab_osd').show();
|
$('#tabs ul.mode-connected li.tab_osd').show();
|
||||||
} else {
|
} else {
|
||||||
$('#tabs ul.mode-connected li.tab_osd').hide();
|
$('#tabs ul.mode-connected li.tab_osd').hide();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
function zeroPad(value, width) {
|
function zeroPad(value, width) {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<p class="note">Note that some flight controllers have an onboard <a href="https://www.youtube.com/watch?v=ikKH_6SQ-Tk" target="_blank">MinimOSD</a> that can be flashed and configured with <a href="https://github.com/ShikOfTheRa/scarab-osd/releases/latest" target="_blank">scarab-osd</a>, however the MinimOSD cannot be configured through this interface.</p>
|
<p class="note">Note that some flight controllers have an onboard <a href="https://www.youtube.com/watch?v=ikKH_6SQ-Tk" target="_blank">MinimOSD</a> that can be flashed and configured with <a href="https://github.com/ShikOfTheRa/scarab-osd/releases/latest" target="_blank">scarab-osd</a>, however the MinimOSD cannot be configured through this interface.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="supported hide">
|
<div class="supported hide">
|
||||||
<div class="cf_column third_left elements">
|
<div class="cf_column third_left elements requires-osd-feature">
|
||||||
<div class="spacer_right">
|
<div class="spacer_right">
|
||||||
<div class="gui_box grey">
|
<div class="gui_box grey">
|
||||||
<div
|
<div
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cf_column twothird">
|
<div class="cf_column twothird">
|
||||||
<div class="gui_box grey preview" style="float: left;">
|
<div class="gui_box grey preview requires-osd-feature" style="float: left;">
|
||||||
<div class="gui_box_titlebar image">
|
<div class="gui_box_titlebar image">
|
||||||
<div class="spacer_box_title">
|
<div class="spacer_box_title">
|
||||||
Preview <span>(drag to change position)</span><span class="preview-logo cf_tip" title="Show or hide the logo in the preview window. This will not change any settings on the flight controller."></span>
|
Preview <span>(drag to change position)</span><span class="preview-logo cf_tip" title="Show or hide the logo in the preview window. This will not change any settings on the flight controller."></span>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cf_column third_right" style="width: calc(100% - 377px);">
|
<div class="cf_column third_right" style="width: calc(100% - 377px);">
|
||||||
<div class="gui_box grey">
|
<div class="gui_box grey requires-max7456">
|
||||||
<div class="gui_box_titlebar">
|
<div class="gui_box_titlebar">
|
||||||
<div class="spacer_box_title">Video
|
<div class="spacer_box_title">Video
|
||||||
Format
|
Format
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
<div class="video-types"></div>
|
<div class="video-types"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="gui_box grey units-container" style="display:none;">
|
<div class="gui_box grey units-container requires-osd-feature" style="display:none;">
|
||||||
<div class="gui_box_titlebar">
|
<div class="gui_box_titlebar">
|
||||||
<div class="spacer_box_title">Units
|
<div class="spacer_box_title">Units
|
||||||
</div>
|
</div>
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
<div class="units"></div>
|
<div class="units"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="gui_box grey alarms-container" style="display:none;">
|
<div class="gui_box grey alarms-container requires-osd-feature" style="display:none;">
|
||||||
<div class="gui_box_titlebar">
|
<div class="gui_box_titlebar">
|
||||||
<div class="spacer_box_title">
|
<div class="spacer_box_title">
|
||||||
Alarms
|
Alarms
|
||||||
|
@ -117,10 +117,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_toolbar supported hide" style="left:0;">
|
<div class="content_toolbar supported hide" style="left:0;">
|
||||||
<div class="btn">
|
<div class="btn save">
|
||||||
<a class="active save" href="#" >Save</a>
|
<a class="active save" href="#" >Save</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn">
|
<div class="btn requires-max7456">
|
||||||
<a class="fonts" id="fontmanager" href="#" >Font Manager</a>
|
<a class="fonts" id="fontmanager" href="#" >Font Manager</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
36
tabs/osd.js
36
tabs/osd.js
|
@ -556,7 +556,7 @@ OSD.msp = {
|
||||||
},
|
},
|
||||||
encodeOther: function() {
|
encodeOther: function() {
|
||||||
var result = [-1, OSD.data.video_system];
|
var result = [-1, OSD.data.video_system];
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.21.0")) {
|
if (OSD.data.state.haveOsdFeature && semver.gte(CONFIG.apiVersion, "1.21.0")) {
|
||||||
result.push8(OSD.data.unit_mode);
|
result.push8(OSD.data.unit_mode);
|
||||||
// watch out, order matters! match the firmware
|
// watch out, order matters! match the firmware
|
||||||
result.push8(OSD.data.alarms.rssi.value);
|
result.push8(OSD.data.alarms.rssi.value);
|
||||||
|
@ -576,10 +576,12 @@ OSD.msp = {
|
||||||
decode: function(payload) {
|
decode: function(payload) {
|
||||||
var view = payload.data;
|
var view = payload.data;
|
||||||
var d = OSD.data;
|
var d = OSD.data;
|
||||||
d.compiled_in = view.readU8();
|
d.flags = view.readU8();
|
||||||
d.video_system = view.readU8();
|
|
||||||
|
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.21.0")) {
|
if (d.flags > 0) {
|
||||||
|
if (payload.length > 1) {
|
||||||
|
d.video_system = view.readU8();
|
||||||
|
if (semver.gte(CONFIG.apiVersion, "1.21.0") && bit_check(d.flags, 0)) {
|
||||||
d.unit_mode = view.readU8();
|
d.unit_mode = view.readU8();
|
||||||
d.alarms = {};
|
d.alarms = {};
|
||||||
d.alarms['rssi'] = { display_name: 'Rssi', value: view.readU8() };
|
d.alarms['rssi'] = { display_name: 'Rssi', value: view.readU8() };
|
||||||
|
@ -587,7 +589,17 @@ OSD.msp = {
|
||||||
d.alarms['time'] = { display_name: 'Minutes', value: view.readU16() };
|
d.alarms['time'] = { display_name: 'Minutes', value: view.readU16() };
|
||||||
d.alarms['alt'] = { display_name: 'Altitude', value: view.readU16() };
|
d.alarms['alt'] = { display_name: 'Altitude', value: view.readU16() };
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d.state = {};
|
||||||
|
d.state.haveSomeOsd = (d.flags != 0)
|
||||||
|
d.state.haveMax7456Video = bit_check(d.flags, 4) || (d.flags == 1 && semver.lt(CONFIG.apiVersion, "1.34.0"));
|
||||||
|
d.state.haveOsdFeature = bit_check(d.flags, 0) || (d.flags == 1 && semver.lt(CONFIG.apiVersion, "1.34.0"));
|
||||||
|
d.state.isOsdSlave = bit_check(d.flags, 1) && semver.gte(CONFIG.apiVersion, "1.34.0");
|
||||||
|
|
||||||
d.display_items = [];
|
d.display_items = [];
|
||||||
|
|
||||||
// start at the offset from the other fields
|
// start at the offset from the other fields
|
||||||
while (view.offset < view.byteLength && d.display_items.length < OSD.constants.DISPLAY_FIELDS.length) {
|
while (view.offset < view.byteLength && d.display_items.length < OSD.constants.DISPLAY_FIELDS.length) {
|
||||||
var v = null;
|
var v = null;
|
||||||
|
@ -685,14 +697,16 @@ TABS.osd.initialize = function (callback) {
|
||||||
// ask for the OSD config data
|
// ask for the OSD config data
|
||||||
MSP.promise(MSPCodes.MSP_OSD_CONFIG)
|
MSP.promise(MSPCodes.MSP_OSD_CONFIG)
|
||||||
.then(function(info) {
|
.then(function(info) {
|
||||||
|
|
||||||
OSD.chooseFields();
|
OSD.chooseFields();
|
||||||
// fc responsed with short message: osd unsupported
|
|
||||||
if (info.length < 4) {
|
OSD.msp.decode(info);
|
||||||
|
|
||||||
|
if (OSD.data.state.haveSomeOsd == 0) {
|
||||||
$('.unsupported').fadeIn();
|
$('.unsupported').fadeIn();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$('.supported').fadeIn();
|
$('.supported').fadeIn();
|
||||||
OSD.msp.decode(info);
|
|
||||||
|
|
||||||
// show Betaflight logo in preview
|
// show Betaflight logo in preview
|
||||||
var $previewLogo = $('.preview-logo').empty();
|
var $previewLogo = $('.preview-logo').empty();
|
||||||
|
@ -763,6 +777,14 @@ TABS.osd.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!OSD.data.state.haveMax7456Video) {
|
||||||
|
$('.requires-max7456').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!OSD.data.state.haveOsdFeature) {
|
||||||
|
$('.requires-osd-feature').hide();
|
||||||
|
}
|
||||||
|
|
||||||
// display fields on/off and position
|
// display fields on/off and position
|
||||||
var $displayFields = $('.display-fields').empty();
|
var $displayFields = $('.display-fields').empty();
|
||||||
for (let field of OSD.data.display_items) {
|
for (let field of OSD.data.display_items) {
|
||||||
|
|
|
@ -185,6 +185,9 @@ TABS.sensors.initialize = function (callback) {
|
||||||
|
|
||||||
// disable graphs for sensors that are missing
|
// disable graphs for sensors that are missing
|
||||||
var checkboxes = $('.tab-sensors .info .checkboxes input');
|
var checkboxes = $('.tab-sensors .info .checkboxes input');
|
||||||
|
checkboxes.parent().show();
|
||||||
|
|
||||||
|
if (CONFIG.boardType == 0 || CONFIG.boardType == 2) {
|
||||||
if (!have_sensor(CONFIG.activeSensors, 'acc')) {
|
if (!have_sensor(CONFIG.activeSensors, 'acc')) {
|
||||||
checkboxes.eq(1).prop('disabled', true);
|
checkboxes.eq(1).prop('disabled', true);
|
||||||
}
|
}
|
||||||
|
@ -197,6 +200,12 @@ TABS.sensors.initialize = function (callback) {
|
||||||
if (!have_sensor(CONFIG.activeSensors, 'sonar')) {
|
if (!have_sensor(CONFIG.activeSensors, 'sonar')) {
|
||||||
checkboxes.eq(4).prop('disabled', true);
|
checkboxes.eq(4).prop('disabled', true);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i <= 4; i++) {
|
||||||
|
checkboxes.eq(i).prop('disabled', true);
|
||||||
|
checkboxes.eq(i).parent().hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$('.tab-sensors .info .checkboxes input').change(function () {
|
$('.tab-sensors .info .checkboxes input').change(function () {
|
||||||
var enable = $(this).prop('checked');
|
var enable = $(this).prop('checked');
|
||||||
|
|
Loading…
Reference in New Issue