Skip to content

Commit 58780ba

Browse files
committed
Merge branch 'BB-Viewer-Cleanup'
2 parents 0819102 + dfcf0d0 commit 58780ba

9 files changed

+186
-58
lines changed

changelog.html

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
</head>
4040
<body>
4141
<div class="log">
42-
<h2> 2.5.8 - Minor Bug Fixes and UI layout</h2>
42+
<h2> 2.5.8 - DShot Logging and Minor Bug Fixes</h2>
4343

4444
<p>Some fixes in response to user observations.</p>
4545

@@ -53,6 +53,10 @@ <h2> 2.5.8 - Minor Bug Fixes and UI layout</h2>
5353
<li>Changelog added to Welcome screen</li>
5454
<li>Add DShot to header dialog and scale motors independently to rcCommand[Throttle]</li>
5555
<li>Update to gyro scale for BF 3.1.0; logged data is now scaled in the flight controller.</li>
56+
<li>Add new debug fields to header and logs.</li>
57+
<li>Add OSD and ESC features options to header dialog.</li>
58+
<li>Add new BF3.1.0 parameters to header dialog.</li>
59+
<li>Add user setting to show raw values on legend.</li>
5660
</ul>
5761

5862
<h2> 2.5.7 - Minor Bug Fixes and Feature Improvements</h2>

index.html

