xref: /openbmc/libcper/include/libcper/cper-parse.h (revision 3e72806517cfd324023e6e6268000eb5dc783678)
1 #ifndef CPER_PARSE_H
2 #define CPER_PARSE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <json.h>
9 #include <stdio.h>
10 
11 #define CPER_HEADER_VALID_BITFIELD_NAMES                                       \
12 	(const char *[]){ "platformIDValid", "timestampValid",                 \
13 			  "partitionIDValid" }
14 #define CPER_SECTION_DESCRIPTOR_VALID_BITFIELD_NAMES                           \
15 	(const char *[]){ "fruIDValid", "fruStringValid" }
16 #define CPER_SECTION_DESCRIPTOR_FLAGS_BITFIELD_NAMES                           \
17 	(const char *[]){ "primary",                                           \
18 			  "containmentWarning",                                \
19 			  "reset",                                             \
20 			  "errorThresholdExceeded",                            \
21 			  "resourceNotAccessible",                             \
22 			  "latentError",                                       \
23 			  "propagated",                                        \
24 			  "overflow" }
25 #define CPER_HEADER_FLAG_TYPES_KEYS (int[]){ 1, 2, 4 }
26 #define CPER_HEADER_FLAG_TYPES_VALUES                                          \
27 	(const char *[]){ "HW_ERROR_FLAGS_RECOVERED",                          \
28 			  "HW_ERROR_FLAGS_PREVERR",                            \
29 			  "HW_ERROR_FLAGS_SIMULATED" }
30 
31 int header_valid(const char *cper_buf, size_t size);
32 
33 json_object *cper_to_ir(FILE *cper_file);
34 json_object *cper_buf_to_ir(const unsigned char *cper_buf, size_t size);
35 json_object *cper_single_section_to_ir(FILE *cper_section_file);
36 json_object *cper_buf_single_section_to_ir(const unsigned char *cper_buf,
37 					   size_t size);
38 
39 void ir_to_cper(json_object *ir, FILE *out);
40 void ir_single_section_to_cper(json_object *ir, FILE *out);
41 
42 #ifdef __cplusplus
43 }
44 #endif
45 
46 #endif
47