mirror of
https://github.com/iNavFlight/inav-configurator.git
synced 2025-07-14 20:10:11 +03:00
MSP_FW_CONFIG frame support
This commit is contained in:
parent
a86c3138d5
commit
0777ef391c
8 changed files with 234 additions and 5 deletions
|
@ -2086,5 +2086,32 @@
|
|||
},
|
||||
"emergencyDescentRate": {
|
||||
"message": "Emergency landing speed [cm/s]"
|
||||
},
|
||||
"cruiseThrottle": {
|
||||
"message": "Cruise throttle"
|
||||
},
|
||||
"minThrottle": {
|
||||
"message": "Min. throttle"
|
||||
},
|
||||
"maxThrottle": {
|
||||
"message": "Max. throttle"
|
||||
},
|
||||
"maxBankAngle": {
|
||||
"message": "Max. bank angle"
|
||||
},
|
||||
"maxClimbAngle": {
|
||||
"message": "Max. climb angle"
|
||||
},
|
||||
"maxDiveAngle": {
|
||||
"message": "Max. dive angle"
|
||||
},
|
||||
"pitchToThrottle": {
|
||||
"message": "Pitch to throttle ratio"
|
||||
},
|
||||
"loiterRadius": {
|
||||
"message": "Loiter radius [cm]"
|
||||
},
|
||||
"fixedWingConfiguration": {
|
||||
"message": "Fixed Wing Settings"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7426,6 +7426,8 @@ var MSPCodes = {
|
|||
|
||||
MSP_RTH_AND_LAND_CONFIG: 21,
|
||||
MSP_SET_RTH_AND_LAND_CONFIG: 22,
|
||||
MSP_FW_CONFIG: 23,
|
||||
MSP_SET_FW_CONFIG: 24,
|
||||
|
||||
// MSP commands for Cleanflight original features
|
||||
MSP_CHANNEL_FORWARDING: 32,
|
||||
|
@ -8509,6 +8511,21 @@ var mspHelper = (function (gui) {
|
|||
console.log('RTH_AND_LAND_CONFIG saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_FW_CONFIG:
|
||||
FW_CONFIG.cruiseThrottle = data.getUint16(0, true);
|
||||
FW_CONFIG.minThrottle = data.getUint16(2, true);
|
||||
FW_CONFIG.maxThrottle = data.getUint16(4, true);
|
||||
FW_CONFIG.maxBankAngle = data.getUint8(6);
|
||||
FW_CONFIG.maxClimbAngle = data.getUint8(7);
|
||||
FW_CONFIG.maxDiveAngle = data.getUint8(8);
|
||||
FW_CONFIG.pitchToThrottle = data.getUint8(9);
|
||||
FW_CONFIG.loiterRadius = data.getUint16(10, true);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_FW_CONFIG:
|
||||
console.log('FW_CONFIG saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_MODE_RANGE:
|
||||
console.log('Mode range saved');
|
||||
break;
|
||||
|
@ -8890,6 +8907,27 @@ var mspHelper = (function (gui) {
|
|||
buffer.push(highByte(RTH_AND_LAND_CONFIG.emergencyDescentRate));
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_FW_CONFIG:
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.cruiseThrottle));
|
||||
buffer.push(highByte(FW_CONFIG.cruiseThrottle));
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.minThrottle));
|
||||
buffer.push(highByte(FW_CONFIG.minThrottle));
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.maxThrottle));
|
||||
buffer.push(highByte(FW_CONFIG.maxThrottle));
|
||||
|
||||
buffer.push(FW_CONFIG.maxBankAngle);
|
||||
buffer.push(FW_CONFIG.maxClimbAngle);
|
||||
buffer.push(FW_CONFIG.maxDiveAngle);
|
||||
buffer.push(FW_CONFIG.pitchToThrottle);
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.loiterRadius));
|
||||
buffer.push(highByte(FW_CONFIG.loiterRadius));
|
||||
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_FILTER_CONFIG:
|
||||
buffer.push(FILTER_CONFIG.gyroSoftLpfHz);
|
||||
|
||||
|
@ -9656,6 +9694,22 @@ var mspHelper = (function (gui) {
|
|||
}
|
||||
};
|
||||
|
||||
self.loadFwConfig = function (callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
|
||||
MSP.send_message(MSPCodes.MSP_FW_CONFIG, false, false, callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
self.saveFwConfig = function (callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_FW_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FW_CONFIG), false, callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
return self;
|
||||
})(GUI);
|
||||
|
||||
|
@ -10928,7 +10982,8 @@ var CONFIG,
|
|||
SENSOR_CONFIG,
|
||||
NAV_POSHOLD,
|
||||
POSITION_ESTIMATOR,
|
||||
RTH_AND_LAND_CONFIG;
|
||||
RTH_AND_LAND_CONFIG,
|
||||
FW_CONFIG;
|
||||
|
||||
var FC = {
|
||||
isRatesInDps: function () {
|
||||
|
@ -11257,6 +11312,17 @@ var FC = {
|
|||
failsafe_procedure: 0
|
||||
};
|
||||
|
||||
FW_CONFIG = {
|
||||
cruiseThrottle: null,
|
||||
minThrottle: null,
|
||||
maxThrottle: null,
|
||||
maxBankAngle: null,
|
||||
maxClimbAngle: null,
|
||||
maxDiveAngle: null,
|
||||
pitchToThrottle: null,
|
||||
loiterRadius: null
|
||||
};
|
||||
|
||||
RXFAIL_CONFIG = [];
|
||||
},
|
||||
getFeatures: function () {
|
||||
|
@ -14368,7 +14434,8 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
loadChainer.setChain([
|
||||
mspHelper.loadNavPosholdConfig,
|
||||
mspHelper.loadPositionEstimationConfig,
|
||||
mspHelper.loadRthAndLandConfig
|
||||
mspHelper.loadRthAndLandConfig,
|
||||
mspHelper.loadFwConfig
|
||||
]);
|
||||
loadChainer.setExitPoint(loadHtml);
|
||||
loadChainer.execute();
|
||||
|
@ -14377,6 +14444,7 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
mspHelper.saveNavPosholdConfig,
|
||||
mspHelper.savePositionEstimationConfig,
|
||||
mspHelper.saveRthAndLandConfig,
|
||||
mspHelper.saveFwConfig,
|
||||
mspHelper.saveToEeprom
|
||||
]);
|
||||
saveChainer.setExitPoint(reboot);
|
||||
|
|
|
@ -164,7 +164,7 @@ gulp.task('deploy-receiver-msp-js', function () {
|
|||
gulp.task('deploy', ['deploy-css', 'deploy-js', 'deploy-receiver-msp-js', 'deploy-receiver-css']);
|
||||
|
||||
gulp.task('watch', function () {
|
||||
gulp.watch('js/*.js', ['build-js']);
|
||||
gulp.watch('js/**/*.js', ['build-js']);
|
||||
gulp.watch('css/*.css', ['build-css']);
|
||||
gulp.watch('main.css', ['build-css']);
|
||||
gulp.watch('main.js', ['build-js']);
|
||||
|
|
14
js/fc.js
14
js/fc.js
|
@ -45,7 +45,8 @@ var CONFIG,
|
|||
SENSOR_CONFIG,
|
||||
NAV_POSHOLD,
|
||||
POSITION_ESTIMATOR,
|
||||
RTH_AND_LAND_CONFIG;
|
||||
RTH_AND_LAND_CONFIG,
|
||||
FW_CONFIG;
|
||||
|
||||
var FC = {
|
||||
isRatesInDps: function () {
|
||||
|
@ -374,6 +375,17 @@ var FC = {
|
|||
failsafe_procedure: 0
|
||||
};
|
||||
|
||||
FW_CONFIG = {
|
||||
cruiseThrottle: null,
|
||||
minThrottle: null,
|
||||
maxThrottle: null,
|
||||
maxBankAngle: null,
|
||||
maxClimbAngle: null,
|
||||
maxDiveAngle: null,
|
||||
pitchToThrottle: null,
|
||||
loiterRadius: null
|
||||
};
|
||||
|
||||
RXFAIL_CONFIG = [];
|
||||
},
|
||||
getFeatures: function () {
|
||||
|
|
|
@ -18,6 +18,8 @@ var MSPCodes = {
|
|||
|
||||
MSP_RTH_AND_LAND_CONFIG: 21,
|
||||
MSP_SET_RTH_AND_LAND_CONFIG: 22,
|
||||
MSP_FW_CONFIG: 23,
|
||||
MSP_SET_FW_CONFIG: 24,
|
||||
|
||||
// MSP commands for Cleanflight original features
|
||||
MSP_CHANNEL_FORWARDING: 32,
|
||||
|
|
|
@ -958,6 +958,21 @@ var mspHelper = (function (gui) {
|
|||
console.log('RTH_AND_LAND_CONFIG saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_FW_CONFIG:
|
||||
FW_CONFIG.cruiseThrottle = data.getUint16(0, true);
|
||||
FW_CONFIG.minThrottle = data.getUint16(2, true);
|
||||
FW_CONFIG.maxThrottle = data.getUint16(4, true);
|
||||
FW_CONFIG.maxBankAngle = data.getUint8(6);
|
||||
FW_CONFIG.maxClimbAngle = data.getUint8(7);
|
||||
FW_CONFIG.maxDiveAngle = data.getUint8(8);
|
||||
FW_CONFIG.pitchToThrottle = data.getUint8(9);
|
||||
FW_CONFIG.loiterRadius = data.getUint16(10, true);
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_FW_CONFIG:
|
||||
console.log('FW_CONFIG saved');
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_MODE_RANGE:
|
||||
console.log('Mode range saved');
|
||||
break;
|
||||
|
@ -1339,6 +1354,27 @@ var mspHelper = (function (gui) {
|
|||
buffer.push(highByte(RTH_AND_LAND_CONFIG.emergencyDescentRate));
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_FW_CONFIG:
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.cruiseThrottle));
|
||||
buffer.push(highByte(FW_CONFIG.cruiseThrottle));
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.minThrottle));
|
||||
buffer.push(highByte(FW_CONFIG.minThrottle));
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.maxThrottle));
|
||||
buffer.push(highByte(FW_CONFIG.maxThrottle));
|
||||
|
||||
buffer.push(FW_CONFIG.maxBankAngle);
|
||||
buffer.push(FW_CONFIG.maxClimbAngle);
|
||||
buffer.push(FW_CONFIG.maxDiveAngle);
|
||||
buffer.push(FW_CONFIG.pitchToThrottle);
|
||||
|
||||
buffer.push(lowByte(FW_CONFIG.loiterRadius));
|
||||
buffer.push(highByte(FW_CONFIG.loiterRadius));
|
||||
|
||||
break;
|
||||
|
||||
case MSPCodes.MSP_SET_FILTER_CONFIG:
|
||||
buffer.push(FILTER_CONFIG.gyroSoftLpfHz);
|
||||
|
||||
|
@ -2105,5 +2141,21 @@ var mspHelper = (function (gui) {
|
|||
}
|
||||
};
|
||||
|
||||
self.loadFwConfig = function (callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
|
||||
MSP.send_message(MSPCodes.MSP_FW_CONFIG, false, false, callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
self.saveFwConfig = function (callback) {
|
||||
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
|
||||
MSP.send_message(MSPCodes.MSP_SET_FW_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_FW_CONFIG), false, callback);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
return self;
|
||||
})(GUI);
|
||||
|
|
|
@ -213,6 +213,72 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="config-section gui_box grey requires-v1_7_1">
|
||||
<div class="gui_box_titlebar">
|
||||
<div class="spacer_box_title" data-i18n="fixedWingConfiguration"></div>
|
||||
</div>
|
||||
<div class="spacer_box">
|
||||
|
||||
<div class="number">
|
||||
<input id="cruiseThrottle" type="number" data-simple-bind="FW_CONFIG.cruiseThrottle" step="1" min="1000" max="2000">
|
||||
<label for="cruiseThrottle">
|
||||
<span data-i18n="cruiseThrottle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="minThrottle" type="number" data-simple-bind="FW_CONFIG.minThrottle" step="1" min="1000" max="2000">
|
||||
<label for="minThrottle">
|
||||
<span data-i18n="minThrottle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="maxThrottle" type="number" data-simple-bind="FW_CONFIG.maxThrottle" step="1" min="1000" max="2000">
|
||||
<label for="maxThrottle">
|
||||
<span data-i18n="maxThrottle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="maxBankAngle" type="number" data-simple-bind="FW_CONFIG.maxBankAngle" step="1" min="5" max="80">
|
||||
<label for="maxBankAngle">
|
||||
<span data-i18n="maxBankAngle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="maxClimbAngle" type="number" data-simple-bind="FW_CONFIG.maxClimbAngle" step="1" min="5" max="80">
|
||||
<label for="maxClimbAngle">
|
||||
<span data-i18n="maxClimbAngle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="maxDiveAngle" type="number" data-simple-bind="FW_CONFIG.maxDiveAngle" step="1" min="5" max="80">
|
||||
<label for="maxDiveAngle">
|
||||
<span data-i18n="maxDiveAngle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="pitchToThrottle" type="number" data-simple-bind="FW_CONFIG.pitchToThrottle" step="1" min="0" max="100">
|
||||
<label for="pitchToThrottle">
|
||||
<span data-i18n="pitchToThrottle"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="number">
|
||||
<input id="loiterRadius" type="number" data-simple-bind="FW_CONFIG.loiterRadius" step="1" min="0" max="10000">
|
||||
<label for="loiterRadius">
|
||||
<span data-i18n="loiterRadius"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear-both"></div>
|
||||
|
|
|
@ -15,7 +15,8 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
loadChainer.setChain([
|
||||
mspHelper.loadNavPosholdConfig,
|
||||
mspHelper.loadPositionEstimationConfig,
|
||||
mspHelper.loadRthAndLandConfig
|
||||
mspHelper.loadRthAndLandConfig,
|
||||
mspHelper.loadFwConfig
|
||||
]);
|
||||
loadChainer.setExitPoint(loadHtml);
|
||||
loadChainer.execute();
|
||||
|
@ -24,6 +25,7 @@ TABS.advanced_tuning.initialize = function (callback) {
|
|||
mspHelper.saveNavPosholdConfig,
|
||||
mspHelper.savePositionEstimationConfig,
|
||||
mspHelper.saveRthAndLandConfig,
|
||||
mspHelper.saveFwConfig,
|
||||
mspHelper.saveToEeprom
|
||||
]);
|
||||
saveChainer.setExitPoint(reboot);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue