FF.CFG: New option osd-columns= to set number of OSD text columns.

This commit is contained in:
Keir Fraser 2022-10-09 12:55:51 +01:00
parent 0c15d01028
commit bcdf9fc9f5
5 changed files with 21 additions and 12 deletions

View file

@ -232,6 +232,10 @@ oled-contrast = 143
display-order = default
osd-display-order = default
# OSD text columns. This is currently respected only when no LCD/OLED is found.
# Values: 16 <= N <= 40
osd-columns = 40
# Turn an LCD or OLED display off after N seconds of inactivity
# N=0: always off; N=255: always on
# Values: 0 <= N <= 255

View file

@ -165,6 +165,7 @@ struct packed ff_cfg {
uint8_t write_drain;
uint8_t max_cyl;
uint16_t osd_display_order;
uint8_t osd_columns;
};
extern struct ff_cfg ff_cfg;

View file

@ -577,11 +577,7 @@ bool_t lcd_init(void)
lcd_rows = 4;
} else {
lcd_columns = (ff_cfg.display_type >> _DISPLAY_lcd_columns) & 63;
lcd_columns = max_t(uint8_t, lcd_columns, 16);
lcd_columns = min_t(uint8_t, lcd_columns, 40);
lcd_rows = (ff_cfg.display_type >> _DISPLAY_lcd_rows) & 7;
lcd_rows = max_t(uint8_t, lcd_rows, 2);
lcd_rows = min_t(uint8_t, lcd_rows, 4);
}
if (a != 0) {
@ -590,10 +586,14 @@ bool_t lcd_init(void)
i2c_addr = a;
} else {
is_oled_display = FALSE;
if (ff_cfg.display_type == DISPLAY_auto)
lcd_columns = 40;
lcd_columns = ff_cfg.osd_columns;
}
lcd_columns = max_t(uint8_t, lcd_columns, 16);
lcd_columns = min_t(uint8_t, lcd_columns, 40);
lcd_rows = max_t(uint8_t, lcd_rows, 2);
lcd_rows = min_t(uint8_t, lcd_rows, 4);
lcd_clear();
}

View file

@ -630,11 +630,7 @@ bool_t lcd_init(void)
lcd_rows = 4;
} else {
lcd_columns = (ff_cfg.display_type >> _DISPLAY_lcd_columns) & 63;
lcd_columns = max_t(uint8_t, lcd_columns, 16);
lcd_columns = min_t(uint8_t, lcd_columns, 40);
lcd_rows = (ff_cfg.display_type >> _DISPLAY_lcd_rows) & 7;
lcd_rows = max_t(uint8_t, lcd_rows, 2);
lcd_rows = min_t(uint8_t, lcd_rows, 4);
}
if (a != 0) {
@ -643,10 +639,14 @@ bool_t lcd_init(void)
i2c_addr = a;
} else {
is_oled_display = FALSE;
if (ff_cfg.display_type == DISPLAY_auto)
lcd_columns = 40;
lcd_columns = ff_cfg.osd_columns;
}
lcd_columns = max_t(uint8_t, lcd_columns, 16);
lcd_columns = min_t(uint8_t, lcd_columns, 40);
lcd_rows = max_t(uint8_t, lcd_rows, 2);
lcd_rows = min_t(uint8_t, lcd_rows, 4);
lcd_clear();
}

View file

@ -1234,6 +1234,10 @@ static void read_ff_cfg(void)
ff_cfg.osd_display_order = parse_display_order(opts.arg);
break;
case FFCFG_osd_columns:
ff_cfg.osd_columns = strtol(opts.arg, NULL, 10);
break;
case FFCFG_display_off_secs:
ff_cfg.display_off_secs = strtol(opts.arg, NULL, 10);
cfg.ffcfg_has_display_off_secs = TRUE;