@@ -311,26 +311,6 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
311311 // translate to user-selected language
312312 i18n . localizePage ( ) ;
313313
314- var gyro_align_content_e = $ ( '.tab-configuration .gyro_align_content' ) ;
315- var legacy_gyro_alignment_e = $ ( '.tab-configuration .legacy_gyro_alignment' ) ;
316- var legacy_accel_alignment_e = $ ( '.tab-configuration .legacy_accel_alignment' ) ;
317-
318- // Hide the new multi gyro element by default
319- gyro_align_content_e . hide ( ) ;
320-
321- // If we are sent USE_MULTI_GYRO flag from the target, show the new element, while hiding the old ones.
322- if ( SENSOR_ALIGNMENT . use_multi_gyro == 1 ) {
323- gyro_align_content_e . show ( ) ;
324- legacy_gyro_alignment_e . hide ( ) ;
325- legacy_accel_alignment_e . hide ( ) ;
326- }
327-
328- // As the gyro_to_use does not have a 'DEFAULT' 0th element enum like alingments, the 0th element 'First' is excluded from here.
329- var gyros = [
330- i18n . getMessage ( 'configurationSensorGyroToUseSecond' ) ,
331- i18n . getMessage ( 'configurationSensorGyroToUseBoth' )
332- ] ;
333-
334314 var alignments = [
335315 'CW 0°' ,
336316 'CW 90°' ,
@@ -342,6 +322,10 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
342322 'CW 270° flip'
343323 ] ;
344324
325+ var gyro_align_content_e = $ ( '.tab-configuration .gyro_align_content' ) ;
326+ var legacy_gyro_alignment_e = $ ( '.tab-configuration .legacy_gyro_alignment' ) ;
327+ var legacy_accel_alignment_e = $ ( '.tab-configuration .legacy_accel_alignment' ) ;
328+
345329 var orientation_gyro_e = $ ( 'select.gyroalign' ) ;
346330 var orientation_acc_e = $ ( 'select.accalign' ) ;
347331 var orientation_mag_e = $ ( 'select.magalign' ) ;
@@ -350,28 +334,62 @@ TABS.configuration.initialize = function (callback, scrollPosition) {
350334 var orientation_gyro_1_align_e = $ ( 'select.gyro_1_align' ) ;
351335 var orientation_gyro_2_align_e = $ ( 'select.gyro_2_align' ) ;
352336
337+ gyro_align_content_e . hide ( ) ; // default value
353338 if ( semver . lt ( CONFIG . apiVersion , "1.15.0" ) ) {
354339 $ ( '.tab-configuration .sensoralignment' ) . hide ( ) ;
355340 } else {
356- for ( var i = 0 ; i < gyros . length ; i ++ ) {
357- orientation_gyro_to_use_e . append ( '<option value="' + ( i + 1 ) + '">' + gyros [ i ] + '</option>' ) ;
358- }
341+
359342 for ( var i = 0 ; i < alignments . length ; i ++ ) {
360343 orientation_gyro_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
361344 orientation_acc_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
362345 orientation_mag_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
363-
364- orientation_gyro_1_align_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
365- orientation_gyro_2_align_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
366346 }
347+
367348 orientation_gyro_e . val ( SENSOR_ALIGNMENT . align_gyro ) ;
368349 orientation_acc_e . val ( SENSOR_ALIGNMENT . align_acc ) ;
369350 orientation_mag_e . val ( SENSOR_ALIGNMENT . align_mag ) ;
370351
371- orientation_gyro_to_use_e . val ( SENSOR_ALIGNMENT . gyro_to_use ) ;
352+ // Multi gyro config
353+ if ( semver . gte ( CONFIG . apiVersion , "1.41.0" ) ) {
354+
355+ gyro_align_content_e . show ( ) ;
356+ legacy_gyro_alignment_e . hide ( ) ;
357+ legacy_accel_alignment_e . hide ( ) ;
358+
359+ const GYRO_DETECTION_FLAGS = {
360+ DETECTED_GYRO_1 : ( 1 << 0 ) ,
361+ DETECTED_GYRO_2 : ( 1 << 1 ) ,
362+ DETECTED_DUAL_GYROS : ( 1 << 7 )
363+ } ;
364+
365+ var detected_gyro_1 = ( SENSOR_ALIGNMENT . gyro_detection_flags & GYRO_DETECTION_FLAGS . DETECTED_GYRO_1 ) != 0 ;
366+ var detected_gyro_2 = ( SENSOR_ALIGNMENT . gyro_detection_flags & GYRO_DETECTION_FLAGS . DETECTED_GYRO_2 ) != 0 ;
367+ var detected_dual_gyros = ( SENSOR_ALIGNMENT . gyro_detection_flags & GYRO_DETECTION_FLAGS . DETECTED_DUAL_GYROS ) != 0 ;
368+
369+ if ( detected_gyro_1 ) {
370+ orientation_gyro_to_use_e . append ( '<option value="0">' + i18n . getMessage ( 'configurationSensorGyroToUseFirst' ) + '</option>' ) ;
371+ }
372+ if ( detected_gyro_2 ) {
373+ orientation_gyro_to_use_e . append ( '<option value="1">' + i18n . getMessage ( 'configurationSensorGyroToUseSecond' ) + '</option>' ) ;
374+ }
375+ if ( detected_dual_gyros ) {
376+ orientation_gyro_to_use_e . append ( '<option value="2">' + i18n . getMessage ( 'configurationSensorGyroToUseBoth' ) + '</option>' ) ;
377+ }
372378
373- orientation_gyro_1_align_e . val ( SENSOR_ALIGNMENT . gyro_1_align ) ;
374- orientation_gyro_2_align_e . val ( SENSOR_ALIGNMENT . gyro_2_align ) ;
379+ for ( var i = 0 ; i < alignments . length ; i ++ ) {
380+ orientation_gyro_1_align_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
381+ orientation_gyro_2_align_e . append ( '<option value="' + ( i + 1 ) + '">' + alignments [ i ] + '</option>' ) ;
382+ }
383+
384+ orientation_gyro_to_use_e . val ( SENSOR_ALIGNMENT . gyro_to_use ) ;
385+ orientation_gyro_1_align_e . val ( SENSOR_ALIGNMENT . gyro_1_align ) ;
386+ orientation_gyro_2_align_e . val ( SENSOR_ALIGNMENT . gyro_2_align ) ;
387+
388+ $ ( '.gyro_alignment_inputs_first' ) . toggle ( detected_gyro_1 ) ;
389+ $ ( '.gyro_alignment_inputs_second' ) . toggle ( detected_gyro_2 ) ;
390+ $ ( '.gyro_alignment_inputs_selection' ) . toggle ( detected_gyro_1 || detected_gyro_2 ) ;
391+ $ ( '.gyro_alignment_inputs_notfound' ) . toggle ( ! detected_gyro_1 && ! detected_gyro_2 ) ;
392+ }
375393 }
376394
377395 // ESC protocols
0 commit comments