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; 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; FRESULT result;
char path[256]; char path[256];
char buffer [16384]; 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); sprintf((char*)(buffer + bytes_read), "\r\n#scaling=%d\r\n", scaling);
bytes_read += strlen((char*) (buffer + bytes_read)); 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)); bytes_read += strlen((char*) (buffer + bytes_read));
log_info("Save scaling kernel = %d", val); log_info("Save scaling kernel = %d", val);
sprintf((char*)(buffer + bytes_read), "\r\n#frontend=%d\r\n", frontend); for (int i = 0; i < 16; i++) {
bytes_read += strlen((char*) (buffer + bytes_read)); int frontend = get_existing_frontend(i);
log_info("Save frontend = %d", frontend); 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; buffer[bytes_read]=0;
result = f_open(&file, "/config.txt", FA_WRITE | FA_CREATE_ALWAYS); 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); 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); 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_load(char *path, char *buffer, unsigned int buffer_size);
int file_save(char *dirpath, char *name, 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); int file_restore(char *dirpath, char *name);

Wyświetl plik

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

Wyświetl plik

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