Browse Source

Commong timing modes generation implemented

master
Maximilian Stiefel 4 years ago
parent
commit
4876341431
  1. 19
      edid_stockach.json
  2. BIN
      main
  3. 116
      main.c

19
edid_stockach.json

@ -45,5 +45,24 @@
"blue_y": 0.065,
"white_x": 0.3125,
"white_y": 0.329
},
"common_timing_modes": {
"m720_400_70": true,
"m720_400_88": false,
"m640_480_60": true,
"m640_480_67": false,
"m640_480_72": false,
"m640_480_75": true,
"m800_600_56": true,
"m800_600_60": true,
"m800_600_72": false,
"m800_600_75": true,
"m832_624_75": true,
"m1024_768_87": false,
"m1024_768_60": true,
"m1024_768_70": false,
"m1024_768_75": true,
"m1280_1024_75": true,
"m1152_870_75": true
}
}

BIN
main

Binary file not shown.

116
main.c

@ -92,24 +92,24 @@ typedef struct __attribute__ (( packed )) {
/*! Established timing bitmap. Supported bitmap for (formerly) very common
timing modes. 3 bytes */
struct __attribute__ (( packed )) {
uint8_t m720_400_70 : 1;
uint8_t m720_400_80 : 1;
uint8_t m640_480_60 : 1;
uint8_t m640_480_67 : 1;
uint8_t m640_480_72 : 1;
uint8_t m640_480_75 : 1;
uint8_t m800_600_56 : 1;
uint8_t m800_600_60 : 1;
uint8_t m800_600_72 : 1;
uint8_t m800_600_75 : 1;
uint8_t m832_624_75 : 1;
uint8_t m1024_768_87 : 1;
uint8_t m1024_768_60 : 1;
uint8_t m1024_768_70 : 1;
uint8_t m1024_768_75 : 1;
uint8_t m800_600_56 : 1;
uint8_t m640_480_75 : 1;
uint8_t m640_480_72 : 1;
uint8_t m640_480_67 : 1;
uint8_t m640_480_60 : 1;
uint8_t m720_400_88 : 1;
uint8_t m720_400_70 : 1;
uint8_t m1280_1024_75: 1;
uint8_t m1152_870_75 : 1;
uint8_t m1024_768_75 : 1;
uint8_t m1024_768_70 : 1;
uint8_t m1024_768_60 : 1;
uint8_t m1024_768_87 : 1;
uint8_t m832_624_75 : 1;
uint8_t m800_600_75 : 1;
uint8_t m800_600_72 : 1;
uint8_t reserved : 7;
uint8_t m1152_870_75 : 1;
} common_timing_modes;
/*! Standard timing information. Up to 8 2-byte fields describing standard
display modes. Unused fields are filled with 01 01 hex. 16 bytes */
@ -465,7 +465,6 @@ static int generate_chromaticity_coordinates( edid_t* edid,
"{chromaticity_coordinates: {white_x: %f}}",
&multi_use_flt);
multi_use_int = stp_round(1024.0f * multi_use_flt);
printf("white_y>%f, %d\n", multi_use_flt, multi_use_int);
edid->chromaticity_coordinates.blue_white_lsbs.white_x = 0x3 & multi_use_int;
edid->chromaticity_coordinates.white_x_msbs = 0xFF & multi_use_int >> 2;
// White y
@ -473,7 +472,6 @@ static int generate_chromaticity_coordinates( edid_t* edid,
"{chromaticity_coordinates: {white_y: %f}}",
&multi_use_flt);
multi_use_int = stp_round(1024.0f * multi_use_flt);
printf("white_y>%f, %d\n", multi_use_flt, multi_use_int);
edid->chromaticity_coordinates.blue_white_lsbs.white_y = 0x3 & multi_use_int;
edid->chromaticity_coordinates.white_y_msbs = 0xFF & multi_use_int >> 2;
} else {
@ -483,6 +481,88 @@ static int generate_chromaticity_coordinates( edid_t* edid,
return 0;
}
static int generate_common_timing_modes( edid_t* edid,
unsigned char* json_str,
size_t json_len)
{
bool multi_use_bool;
if (edid && json_str) {
json_scanf( json_str, json_len,
"{common_timing_modes: {m720_400_70: %B}}",
&multi_use_bool);
edid->common_timing_modes.m720_400_70 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m720_400_88: %B}}",
&multi_use_bool);
edid->common_timing_modes.m720_400_88 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m640_480_60: %B}}",
&multi_use_bool);
edid->common_timing_modes.m640_480_60 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m640_480_67: %B}}",
&multi_use_bool);
edid->common_timing_modes.m640_480_67 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m640_480_72: %B}}",
&multi_use_bool);
edid->common_timing_modes.m640_480_72 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m640_480_75: %B}}",
&multi_use_bool);
edid->common_timing_modes.m640_480_75 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m800_600_56: %B}}",
&multi_use_bool);
edid->common_timing_modes.m800_600_56 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m800_600_60: %B}}",
&multi_use_bool);
edid->common_timing_modes.m800_600_60 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m800_600_72: %B}}",
&multi_use_bool);
edid->common_timing_modes.m800_600_72 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m800_600_75: %B}}",
&multi_use_bool);
edid->common_timing_modes.m800_600_75 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m832_624_75: %B}}",
&multi_use_bool);
edid->common_timing_modes.m832_624_75 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m1024_768_87: %B}}",
&multi_use_bool);
edid->common_timing_modes.m1024_768_87 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m1024_768_60: %B}}",
&multi_use_bool);
edid->common_timing_modes.m1024_768_60 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m1024_768_70: %B}}",
&multi_use_bool);
edid->common_timing_modes.m1024_768_70 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m1024_768_75: %B}}",
&multi_use_bool);
edid->common_timing_modes.m1024_768_75 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m1280_1024_75: %B}}",
&multi_use_bool);
edid->common_timing_modes.m1280_1024_75 = 0x1 & multi_use_bool;
json_scanf( json_str, json_len,
"{common_timing_modes: {m1152_870_75: %B}}",
&multi_use_bool);
edid->common_timing_modes.m1152_870_75 = 0x1 & multi_use_bool;
} else {
printf("Error: One of either edid or json_str is NULL.\n");
return 1;
}
return 0;
}
int main(void)
{
//uint8_t edith[EDID_LENGTH];
@ -500,6 +580,8 @@ int main(void)
generate_header(&edith, mystr, len);
generate_basic_display_parameters(&edith, mystr, len);
generate_chromaticity_coordinates(&edith, mystr, len);
generate_common_timing_modes(&edith, mystr, len);
disp_buf((uint8_t*)&edith, EDID_LENGTH);
free(mystr);
return 0;
}

Loading…
Cancel
Save