1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-23 16:25:19 +03:00
This commit is contained in:
Alexander van Saase 2021-05-06 14:33:27 +02:00
commit 676b1ba69b
11 changed files with 194 additions and 346 deletions

View file

@ -2492,7 +2492,10 @@
"message": "Wireless mode" "message": "Wireless mode"
}, },
"rthConfiguration": { "rthConfiguration": {
"message": "RTH and Landing Settings" "message": "RTH settings"
},
"autoLandingSettings": {
"message": "Automatic landing settings"
}, },
"minRthDistance": { "minRthDistance": {
"message": "Min. RTH distance [cm]" "message": "Min. RTH distance [cm]"
@ -2542,17 +2545,26 @@
"rthHomeAltitudeHelp": { "rthHomeAltitudeHelp": {
"message": "Used when not landing at the home point. Upon arriving at home, the plane will loiter and change altitude to the RTH Home Altitude. Default is 0, which is feature disabled." "message": "Used when not landing at the home point. Upon arriving at home, the plane will loiter and change altitude to the RTH Home Altitude. Default is 0, which is feature disabled."
}, },
"landMinAltVspd": {
"message": "Vertical descent velocity under min. vertical landing speed altitude [cm/s]"
},
"landMaxAltVspd": { "landMaxAltVspd": {
"message": "Vertical descent velocity above slowdown altitude [cm/s]" "message": "<strong>Initial landing speed</strong> until <strong>Slow down altitude</strong> is reached"
}, },
"landSlowdownMinAlt": { "landMaxAltVspdHelp": {
"message": "Min. vertical landing speed at altitude [cm]" "message": "After RTH if autolanding is enabled the aircraft will start to descend at this speed until reaching <strong>Slow down altitude</strong>"
}, },
"landSlowdownMaxAlt": { "landSlowdownMaxAlt": {
"message": "Vertical landing speed slowdown at altitude [cm]" "message": "<strong>Slow down altitude</strong>. Altitude bellow which the aircraft will start to slow down"
},
"landSlowdownMaxAltHelp": {
"message": "When the aircraft reaches this altitude it will start to slow down linearly between the <strong>Initial landing speed</strong> and <strong>Final landing speed</strong> to reach it at <strong>Final approach altitude</strong>"
},
"landMinAltVspd": {
"message": "<strong>Final landing speed</strong>. Speed the aircraft will take until touchdown when the <strong>Final approach altitutde</strong> is reached"
},
"landMinAltVspdHelp": {
"message": "The aircraft vertical speed target will be this value when the aircraft reaches the <strong>Final approach altitude</strong> after having slowed down linearly from the <strong>Slow down altitude</strong> at <strong>Initial landing speed</strong>"
},
"landSlowdownMinAlt": {
"message": "<strong>Final approach altitude</strong>. Altitude under which the aircraft will go down at <strong>Final landing speed</strong> until touchdown"
}, },
"emergencyDescentRate": { "emergencyDescentRate": {
"message": "Emergency landing speed [cm/s]" "message": "Emergency landing speed [cm/s]"
@ -3532,16 +3544,16 @@
"itermRelaxCutoffHelp": { "itermRelaxCutoffHelp": {
"message": "Lower values open a longer time window for Iterm Relax to work on and stronger Iterm suppression. Higher values shortens the time windows and reduces suppression." "message": "Lower values open a longer time window for Iterm Relax to work on and stronger Iterm suppression. Higher values shortens the time windows and reduces suppression."
}, },
"gyro_lpf_type": { "gyro_main_lpf_hz": {
"message": "Main gyro filter cutoff frequency"
},
"gyro_main_lpf_hz_help": {
"message": "Higher values offer lower delay but more noise. Lower values offer less noise, but more dalay on the gyro processing"
},
"gyro_main_lpf_type": {
"message": "Gyro LPF type" "message": "Gyro LPF type"
}, },
"gyro_lpf_type_help": { "gyro_main_lpf_type_help": {
"message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay."
},
"gyro_stage2_lowpass_type": {
"message": "Gyro Stage 2 LPF type"
},
"gyro_stage2_lowpass_type_help": {
"message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay." "message": "BIQUAD offers better noise attenuation for a price of higher delay. PT1 has lower attenuation but offers lower delay."
}, },
"dterm_lpf_type": { "dterm_lpf_type": {

View file

@ -34,17 +34,13 @@ helper.defaultsDialog = (function() {
Filtering Filtering
*/ */
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 110 value: 110
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1" value: "PT1"
}, },
{
key: "gyro_stage2_lowpass_hz",
value: 0
},
{ {
key: "dterm_lpf_hz", key: "dterm_lpf_hz",
value: 110 value: 110
@ -202,15 +198,15 @@ helper.defaultsDialog = (function() {
value: "256HZ" value: "256HZ"
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 25 value: 25
}, },
{ {
key: "dterm_lpf_hz", key: "dterm_lpf_hz",
value: 40 value: 40
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "BIQUAD" value: "BIQUAD"
}, },
{ {
@ -372,15 +368,15 @@ helper.defaultsDialog = (function() {
value: "256HZ" value: "256HZ"
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 25 value: 25
}, },
{ {
key: "dterm_lpf_hz", key: "dterm_lpf_hz",
value: 40 value: 40
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "BIQUAD" value: "BIQUAD"
}, },
{ {
@ -533,11 +529,11 @@ helper.defaultsDialog = (function() {
value: "256HZ" value: "256HZ"
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 10 value: 10
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "BIQUAD" value: "BIQUAD"
}, },
{ {

View file

@ -166,7 +166,7 @@ GUI_control.prototype.content_ready = function (callback) {
}); });
// Insert a documentation button next to the tab title // Insert a documentation button next to the tab title
const tabTitle = $('div#content .tab_title'); const tabTitle = $('div#content .tab_title').first();
const documentationDiv = $('<div>').addClass('cf_doc_version_bt'); const documentationDiv = $('<div>').addClass('cf_doc_version_bt');
$('<a>').attr('href', 'https://github.com/iNavFlight/inav/wiki') $('<a>').attr('href', 'https://github.com/iNavFlight/inav/wiki')
.attr('target', '_blank').attr('id', 'button-documentation') .attr('target', '_blank').attr('id', 'button-documentation')

View file

@ -2472,7 +2472,7 @@ var mspHelper = (function (gui) {
}; };
/** /**
* Send a request to read a block of data from the dataflash at the given address and pass that address and a dataview * Send a request to read a block of data from the dataflash at the given address and pass that address and a ArrayBuffer
* of the returned data to the given callback (or null for the data if an error occured). * of the returned data to the given callback (or null for the data if an error occured).
*/ */
self.dataflashRead = function (address, onDataCallback) { self.dataflashRead = function (address, onDataCallback) {
@ -2496,7 +2496,7 @@ var mspHelper = (function (gui) {
/* Strip that address off the front of the reply and deliver it separately so the caller doesn't have to /* Strip that address off the front of the reply and deliver it separately so the caller doesn't have to
* figure out the reply format: * figure out the reply format:
*/ */
onDataCallback(address, new DataView(response.data.buffer, response.data.byteOffset + 4, response.data.buffer.byteLength - 4)); onDataCallback(address, response.data.buffer.slice(4));
} else { } else {
// Report error // Report error
onDataCallback(address, null); onDataCallback(address, null);

View file

@ -66,19 +66,11 @@ presets.presets = [
value: 250 value: 250
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 130 value: 130
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 150
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -224,19 +216,11 @@ presets.presets = [
value: 500 value: 500
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 110 value: 110
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 250
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -374,19 +358,11 @@ presets.presets = [
value: 500 value: 500
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 100 value: 100
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 160
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -537,19 +513,11 @@ presets.presets = [
value: 500 value: 500
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 60 value: 60
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 120
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -699,19 +667,11 @@ presets.presets = [
value: 250 value: 250
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 130 value: 130
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 180
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -865,19 +825,11 @@ presets.presets = [
value: 250 value: 250
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 115 value: 115
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 0
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -1023,19 +975,11 @@ presets.presets = [
value: 500 value: 500
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 100 value: 100
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "PT1"
},
{
key: "gyro_stage2_lowpass_hz",
value: 250
},
{
key: "gyro_stage2_lowpass_type",
value: "PT1" value: "PT1"
}, },
{ {
@ -1178,7 +1122,7 @@ presets.presets = [
value: "256HZ" value: "256HZ"
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 25 value: 25
}, },
{ {
@ -1186,7 +1130,7 @@ presets.presets = [
value: 40 value: 40
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "BIQUAD" value: "BIQUAD"
}, },
{ {
@ -1344,7 +1288,7 @@ presets.presets = [
value: "256HZ" value: "256HZ"
}, },
{ {
key: "gyro_lpf_hz", key: "gyro_main_lpf_hz",
value: 25 value: 25
}, },
{ {
@ -1352,7 +1296,7 @@ presets.presets = [
value: 40 value: 40
}, },
{ {
key: "gyro_lpf_type", key: "gyro_main_lpf_type",
value: "BIQUAD" value: "BIQUAD"
}, },
{ {

View file

@ -114,7 +114,7 @@
<div class="spacer_box_title" data-i18n="fixedWingNavigationConfiguration"></div> <div class="spacer_box_title" data-i18n="fixedWingNavigationConfiguration"></div>
</div> </div>
<div class="spacer_box"> <div class="spacer_box">
<div class="number"> <div class="number">
<input id="cruiseThrottle" type="number" data-setting="nav_fw_cruise_thr" data-setting-multiplier="1" step="1" min="1000" max="2000" /> <input id="cruiseThrottle" type="number" data-setting="nav_fw_cruise_thr" data-setting-multiplier="1" step="1" min="1000" max="2000" />
<label for="cruiseThrottle"><span data-i18n="cruiseThrottle"></span></label> <label for="cruiseThrottle"><span data-i18n="cruiseThrottle"></span></label>
@ -147,25 +147,25 @@
<label for="pitchToThrottleSmoothing"><span data-i18n="pitchToThrottleSmoothing"></span></label> <label for="pitchToThrottleSmoothing"><span data-i18n="pitchToThrottleSmoothing"></span></label>
<div class="helpicon cf_tip" data-i18n_title="pitchToThrottleSmoothingHelp"></div> <div class="helpicon cf_tip" data-i18n_title="pitchToThrottleSmoothingHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="pitchToThrottleThreshold" type="number" data-setting="nav_fw_pitch2thr_threshold" data-setting-multiplier="1" step="1" min="0" max="900" /> <input id="pitchToThrottleThreshold" type="number" data-setting="nav_fw_pitch2thr_threshold" data-setting-multiplier="1" step="1" min="0" max="900" />
<label for="pitchToThrottleThreshold"><span data-i18n="pitchToThrottleThreshold"></span></label> <label for="pitchToThrottleThreshold"><span data-i18n="pitchToThrottleThreshold"></span></label>
<div class="helpicon cf_tip" data-i18n_title="pitchToThrottleThresholdHelp"></div> <div class="helpicon cf_tip" data-i18n_title="pitchToThrottleThresholdHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input type="number" id="cruiseYawRate" data-setting="nav_fw_cruise_yaw_rate" data-setting-multiplier="1" step="1" min="0" max="60" /> <input type="number" id="cruiseYawRate" data-setting="nav_fw_cruise_yaw_rate" data-setting-multiplier="1" step="1" min="0" max="60" />
<label for="cruiseYawRate"><span data-i18n="cruiseYawRateLabel"></span></label> <label for="cruiseYawRate"><span data-i18n="cruiseYawRateLabel"></span></label>
<div class="helpicon cf_tip" data-i18n_title="cruiseYawRateHelp"></div> <div class="helpicon cf_tip" data-i18n_title="cruiseYawRateHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="maxBankAngle" type="number" data-setting="nav_fw_bank_angle" data-setting-multiplier="1" step="1" min="5" max="80" /> <input id="maxBankAngle" type="number" data-setting="nav_fw_bank_angle" data-setting-multiplier="1" step="1" min="5" max="80" />
<label for="maxBankAngle"><span data-i18n="maxBankAngle"></span></label> <label for="maxBankAngle"><span data-i18n="maxBankAngle"></span></label>
<div class="helpicon cf_tip" data-i18n_title="maxBankAngleHelp"></div> <div class="helpicon cf_tip" data-i18n_title="maxBankAngleHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="maxClimbAngle" type="number" data-setting="nav_fw_climb_angle" data-setting-multiplier="1" step="1" min="5" max="80" /> <input id="maxClimbAngle" type="number" data-setting="nav_fw_climb_angle" data-setting-multiplier="1" step="1" min="5" max="80" />
<label for="maxClimbAngle"><span data-i18n="maxClimbAngle"></span></label> <label for="maxClimbAngle"><span data-i18n="maxClimbAngle"></span></label>
@ -177,24 +177,24 @@
<label for="maxDiveAngle"><span data-i18n="maxDiveAngle"></span></label> <label for="maxDiveAngle"><span data-i18n="maxDiveAngle"></span></label>
<div class="helpicon cf_tip" data-i18n_title="maxDiveAngleHelp"></div> <div class="helpicon cf_tip" data-i18n_title="maxDiveAngleHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="loiterRadius" type="number" data-setting="nav_fw_loiter_radius" data-setting-multiplier="1" step="1" min="0" max="30000" /> <input id="loiterRadius" type="number" data-setting="nav_fw_loiter_radius" data-setting-multiplier="1" step="1" min="0" max="30000" />
<label for="loiterRadius"><span data-i18n="loiterRadius"></span></label> <label for="loiterRadius"><span data-i18n="loiterRadius"></span></label>
</div> </div>
<div class="select"> <div class="select">
<select id="loiterDirection" data-setting="fw_loiter_direction"></select> <select id="loiterDirection" data-setting="fw_loiter_direction"></select>
<label for="loiterDirection"><span data-i18n="loiterDirectionLabel"></span></label> <label for="loiterDirection"><span data-i18n="loiterDirectionLabel"></span></label>
<div class="helpicon cf_tip" data-i18n_title="loiterDirectionHelp"></div> <div class="helpicon cf_tip" data-i18n_title="loiterDirectionHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input type="number" id="controlSmoothness" data-setting="nav_fw_control_smoothness" data-setting-multiplier="1" step="1" min="0" max="9" /> <input type="number" id="controlSmoothness" data-setting="nav_fw_control_smoothness" data-setting-multiplier="1" step="1" min="0" max="9" />
<label for="controlSmoothness"><span data-i18n="controlSmoothness"></span></label> <label for="controlSmoothness"><span data-i18n="controlSmoothness"></span></label>
<div class="helpicon cf_tip" data-i18n_title="controlSmoothnessHelp"></div> <div class="helpicon cf_tip" data-i18n_title="controlSmoothnessHelp"></div>
</div> </div>
</div> </div>
</div> </div>
@ -251,55 +251,55 @@
<div class="spacer_box_title" data-i18n="multirotorBrakingConfiguration"></div> <div class="spacer_box_title" data-i18n="multirotorBrakingConfiguration"></div>
</div> </div>
<div class="spacer_box"> <div class="spacer_box">
<div class="number"> <div class="number">
<input id="brakingSpeedThreshold" type="number" data-setting="nav_mc_braking_speed_threshold" data-setting-multiplier="1" step="1" min="0" max="1000" /> <input id="brakingSpeedThreshold" type="number" data-setting="nav_mc_braking_speed_threshold" data-setting-multiplier="1" step="1" min="0" max="1000" />
<label for="brakingSpeedThreshold"><span data-i18n="brakingSpeedThreshold"></span></label> <label for="brakingSpeedThreshold"><span data-i18n="brakingSpeedThreshold"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingSpeedThresholdTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingSpeedThresholdTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingDisengageSpeed" type="number" data-setting="nav_mc_braking_disengage_speed" data-setting-multiplier="1" step="1" min="0" max="1000" /> <input id="brakingDisengageSpeed" type="number" data-setting="nav_mc_braking_disengage_speed" data-setting-multiplier="1" step="1" min="0" max="1000" />
<label for="brakingDisengageSpeed"><span data-i18n="brakingDisengageSpeed"></span></label> <label for="brakingDisengageSpeed"><span data-i18n="brakingDisengageSpeed"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingDisengageSpeedTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingDisengageSpeedTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingTimeout" type="number" data-setting="nav_mc_braking_timeout" data-setting-multiplier="1" step="1" min="100" max="5000" /> <input id="brakingTimeout" type="number" data-setting="nav_mc_braking_timeout" data-setting-multiplier="1" step="1" min="100" max="5000" />
<label for="brakingTimeout"><span data-i18n="brakingTimeout"></span></label> <label for="brakingTimeout"><span data-i18n="brakingTimeout"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingTimeoutTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingTimeoutTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingBoostFactor" type="number" data-setting="nav_mc_braking_boost_factor" data-setting-multiplier="1" step="1" min="0" max="200" /> <input id="brakingBoostFactor" type="number" data-setting="nav_mc_braking_boost_factor" data-setting-multiplier="1" step="1" min="0" max="200" />
<label for="brakingBoostFactor"><span data-i18n="brakingBoostFactor"></span></label> <label for="brakingBoostFactor"><span data-i18n="brakingBoostFactor"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostFactorTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingBoostFactorTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingBoostTimeout" type="number" data-setting="nav_mc_braking_boost_timeout" data-setting-multiplier="1" step="1" min="0" max="5000" /> <input id="brakingBoostTimeout" type="number" data-setting="nav_mc_braking_boost_timeout" data-setting-multiplier="1" step="1" min="0" max="5000" />
<label for="brakingBoostTimeout"><span data-i18n="brakingBoostTimeout"></span></label> <label for="brakingBoostTimeout"><span data-i18n="brakingBoostTimeout"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostTimeoutTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingBoostTimeoutTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingBoostSpeedThreshold" type="number" data-setting="nav_mc_braking_boost_speed_threshold" data-setting-multiplier="1" step="1" min="100" max="1000" /> <input id="brakingBoostSpeedThreshold" type="number" data-setting="nav_mc_braking_boost_speed_threshold" data-setting-multiplier="1" step="1" min="100" max="1000" />
<label for="brakingBoostSpeedThreshold"><span data-i18n="brakingBoostSpeedThreshold"></span></label> <label for="brakingBoostSpeedThreshold"><span data-i18n="brakingBoostSpeedThreshold"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostSpeedThresholdTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingBoostSpeedThresholdTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingBoostDisengageSpeed" type="number" data-setting="nav_mc_braking_boost_disengage_speed" data-setting-multiplier="1" step="1" min="100" max="1000" /> <input id="brakingBoostDisengageSpeed" type="number" data-setting="nav_mc_braking_boost_disengage_speed" data-setting-multiplier="1" step="1" min="100" max="1000" />
<label for="brakingBoostDisengageSpeed"><span data-i18n="brakingBoostDisengageSpeed"></span></label> <label for="brakingBoostDisengageSpeed"><span data-i18n="brakingBoostDisengageSpeed"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingBoostDisengageSpeedTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingBoostDisengageSpeedTip"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="brakingBankAngle" type="number" data-setting="nav_mc_braking_bank_angle" data-setting-multiplier="1" step="1" min="15" max="60" /> <input id="brakingBankAngle" type="number" data-setting="nav_mc_braking_bank_angle" data-setting-multiplier="1" step="1" min="15" max="60" />
<label for="brakingBankAngle"><span data-i18n="brakingBankAngle"></span></label> <label for="brakingBankAngle"><span data-i18n="brakingBankAngle"></span></label>
<div class="helpicon cf_tip" data-i18n_title="brakingBankAngleTip"></div> <div class="helpicon cf_tip" data-i18n_title="brakingBankAngleTip"></div>
</div> </div>
</div> </div>
</div> </div>
</div> <!-- right wrapper --> </div> <!-- right wrapper -->
@ -317,30 +317,30 @@
<div class="spacer_box_title" data-i18n="rthConfiguration"></div> <div class="spacer_box_title" data-i18n="rthConfiguration"></div>
</div> </div>
<div class="spacer_box"> <div class="spacer_box">
<div class="select"> <div class="select">
<select id="rthAltControlMode" data-setting="nav_rth_alt_mode"></select> <select id="rthAltControlMode" data-setting="nav_rth_alt_mode"></select>
<label for="rthAltControlMode"><span data-i18n="rthAltControlMode"></span></label> <label for="rthAltControlMode"><span data-i18n="rthAltControlMode"></span></label>
</div> </div>
<div class="number"> <div class="number">
<input type="number" id="rthAltitude" data-setting="nav_rth_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" /> <input type="number" id="rthAltitude" data-setting="nav_rth_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" />
<label for="rthAltitude"><span data-i18n="rthAltitude"></span></label> <label for="rthAltitude"><span data-i18n="rthAltitude"></span></label>
<div class="helpicon cf_tip" data-i18n_title="rthAltitudeHelp"></div> <div class="helpicon cf_tip" data-i18n_title="rthAltitudeHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input type="number" id="rthHomeAltitude" data-setting="nav_rth_home_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" /> <input type="number" id="rthHomeAltitude" data-setting="nav_rth_home_altitude" data-setting-multiplier="1" step="1" min="0" max="65000" />
<label for="rthHomeAltitude"><span data-i18n="rthHomeAltitudeLabel"></span></label> <label for="rthHomeAltitude"><span data-i18n="rthHomeAltitudeLabel"></span></label>
<div class="helpicon cf_tip" data-i18n_title="rthHomeAltitudeHelp"></div> <div class="helpicon cf_tip" data-i18n_title="rthHomeAltitudeHelp"></div>
</div> </div>
<div class="select"> <div class="select">
<select id="rth-climb-first" data-setting="nav_rth_climb_first"></select> <select id="rth-climb-first" data-setting="nav_rth_climb_first"></select>
<label for="rth-climb-first"><span data-i18n="rthClimbFirst"></span></label> <label for="rth-climb-first"><span data-i18n="rthClimbFirst"></span></label>
<div class="helpicon cf_tip" data-i18n_title="rthClimbFirstHelp"></div> <div class="helpicon cf_tip" data-i18n_title="rthClimbFirstHelp"></div>
</div> </div>
<div class="checkbox"> <div class="checkbox">
<input type="checkbox" class="toggle update_preview" id="rthClimbIgnoreEmergency" data-setting="nav_rth_climb_ignore_emerg" data-live="true" /> <input type="checkbox" class="toggle update_preview" id="rthClimbIgnoreEmergency" data-setting="nav_rth_climb_ignore_emerg" data-live="true" />
<label for="rthClimbIgnoreEmergency"><span data-i18n="rthClimbIgnoreEmergency"></span></label> <label for="rthClimbIgnoreEmergency"><span data-i18n="rthClimbIgnoreEmergency"></span></label>
@ -351,56 +351,32 @@
<label for="rthAltControlOverride"><span data-i18n="rthAltControlOverride"></span></label> <label for="rthAltControlOverride"><span data-i18n="rthAltControlOverride"></span></label>
<div class="helpicon cf_tip" data-i18n_title="rthAltControlOverrideHelp"></div> <div class="helpicon cf_tip" data-i18n_title="rthAltControlOverrideHelp"></div>
</div> </div>
<div class="checkbox notFixedWingTuning"> <div class="checkbox notFixedWingTuning">
<input type="checkbox" class="toggle update_preview" id="rthTailFirst" data-setting="nav_rth_tail_first" data-live="true" /> <input type="checkbox" class="toggle update_preview" id="rthTailFirst" data-setting="nav_rth_tail_first" data-live="true" />
<label for="rthTailFirst"><span data-i18n="rthTailFirst"></span></label> <label for="rthTailFirst"><span data-i18n="rthTailFirst"></span></label>
</div> </div>
<div class="select"> <div class="select">
<select id="rthAllowLanding" data-setting="nav_rth_allow_landing"></select> <select id="rthAllowLanding" data-setting="nav_rth_allow_landing"></select>
<label for="rthAllowLanding"><span data-i18n="rthAllowLanding"></span></label> <label for="rthAllowLanding"><span data-i18n="rthAllowLanding"></span></label>
</div> </div>
<div class="number">
<input id="landMinAltVspd" type="number" data-setting="nav_landing_minalt_vspd" data-setting-multiplier="1" step="1" min="50" max="500" />
<label for="landMinAltVspd"><span data-i18n="landMinAltVspd"></span></label>
</div>
<div class="number">
<input id="landMaxAltVspd" type="number" data-setting="nav_landing_maxalt_vspd" data-setting-multiplier="1" step="1" min="100" max="2000" />
<label for="landMaxAltVspd"><span data-i18n="landMaxAltVspd"></span></label>
</div>
<div class="number">
<input id="landSlowdownMinAlt" type="number" data-setting="nav_land_slowdown_minalt" data-setting-multiplier="1" step="1" min="50" max="1000" />
<label for="landSlowdownMinAlt"><span data-i18n="landSlowdownMinAlt"></span></label>
</div>
<div class="number">
<input id="landSlowdownMaxAlt" type="number" data-setting="nav_land_slowdown_maxalt" data-setting-multiplier="1" step="1" min="500" max="4000" />
<label for="landSlowdownMaxAlt"><span data-i18n="landSlowdownMaxAlt"></span></label>
</div>
<div class="number"> <div class="number">
<input id="rth-min-distance" type="number" data-setting="nav_min_rth_distance" data-setting-multiplier="1" step="1" min="0" max="5000" /> <input id="rth-min-distance" type="number" data-setting="nav_min_rth_distance" data-setting-multiplier="1" step="1" min="0" max="5000" />
<label for="rth-min-distance"><span data-i18n="minRthDistance"></span></label> <label for="rth-min-distance"><span data-i18n="minRthDistance"></span></label>
<div class="helpicon cf_tip" data-i18n_title="minRthDistanceHelp"></div> <div class="helpicon cf_tip" data-i18n_title="minRthDistanceHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input id="rthAbortThreshold" type="number" data-setting="nav_rth_abort_threshold" data-setting-multiplier="1" step="1" min="0" max="65000" /> <input id="rthAbortThreshold" type="number" data-setting="nav_rth_abort_threshold" data-setting-multiplier="1" step="1" min="0" max="65000" />
<label for="rthAbortThreshold"><span data-i18n="rthAbortThreshold"></span></label> <label for="rthAbortThreshold"><span data-i18n="rthAbortThreshold"></span></label>
<div class="helpicon cf_tip" data-i18n_title="rthAbortThresholdHelp"></div> <div class="helpicon cf_tip" data-i18n_title="rthAbortThresholdHelp"></div>
</div> </div>
<div class="number">
<input id="emergencyDescentRate" type="number" data-setting="nav_emerg_landing_speed" data-setting-multiplier="1" step="1" min="10" max="2000" />
<label for="emergencyDescentRate"><span data-i18n="emergencyDescentRate"></span></label>
</div>
</div> </div>
</div> </div>
</div> <!-- Left wrapper --> </div> <!-- Left wrapper -->
<div class="rightWrapper"> <div class="rightWrapper">
@ -429,19 +405,55 @@
<div class="spacer_box_title" data-i18n="waypointConfiguration"></div> <div class="spacer_box_title" data-i18n="waypointConfiguration"></div>
</div> </div>
<div class="spacer_box"> <div class="spacer_box">
<div class="number"> <div class="number">
<input type="number" id="waypointRadius" data-setting="nav_wp_radius" data-setting-multiplier="1" step="1" min="10" max="10000" /> <input type="number" id="waypointRadius" data-setting="nav_wp_radius" data-setting-multiplier="1" step="1" min="10" max="10000" />
<label for="waypointRadius"><span data-i18n="waypointRadius"></span></label> <label for="waypointRadius"><span data-i18n="waypointRadius"></span></label>
<div class="helpicon cf_tip" data-i18n_title="waypointRadiusHelp"></div> <div class="helpicon cf_tip" data-i18n_title="waypointRadiusHelp"></div>
</div> </div>
<div class="number"> <div class="number">
<input type="number" id="waypointSafeDistance" data-setting="nav_wp_safe_distance" data-setting-multiplier="1" step="1" min="0" max="65000" /> <input type="number" id="waypointSafeDistance" data-setting="nav_wp_safe_distance" data-setting-multiplier="1" step="1" min="0" max="65000" />
<label for="waypointSafeDistance"><span data-i18n="waypointSafeDistance"></span></label> <label for="waypointSafeDistance"><span data-i18n="waypointSafeDistance"></span></label>
<div class="helpicon cf_tip" data-i18n_title="waypointSafeDistanceHelp"></div> <div class="helpicon cf_tip" data-i18n_title="waypointSafeDistanceHelp"></div>
</div> </div>
</div>
</div>
<div class="config-setion gui_box grey">
<div class="gui_box_titlebar">
<div class="spacer_box_title" data-i18n="autoLandingSettings"></div>
</div>
<div class="spacer_box">
<div class="number">
<input id="landMaxAltVspd" type="number" data-setting="nav_land_maxalt_vspd" data-setting-multiplier="1" step="1" min="100" max="2000" />
<label for="landMaxAltVspd"><span data-i18n="landMaxAltVspd"></span></label>
<div class="helpicon cf_tip" data-i18n_title="landMaxAltVspdHelp"></div>
</div>
<div class="number">
<input id="landSlowdownMaxAlt" type="number" data-setting="nav_land_slowdown_maxalt" data-setting-multiplier="1" step="1" min="500" max="4000" />
<label for="landSlowdownMaxAlt"><span data-i18n="landSlowdownMaxAlt"></span></label>
<div class="helpicon cf_tip" data-i18n_title="landSlowdownMaxAltHelp"></div>
</div>
<div class="number">
<input id="landMinAltVspd" type="number" data-setting="nav_land_minalt_vspd" data-setting-multiplier="1" step="1" min="50" max="500" />
<label for="landMinAltVspd"><span data-i18n="landMinAltVspd"></span></label>
<div class="helpicon cf_tip" data-i18n_title="landMinAltVspdHelp"></div>
</div>
<div class="number">
<input id="landSlowdownMinAlt" type="number" data-setting="nav_land_slowdown_minalt" data-setting-multiplier="1" step="1" min="50" max="1000" />
<label for="landSlowdownMinAlt"><span data-i18n="landSlowdownMinAlt"></span></label>
</div>
<div class="number">
<input id="emergencyDescentRate" type="number" data-setting="nav_emerg_landing_speed" data-setting-multiplier="1" step="1" min="10" max="2000" />
<label for="emergencyDescentRate"><span data-i18n="emergencyDescentRate"></span></label>
</div>
</div> </div>
</div> </div>

View file

@ -1,3 +1,4 @@
/*global $,nwdialog*/
'use strict'; 'use strict';
TABS.firmware_flasher = {}; TABS.firmware_flasher = {};
@ -184,57 +185,41 @@ TABS.firmware_flasher.initialize = function (callback) {
$('select[name="release"]').empty().append('<option value="0">Offline</option>'); $('select[name="release"]').empty().append('<option value="0">Offline</option>');
}); });
// UI Hooks $('a.load_file').on('click', function () {
$('a.load_file').click(function () {
chrome.fileSystem.chooseEntry({type: 'openFile', accepts: [{extensions: ['hex']}]}, function (fileEntry) {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
return; nwdialog.setContext(document);
} nwdialog.openFileDialog('.hex', function(filename) {
const fs = require('fs');
// hide github info (if it exists)
$('div.git_info').slideUp(); $('div.git_info').slideUp();
chrome.fileSystem.getDisplayPath(fileEntry, function (path) { console.log('Loading file from: ' + filename);
console.log('Loading file from: ' + path);
fileEntry.file(function (file) { fs.readFile(filename, (err, data) => {
var reader = new FileReader();
reader.onprogress = function (e) { if (err) {
if (e.total > 104857600) { // 100 MB console.log("Error loading local file", err);
// dont allow reading files bigger then 100 MB return;
console.log('File limit (100 MB) exceeded, aborting'); }
reader.abort();
}
};
reader.onloadend = function(e) { console.log('File loaded');
if (e.total != 0 && e.total == e.loaded) {
console.log('File loaded');
intel_hex = e.target.result; parse_hex(data.toString(), function (data) {
parsed_hex = data;
parse_hex(intel_hex, function (data) { if (parsed_hex) {
parsed_hex = data; googleAnalytics.sendEvent('Flashing', 'Firmware', 'local');
$('a.flash_firmware').removeClass('disabled');
if (parsed_hex) { $('span.progressLabel').text('Loaded Local Firmware: (' + parsed_hex.bytes_total + ' bytes)');
googleAnalytics.sendEvent('Flashing', 'Firmware', 'local'); } else {
$('a.flash_firmware').removeClass('disabled'); $('span.progressLabel').text(chrome.i18n.getMessage('firmwareFlasherHexCorrupted'));
}
$('span.progressLabel').text('Loaded Local Firmware: (' + parsed_hex.bytes_total + ' bytes)');
} else {
$('span.progressLabel').text(chrome.i18n.getMessage('firmwareFlasherHexCorrupted'));
}
});
}
};
reader.readAsText(file);
}); });
}); });
}); });
}); });
/** /**

View file

@ -1,4 +1,4 @@
/*global MSP,MSPCodes,BF_CONFIG,TABS,GUI,CONFIGURATOR,helper,mspHelper*/ /*global $,MSP,MSPCodes,BF_CONFIG,TABS,GUI,CONFIGURATOR,helper,mspHelper,nwdialog,SDCARD,chrome*/
'use strict'; 'use strict';
var var
@ -304,39 +304,34 @@ TABS.onboard_logging.initialize = function (callback) {
if (GUI.connected_to) { if (GUI.connected_to) {
// Begin by refreshing the occupied size in case it changed while the tab was open // Begin by refreshing the occupied size in case it changed while the tab was open
flash_update_summary(function() { flash_update_summary(function() {
var const maxBytes = DATAFLASH.usedSize;
maxBytes = DATAFLASH.usedSize;
prepare_file(function(fileWriter) { prepare_file(function(filename) {
var const fs = require('fs');
nextAddress = 0; let nextAddress = 0;
show_saving_dialog(); show_saving_dialog();
function onChunkRead(chunkAddress, chunkDataView) { function onChunkRead(chunkAddress, chunk) {
if (chunkDataView != null) { if (chunk != null) {
// Did we receive any data? // Did we receive any data?
if (chunkDataView.byteLength > 0) { if (chunk.byteLength > 0) {
nextAddress += chunkDataView.byteLength; nextAddress += chunk.byteLength;
$(".dataflash-saving progress").attr("value", nextAddress / maxBytes * 100); $(".dataflash-saving progress").attr("value", nextAddress / maxBytes * 100);
var fs.writeFileSync(filename, new Uint8Array(chunk), {
blob = new Blob([chunkDataView]); "flag": "a"
})
fileWriter.onwriteend = function(e) { if (saveCancelled) {
if (saveCancelled || nextAddress >= maxBytes) { dismiss_saving_dialog();
if (saveCancelled) { } else if (nextAddress >= maxBytes) {
dismiss_saving_dialog(); mark_saving_dialog_done();
} else { }else {
mark_saving_dialog_done(); mspHelper.dataflashRead(nextAddress, onChunkRead);
} }
} else {
mspHelper.dataflashRead(nextAddress, onChunkRead);
}
};
fileWriter.write(blob);
} else { } else {
// A zero-byte block indicates end-of-file, so we're done // A zero-byte block indicates end-of-file, so we're done
mark_saving_dialog_done(); mark_saving_dialog_done();
@ -355,50 +350,23 @@ TABS.onboard_logging.initialize = function (callback) {
} }
function prepare_file(onComplete) { function prepare_file(onComplete) {
var const date = new Date();
date = new Date(), const filename = 'blackbox_log_' + date.getFullYear() + '-' + zeroPad(date.getMonth() + 1, 2) + '-'
filename = 'blackbox_log_' + date.getFullYear() + '-' + zeroPad(date.getMonth() + 1, 2) + '-'
+ zeroPad(date.getDate(), 2) + '_' + zeroPad(date.getHours(), 2) + zeroPad(date.getMinutes(), 2) + zeroPad(date.getDate(), 2) + '_' + zeroPad(date.getHours(), 2) + zeroPad(date.getMinutes(), 2)
+ zeroPad(date.getSeconds(), 2); + zeroPad(date.getSeconds(), 2);
const accepts = [{
description: 'TXT files', extensions: ['txt'],
}];
chrome.fileSystem.chooseEntry({type: 'saveFile', suggestedName: filename, nwdialog.setContext(document);
accepts: [{extensions: ['TXT']}]}, function(fileEntry) { nwdialog.saveFileDialog(filename, accepts, '', function(file) {
var error = chrome.runtime.lastError; onComplete(file);
if (error) {
console.error(error.message);
if (error.message != "User cancelled") {
GUI.log(chrome.i18n.getMessage('dataflashFileWriteFailed'));
}
return;
}
// echo/console log path specified
chrome.fileSystem.getDisplayPath(fileEntry, function(path) {
console.log('Dataflash dump file path: ' + path);
});
fileEntry.createWriter(function (fileWriter) {
fileWriter.onerror = function (e) {
console.error(e);
// stop logging if the procedure was/is still running
};
onComplete(fileWriter);
}, function (e) {
// File is not readable or does not exist!
console.error(e);
GUI.log(chrome.i18n.getMessage('dataflashFileWriteFailed'));
});
}); });
} }
function ask_to_erase_flash() { function ask_to_erase_flash() {
eraseCancelled = false; eraseCancelled = false;
$(".dataflash-confirm-erase").removeClass('erasing'); $(".dataflash-confirm-erase").removeClass('erasing');
$(".dataflash-confirm-erase")[0].showModal(); $(".dataflash-confirm-erase")[0].showModal();
} }

View file

@ -1,4 +1,4 @@
/*global $*/ /*global $,nwdialog*/
'use strict'; 'use strict';
var SYM = SYM || {}; var SYM = SYM || {};
@ -194,31 +194,13 @@ FONT.parseMCMFontFile = function (data) {
//noinspection JSUnusedLocalSymbols //noinspection JSUnusedLocalSymbols
FONT.openFontFile = function ($preview) { FONT.openFontFile = function ($preview) {
return new Promise(function (resolve) { return new Promise(function (resolve) {
//noinspection JSUnresolvedVariable
chrome.fileSystem.chooseEntry({type: 'openFile', accepts: [ nwdialog.setContext(document);
{extensions: ['mcm']} nwdialog.openFileDialog('.mcm', function(filename) {
]}, function (fileEntry) { const fs = require('fs');
FONT.data.loaded_font_file = fileEntry.name; const fontData = fs.readFileSync(filename, {flag: "r"});
//noinspection JSUnresolvedVariable FONT.parseMCMFontFile(fontData.toString());
if (chrome.runtime.lastError) { resolve();
//noinspection JSUnresolvedVariable
console.error(chrome.runtime.lastError.message);
return;
}
fileEntry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (e) {
//noinspection JSUnresolvedVariable
if (e.total != 0 && e.total == e.loaded) {
FONT.parseMCMFontFile(e.target.result);
resolve();
}
else {
console.error('could not load whole font file');
}
};
reader.readAsText(file);
});
}); });
}); });
}; };

View file

@ -263,6 +263,13 @@
<div class="cf_column"> <div class="cf_column">
<table class="settings-table settings-table--filtering"> <table class="settings-table settings-table--filtering">
<tbody> <tbody>
<tr>
<th data-i18n="gyro_main_lpf_hz"></th>
<td>
<input data-setting="gyro_main_lpf_hz" type="number" class="rate-tpa_input" />
<div class="helpicon cf_tip" data-i18n_title="gyro_main_lpf_hz_help"></div>
</td>
</tr>
<tr class="hides-v2_5"> <tr class="hides-v2_5">
<th>Gyro Dynamic Notch Filter</th> <th>Gyro Dynamic Notch Filter</th>
<td> <td>
@ -324,37 +331,6 @@
<input data-setting="setpoint_kalman_w" type="number" class="rate-tpa_input" /> <input data-setting="setpoint_kalman_w" type="number" class="rate-tpa_input" />
</td> </td>
</tr> </tr>
<tr>
<th data-i18n="gyro_lpf_type"></th>
<td>
<select data-setting="gyro_lpf_type" />
<div class="helpicon cf_tip" data-i18n_title="gyro_lpf_type_help"></div>
</td>
</tr>
<tr>
<th data-i18n="gyroLpfCutoffFrequency"></th>
<td>
<input type="number" id="gyroSoftLpfHz" class="rate-tpa_input" step="1" min="0"
max="200" /> Hz
<div class="helpicon cf_tip" data-i18n_title="gyroLpfCutoffFrequencyHelp"></div>
</td>
</tr>
<tr>
<th data-i18n="gyro_stage2_lowpass_type"></th>
<td>
<select data-setting="gyro_stage2_lowpass_type" />
<div class="helpicon cf_tip" data-i18n_title="gyro_stage2_lowpass_type_help"></div>
</td>
</tr>
<tr>
<th data-i18n="gyroStage2LpfCutoffFrequency"></th>
<td>
<input type="number" id="gyroStage2LpfCutoffFrequency"
data-simple-bind="FILTER_CONFIG.gyroStage2LowpassHz" class="rate-tpa_input" step="1"
min="0" max="500" /> Hz
<div class="helpicon cf_tip" data-i18n_title="gyroStage2LpfCutoffFrequencyHelp"></div>
</td>
</tr>
</tbody> </tbody>
</table> </table>
@ -365,28 +341,13 @@
<div class="cf_column"> <div class="cf_column">
<table class="settings-table settings-table--filtering"> <table class="settings-table settings-table--filtering">
<tbody> <tbody>
<tr>
<th data-i18n="dterm_lpf_type"></th>
<td>
<select data-setting="dterm_lpf_type" />
<div class="helpicon cf_tip" data-i18n_title="dterm_lpf_type_help"></div>
</td>
</tr>
<tr> <tr>
<th data-i18n="dtermLpfCutoffFrequency"></th> <th data-i18n="dtermLpfCutoffFrequency"></th>
<td> <td>
<input type="number" id="dtermLpfHz" class="rate-tpa_input" step="1" min="0" <input data-setting="dterm_lpf_hz" type="number" class="rate-tpa_input" />
max="200" /> Hz
<div class="helpicon cf_tip" data-i18n_title="dtermLpfCutoffFrequencyHelp"></div> <div class="helpicon cf_tip" data-i18n_title="dtermLpfCutoffFrequencyHelp"></div>
</td> </td>
</tr> </tr>
<tr>
<th data-i18n="dterm_lpf2_type"></th>
<td>
<select data-setting="dterm_lpf2_type" />
<div class="helpicon cf_tip" data-i18n_title="dterm_lpf2_type_help"></div>
</td>
</tr>
<tr> <tr>
<th data-i18n="dterm_lpf2_hz"></th> <th data-i18n="dterm_lpf2_hz"></th>
<td> <td>

View file

@ -162,33 +162,21 @@ TABS.pid_tuning.initialize = function (callback) {
pid_and_rc_to_form(); pid_and_rc_to_form();
var $magHoldYawRate = $("#magHoldYawRate"), var $magHoldYawRate = $("#magHoldYawRate"),
$gyroSoftLpfHz = $('#gyroSoftLpfHz'),
$accSoftLpfHz = $('#accSoftLpfHz'), $accSoftLpfHz = $('#accSoftLpfHz'),
$dtermLpfHz = $('#dtermLpfHz'),
$yawLpfHz = $('#yawLpfHz'); $yawLpfHz = $('#yawLpfHz');
$magHoldYawRate.val(INAV_PID_CONFIG.magHoldRateLimit); $magHoldYawRate.val(INAV_PID_CONFIG.magHoldRateLimit);
$gyroSoftLpfHz.val(FILTER_CONFIG.gyroSoftLpfHz);
$accSoftLpfHz.val(INAV_PID_CONFIG.accSoftLpfHz); $accSoftLpfHz.val(INAV_PID_CONFIG.accSoftLpfHz);
$dtermLpfHz.val(FILTER_CONFIG.dtermLpfHz);
$yawLpfHz.val(FILTER_CONFIG.yawLpfHz); $yawLpfHz.val(FILTER_CONFIG.yawLpfHz);
$magHoldYawRate.change(function () { $magHoldYawRate.change(function () {
INAV_PID_CONFIG.magHoldRateLimit = parseInt($magHoldYawRate.val(), 10); INAV_PID_CONFIG.magHoldRateLimit = parseInt($magHoldYawRate.val(), 10);
}); });
$gyroSoftLpfHz.change(function () {
FILTER_CONFIG.gyroSoftLpfHz = parseInt($gyroSoftLpfHz.val(), 10);
});
$accSoftLpfHz.change(function () { $accSoftLpfHz.change(function () {
INAV_PID_CONFIG.accSoftLpfHz = parseInt($accSoftLpfHz.val(), 10); INAV_PID_CONFIG.accSoftLpfHz = parseInt($accSoftLpfHz.val(), 10);
}); });
$dtermLpfHz.change(function () {
FILTER_CONFIG.dtermLpfHz = parseInt($dtermLpfHz.val(), 10);
});
$yawLpfHz.change(function () { $yawLpfHz.change(function () {
FILTER_CONFIG.yawLpfHz = parseInt($yawLpfHz.val(), 10); FILTER_CONFIG.yawLpfHz = parseInt($yawLpfHz.val(), 10);
}); });