libxcm
XcmEdidParse.h
1 
16 #ifndef XCM_EDID_PARSE_H
17 #define XCM_EDID_PARSE_H
18 #include <stddef.h> /* size_t */
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif /* __cplusplus */
23 
29 /* @internal
30  * DDC struct */
31 typedef struct {
32  unsigned char sig[8];
33  unsigned char mnft_id[2]; /* [8] manufaturer ID */
34  unsigned char model_id[2]; /* [10] model ID */
35  unsigned char ser_id[4]; /* [12] serial ID */
36  unsigned char week; /* [16] Week */
37  unsigned char year; /* [17] + 1990 => Year */
38  unsigned char major_version; /* [18] */
39  unsigned char minor_version; /* [19] */
40  unsigned char video_input_type; /* [20] */
41  unsigned char width; /* [21] */
42  unsigned char height; /* [22] */
43  unsigned char gamma_factor; /* [23] */
44  unsigned char dpms; /* [24] */
45  unsigned char rg; /* [25] colour information */
46  unsigned char wb; /* [26] */
47  unsigned char rY; /* [27] */
48  unsigned char rX; /* [28] */
49  unsigned char gY; /* [29] */
50  unsigned char gX; /* [30] */
51  unsigned char bY; /* [31] */
52  unsigned char bX; /* [32] */
53  unsigned char wY; /* [33] */
54  unsigned char wX; /* [34] */
55  unsigned char etiming1; /* [35] */
56  unsigned char etiming2; /* [36] */
57  unsigned char mtiming; /* [37] */
58  unsigned char stdtiming[16]; /* [38] */
59  unsigned char text1[18]; /* [54] Product string */
60  unsigned char text2[18]; /* [72] text 2 */
61  unsigned char text3[18]; /* [90] text 3 */
62  unsigned char text4[18]; /* [108] text 4 */
63  unsigned char extension_blocks; /* [126] number of following extensions*/
64  unsigned char checksum; /* [127] */
65 } XcmEdid_s;
66 
67 typedef enum {
68  XCM_EDID_OK,
69  XCM_EDID_WRONG_SIGNATURE
70 } XCM_EDID_ERROR_e;
71 
72 typedef enum {
73  XCM_EDID_VALUE_TEXT,
74  XCM_EDID_VALUE_INT,
75  XCM_EDID_VALUE_DOUBLE
76 } XCM_EDID_VALUE_e;
77 
79  char * text;
80  double dbl;
81  int integer;
82 };
83 
84 typedef struct {
85  const char * key;
86  XCM_EDID_VALUE_e type;
87  union XcmEdidValue_u value;
89 
90 /* basic access functions */
91 XCM_EDID_ERROR_e XcmEdidParse ( void * edid,
92  XcmEdidKeyValue_s** list,
93  int * count );
94 XCM_EDID_ERROR_e XcmEdidFree ( XcmEdidKeyValue_s** list );
95 const char * XcmEdidErrorToString(XCM_EDID_ERROR_e error );
96 
97 /* convinience functions */
98 XCM_EDID_ERROR_e XcmEdidPrintString ( void * edid,
99  char ** text,
100  void *(*alloc)(size_t sz) );
101 XCM_EDID_ERROR_e XcmEdidPrintOpenIccJSON ( void * edid,
102  char ** text,
103  void *(*alloc)(size_t sz) );
105 #define XCM_EDID_KEY_VENDOR "vendor"
106 
107 #define XCM_EDID_KEY_MODEL "model"
108 
109 #define XCM_EDID_KEY_SERIAL "serial"
110 
111 #define XCM_EDID_KEY_REDx "red_x"
112 
113 #define XCM_EDID_KEY_REDy "red_y"
114 
115 #define XCM_EDID_KEY_GREENx "green_x"
116 
117 #define XCM_EDID_KEY_GREENy "green_y"
118 
119 #define XCM_EDID_KEY_BLUEx "blue_x"
120 
121 #define XCM_EDID_KEY_BLUEy "blue_y"
122 
123 #define XCM_EDID_KEY_WHITEx "white_x"
124 
125 #define XCM_EDID_KEY_WHITEy "white_y"
126 
127 #define XCM_EDID_KEY_GAMMA "gamma"
128 
129 #define XCM_EDID_KEY_WEEK "week"
130 
131 #define XCM_EDID_KEY_YEAR "year"
132 
133 #define XCM_EDID_KEY_MNFT_ID "mnft_id"
134 
135 #define XCM_EDID_KEY_MODEL_ID "model_id"
136 
137 #define XCM_EDID_KEY_MNFT "mnft"
138 
139 #define XCM_EDID_KEY_MANUFACTURER "manufacturer"
140 
141 #define XCM_EDID_KEY_A3RED "a3red"
142 
143 #define XCM_EDID_KEY_A2RED "a2red"
144 
145 #define XCM_EDID_KEY_A3GREEN "a3green"
146 
147 #define XCM_EDID_KEY_A2GREEN "a2green"
148 
149 #define XCM_EDID_KEY_A3BLUE "a3blue"
150 
151 #define XCM_EDID_KEY_A2BLUE "a2blue"
152 
153 /* @} XcmEdidParse */
154 
155 #ifdef __cplusplus
156 } /* extern "C" */
157 #endif /* __cplusplus */
158 
159 #endif /* XCM_EDID_PARSE_H */
const char * XcmEdidErrorToString(XCM_EDID_ERROR_e error)
Function XcmEdidErrorToString.
Definition: XcmEdidParse.c:476
XCM_EDID_ERROR_e XcmEdidParse(void *edid, XcmEdidKeyValue_s **list, int *count)
Function XcmEdidParse.
Definition: XcmEdidParse.c:175
Definition: XcmEdidParse.h:78
XCM_EDID_ERROR_e XcmEdidPrintString(void *edid, char **text, void *(*alloc)(size_t sz))
Function XcmEdidPrintString.
Definition: XcmEdidParse.c:501
Definition: XcmEdidParse.h:31
XCM_EDID_ERROR_e XcmEdidFree(XcmEdidKeyValue_s **list)
Function XcmEdidFree.
Definition: XcmEdidParse.c:443
Definition: XcmEdidParse.h:84
XCM_EDID_ERROR_e XcmEdidPrintOpenIccJSON(void *edid, char **text, void *(*alloc)(size_t sz))
Function XcmEdidPrintOpenIccJSON.
Definition: XcmEdidParse.c:543