@@ -528,12 +528,12 @@ static const struct struct_map _secradio[] = {
528528#endif
529529};
530530static const struct struct_map _secmixer [] = {
531- {MIXER_SWITCH , OFFSET_SRC (struct Mixer , sw )},
532531 {MIXER_SCALAR , OFFSETS (struct Mixer , scalar )},
532+ {MIXER_SWITCH , OFFSET_SRC (struct Mixer , sw )},
533533 {MIXER_OFFSET , OFFSETS (struct Mixer , offset )},
534534};
535535static const u16 _secmixer_defaults [] = {
536- 0 , 100 , 0
536+ 100
537537};
538538static const struct struct_map _seclimit [] = {
539539 {CHAN_LIMIT_SAFETYSW , OFFSET_SRC (struct Limit , safetysw )},
@@ -549,12 +549,12 @@ static const u16 _seclimit_defaults[] = {
549549 0 , 0 , DEFAULT_SERVO_LIMIT , 0 , 100 , 0 , 0 , DEFAULT_DISPLAY_SCALE
550550};
551551static const struct struct_map _sectrim [] = {
552+ {TRIM_STEP , OFFSET (struct Trim , step )},
552553 {TRIM_POS , OFFSET_BUT (struct Trim , pos )},
553554 {TRIM_NEG , OFFSET_BUT (struct Trim , neg )},
554- {TRIM_STEP , OFFSET (struct Trim , step )},
555555};
556556static const u16 _sectrim_defaults [] = {
557- 0 , 0 , 1
557+ 1
558558};
559559static const struct struct_map _sectrim_rdonly [] = {
560560 {TRIM_SOURCE , OFFSET_SRC (struct Trim , src )},
@@ -565,9 +565,14 @@ static const struct struct_map _secswash[] = {
565565 {SWASH_ELEMIX , OFFSET (struct Model , swashmix [1 ])},
566566 {SWASH_COLMIX , OFFSET (struct Model , swashmix [2 ])},
567567};
568+ static const u16 _secswash_defaults [] = {
569+ 60 , 60 , 60
570+ };
571+
568572static const struct struct_map _sectimer [] = {
569573 {TIMER_SOURCE , OFFSET_SRC (struct Timer , src )},
570574 {TIMER_RESETSRC , OFFSET_SRC (struct Timer , resetsrc )},
575+ {TIMER_TYPE , OFFSET_STRLIST (struct Timer , type , TIMER_TYPE_VAL , ARRAYSIZE (TIMER_TYPE_VAL ))}
571576};
572577static const struct struct_map _sectimer_rdonly [] = {
573578 {TIMER_TIME , OFFSET (struct Timer , timer )},
@@ -1087,7 +1092,8 @@ static u8 write_mixer(FILE *fh, struct Model *m, u8 channel)
10871092 fprintf (fh , "[%s]\n" , SECTION_MIXER );
10881093 fprintf (fh , "%s=%s\n" , MIXER_SOURCE , INPUT_SourceNameReal (tmpstr , m -> mixers [idx ].src ));
10891094 fprintf (fh , "%s=%s\n" , MIXER_DEST , INPUT_SourceNameReal (tmpstr , m -> mixers [idx ].dest + NUM_INPUTS + 1 ));
1090- write_int2 (& m -> mixers [idx ], _secmixer , _secmixer_defaults , ARRAYSIZE (_secmixer ), fh );
1095+ write_int2 (& m -> mixers [idx ], _secmixer , ARRAYSIZE (_secmixer ),
1096+ _secmixer_defaults , ARRAYSIZE (_secmixer_defaults ), fh );
10911097 if (WRITE_FULL_MODEL || ! MIXER_APPLY_TRIM (& m -> mixers [idx ]))
10921098 fprintf (fh , "%s=%d\n" , MIXER_USETRIM , MIXER_APPLY_TRIM (& m -> mixers [idx ]) ? 1 : 0 );
10931099 if (WRITE_FULL_MODEL || MIXER_MUX (& m -> mixers [idx ]))
@@ -1153,7 +1159,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
11531159 CONFIG_EnableLanguage (0 );
11541160 fprintf (fh , "%s=%s\n" , MODEL_NAME , m -> name );
11551161#if HAS_PERMANENT_TIMER
1156- write_int (m , _secnone , ARRAYSIZE (_secnone ), fh );
1162+ write_int2 (m , _secnone , ARRAYSIZE (_secnone ), DEFAULTS_ZERO , 0 , fh );
11571163#endif
11581164 fprintf (fh , "%s=%s\n" , MODEL_MIXERMODE , STDMIXER_ModeName (m -> mixer_mode ));
11591165 if (m -> icon [0 ] != 0 )
@@ -1162,7 +1168,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
11621168 fprintf (fh , "%s=%s\n" , MODEL_TYPE , MODEL_TYPE_VAL [m -> type ]);
11631169 fprintf (fh , "[%s]\n" , SECTION_RADIO );
11641170 fprintf (fh , "%s=%s\n" , RADIO_PROTOCOL , PROTOCOL_GetName (m -> protocol ));
1165- write_int (m , _secradio , ARRAYSIZE (_secradio ), fh );
1171+ write_int2 (m , _secradio , ARRAYSIZE (_secradio ), DEFAULTS_ZERO , 0 , fh );
11661172 fprintf (fh , "%s=%s\n" , RADIO_TX_POWER , radio_tx_power_val (m -> radio , m -> tx_power ));
11671173 fprintf (fh , "\n" );
11681174 write_proto_opts (fh , m );
@@ -1181,7 +1187,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
11811187 fprintf (fh , "[%s%d]\n" , SECTION_CHANNEL , idx + 1 );
11821188 if (WRITE_FULL_MODEL || (m -> limits [idx ].flags & CH_REVERSE ))
11831189 fprintf (fh , "%s=%d\n" , CHAN_LIMIT_REVERSE , (m -> limits [idx ].flags & CH_REVERSE ) ? 1 : 0 );
1184- write_int2 (& m -> limits [idx ], _seclimit , _seclimit_defaults , ARRAYSIZE (_seclimit ), fh );
1190+ write_int2 (& m -> limits [idx ], _seclimit , ARRAYSIZE ( _seclimit ), _seclimit_defaults , ARRAYSIZE (_seclimit_defaults ), fh );
11851191 if (WRITE_FULL_MODEL || (m -> limits [idx ].flags & CH_FAILSAFE_EN )) {
11861192 if (m -> limits [idx ].flags & CH_FAILSAFE_EN ) {
11871193 fprintf (fh , "%s=%d\n" , CHAN_LIMIT_FAILSAFE , m -> limits [idx ].failsafe );
@@ -1216,7 +1222,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
12161222 if (PPMin_Mode () != PPM_IN_SOURCE ) {
12171223 fprintf (fh , "%s=%s\n" , PPMIN_SWITCH , INPUT_SourceNameReal (file , m -> train_sw ));
12181224 }
1219- write_int (m , _secppm , ARRAYSIZE (_secppm ), fh );
1225+ write_int2 (m , _secppm , ARRAYSIZE (_secppm ), DEFAULTS_ZERO , 0 , fh );
12201226 //fprintf(fh, "%s=%d\n", PPMIN_CENTERPW, m->ppmin_centerpw);
12211227 //fprintf(fh, "%s=%d\n", PPMIN_DELTAPW, m->ppmin_deltapw);
12221228 if (PPMin_Mode () != PPM_IN_SOURCE ) {
@@ -1237,7 +1243,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
12371243 m -> trims [idx ].src >= 1 && m -> trims [idx ].src <= 4
12381244 ? tx_stick_names [m -> trims [idx ].src - 1 ]
12391245 : INPUT_SourceNameReal (file , m -> trims [idx ].src ));
1240- write_int2 (& m -> trims [idx ], _sectrim , _sectrim_defaults , ARRAYSIZE (_sectrim ), fh );
1246+ write_int2 (& m -> trims [idx ], _sectrim , ARRAYSIZE ( _sectrim ), _sectrim_defaults , ARRAYSIZE (_sectrim_defaults ), fh );
12411247 if (WRITE_FULL_MODEL || m -> trims [idx ].sw )
12421248 fprintf (fh , "%s=%s\n" , TRIM_SWITCH , INPUT_SourceNameAbbrevSwitchReal (file , m -> trims [idx ].sw ));
12431249 if (WRITE_FULL_MODEL || m -> trims [idx ].value [0 ] || m -> trims [idx ].value [1 ] || m -> trims [idx ].value [2 ]
@@ -1255,14 +1261,12 @@ u8 CONFIG_WriteModel(u8 model_num) {
12551261 fprintf (fh , "%s=1\n" , SWASH_AIL_INV );
12561262 if (WRITE_FULL_MODEL || m -> swash_invert & 0x04 )
12571263 fprintf (fh , "%s=1\n" , SWASH_COL_INV );
1258- write_int (m , _secswash , ARRAYSIZE (_secswash ), fh );
1264+ write_int2 (m , _secswash , ARRAYSIZE (_secswash ), _secswash_defaults , ARRAYSIZE ( _secswash_defaults ), fh );
12591265 }
12601266 for (idx = 0 ; idx < NUM_TIMERS ; idx ++ ) {
12611267 if (! WRITE_FULL_MODEL && m -> timer [idx ].src == 0 && m -> timer [idx ].type == TIMER_STOPWATCH )
12621268 continue ;
12631269 fprintf (fh , "[%s%d]\n" , SECTION_TIMER , idx + 1 );
1264- if (WRITE_FULL_MODEL || m -> timer [idx ].type != TIMER_STOPWATCH )
1265- fprintf (fh , "%s=%s\n" , TIMER_TYPE , TIMER_TYPE_VAL [m -> timer [idx ].type ]);
12661270 write_int (& m -> timer [idx ], _sectimer , ARRAYSIZE (_sectimer ), fh );
12671271 if (WRITE_FULL_MODEL || ((m -> timer [idx ].type == TIMER_COUNTDOWN || m -> timer [idx ].type == TIMER_COUNTDOWN_PROP ) && m -> timer [idx ].timer ))
12681272 fprintf (fh , "%s=%d\n" , TIMER_TIME , m -> timer [idx ].timer );
0 commit comments