@@ -423,6 +423,70 @@ configuration.initialize = function (callback) {
423423 FC . BEEPER_CONFIG . beepers . updateData ( element ) ;
424424 } ) ;
425425
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+
426490 $ ( "a.save" ) . on ( "click" , function ( ) {
427491 // gather data that doesn't have automatic change event bound
428492 FC . BOARD_ALIGNMENT_CONFIG . roll = parseInt ( $ ( 'input[name="board_align_roll"]' ) . val ( ) ) ;
@@ -500,69 +564,6 @@ configuration.initialize = function (callback) {
500564 FC . CONFIG . name = $ ( 'input[name="craftName"]' ) . val ( ) . trim ( ) ;
501565 }
502566
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-
566567 mspHelper . sendSerialConfig ( save_config ) ;
567568 } ) ;
568569
0 commit comments