@@ -915,6 +915,30 @@ static uint8_t parse_pin_str(const char *s)
915
915
return pin ;
916
916
}
917
917
918
+ static uint16_t parse_display_order (const char * p )
919
+ {
920
+ int sh = 0 ;
921
+ uint16_t order = 0 ;
922
+
923
+ if (!strcmp (p , "default" ))
924
+ return DORD_default ;
925
+
926
+ while (p != NULL ) {
927
+ order |= ((p [0 ]- '0' )& 7 ) << sh ;
928
+ if (p [1 ] == 'd' )
929
+ order |= DORD_double << sh ;
930
+ sh += DORD_shift ;
931
+ if ((p = strchr (p , ',' )) == NULL )
932
+ break ;
933
+ p ++ ;
934
+ }
935
+
936
+ if (sh < 16 )
937
+ order |= 0x7777 << sh ;
938
+
939
+ return order ;
940
+ }
941
+
918
942
static void read_ff_cfg (void )
919
943
{
920
944
enum {
@@ -1200,26 +1224,13 @@ static void read_ff_cfg(void)
1200
1224
ff_cfg .oled_contrast = strtol (opts .arg , NULL , 10 );
1201
1225
break ;
1202
1226
1203
- case FFCFG_display_order : {
1204
- char * p = opts .arg ;
1205
- int sh = 0 ;
1206
- ff_cfg .display_order = DORD_default ;
1207
- if (!strcmp (p , "default" ))
1208
- break ;
1209
- ff_cfg .display_order = 0 ;
1210
- while (p != NULL ) {
1211
- ff_cfg .display_order |= ((p [0 ]- '0' )& 7 ) << sh ;
1212
- if (p [1 ] == 'd' )
1213
- ff_cfg .display_order |= DORD_double << sh ;
1214
- sh += DORD_shift ;
1215
- if ((p = strchr (p , ',' )) == NULL )
1216
- break ;
1217
- p ++ ;
1218
- }
1219
- if (sh < 16 )
1220
- ff_cfg .display_order |= 0x7777 << sh ;
1227
+ case FFCFG_display_order :
1228
+ ff_cfg .display_order = parse_display_order (opts .arg );
1229
+ break ;
1230
+
1231
+ case FFCFG_osd_display_order :
1232
+ ff_cfg .osd_display_order = parse_display_order (opts .arg );
1221
1233
break ;
1222
- }
1223
1234
1224
1235
case FFCFG_display_off_secs :
1225
1236
ff_cfg .display_off_secs = strtol (opts .arg , NULL , 10 );
0 commit comments