Save separate frontend setting for each CPLD

pull/143/head
IanSB 2020-02-12 00:10:08 +00:00
rodzic 1f32a8932c
commit 5423add350
5 zmienionych plików z 34 dodań i 23 usunięć

Wyświetl plik

@ -774,7 +774,7 @@ int file_restore(char *dirpath, char *name) {
return 1;
}
int file_save_config(char *resolution_name, int scaling, int frontend) {
int file_save_config(char *resolution_name, int scaling, int current_frontend) {
FRESULT result;
char path[256];
char buffer [16384];
@ -844,13 +844,21 @@ int file_save_config(char *resolution_name, int scaling, int frontend) {
sprintf((char*)(buffer + bytes_read), "\r\n#scaling=%d\r\n", scaling);
bytes_read += strlen((char*) (buffer + bytes_read));
sprintf((char*) (buffer + bytes_read), "scaling_kernel=%d\r\n", val);
sprintf((char*) (buffer + bytes_read), "scaling_kernel=%d\r\n\r\n", val);
bytes_read += strlen((char*) (buffer + bytes_read));
log_info("Save scaling kernel = %d", val);
sprintf((char*)(buffer + bytes_read), "\r\n#frontend=%d\r\n", frontend);
bytes_read += strlen((char*) (buffer + bytes_read));
log_info("Save frontend = %d", frontend);
for (int i = 0; i < 16; i++) {
int frontend = get_existing_frontend(i);
if (i == ((cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F)) {
frontend = current_frontend;
}
if (frontend != 0) {
sprintf((char*)(buffer + bytes_read), "#frontend_%X=%d\r\n", i, frontend);
bytes_read += strlen((char*) (buffer + bytes_read));
log_info("Save frontend_%X = %d", i, frontend);
}
}
buffer[bytes_read]=0;
result = f_open(&file, "/config.txt", FA_WRITE | FA_CREATE_ALWAYS);

Wyświetl plik

@ -15,7 +15,7 @@ void scan_sub_profiles(char sub_profile_names[MAX_SUB_PROFILES][MAX_PROFILE_WIDT
unsigned int file_read_profile(char *profile_name, char *sub_profile_name, int updatecmd, char *command_string, unsigned int buffer_size);
void scan_names(char names[MAX_NAMES][MAX_NAMES_WIDTH], char *path, char *type, size_t *count);
int file_save_config(char *resolution_name, int scaling, int frontend);
int file_save_config(char *resolution_name, int scaling, int current_frontend);
int file_load(char *path, char *buffer, unsigned int buffer_size);
int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size);
int file_restore(char *dirpath, char *name);

Wyświetl plik

@ -182,8 +182,8 @@ static const char *frontend_names[] = {
"Atom",
"6 BIT RGB",
"6 BIT RGB Analog",
"6 BIT RGB Analog DAC:UA1",
"6 BIT RGB Analog DAC:UB1",
"6 BIT RGB Analog ALT:UA1",
"6 BIT RGB Analog ALT:UB1",
"6 BIT YUV Analog"
};
@ -685,6 +685,8 @@ static int palette = PALETTE_RGB;
//osd high water mark (highest line number used)
static int osd_hwm = 0;
static int all_frontends[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// Default action map, maps from physical key press to action
static osd_state_t action_map[] = {
A0_LAUNCH, // 0 - SW1 short press
@ -3267,6 +3269,10 @@ int osd_key(int key) {
return ret;
}
int get_existing_frontend(int frontend) {
return all_frontends[frontend];
}
void osd_init() {
const char *prop = NULL;
// Precalculate character->screen mapping table
@ -3468,27 +3474,25 @@ void osd_init() {
prop = get_prop_no_space(config_buffer, "#scaling");
log_info("Read scaling: %s", prop);
}
if (!prop || !cbytes) {
prop = "0";
}
int val = atoi(prop);
set_scaling(val, 0);
if (cbytes) {
prop = get_prop_no_space(config_buffer, "#frontend");
log_info("Read frontend: %s", prop);
char frontname[256];
for (int i=0; i< 16; i++) {
sprintf(frontname, "#frontend_%X", i);
prop = get_prop_no_space(config_buffer, frontname);
if (!prop) {
prop = "0";
}
log_info("Read frontend_%X = %s", i, prop);
all_frontends[i] = atoi(prop);
}
}
if (!prop || !cbytes) {
prop = "0";
}
val = atoi(prop);
log_info("Read frontendx: %d", val);
set_frontend(val, 0);
set_frontend(all_frontends[(cpld->get_version() >> VERSION_DESIGN_BIT) & 0x0F], 0);
// default profile entry of not found
features[F_PROFILE].max = 0;

Wyświetl plik

@ -166,5 +166,6 @@ uint32_t osd_get_palette(int index);
int autoswitch_detect(int one_line_time_ns, int lines_per_frame, int sync_type);
int sub_profiles_available();
uint32_t osd_get_equivalence(uint32_t value);
int get_existing_frontend(int frontend);
#endif

Wyświetl plik

@ -129,5 +129,3 @@ kernel=kernelrpi4.img
#scaling=0
scaling_kernel=8
#frontend=0