@@ -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 )},
@@ -568,6 +568,7 @@ static const struct struct_map _secswash[] = {
568568static const struct struct_map _sectimer [] = {
569569 {TIMER_SOURCE , OFFSET_SRC (struct Timer , src )},
570570 {TIMER_RESETSRC , OFFSET_SRC (struct Timer , resetsrc )},
571+ {TIMER_TYPE , OFFSET_STRLIST (struct Timer , type , TIMER_TYPE_VAL , ARRAYSIZE (TIMER_TYPE_VAL ))}
571572};
572573static const struct struct_map _sectimer_rdonly [] = {
573574 {TIMER_TIME , OFFSET (struct Timer , timer )},
@@ -1087,7 +1088,8 @@ static u8 write_mixer(FILE *fh, struct Model *m, u8 channel)
10871088 fprintf (fh , "[%s]\n" , SECTION_MIXER );
10881089 fprintf (fh , "%s=%s\n" , MIXER_SOURCE , INPUT_SourceNameReal (tmpstr , m -> mixers [idx ].src ));
10891090 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 );
1091+ write_int2 (& m -> mixers [idx ], _secmixer , ARRAYSIZE (_secmixer ),
1092+ _secmixer_defaults , ARRAYSIZE (_secmixer_defaults ), fh );
10911093 if (WRITE_FULL_MODEL || ! MIXER_APPLY_TRIM (& m -> mixers [idx ]))
10921094 fprintf (fh , "%s=%d\n" , MIXER_USETRIM , MIXER_APPLY_TRIM (& m -> mixers [idx ]) ? 1 : 0 );
10931095 if (WRITE_FULL_MODEL || MIXER_MUX (& m -> mixers [idx ]))
@@ -1153,7 +1155,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
11531155 CONFIG_EnableLanguage (0 );
11541156 fprintf (fh , "%s=%s\n" , MODEL_NAME , m -> name );
11551157#if HAS_PERMANENT_TIMER
1156- write_int (m , _secnone , ARRAYSIZE (_secnone ), fh );
1158+ write_int2 (m , _secnone , ARRAYSIZE (_secnone ), DEFAULTS_ZERO , 0 , fh );
11571159#endif
11581160 fprintf (fh , "%s=%s\n" , MODEL_MIXERMODE , STDMIXER_ModeName (m -> mixer_mode ));
11591161 if (m -> icon [0 ] != 0 )
@@ -1162,7 +1164,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
11621164 fprintf (fh , "%s=%s\n" , MODEL_TYPE , MODEL_TYPE_VAL [m -> type ]);
11631165 fprintf (fh , "[%s]\n" , SECTION_RADIO );
11641166 fprintf (fh , "%s=%s\n" , RADIO_PROTOCOL , PROTOCOL_GetName (m -> protocol ));
1165- write_int (m , _secradio , ARRAYSIZE (_secradio ), fh );
1167+ write_int2 (m , _secradio , ARRAYSIZE (_secradio ), DEFAULTS_ZERO , 0 , fh );
11661168 fprintf (fh , "%s=%s\n" , RADIO_TX_POWER , radio_tx_power_val (m -> radio , m -> tx_power ));
11671169 fprintf (fh , "\n" );
11681170 write_proto_opts (fh , m );
@@ -1181,7 +1183,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
11811183 fprintf (fh , "[%s%d]\n" , SECTION_CHANNEL , idx + 1 );
11821184 if (WRITE_FULL_MODEL || (m -> limits [idx ].flags & CH_REVERSE ))
11831185 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 );
1186+ write_int2 (& m -> limits [idx ], _seclimit , ARRAYSIZE ( _seclimit ), _seclimit_defaults , ARRAYSIZE (_seclimit_defaults ), fh );
11851187 if (WRITE_FULL_MODEL || (m -> limits [idx ].flags & CH_FAILSAFE_EN )) {
11861188 if (m -> limits [idx ].flags & CH_FAILSAFE_EN ) {
11871189 fprintf (fh , "%s=%d\n" , CHAN_LIMIT_FAILSAFE , m -> limits [idx ].failsafe );
@@ -1216,7 +1218,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
12161218 if (PPMin_Mode () != PPM_IN_SOURCE ) {
12171219 fprintf (fh , "%s=%s\n" , PPMIN_SWITCH , INPUT_SourceNameReal (file , m -> train_sw ));
12181220 }
1219- write_int (m , _secppm , ARRAYSIZE (_secppm ), fh );
1221+ write_int2 (m , _secppm , ARRAYSIZE (_secppm ), DEFAULTS_ZERO , 0 , fh );
12201222 //fprintf(fh, "%s=%d\n", PPMIN_CENTERPW, m->ppmin_centerpw);
12211223 //fprintf(fh, "%s=%d\n", PPMIN_DELTAPW, m->ppmin_deltapw);
12221224 if (PPMin_Mode () != PPM_IN_SOURCE ) {
@@ -1237,7 +1239,7 @@ u8 CONFIG_WriteModel(u8 model_num) {
12371239 m -> trims [idx ].src >= 1 && m -> trims [idx ].src <= 4
12381240 ? tx_stick_names [m -> trims [idx ].src - 1 ]
12391241 : INPUT_SourceNameReal (file , m -> trims [idx ].src ));
1240- write_int2 (& m -> trims [idx ], _sectrim , _sectrim_defaults , ARRAYSIZE (_sectrim ), fh );
1242+ write_int2 (& m -> trims [idx ], _sectrim , ARRAYSIZE ( _sectrim ), _sectrim_defaults , ARRAYSIZE (_sectrim_defaults ), fh );
12411243 if (WRITE_FULL_MODEL || m -> trims [idx ].sw )
12421244 fprintf (fh , "%s=%s\n" , TRIM_SWITCH , INPUT_SourceNameAbbrevSwitchReal (file , m -> trims [idx ].sw ));
12431245 if (WRITE_FULL_MODEL || m -> trims [idx ].value [0 ] || m -> trims [idx ].value [1 ] || m -> trims [idx ].value [2 ]
@@ -1255,14 +1257,12 @@ u8 CONFIG_WriteModel(u8 model_num) {
12551257 fprintf (fh , "%s=1\n" , SWASH_AIL_INV );
12561258 if (WRITE_FULL_MODEL || m -> swash_invert & 0x04 )
12571259 fprintf (fh , "%s=1\n" , SWASH_COL_INV );
1258- write_int (m , _secswash , ARRAYSIZE (_secswash ), fh );
1260+ write_int2 (m , _secswash , ARRAYSIZE (_secswash ), DEFAULTS_ZERO , 0 , fh );
12591261 }
12601262 for (idx = 0 ; idx < NUM_TIMERS ; idx ++ ) {
12611263 if (! WRITE_FULL_MODEL && m -> timer [idx ].src == 0 && m -> timer [idx ].type == TIMER_STOPWATCH )
12621264 continue ;
12631265 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 ]);
12661266 write_int (& m -> timer [idx ], _sectimer , ARRAYSIZE (_sectimer ), fh );
12671267 if (WRITE_FULL_MODEL || ((m -> timer [idx ].type == TIMER_COUNTDOWN || m -> timer [idx ].type == TIMER_COUNTDOWN_PROP ) && m -> timer [idx ].timer ))
12681268 fprintf (fh , "%s=%d\n" , TIMER_TIME , m -> timer [idx ].timer );
0 commit comments