Lines changed: 45 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -767,24 +767,22 @@ <h5 class="modal-title-craft"></h5>
767767
</div>
768768
<div class="spacer_box">
769769
<table class="parameter cf">
770-
<thead>
770+
<thead class="BFPIDController">
771771
<tr>
772772
<th colspan="5">Betaflight PID Controller</th>
773773
</tr>
774774
</thead>
775775
<tbody>
776776
<tr>
777-
<th colspan="2">Weights</th>
778-
<th colspan="2">Acceleration Limit</th>
779-
</tr>
780-
<tr>
781-
<td name="ptermSRateWeight" class="bf-only"><label>P-Term</label><input type="number" step="0.01" min="0" max="999" /></td>
782-
<td name="dtermSetpointWeight" class="bf-only"><label>D-Term </label><input type="number" step="0.01" min="0" max="999" /></td>
783-
<td name="rateAccelLimit" class="bf-only"><label>Roll/Pitch Rate</label><input type="number" step="1" min="0" max="999" /></td>
784-
<td name="yawRateAccelLimit" class="bf-only"><label>Yaw</label><input type="number" step="1" min="0" max="999" /></td>
777+
<td name="ptermSRateWeight" class="bf-only"><label>P-Term<br>&nbsp;</label><input type="number" step="0.01" min="0" max="999" /></td>
778+
<td name="setpointRelaxRatio" class="bf-only"><label>Setpoint Relax<br>Ratio</label><input type="number" step="0.01" min="0" max="999" /></td>
779+
<td name="dtermSetpointWeight" class="bf-only"><label>D-Term Setpoint<br>Weight</label><input type="number" step="0.01" min="0" max="999" /></td>
780+
<td name="rateAccelLimit" class="bf-only"><label>Roll/Pitch Rate<br>Acceleration Limit</label><input type="number" step="1" min="0" max="999" /></td>
781+
<td name="yawRateAccelLimit" class="bf-only"><label>Yaw Rate<br>Acceleration Limit</label><input type="number" step="1" min="0" max="999" /></td>
785782
</tr>
786783
<tr>
787784
<td name="itermThrottleGain" class="bf-only"><label>I-Term Throttle Gain</label><input type="number" step="0.01" min="0" max="999" /></td>
785+
<td name="itermThrottleThreshold" class="bf-only"><label>I-Term Throttle Threshold</label><input type="number" step="0.01" min="0" max="999" /></td>
788786
</tr>
789787
</tbody>
790788
</table>
@@ -917,19 +915,20 @@ <h5 class="modal-title-craft"></h5>
917915
</table>
918916
</div>
919917
</div>
920-
<div class="gui_box grey unknown">
921-
<div class="gui_box_titlebar">
922-
<div class="spacer_box_title">Unknown Header Fields</div>
923-
</div>
924-
<div class="spacer_box">
925-
<table class="parameter cf">
926-
<tr>
927-
<td>Name</td>
928-
<td>Value</td>
929-
</tr>
930-
</table>
931-
</div>
932-
</div>
918+
<div class="gui_box grey debug">
919+
<div class="gui_box_titlebar">
920+
<div class="spacer_box_title">Debug Settings</div>
921+
</div>
922+
<div class="spacer_box">
923+
<table class="parameter cf">
924+
<tbody>
925+
<tr>
926+
<td name='debug_mode'><label>Debug Mode</label><select><!-- list generated here --></select></td>
927+
</tr>
928+
</tbody>
929+
</table>
930+
</div>
931+
</div>
933932
</div>
934933
<div class="cf_column half right">
935934
<div class="spacer_left">
@@ -1094,20 +1093,6 @@ <h5 class="modal-title-craft"></h5>
10941093
</table>
10951094
</div>
10961095
</div>
1097-
<div class="gui_box grey debug">
1098-
<div class="gui_box_titlebar">
1099-
<div class="spacer_box_title">Debug Settings</div>
1100-
</div>
1101-
<div class="spacer_box">
1102-
<table class="parameter cf">
1103-
<tbody>
1104-
<tr>
1105-
<td name='debug_mode'><label>Debug Mode</label><select><!-- list generated here --></select></td>
1106-
</tr>
1107-
</tbody>
1108-
</table>
1109-
</div>
1110-
</div>
11111096
<div class="gui_box grey other">
11121097
<div class="gui_box_titlebar">
11131098
<div class="spacer_box_title">Other Features</div>
@@ -1127,6 +1112,19 @@ <h5 class="modal-title-craft"></h5>
11271112
</table>
11281113
</div>
11291114
</div>
1115+
<div class="gui_box grey unknown">
1116+
<div class="gui_box_titlebar">
1117+
<div class="spacer_box_title">Unknown Header Fields</div>
1118+
</div>
1119+
<div class="spacer_box">
1120+
<table class="parameter cf">
1121+
<tr>
1122+
<td>Name</td>
1123+
<td>Value</td>
1124+
</tr>
1125+
</table>
1126+
</div>
1127+
</div>
11301128
</div>
11311129
</div>
11321130
</form>
@@ -1408,7 +1406,7 @@ <h4 class="modal-title">Advanced User Settings</h4>
14081406
</div>
14091407
</div>
14101408
</div>
1411-
<div class="gui_box grey mixer-settings">
1409+
<div class="gui_box grey stick-settings">
14121410
<div class="gui_box_titlebar">
14131411
<div class="spacer_box_title">Stick Settings</div>
14141412
</div>
@@ -1454,6 +1452,16 @@ <h4 class="modal-title">Advanced User Settings</h4>
14541452
</div>
14551453
</div>
14561454
</div>
1455+
<div class="gui_box grey legend-settings">
1456+
<div class="gui_box_titlebar">
1457+
<div class="spacer_box_title">Legend Settings</div>
1458+
</div>
1459+
<div class="spacer_box">
1460+
<div>
1461+
<label class="option">Units<input class="legend-units ios-switch" type="checkbox"/><div><div></div></div><span>Display actual units on legend.</span></label>
1462+
</div>
1463+
</div>
1464+
</div>
14571465
</div>
14581466
</div>
14591467
<div class="cf_column half right">

js/flightlog_fielddefs.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ var
168168
"VELOCITY",
169169
"DTERM_FILTER",
170170
"ANGLERATE",
171+
"ESC_SENSOR",
172+
"SCHEDULER",
173+
"STACK"
171174
]),
172175

