1{
2    "$id": "cper-json-cxl-protocol-section",
3    "$schema": "https://json-schema.org/draft/2020-12/schema",
4    "type": "object",
5    "required": [
6        "validationBits",
7        "agentType",
8        "cxlAgentAddress",
9        "deviceID",
10        "dvsecLength",
11        "errorLogLength",
12        "cxlDVSEC",
13        "cxlErrorLog"
14    ],
15    "additionalProperties": false,
16    "properties": {
17        "validationBits": {
18            "type": "object",
19            "required": [
20                "cxlAgentTypeValid",
21                "cxlAgentAddressValid",
22                "deviceIDValid",
23                "deviceSerialValid",
24                "capabilityStructureValid",
25                "cxlDVSECValid",
26                "cxlErrorLogValid"
27            ],
28            "properties": {
29                "cxlAgentTypeValid": {
30                    "type": "boolean"
31                },
32                "cxlAgentAddressValid": {
33                    "type": "boolean"
34                },
35                "deviceIDValid": {
36                    "type": "boolean"
37                },
38                "deviceSerialValid": {
39                    "type": "boolean"
40                },
41                "capabilityStructureValid": {
42                    "type": "boolean"
43                },
44                "cxlDVSECValid": {
45                    "type": "boolean"
46                },
47                "cxlErrorLogValid": {
48                    "type": "boolean"
49                }
50            }
51        },
52        "agentType": {
53            "type": "object",
54            "$ref": "./common/cper-json-nvp.json"
55        },
56        "cxlAgentAddress": {
57            "type": "object",
58            "oneOf": [
59                {
60                    "type": "object",
61                    "required": [
62                        "functionNumber",
63                        "deviceNumber",
64                        "busNumber",
65                        "segmentNumber"
66                    ],
67                    "properties": {
68                        "functionNumber": {
69                            "type": "integer"
70                        },
71                        "deviceNumber": {
72                            "type": "integer"
73                        },
74                        "busNumber": {
75                            "type": "integer"
76                        },
77                        "segmentNumber": {
78                            "type": "integer"
79                        }
80                    }
81                },
82                {
83                    "type": "object",
84                    "required": ["value"],
85                    "properties": {
86                        "value": {
87                            "type": "integer"
88                        }
89                    }
90                }
91            ]
92        },
93        "deviceID": {
94            "type": "object",
95            "required": [
96                "vendorID",
97                "deviceID",
98                "subsystemVendorID",
99                "subsystemDeviceID",
100                "classCode",
101                "slotNumber"
102            ],
103            "properties": {
104                "vendorID": {
105                    "type": "integer"
106                },
107                "deviceID": {
108                    "type": "integer"
109                },
110                "subsystemVendorID": {
111                    "type": "integer"
112                },
113                "subsystemDeviceID": {
114                    "type": "integer"
115                },
116                "classCode": {
117                    "type": "integer"
118                },
119                "slotNumber": {
120                    "type": "integer"
121                }
122            }
123        },
124        "deviceSerial": {
125            "type": "integer"
126        },
127        "capabilityStructure": {
128            "type": "string"
129        },
130        "dvsecLength": {
131            "type": "integer"
132        },
133        "errorLogLength": {
134            "type": "integer"
135        },
136        "cxlDVSEC": {
137            "type": "string"
138        },
139        "cxlErrorLog": {
140            "type": "string"
141        }
142    }
143}
144