@@ -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 */
0 commit comments