Make key types based on id

This commit separates out the libcper json output by section name.
Previously, each section was

i.e., for e.g., add "Nvidia" for the NVIDIA section
```
  "sections": [
    {
      "Nvidia":{
          "socket": 0
      }
    }
  ]
```
instead of
```
  "sections": [
    {
        "socket": 0
    }
  ]
```

This allows disambiguating between multiple fields with different types
and removes collisions between the field names.

Change-Id: I4e257f1e04fc5fbf2798955d3a5d93214c81f0fc
Signed-off-by: Karthik Rajagopalan <krajagopalan@nvidia.com>
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/specification/json/cper-json-full-log.json b/specification/json/cper-json-full-log.json
index b4dd875..2b5931a 100644
--- a/specification/json/cper-json-full-log.json
+++ b/specification/json/cper-json-full-log.json
@@ -1,4 +1,6 @@
 {
+    "$id": "cper-json-full-log",
+    "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
     "required": ["header", "sectionDescriptors", "sections"],
     "additionalProperties": false,
@@ -18,24 +20,132 @@
             "items": {
                 "type": "object",
                 "oneOf": [
-                    { "$ref": "./sections/cper-generic-processor.json" },
-                    { "$ref": "./sections/cper-ia32x64-processor.json" },
-                    { "$ref": "./sections/cper-arm-processor.json" },
-                    { "$ref": "./sections/cper-memory.json" },
-                    { "$ref": "./sections/cper-memory2.json" },
-                    { "$ref": "./sections/cper-pcie.json" },
-                    { "$ref": "./sections/cper-pci-bus.json" },
-                    { "$ref": "./sections/cper-pci-component.json" },
-                    { "$ref": "./sections/cper-firmware.json" },
-                    { "$ref": "./sections/cper-generic-dmar.json" },
-                    { "$ref": "./sections/cper-vtd-dmar.json" },
-                    { "$ref": "./sections/cper-iommu-dmar.json" },
-                    { "$ref": "./sections/cper-ccix-per.json" },
-                    { "$ref": "./sections/cper-cxl-protocol.json" },
-                    { "$ref": "./sections/cper-cxl-component.json" },
-                    { "$ref": "./sections/cper-nvidia.json" },
-                    { "$ref": "./sections/cper-ampere.json" },
-                    { "$ref": "./sections/cper-unknown.json" }
+                    {
+                        "type": "object",
+                        "required": ["GenericProcessor"],
+                        "GenericProcessor": {
+                            "$ref": "./sections/cper-generic-processor.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Ia32x64Processor"],
+                        "Ia32x64Processor": {
+                            "$ref": "./sections/cper-ia32x64-processor.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["ArmProcessor"],
+                        "ArmProcessor": {
+                            "$ref": "./sections/cper-arm-processor.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Memory"],
+                        "Memory": {
+                            "$ref": "./sections/cper-memory.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Memory2"],
+                        "Memory2": {
+                            "$ref": "./sections/cper-memory2.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Pcie"],
+                        "Pcie": {
+                            "$ref": "./sections/cper-pcie.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["PciBus"],
+                        "PciBus": {
+                            "$ref": "./sections/cper-pci-bus.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["PciComponent"],
+                        "PciComponent": {
+                            "$ref": "./sections/cper-pci-component.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Firmware"],
+                        "Firmware": {
+                            "$ref": "./sections/cper-firmware.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["GenericDmar"],
+                        "GenericDmar": {
+                            "$ref": "./sections/cper-generic-dmar.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["VtdDmar"],
+                        "VtdDmar": {
+                            "$ref": "./sections/cper-vtd-dmar.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["IommuDmar"],
+                        "IommuDmar": {
+                            "$ref": "./sections/cper-iommu-dmar.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["CcixPer"],
+                        "CcixPer": {
+                            "$ref": "./sections/cper-ccix-per.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["CxlProtocol"],
+                        "CxlProtocol": {
+                            "$ref": "./sections/cper-cxl-protocol.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["CxlComponent"],
+                        "CxlComponent": {
+                            "$ref": "./sections/cper-cxl-component.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Nvidia"],
+                        "Nvidia": {
+                            "$ref": "./sections/cper-nvidia.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Ampere"],
+                        "Nvidia": {
+                            "$ref": "./sections/cper-ampere.json"
+                        }
+                    },
+                    {
+                        "type": "object",
+                        "required": ["Unknown"],
+                        "Unknown": {
+                            "$ref": "./sections/cper-unknown.json"
+                        }
+                    }
                 ]
             }
         }
diff --git a/specification/json/cper-json-section-log.json b/specification/json/cper-json-section-log.json
index 0909197..2cbe621 100644
--- a/specification/json/cper-json-section-log.json
+++ b/specification/json/cper-json-section-log.json
@@ -12,24 +12,132 @@
         "section": {
             "type": "object",
             "oneOf": [
-                { "$ref": "./sections/cper-generic-processor.json" },
-                { "$ref": "./sections/cper-ia32x64-processor.json" },
-                { "$ref": "./sections/cper-arm-processor.json" },
-                { "$ref": "./sections/cper-memory.json" },
-                { "$ref": "./sections/cper-memory2.json" },
-                { "$ref": "./sections/cper-pcie.json" },
-                { "$ref": "./sections/cper-pci-bus.json" },
-                { "$ref": "./sections/cper-pci-component.json" },
-                { "$ref": "./sections/cper-firmware.json" },
-                { "$ref": "./sections/cper-generic-dmar.json" },
-                { "$ref": "./sections/cper-vtd-dmar.json" },
-                { "$ref": "./sections/cper-iommu-dmar.json" },
-                { "$ref": "./sections/cper-ccix-per.json" },
-                { "$ref": "./sections/cper-cxl-protocol.json" },
-                { "$ref": "./sections/cper-cxl-component.json" },
-                { "$ref": "./sections/cper-nvidia.json" },
-                { "$ref": "./sections/cper-ampere.json" },
-                { "$ref": "./sections/cper-unknown.json" }
+                {
+                    "type": "object",
+                    "required": ["GenericProcessor"],
+                    "GenericProcessor": {
+                        "$ref": "./sections/cper-generic-processor.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Ia32x64Processor"],
+                    "Ia32x64Processor": {
+                        "$ref": "./sections/cper-ia32x64-processor.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["ArmProcessor"],
+                    "ArmProcessor": {
+                        "$ref": "./sections/cper-arm-processor.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Memory"],
+                    "Memory": {
+                        "$ref": "./sections/cper-memory.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Memory2"],
+                    "Memory2": {
+                        "$ref": "./sections/cper-memory2.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Pcie"],
+                    "Pcie": {
+                        "$ref": "./sections/cper-pcie.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["PciBus"],
+                    "PciBus": {
+                        "$ref": "./sections/cper-pci-bus.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["PciComponent"],
+                    "PciComponent": {
+                        "$ref": "./sections/cper-pci-component.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Firmware"],
+                    "Firmware": {
+                        "$ref": "./sections/cper-firmware.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["GenericDmar"],
+                    "GenericDmar": {
+                        "$ref": "./sections/cper-generic-dmar.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["VtdDmar"],
+                    "VtdDmar": {
+                        "$ref": "./sections/cper-vtd-dmar.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["IommuDmar"],
+                    "IommuDmar": {
+                        "$ref": "./sections/cper-iommu-dmar.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["CcixPer"],
+                    "CcixPer": {
+                        "$ref": "./sections/cper-ccix-per.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["CxlProtocol"],
+                    "CxlProtocol": {
+                        "$ref": "./sections/cper-cxl-protocol.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["CxlComponent"],
+                    "CxlComponent": {
+                        "$ref": "./sections/cper-cxl-component.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Nvidia"],
+                    "Nvidia": {
+                        "$ref": "./sections/cper-nvidia.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Ampere"],
+                    "Nvidia": {
+                        "$ref": "./sections/cper-ampere.json"
+                    }
+                },
+                {
+                    "type": "object",
+                    "required": ["Unknown"],
+                    "Unknown": {
+                        "$ref": "./sections/cper-unknown.json"
+                    }
+                }
             ]
         }
     }