Firmware info on setup tab (#3369)

* More messages

* caps API

* More buiold info

* buildinfo

* buildinfo test

* Added build options

* Added build options

* Change of label

* chang loop

* Add buildkey and sensors

* Show config and log based on buildkey
master
HThuren 2023-03-16 14:39:05 +01:00 committed by GitHub
parent 9705c1e040
commit 36628523db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 219 additions and 52 deletions

View File

@ -865,7 +865,7 @@
"message": "Magnetometer" "message": "Magnetometer"
}, },
"initialSetupInfoHead": { "initialSetupInfoHead": {
"message": "Info" "message": "System info"
}, },
"initialSetupBattery": { "initialSetupBattery": {
"message": "Battery voltage:" "message": "Battery voltage:"
@ -888,6 +888,9 @@
"initialSetupRSSI": { "initialSetupRSSI": {
"message": "RSSI:" "message": "RSSI:"
}, },
"initialSetupSensorHardware": {
"message": "Sensors:"
},
"initialSetupRSSIValue": { "initialSetupRSSIValue": {
"message": "$1 %" "message": "$1 %"
}, },
@ -1014,6 +1017,30 @@
"initialSetupInstrumentsHead": { "initialSetupInstrumentsHead": {
"message": "Instruments" "message": "Instruments"
}, },
"initialSetupInfoAPIversion": {
"message": "MSP API:"
},
"initialSetupInfoBuild": {
"message": "Firmware info"
},
"initialSetupInfoBuildDate": {
"message": "Build date:"
},
"initialSetupInfoBuildInfo": {
"message": "Build info:"
},
"initialSetupInfoBuildInfoConfig": {
"message": "Build config"
},
"initialSetupInfoBuildInfoLog": {
"message": "Build log"
},
"initialSetupInfoBuildOptions": {
"message": "Build Options:"
},
"initialSetupInfoBuildOptionsEmpty": {
"message": "Local Build - no Defines"
},
"initialSetupButtonSave": { "initialSetupButtonSave": {
"message": "Save" "message": "Save"
}, },

View File

@ -1731,6 +1731,13 @@ dialog {
color: #fff; color: #fff;
font-size: 10px; font-size: 10px;
} }
.buildKeyInfoClass {
background-color: #ffcc3f;
padding: 2px 5px;
border-radius: 3px;
color: #272727;
font-size: 10px;
}
.cf_tooltiptext { .cf_tooltiptext {
display: none; display: none;
} }

View File

@ -197,7 +197,14 @@ setup.initialize = function (callback) {
gpsLon_e = $('.gpsLon'), gpsLon_e = $('.gpsLon'),
roll_e = $('dd.roll'), roll_e = $('dd.roll'),
pitch_e = $('dd.pitch'), pitch_e = $('dd.pitch'),
heading_e = $('dd.heading'); heading_e = $('dd.heading'),
// Sensor info
sensor_e = $('.sensor-hw'),
// Firmware info
msp_api_e = $('.api-version'),
build_date_e = $('.build-date'),
build_info_e = $('.build-info'),
build_opt_e = $('.build-options');
// DISARM FLAGS // DISARM FLAGS
// We add all the arming/disarming flags available, and show/hide them if needed. // We add all the arming/disarming flags available, and show/hide them if needed.
@ -265,7 +272,99 @@ setup.initialize = function (callback) {
} }
}; };
const showSensorInfo = function() {
let accElements = [
'DEFAULT',
'NONE',
'ADXL345',
'MPU6050',
'MMA8452',
'BMA280',
'LSM303DLHC',
'MPU6000',
'MPU6500',
'MPU9250',
'ICM20601',
'ICM20602',
'ICM20608G',
'ICM20649',
'ICM20689',
'ICM42605',
'ICM42688P',
'BMI160',
'BMI270',
'LSM6DSO',
'VIRTUAL',
];
let baroElements = [
'DEFAULT',
'NONE',
'BMP085',
'MS5611',
'BMP280',
'LPS',
'QMP6988',
'BMP388',
'DPS310',
'2SMPB_02B',
'VIRTUAL',
];
let magElements = [
'DEFAULT',
'NONE',
'HMC5883',
'AK8975',
'AK8963',
'QMC5883',
'LIS3MDL',
'MPU925X_AK8963',
];
MSP.send_message(MSPCodes.MSP_SENSOR_CONFIG, false, false, function() {
// Sensor info
sensor_e.text('');
if(have_sensor(FC.CONFIG.activeSensors, "acc") && FC.SENSOR_CONFIG.acc_hardware > 1) {
sensor_e.append(i18n.getMessage('sensorStatusAccelShort'), ': ', accElements[[FC.SENSOR_CONFIG.acc_hardware]], ', ');
}
if(have_sensor(FC.CONFIG.activeSensors, "baro") && FC.SENSOR_CONFIG.baro_hardware > 1) {
sensor_e.append(i18n.getMessage('sensorStatusBaroShort'), ': ', baroElements[[FC.SENSOR_CONFIG.baro_hardware]], ', ');
}
if(have_sensor(FC.CONFIG.activeSensors, "mag") && FC.SENSOR_CONFIG.mag_hardware > 1) {
sensor_e.append(i18n.getMessage('sensorStatusMagShort'), ': ', magElements[[FC.SENSOR_CONFIG.mag_hardware]]);
}
});
};
const showFirmwareInfo = function() {
MSP.send_message(MSPCodes.MSP_STATUS_EX, false, false, function() {
// Firmware info
msp_api_e.text([FC.CONFIG.apiVersion]);
build_date_e.text([FC.CONFIG.buildInfo]);
if(FC.CONFIG.buildInfo.length > 0) {
const buildRoot = `https://build.betaflight.com/api/builds/${FC.CONFIG.buildKey}`;
const buildConfig = `<span class="buildKeyInfoClass" title="${i18n.getMessage('initialSetupInfoBuildInfoConfig')}: ${FC.CONFIG.buildKey}">
<a href="${buildRoot}/json" target="_blank">${i18n.getMessage('initialSetupInfoBuildInfoConfig')}</a></span>`;
const buildLog = `<span class="buildKeyInfoClass" title="${i18n.getMessage('initialSetupInfoBuildInfoLog')}: ${FC.CONFIG.buildKey}">
<a href="${buildRoot}/log" target="_blank">${i18n.getMessage('initialSetupInfoBuildInfoLog')}</a></span>`;
build_info_e.html(`${buildConfig} &nbsp ${buildLog}`);
}
if(FC.CONFIG.buildOptions.length > 0) {
build_opt_e.text = "";
for (const buildOption of FC.CONFIG.buildOptions) {
build_opt_e.append(buildOption, ' ');
}
} else {
build_opt_e.text(i18n.getMessage('initialSetupInfoBuildOptionsEmpty'));
}
});
};
prepareDisarmFlags(); prepareDisarmFlags();
showSensorInfo();
showFirmwareInfo();
function get_slow_data() { function get_slow_data() {
@ -279,13 +378,7 @@ setup.initialize = function (callback) {
}); });
MSP.send_message(MSPCodes.MSP_ANALOG, false, false, function () { // GPS info
bat_voltage_e.text(i18n.getMessage('initialSetupBatteryValue', [FC.ANALOG.voltage]));
bat_mah_drawn_e.text(i18n.getMessage('initialSetupBatteryMahValue', [FC.ANALOG.mAhdrawn]));
bat_mah_drawing_e.text(i18n.getMessage('initialSetupBatteryAValue', [FC.ANALOG.amperage.toFixed(2)]));
rssi_e.text(i18n.getMessage('initialSetupRSSIValue', [((FC.ANALOG.rssi / 1023) * 100).toFixed(0)]));
});
if (have_sensor(FC.CONFIG.activeSensors, 'gps')) { if (have_sensor(FC.CONFIG.activeSensors, 'gps')) {
MSP.send_message(MSPCodes.MSP_RAW_GPS, false, false, function () { MSP.send_message(MSPCodes.MSP_RAW_GPS, false, false, function () {
gpsFix_e.html((FC.GPS_DATA.fix) ? i18n.getMessage('gpsFixTrue') : i18n.getMessage('gpsFixFalse')); gpsFix_e.html((FC.GPS_DATA.fix) ? i18n.getMessage('gpsFixTrue') : i18n.getMessage('gpsFixFalse'));
@ -294,6 +387,14 @@ setup.initialize = function (callback) {
gpsLon_e.text(`${(FC.GPS_DATA.lon / 10000000).toFixed(4)} deg`); gpsLon_e.text(`${(FC.GPS_DATA.lon / 10000000).toFixed(4)} deg`);
}); });
} }
// System info
MSP.send_message(MSPCodes.MSP_ANALOG, false, false, function () {
bat_voltage_e.text(i18n.getMessage('initialSetupBatteryValue', [FC.ANALOG.voltage]));
bat_mah_drawn_e.text(i18n.getMessage('initialSetupBatteryMahValue', [FC.ANALOG.mAhdrawn]));
bat_mah_drawing_e.text(i18n.getMessage('initialSetupBatteryAValue', [FC.ANALOG.amperage.toFixed(2)]));
rssi_e.text(i18n.getMessage('initialSetupRSSIValue', [((FC.ANALOG.rssi / 1023) * 100).toFixed(0)]));
});
} }
function get_fast_data() { function get_fast_data() {

View File

@ -88,35 +88,26 @@
</div> </div>
</div> </div>
<div class="grid-col col3"> <div class="grid-col col3">
<div class="gui_box grey"> <div class="gui_box grey instrumentsbox" align="center">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title" i18n="initialSetupInstrumentsHead"></div>
</div>
<span id="attitude"></span> <span id="heading"></span>
</div>
<div class="gui_box grey backupRestore">
<div class="gui_box_titlebar"> <div class="gui_box_titlebar">
<div class="spacer_box_title" i18n="initialSetupInfoHead"></div> <div class="spacer_box_title" i18n="initialSetupBackupRestoreHeader"></div>
</div> </div>
<div class="spacer_box"> <div class="spacer_box">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="cf_table"> <div class="default_btn">
<tbody> <a class="backup" href="#" i18n="initialSetupButtonBackup"></a>
<tr> </div>
<td id="arming-disable-flag" i18n="initialSetupArmingDisableFlags" class="cf_tip"></td> <div class="default_btn">
<td class="arming-disable-flags"></td> <a class="restore" href="#" i18n="initialSetupButtonRestore"></a>
</tr> </div>
<tr> <div class="cell_setup">
<td i18n="initialSetupBattery"></td> <span i18n="initialSetupBackupRestoreText"></span>
<td class="bat-voltage">0 V</td> </div>
</tr>
<tr>
<td i18n="initialSetupDrawn"></td>
<td class="bat-mah-drawn">0 mAh</td>
</tr>
<tr>
<td i18n="initialSetupDrawing"></td>
<td class="bat-mah-drawing">0.00 A</td>
</tr>
<tr class="noboarder">
<td i18n="initialSetupRSSI"></td>
<td class="rssi">0 %</td>
</tr>
</tbody>
</table>
</div> </div>
</div> </div>
<div class="gui_box grey"> <div class="gui_box grey">
@ -146,26 +137,67 @@
</table> </table>
</div> </div>
</div> </div>
<div class="gui_box grey instrumentsbox" align="center"> <div class="gui_box grey">
<div class="gui_box_titlebar" align="left">
<div class="spacer_box_title" i18n="initialSetupInstrumentsHead"></div>
</div>
<span id="attitude"></span> <span id="heading"></span>
</div>
<div class="gui_box grey backupRestore">
<div class="gui_box_titlebar"> <div class="gui_box_titlebar">
<div class="spacer_box_title" i18n="initialSetupBackupRestoreHeader"></div> <div class="spacer_box_title" i18n="initialSetupInfoHead"></div>
</div> </div>
<div class="spacer_box"> <div class="spacer_box">
<div class="default_btn"> <table width="100%" border="0" cellpadding="0" cellspacing="0" class="cf_table">
<a class="backup" href="#" i18n="initialSetupButtonBackup"></a> <tbody>
</div> <tr>
<div class="default_btn"> <td id="arming-disable-flag" i18n="initialSetupArmingDisableFlags" class="cf_tip"></td>
<a class="restore" href="#" i18n="initialSetupButtonRestore"></a> <td class="arming-disable-flags"></td>
</div> </tr>
<div class="cell_setup"> <tr>
<span i18n="initialSetupBackupRestoreText"></span> <td i18n="initialSetupBattery"></td>
</div> <td class="bat-voltage">0 V</td>
</tr>
<tr>
<td i18n="initialSetupDrawn"></td>
<td class="bat-mah-drawn">0 mAh</td>
</tr>
<tr>
<td i18n="initialSetupDrawing"></td>
<td class="bat-mah-drawing">0.00 A</td>
</tr>
<tr class="noboarder">
<td i18n="initialSetupRSSI"></td>
<td class="rssi">0 %</td>
</tr>
<tr>
<td id="sensor-hw" i18n="initialSetupSensorHardware"></td>
<td class="sensor-hw"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" i18n="initialSetupInfoBuild"></div>
</div>
<div class="spacer_box">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="cf_table">
<tbody>
<tr>
<td id="api-version" i18n="initialSetupInfoAPIversion"></td>
<td class="api-version"></td>
</tr>
<tr>
<td id="build-date" i18n="initialSetupInfoBuildDate"></td>
<td class="build-date"></td>
</tr>
</tr>
<tr>
<td id="build-info" i18n="initialSetupInfoBuildInfo"></td>
<td class="build-info"></td>
</tr>
<tr>
<td id="build-options" i18n="initialSetupInfoBuildOptions"></td>
<td class="build-options"></td>
</tr>
</tbody>
</table>
</div> </div>
</div> </div>
</div> </div>