Merge pull request #580 from iNavFlight/dzikuvx-braking-msp-frames-support

Support for braking mode
pull/581/head
Paweł Spychalski 6 years ago committed by GitHub
commit a6bf5138bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2754,5 +2754,56 @@
},
"HOME_DISTANCE": {
"message": "Distance to Home"
},
"brakingSpeedThreshold": {
"message": "Min. speed threshold [cm/s]"
},
"brakingSpeedThresholdTip": {
"message": "Braking will be enabled only if actual speed if higher than threshold"
},
"brakingDisengageSpeed": {
"message": "Braking disengage speed [cm/s]"
},
"brakingDisengageSpeedTip": {
"message": "Braking will end when speed goes below this value"
},
"brakingTimeout": {
"message": "Max. braking length [ms]"
},
"brakingTimeoutTip": {
"message": "Safety measure. This is the longest period of time braking can be active."
},
"brakingBoostFactor": {
"message": "Boost factor [%]"
},
"brakingBoostFactorTip": {
"message": "Defines for strong braking boost will be. 100% means navigation engine is allowed to double banking speed and acceleration than normal"
},
"brakingBoostTimeout": {
"message": "Max. braking boost length [ms]"
},
"brakingBoostTimeoutTip": {
"message": "Safety measure. This is the longest period of time braking boost can be active."
},
"brakingBoostSpeedThreshold": {
"message": "Boost min. speed threshold [cm/s]"
},
"brakingBoostSpeedThresholdTip": {
"message": "Braking boost will be enabled only if actual speed if higher than threshold"
},
"brakingBoostDisengageSpeed": {
"message": "Braking boost disengage speed [cm/s]"
},
"brakingBoostDisengageSpeedTip": {
"message": "Braking boost will end when speed goes below this value"
},
"brakingBankAngle": {
"message": "Max. bank angle [degrees]"
},
"brakingBankAngleTip": {
"message": "Max bank angle allowed during braking phase"
},
"multirotorBrakingConfiguration": {
"message": "Multirotor braking mode configuration"
}
}

