@@ -423,6 +423,70 @@ configuration.initialize = function (callback) {
423
423
FC . BEEPER_CONFIG . beepers . updateData ( element ) ;
424
424
} ) ;
425
425
426
+ function save_config ( ) {
427
+ // Define all configuration operations to execute
428
+ const saveOperations = [
429
+ { code : MSPCodes . MSP_SET_FEATURE_CONFIG } ,
430
+ { code : MSPCodes . MSP_SET_BEEPER_CONFIG } ,
431
+ { code : MSPCodes . MSP_SET_BOARD_ALIGNMENT_CONFIG } ,
432
+ { code : MSPCodes . MSP_SET_RC_DEADBAND } ,
433
+ { code : MSPCodes . MSP_SET_SENSOR_ALIGNMENT } ,
434
+ { code : MSPCodes . MSP_SET_ADVANCED_CONFIG } ,
435
+ { code : MSPCodes . MSP_SET_ACC_TRIM } ,
436
+ { code : MSPCodes . MSP_SET_ARMING_CONFIG } ,
437
+ { code : MSPCodes . MSP_SET_SENSOR_CONFIG } ,
438
+ {
439
+ condition : ( ) => semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_45 ) ,
440
+ code : MSPCodes . MSP2_SET_TEXT ,
441
+ extraParams : MSPCodes . CRAFT_NAME ,
442
+ fallback : { code : MSPCodes . MSP_SET_NAME } ,
443
+ } ,
444
+ {
445
+ condition : ( ) => semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_45 ) ,
446
+ code : MSPCodes . MSP2_SET_TEXT ,
447
+ extraParams : MSPCodes . PILOT_NAME ,
448
+ } ,
449
+ { code : MSPCodes . MSP_SET_RX_CONFIG } ,
450
+ {
451
+ condition : ( ) => semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_46 ) ,
452
+ code : MSPCodes . MSP_SET_COMPASS_CONFIG ,
453
+ } ,
454
+ ] ;
455
+
456
+ // Start with a resolved promise
457
+ let saveChain = Promise . resolve ( true ) ;
458
+
459
+ // Build the promise chain
460
+ saveOperations . forEach ( ( operation ) => {
461
+ saveChain = saveChain . then ( ( ) => {
462
+ // Skip if operation has a condition that returns false
463
+ if ( operation . condition && ! operation . condition ( ) ) {
464
+ if ( operation . fallback ) {
465
+ // Use fallback operation if provided
466
+ return MSP . promise (
467
+ operation . fallback . code ,
468
+ operation . fallback . extraParams
469
+ ? mspHelper . crunch ( operation . fallback . code , operation . fallback . extraParams )
470
+ : mspHelper . crunch ( operation . fallback . code ) ,
471
+ ) ;
472
+ }
473
+ return Promise . resolve ( true ) ;
474
+ }
475
+
476
+ // Execute the operation
477
+ return MSP . promise (
478
+ operation . code ,
479
+ operation . extraParams
480
+ ? mspHelper . crunch ( operation . code , operation . extraParams )
481
+ : mspHelper . crunch ( operation . code ) ,
482
+ ) ;
483
+ } ) ;
484
+ } ) ;
485
+
486
+ // Complete the chain with final write
487
+ return saveChain . then ( ( ) => mspHelper . writeConfiguration ( true ) ) ;
488
+ }
489
+
426
490
$ ( "a.save" ) . on ( "click" , function ( ) {
427
491
// gather data that doesn't have automatic change event bound
428
492
FC . BOARD_ALIGNMENT_CONFIG . roll = parseInt ( $ ( 'input[name="board_align_roll"]' ) . val ( ) ) ;
@@ -500,69 +564,6 @@ configuration.initialize = function (callback) {
500
564
FC . CONFIG . name = $ ( 'input[name="craftName"]' ) . val ( ) . trim ( ) ;
501
565
}
502
566
503
- function save_config ( ) {
504
- Promise . resolve ( true )
505
- . then ( ( ) =>
506
- MSP . promise ( MSPCodes . MSP_SET_FEATURE_CONFIG , mspHelper . crunch ( MSPCodes . MSP_SET_FEATURE_CONFIG ) ) ,
507
- )
508
- . then ( ( ) =>
509
- MSP . promise ( MSPCodes . MSP_SET_BEEPER_CONFIG , mspHelper . crunch ( MSPCodes . MSP_SET_BEEPER_CONFIG ) ) ,
510
- )
511
- . then ( ( ) =>
512
- MSP . promise (
513
- MSPCodes . MSP_SET_BOARD_ALIGNMENT_CONFIG ,
514
- mspHelper . crunch ( MSPCodes . MSP_SET_BOARD_ALIGNMENT_CONFIG ) ,
515
- ) ,
516
- )
517
- . then ( ( ) =>
518
- MSP . promise ( MSPCodes . MSP_SET_RC_DEADBAND , mspHelper . crunch ( MSPCodes . MSP_SET_RC_DEADBAND ) ) ,
519
- )
520
- . then ( ( ) =>
521
- MSP . promise (
522
- MSPCodes . MSP_SET_SENSOR_ALIGNMENT ,
523
- mspHelper . crunch ( MSPCodes . MSP_SET_SENSOR_ALIGNMENT ) ,
524
- ) ,
525
- )
526
- . then ( ( ) =>
527
- MSP . promise (
528
- MSPCodes . MSP_SET_ADVANCED_CONFIG ,
529
- mspHelper . crunch ( MSPCodes . MSP_SET_ADVANCED_CONFIG ) ,
530
- ) ,
531
- )
532
- . then ( ( ) => MSP . promise ( MSPCodes . MSP_SET_ACC_TRIM , mspHelper . crunch ( MSPCodes . MSP_SET_ACC_TRIM ) ) )
533
- . then ( ( ) =>
534
- MSP . promise ( MSPCodes . MSP_SET_ARMING_CONFIG , mspHelper . crunch ( MSPCodes . MSP_SET_ARMING_CONFIG ) ) ,
535
- )
536
- . then ( ( ) =>
537
- MSP . promise ( MSPCodes . MSP_SET_SENSOR_CONFIG , mspHelper . crunch ( MSPCodes . MSP_SET_SENSOR_CONFIG ) ) ,
538
- )
539
- . then ( ( ) =>
540
- semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_45 )
541
- ? MSP . promise (
542
- MSPCodes . MSP2_SET_TEXT ,
543
- mspHelper . crunch ( MSPCodes . MSP2_SET_TEXT , MSPCodes . CRAFT_NAME ) ,
544
- )
545
- : MSP . promise ( MSPCodes . MSP_SET_NAME , mspHelper . crunch ( MSPCodes . MSP_SET_NAME ) ) ,
546
- )
547
- . then ( ( ) =>
548
- semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_45 )
549
- ? MSP . promise (
550
- MSPCodes . MSP2_SET_TEXT ,
551
- mspHelper . crunch ( MSPCodes . MSP2_SET_TEXT , MSPCodes . PILOT_NAME ) ,
552
- )
553
- : Promise . resolve ( true ) ,
554
- )
555
- . then ( ( ) =>
556
- semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_46 )
557
- ? MSP . promise (
558
- MSPCodes . MSP_SET_COMPASS_CONFIG ,
559
- mspHelper . crunch ( MSPCodes . MSP_SET_COMPASS_CONFIG ) ,
560
- )
561
- : Promise . resolve ( true ) ,
562
- )
563
- . then ( ( ) => mspHelper . writeConfiguration ( true ) ) ;
564
- }
565
-
566
567
mspHelper . sendSerialConfig ( save_config ) ;
567
568
} ) ;
568
569
0 commit comments