173176
SUPER_EXPO_YAW = makeReadOnly([

js/flightlog_fields_presenter.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,27 @@ function FlightLogFieldPresenter() {
166166
'debug[2]':'Not Used',
167167
'debug[3]':'Not Used',
168168
},
169+
'ESC_SENSOR' : {
170+
'debug[all]':'ESC Sensor',
171+
'debug[0]':'Motor Index',
172+
'debug[1]':'Timeouts',
173+
'debug[2]':'Temperature',
174+
'debug[3]':'RPM',
175+
},
176+
'SCHEDULER' : {
177+
'debug[all]':'Scheduler',
178+
'debug[0]':'Not Used',
179+
'debug[1]':'Not Used',
180+
'debug[2]':'Schedule Time',
181+
'debug[3]':'Function Exec Time',
182+
},
183+
'STACK' : {
184+
'debug[all]':'Stack',
185+
'debug[0]':'Stack High Mem',
186+
'debug[1]':'Stack Low Mem',
187+
'debug[2]':'Stack Current',
188+
'debug[3]':'Stack p',
189+
},
169190
};
170191

171192
function presentFlags(flags, flagNames) {
@@ -371,7 +392,20 @@ function FlightLogFieldPresenter() {
371392
return "";
372393
case 'ANGLERATE':
373394
return value.toFixed(0) + "deg/s";
374-
default:
395+
case 'ESC_SENSOR':
396+
switch (fieldName) {
397+
case 'debug[2]':
398+
return value.toFixed(0) + "°C";
399+
case 'debug[3]':
400+
return value.toFixed(0) + "rpm";
401+
default:
402+
return value.toFixed(0) + "\u03BCS";
403+
}
404+
case 'SCHEDULER':
405+
return value.toFixed(0) + "\u03BCS";
406+
case 'STACK':
407+
return value.toFixed(0);
408+
default:
375409
return "";
376410
}
377411
}

js/flightlog_parser.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,15 +466,24 @@ var FlightLogParser = function(logData) {
466466
case "dterm_filter_type":
467467
case "pidAtMinThrottle":
468468
case "itermThrottleGain":
469+
case "itermThrottleThreshold":
469470
case "ptermSRateWeight":
471+
case "setpointRelaxRatio":
470472
case "dtermSetpointWeight":
471-
case "yawRateAccelLimit":
472-
case "rateAccelLimit":
473473
case "gyro_soft_type":
474474
case "debug_mode":
475475
that.sysConfig[fieldName] = parseInt(fieldValue, 10);
476476
break;
477477

478+
case "yawRateAccelLimit":
479+
case "rateAccelLimit":
480+
if(that.sysConfig.firmwareType == FIRMWARE_TYPE_BETAFLIGHT && semver.gte(that.sysConfig.firmwareVersion, '3.1.0')) {
481+
that.sysConfig[fieldName] = uint32ToFloat(fieldValue, 10);
482+
} else {
483+
that.sysConfig[fieldName] = parseInt(fieldValue, 10);
484+
}
485+
break;
486+
478487
case "yaw_lpf_hz":
479488
case "gyro_lowpass_hz":
480489
case "dterm_notch_hz":

js/graph_legend.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,14 @@ function GraphLegend(targetElem, config, onVisibilityChange, onNewSelectionChang
115115
var currentFlightMode = frame[flightLog.getMainFieldIndexByName("flightModeFlags")];
116116

117117
$(".graph-legend-field").each(function(index, value) {
118-
var value = FlightLogFieldPresenter.decodeFieldToFriendly(flightLog, $(this).attr('name'), frame[flightLog.getMainFieldIndexByName($(this).attr('name'))], currentFlightMode);
119-
$(this).text(FlightLogFieldPresenter.fieldNameToFriendly($(this).attr('name'), flightLog.getSysConfig().debug_mode) + ((value)?' (' + value + ')':' ') );
120-
$(this).append('<span class="glyphicon glyphicon-equalizer no-wheel"></span>');
118+
var value = frame[flightLog.getMainFieldIndexByName($(this).attr('name'))]; // get the raw value from log
119+
if(userSettings.legendUnits) { // if we want the legend to show engineering units
120+
value = FlightLogFieldPresenter.decodeFieldToFriendly(flightLog, $(this).attr('name'), value, currentFlightMode);
121+
} else { // raw value
122+
if(value%1!=0) { value = value.toFixed(2); }
123+
}
124+
$(this).text(FlightLogFieldPresenter.fieldNameToFriendly($(this).attr('name'), flightLog.getSysConfig().debug_mode) + ((value!=null)?' (' + value + ')':' ') );
125+
$(this).append('<span class="glyphicon glyphicon-equalizer no-wheel"></span>');
121126
});
122127
} catch(e) {
123128
console.log('Cannot update legend with values');

js/header_dialog.js

Lines changed: 65 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ function HeaderDialog(dialog, onSave) {
4242
{name:'serialrx_provider' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
4343
{name:'dterm_filter_type' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
4444
{name:'pidAtMinThrottle' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
45-
{name:'itermThrottleGain' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
46-
{name:'ptermSRateWeight' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
45+
{name:'itermThrottleGain' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'3.0.1'},
46+
{name:'ptermSRateWeight' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'3.0.0'},
4747
{name:'dtermSetpointWeight' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
4848
{name:'yawRateAccelLimit' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
4949
{name:'rateAccelLimit' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.0.0', max:'999.9.9'},
@@ -54,7 +54,9 @@ function HeaderDialog(dialog, onSave) {
5454
{name:'pidController' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'0.0.0', max:'3.0.1'},
5555
{name:'motorOutputLow' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.1.0', max:'999.9.9'},
5656
{name:'motorOutputHigh' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.1.0', max:'999.9.9'},
57-
{name:'digitalIdleOffset' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.1.0', max:'999.9.9'}
57+
{name:'digitalIdleOffset' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.1.0', max:'999.9.9'},
58+
{name:'setpointRelaxRatio' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.1.0', max:'999.9.9'},
59+
{name:'itermThrottleThreshold' , type:FIRMWARE_TYPE_BETAFLIGHT, min:'3.1.0', max:'999.9.9'}
5860

5961
];
6062

@@ -116,6 +118,22 @@ function HeaderDialog(dialog, onSave) {
116118

117119
}
118120

121+
function setParameterFloat(name, data, decimalPlaces) {
122+
var parameterElem = $('.parameter td[name="' + name + '"]');
123+
var nameElem = $('input', parameterElem);
124+
if(data!=null) {
125+
nameElem.val(data.toFixed(decimalPlaces));
126+
nameElem.attr('decPl', decimalPlaces);
127+
parameterElem.attr('title', 'set '+name+'='+data);
128+
parameterElem.removeClass('missing');
129+
} else {
130+
parameterElem.addClass('missing');
131+
}
132+
parameterElem.css('display', isParameterValid(name)?('table-cell'):('none'));
133+
134+
}
135+
136+
119137
function setCheckbox(name, data) {
120138
var parameterElem = $('.static-features td[name="' + name + '"]');
121139
var nameElem = $('input', parameterElem);
@@ -206,21 +224,43 @@ function HeaderDialog(dialog, onSave) {
206224
{bit: 15, group: 'other', name: 'RSSI_ADC', description: 'ADC RSSI Monitoring'},
207225
{bit: 16, group: 'other', name: 'LED_STRIP', description: 'Addressible RGB LED strip support'},
208226
{bit: 17, group: 'other', name: 'DISPLAY', description: 'OLED Screen Display'},
209-
{bit: 18, group: 'other', name: 'ONESHOT125', description: 'Oneshot 125 Enabled'},
210227
{bit: 19, group: 'other', name: 'BLACKBOX', description: 'Blackbox flight data recorder'},
211228
{bit: 20, group: 'other', name: 'CHANNEL_FORWARDING', description: 'Forward aux channels to servo outputs'},
212229
{bit: 21, group: 'other', name: 'TRANSPONDER', description: 'Transponder enabled'}
213230
];
214231

215232

216233
// Add specific features for betaflight v2.8 onwards....
217-
if (sysConfig.firmware >=2.8) {
218-
features.push(
219-
{bit: 22, group: 'other', name: 'AIRMODE', description: 'Airmode always enabled, set off to use modes'},
220-
{bit: 23, group: 'other', name: 'SUPEREXPO_RATES', description: 'Super Expo Mode'}
221-
);
234+
if (semver.gte(sysConfig.firmwareVersion, "2.8.0")) {
235+
features.push(
236+
{bit: 22, group: 'other', name: 'AIRMODE', description: 'Airmode always enabled, set off to use modes'}
237+
);
238+
}
239+
240+
if (semver.gte(sysConfig.firmwareVersion, "2.8.0") && !semver.gte(sysConfig.firmwareVersion, "3.0.0")) {
241+
features.push(
242+
{bit: 23, group: 'other', name: 'SUPEREXPO_RATES', description: 'Super Expo Mode'}
243+
);
244+
}
245+
246+
if (semver.gte(sysConfig.firmwareVersion, "2.8.0") && !semver.gte(sysConfig.firmwareVersion, "3.0.0")) {
247+
features.push(
248+
{bit: 18, group: 'other', name: 'ONESHOT125', description: 'Oneshot 125 Enabled'}
249+
);
222250
}
223251

252+
if (semver.gte(sysConfig.firmwareVersion, "3.0.0")) {
253+
features.push(
254+
{bit: 18, group: 'other', name: 'OSD', description: 'On Screen Display'}
255+
);
256+
}
257+
258+
if (semver.gte(sysConfig.firmwareVersion, "3.1.0")) {
259+
features.push(
260+
{bit: 27, group: 'other', name: 'ESC_SENSOR', description: 'Use KISS ESC 24A telemetry as sensor'}
261+
)
262+
}
263+
224264
var radioGroups = [];
225265

226266
var features_e = $('.features');
@@ -459,13 +499,20 @@ function HeaderDialog(dialog, onSave) {
459499
setParameter('itermThrottleGain' ,sysConfig.itermThrottleGain,2);
460500
setParameter('ptermSRateWeight' ,sysConfig.ptermSRateWeight,2);
461501
setParameter('dtermSetpointWeight' ,sysConfig.dtermSetpointWeight,2);
462-
setParameter('yawRateAccelLimit' ,sysConfig.yawRateAccelLimit,0);
463-
setParameter('rateAccelLimit' ,sysConfig.rateAccelLimit,0);
502+
if(activeSysConfig.firmwareType == FIRMWARE_TYPE_BETAFLIGHT && semver.gte(activeSysConfig.firmwareVersion, '3.1.0')) {
503+
setParameterFloat('yawRateAccelLimit', sysConfig.yawRateAccelLimit, 2);
504+
setParameterFloat('rateAccelLimit' , sysConfig.rateAccelLimit, 2);
505+
} else {
506+
setParameter('yawRateAccelLimit' , sysConfig.yawRateAccelLimit, 1);
507+
setParameter('rateAccelLimit' , sysConfig.rateAccelLimit, 1);
508+
}
464509
renderSelect('gyro_soft_type' ,sysConfig.gyro_soft_type, FILTER_TYPE);
465510
renderSelect('debug_mode' ,sysConfig.debug_mode, DEBUG_MODE);
466511
setParameter('motorOutputLow' ,sysConfig.motorOutput[0],0);
467512
setParameter('motorOutputHigh' ,sysConfig.motorOutput[1],0);
468513
setParameter('digitalIdleOffset' ,sysConfig.digitalIdleOffset,2);
514+
setParameter('itermThrottleThreshold' ,sysConfig.itermThrottleThreshold,0);
515+
setParameter('setpointRelaxRatio' ,sysConfig.setpointRelaxRatio,2);
469516

470517
/* Packed Flags */
471518

@@ -486,6 +533,13 @@ function HeaderDialog(dialog, onSave) {
486533
/* Show Unknown Fields */
487534
renderUnknownHeaders(sysConfig.unknownHeaders);
488535

536+
/* Remove some version specific headers */
537+
if(activeSysConfig.firmwareType == FIRMWARE_TYPE_BETAFLIGHT && semver.gte(activeSysConfig.firmwareVersion, '3.1.0')) {
538+
$(".BFPIDController").css("display","none");
539+
} else {
540+
$(".BFPIDController").css("display","table-header-group");
541+
}
542+
489543
/*
490544
* In case of INAV, hide irrelevant options
491545
*/

js/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ function BlackboxLogViewer() {
368368
$('.lograte', statusBar).text( ((sysConfig['frameIntervalPDenom']!=null && sysConfig['frameIntervalPNum']!=null)?( 'Sample Rate : ' + sysConfig['frameIntervalPNum'] +'/' + sysConfig['frameIntervalPDenom']):''));
369369

370370
seekBar.setTimeRange(flightLog.getMinTime(), flightLog.getMaxTime(), currentBlackboxTime);
371-
seekBar.setActivityRange(flightLog.getSysConfig().minthrottle, flightLog.getSysConfig().maxthrottle);
371+
seekBar.setActivityRange(flightLog.getSysConfig().motorOutput[0], flightLog.getSysConfig().motorOutput[1]);
372372

373373
var
374374
activity = flightLog.getActivitySummary();

0 commit comments

Comments
 (0)