Skip to content

Commit 6876aa2

Browse files
authored
Add (e)RPM black box field (#640)
* Add RPM black box field * Add RPM to example graphs * Use same scaling for all RPM fields * Change name of RPM field to eRPM(/100) - Add RPM to enabled/disabled black box fields in header dialog - Add escapeRegExp function to tools.js - Escape nameRoot before using as regexp for creating [all] fields in graph_config
1 parent 0b44109 commit 6876aa2

File tree

5 files changed

+33
-1
lines changed

5 files changed

+33
-1
lines changed

js/flightlog.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,5 +1336,6 @@ FlightLog.prototype.isFieldDisabled = function() {
13361336
DEBUG : (disabledFields & (1 << 9))!==0,
13371337
MOTORS : (disabledFields & (1 << 10))!==0,
13381338
GPS : (disabledFields & (1 << 11))!==0,
1339+
RPM : (disabledFields & (1 << 12))!==0,
13391340
};
13401341
};

js/flightlog_fields_presenter.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ function FlightLogFieldPresenter() {
6868
'motor[6]': 'Motor [7]',
6969
'motor[7]': 'Motor [8]',
7070

71+
'eRPM(/100)[all]': 'RPM',
72+
'eRPM(/100)[0]': 'RPM [1]',
73+
'eRPM(/100)[1]': 'RPM [2]',
74+
'eRPM(/100)[2]': 'RPM [3]',
75+
'eRPM(/100)[3]': 'RPM [4]',
76+
'eRPM(/100)[4]': 'RPM [5]',
77+
'eRPM(/100)[5]': 'RPM [6]',
78+
'eRPM(/100)[6]': 'RPM [7]',
79+
'eRPM(/100)[7]': 'RPM [8]',
80+
7181
'servo[all]': 'Servos',
7282
'servo[5]': 'Servo Tail',
7383

@@ -1290,6 +1300,17 @@ function FlightLogFieldPresenter() {
12901300
case 'motor[7]':
12911301
return `${flightLog.rcMotorRawToPctPhysical(value).toFixed(2)} %`;
12921302

1303+
case 'eRPM(/100)[0]':
1304+
case 'eRPM(/100)[1]':
1305+
case 'eRPM(/100)[2]':
1306+
case 'eRPM(/100)[3]':
1307+
case 'eRPM(/100)[4]':
1308+
case 'eRPM(/100)[5]':
1309+
case 'eRPM(/100)[6]':
1310+
case 'eRPM(/100)[7]':
1311+
let motor_poles = flightLog.getSysConfig()['motor_poles'];
1312+
return (value * 200 / motor_poles).toFixed(0) + " rpm / " + (value * 3.333 / motor_poles).toFixed(1) + ' hz';
1313+
12931314
case 'rcCommands[0]':
12941315
case 'rcCommands[1]':
12951316
case 'rcCommands[2]':

js/graph_config.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ function GraphConfig(graphConfig) {
101101
if ((matches = field.name.match(/^(.+)\[all\]$/))) {
102102
var
103103
nameRoot = matches[1],
104-
nameRegex = new RegExp("^" + nameRoot + "\[[0-9]+\]$"),
104+
nameRegex = new RegExp("^" + escapeRegExp(nameRoot) + "\[[0-9]+\]$"),
105105
colorIndexOffset = 0;
106106

107107
for (var k = 0; k < logFieldNames.length; k++) {
@@ -267,6 +267,8 @@ GraphConfig.load = function(config) {
267267
DSHOT_RANGE / 2 : (sysConfig.maxthrottle - sysConfig.minthrottle) / 2,
268268
outputRange: 1.0,
269269
};
270+
} else if (fieldName.match(/^eRPM\(\/100\)\[/)) {
271+
return getCurveForMinMaxFields('eRPM(/100)[0]', 'eRPM(/100)[1]', 'eRPM(/100)[2]', 'eRPM(/100)[3]', 'eRPM(/100)[4]', 'eRPM(/100)[5]', 'eRPM(/100)[6]', 'eRPM(/100)[7]');
270272
} else if (fieldName.match(/^servo\[/)) {
271273
return {
272274
offset: -1500,
@@ -955,6 +957,9 @@ GraphConfig.load = function(config) {
955957
EXAMPLE_GRAPHS.push({label: "Motors",fields: ["motor[all]", "servo[5]"]});
956958
EXAMPLE_GRAPHS.push({label: "Motors (Legacy)",fields: ["motorLegacy[all]", "servo[5]"]});
957959
}
960+
if (!flightLog.isFieldDisabled().RPM) {
961+
EXAMPLE_GRAPHS.push({label: "RPM",fields: ["eRPM(/100)[all]"]});
962+
}
958963
if (!flightLog.isFieldDisabled().GYRO) {
959964
EXAMPLE_GRAPHS.push({label: "Gyros",fields: ["gyroADC[all]"]});
960965
}

js/header_dialog.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@ function HeaderDialog(dialog, onSave) {
459459
{name: 'Debug', description: 'Debug values'},
460460
{name: 'Motors', description: 'Motors and tricopter servo values'},
461461
{name: 'GPS', description: 'All GPS-related values'},
462+
{name: 'RPM', description: 'Angular velocity for all motors'},
462463
];
463464

464465
const fieldsList_e = $('.fields_list');

js/tools.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,3 +467,7 @@ function getManifestVersion(manifest) {
467467
return "-"
468468
}
469469
}
470+
471+
function escapeRegExp(string) {
472+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
473+
}

0 commit comments

Comments
 (0)