@ -55,7 +55,8 @@ var CONFIG,
MIXER_CONFIG,
BATTERY_CONFIG,
OUTPUT_MAPPING,
SETTINGS;
SETTINGS,
BRAKING_CONFIG;
var FC = {
MAX_SERVO_RATE: 125,
@ -506,6 +507,17 @@ var FC = {
loiterRadius: null
};
BRAKING_CONFIG = {
speedThreshold: null,
disengageSpeed: null,
timeout: null,
boostFactor: null,
boostTimeout: null,
boostSpeedThreshold: null,
boostDisengageSpeed: null,
bankAngle: null
}
RXFAIL_CONFIG = [];
OUTPUT_MAPPING = new OutputMappingCollection();

@ -186,5 +186,8 @@ var MSPCodes = {
MSP2_INAV_OSD_PREFERENCES: 0x2016,
MSP2_INAV_OSD_SET_PREFERENCES: 0x2017,
MSP2_INAV_MC_BRAKING: 0x200B,
MSP2_INAV_SET_MC_BRAKING: 0x200C,
MSP2_INAV_SELECT_BATTERY_PROFILE: 0x2018
};

@ -1401,6 +1401,22 @@ var mspHelper = (function (gui) {
for (i = 0; i < data.byteLength; ++i)
OUTPUT_MAPPING.put(data.getUint8(i));
break;
case MSPCodes.MSP2_INAV_MC_BRAKING:
BRAKING_CONFIG.speedThreshold = data.getUint16(0, true);
BRAKING_CONFIG.disengageSpeed = data.getUint16(2, true);
BRAKING_CONFIG.timeout = data.getUint16(4, true);
BRAKING_CONFIG.boostFactor = data.getInt8(6);
BRAKING_CONFIG.boostTimeout = data.getUint16(7, true);
BRAKING_CONFIG.boostSpeedThreshold = data.getUint16(9, true);
BRAKING_CONFIG.boostDisengageSpeed = data.getUint16(11, true);
BRAKING_CONFIG.bankAngle = data.getInt8(13);
break;
case MSPCodes.MSP2_INAV_SET_MC_BRAKING:
console.log('Braking config saved');
break;
default:
console.log('Unknown code detected: ' + dataHandler.code);
} else {
@ -2038,6 +2054,26 @@ var mspHelper = (function (gui) {
buffer.push(highByte(MIXER_CONFIG.appliedMixerPreset));
break;
case MSPCodes.MSP2_INAV_SET_MC_BRAKING:
buffer.push(lowByte(BRAKING_CONFIG.speedThreshold));
buffer.push(highByte(BRAKING_CONFIG.speedThreshold));
buffer.push(lowByte(BRAKING_CONFIG.disengageSpeed));
buffer.push(highByte(BRAKING_CONFIG.disengageSpeed));
buffer.push(lowByte(BRAKING_CONFIG.timeout));
buffer.push(highByte(BRAKING_CONFIG.timeout));
buffer.push(BRAKING_CONFIG.boostFactor);
buffer.push(lowByte(BRAKING_CONFIG.boostTimeout));
buffer.push(highByte(BRAKING_CONFIG.boostTimeout));
buffer.push(lowByte(BRAKING_CONFIG.boostSpeedThreshold));
buffer.push(highByte(BRAKING_CONFIG.boostSpeedThreshold));
buffer.push(lowByte(BRAKING_CONFIG.boostDisengageSpeed));
buffer.push(highByte(BRAKING_CONFIG.boostDisengageSpeed));
buffer.push(BRAKING_CONFIG.bankAngle);
break;
default:
return false;
}
@ -3146,6 +3182,22 @@ var mspHelper = (function (gui) {
}
};
self.loadBrakingConfig = function(callback) {
if (semver.gte(CONFIG.flightControllerVersion, "2.1.0")) {
MSP.send_message(MSPCodes.MSP2_INAV_MC_BRAKING, false, false, callback);
} else {
callback();
}
}
self.saveBrakingConfig = function(callback) {
if (semver.gte(CONFIG.flightControllerVersion, "2.1.0")) {
MSP.send_message(MSPCodes.MSP2_INAV_SET_MC_BRAKING, mspHelper.crunch(MSPCodes.MSP2_INAV_SET_MC_BRAKING), false, callback);
} else {
callback();
}
};
self.loadParameterGroups = function(callback) {
if (semver.gte(CONFIG.flightControllerVersion, "2.0.0")) {
MSP.send_message(MSPCodes.MSP2_COMMON_PG_LIST, false, false, function (resp) {

2727
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -284,6 +284,79 @@
</div>
</div>
<div class="config-section gui_box grey requires-v2_1">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="multirotorBrakingConfiguration"></div>
</div>
<div class="spacer_box">
<div class="number">
<input id="brakingSpeedThreshold" type="number" data-simple-bind="BRAKING_CONFIG.speedThreshold" step="1" min="0" max="1000">
<label for="brakingSpeedThreshold">
<span data-i18n="brakingSpeedThreshold"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingSpeedThresholdTip"></div>
</div>
<div class="number">
<input id="brakingDisengageSpeed" type="number" data-simple-bind="BRAKING_CONFIG.disengageSpeed" step="1" min="0" max="1000">
<label for="brakingDisengageSpeed">
<span data-i18n="brakingDisengageSpeed"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingDisengageSpeedTip"></div>
</div>
<div class="number">
<input id="brakingTimeout" type="number" data-simple-bind="BRAKING_CONFIG.timeout" step="1" min="100" max="5000">
<label for="brakingTimeout">
<span data-i18n="brakingTimeout"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingTimeoutTip"></div>
</div>
<div class="number">
<input id="brakingBoostFactor" type="number" data-simple-bind="BRAKING_CONFIG.boostFactor" step="1" min="0" max="200">
<label for="brakingBoostFactor">
<span data-i18n="brakingBoostFactor"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostFactorTip"></div>
</div>
<div class="number">
<input id="brakingBoostTimeout" type="number" data-simple-bind="BRAKING_CONFIG.boostTimeout" step="1" min="0" max="5000">
<label for="brakingBoostTimeout">
<span data-i18n="brakingBoostTimeout"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostTimeoutTip"></div>
</div>
<div class="number">
<input id="brakingBoostSpeedThreshold" type="number" data-simple-bind="BRAKING_CONFIG.boostSpeedThreshold" step="1" min="100" max="1000">
<label for="brakingBoostSpeedThreshold">
<span data-i18n="brakingBoostSpeedThreshold"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostSpeedThresholdTip"></div>
</div>
<div class="number">
<input id="brakingBoostDisengageSpeed" type="number" data-simple-bind="BRAKING_CONFIG.boostDisengageSpeed" step="1" min="100" max="1000">
<label for="brakingBoostDisengageSpeed">
<span data-i18n="brakingBoostDisengageSpeed"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostDisengageSpeedTip"></div>
</div>
<div class="number">
<input id="brakingBankAngle" type="number" data-simple-bind="BRAKING_CONFIG.bankAngle" step="1" min="15" max="60">
<label for="brakingBankAngle">
<span data-i18n="brakingBankAngle"></span>
</label>
<div class="helpicon cf_tip" data-i18n_title="brakingBankAngleTip"></div>
</div>
</div>
</div>
</div>
<div class="clear-both"></div>

@ -16,7 +16,8 @@ TABS.advanced_tuning.initialize = function (callback) {
mspHelper.loadNavPosholdConfig,
mspHelper.loadPositionEstimationConfig,
mspHelper.loadRthAndLandConfig,
mspHelper.loadFwConfig
mspHelper.loadFwConfig,
mspHelper.loadBrakingConfig
]);
loadChainer.setExitPoint(loadHtml);
loadChainer.execute();
@ -26,6 +27,7 @@ TABS.advanced_tuning.initialize = function (callback) {
mspHelper.savePositionEstimationConfig,
mspHelper.saveRthAndLandConfig,
mspHelper.saveFwConfig,
mspHelper.saveBrakingConfig,
mspHelper.saveToEeprom
]);
saveChainer.setExitPoint(reboot);
@ -59,6 +61,13 @@ TABS.advanced_tuning.initialize = function (callback) {
$rthAllowLanding = $('#rthAllowLanding'),
$rthAltControlMode = $('#rthAltControlMode');
if (semver.gte(CONFIG.flightControllerVersion, "2.1.0")) {
$('.requires-v2_1').show();
} else {
$('.requires-v2_1').hide();
}
if (semver.gte(CONFIG.flightControllerVersion, "1.7.1")) {
$rthClimbFirst.prop("checked", RTH_AND_LAND_CONFIG.rthClimbFirst);

Loading…
Cancel
Save