kopia lustrzana https://github.com/hoglet67/RGBtoHDMI
Save separate frontend setting for each CPLD
rodzic
1f32a8932c
commit
5423add350
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
34
src/osd.c
34
src/osd.c
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -129,5 +129,3 @@ kernel=kernelrpi4.img
|
|||
|
||||
#scaling=0
|
||||
scaling_kernel=8
|
||||
|
||||
#frontend=0
|
||||
|
|
Ładowanie…
Reference in New Issue