PEL creation in case of HW/SW failure.

Creation of PEL in case the parser process fails to parse and/or publish
VPD data.
This commit handles both hardware or software failure and creates PEL
accordingly.

Tested on Simics.

Test procedure:
Step1 : Copy ibm_read_vpd in /tmp folder on simics
Step2 : Run ibm_read_vpd exe with a vpd file path having invalid VPD/ECC or
        invalid JSON path. In this case we have given path to VPD file with
        invalid VPD data.
        command-> ./ibm_read_vpd --file <vpd_file_path>
Step3 : After the execution is over, look for PEL logged using command
        "peltool -a"

PEL logged incase of invalid VPD:
[
{
"Private Header": {
    "Section Version":          "1",
    "Sub-section type":         "0",
    "Created by":               "0x4000",
    "Created at":               "11/27/2020 04:40:00",
    "Committed at":             "11/27/2020 04:40:00",
    "Creator Subsystem":        "BMC",
    "CSSVER":                   "",
    "Platform Log Id":          "0x50000002",
    "Entry Id":                 "0x50000002",
    "BMC Event Log Id":         "2"
},
"User Header": {
    "Section Version":          "1",
    "Sub-section type":         "0",
    "Log Committed by":         "0x2000",
    "Subsystem":                "CEC Hardware: VPD Interface",
    "Event Scope":              "Entire Platform",
    "Event Severity":           "Unrecoverable Error",
    "Event Type":               "Not Applicable",
    "Action Flags": [
                                "Service Action Required",
                                "Report Externally",
                                "HMC Call Home"
    ],
    "Host Transmission":        "Not Sent"
},
"Primary SRC": {
    "Section Version":          "1",
    "Sub-section type":         "1",
    "Created by":               "0x4000",
    "SRC Version":              "0x02",
    "SRC Format":               "0x55",
    "Virtual Progress SRC":     "False",
    "I5/OS Service Event Bit":  "False",
    "Hypervisor Dump Initiated":"False",
    "Power Control Net Fault":  "False",
    "Backplane CCIN":           "2E2D",
    "Error Details": {
        "Message":              "A VPD data exception occurred."
    },
    "Valid Word Count":         "0x09",
    "Reference Code":           "BD554001",
    "Hex Word 2":               "00000055",
    "Hex Word 3":               "2E2D0010",
    "Hex Word 4":               "00000000",
    "Hex Word 5":               "00000000",
    "Hex Word 6":               "00000000",
    "Hex Word 7":               "00000000",
    "Hex Word 8":               "00000000",
    "Hex Word 9":               "00000000",
    "Callout Section": {
        "Callout Count":        "1",
        "Callouts": [{
            "FRU Type":         "Normal Hardware FRU",
            "Priority":         "Mandatory, replace all with this type as a unit",
            "Location Code":    "U78DA.ND1.1234567-P0",
            "Part Number":      "F191014",
            "CCIN":             "2E2D",
            "Serial Number":    "YL2E2D010000"
        }]
    }
},
"Extended User Header": {
    "Section Version":          "1",
    "Sub-section type":         "0",
    "Created by":               "0x2000",
    "Reporting Machine Type":   "9105-22A",
    "Reporting Serial Number":  "SIMP10R",
    "FW Released Ver":          "",
    "FW SubSys Version":        "fw1020.00-6",
    "Common Ref Time":          "00/00/0000 00:00:00",
    "Symptom Id Len":           "20",
    "Symptom Id":               "BD554001_2E2D0010"
},
"Failing MTMS": {
    "Section Version":          "1",
    "Sub-section type":         "0",
    "Created by":               "0x2000",
    "Machine Type Model":       "9105-22A",
    "Serial Number":            "SIMP10R"
},
"User Data 0": {
    "Section Version": "1",
    "Sub-section type": "1",
    "Created by": "0x2000",
    "BMC Version ID": "fw1020.00-6-22-gbbd23f832",
    "BMCState": "Ready",
    "ChassisState": "Off",
    "HostState": "Off",
    "Process Name": "Unknown"
},
"User Data 1": {
    "Section Version": "1",
    "Sub-section type": "1",
    "Created by": "0x2000",
    "CALLOUT_INVENTORY_PATH": "/xyz/openbmc_project/inventory/system/chassis/motherboard",
    "DESCRIPTION": "Invalid VPD data"
}
}
]

Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com>
Change-Id: Ieb434bb45b4051d8b7b6d4c9022984d5471fc855
diff --git a/const.hpp b/const.hpp
index 40ffc62..e72abff 100644
--- a/const.hpp
+++ b/const.hpp
@@ -69,6 +69,18 @@
 constexpr auto kwdVpdInf = "com.ibm.ipzvpd.VINI";
 constexpr auto memVpdInf = "com.ibm.ipzvpd.VINI";
 constexpr auto ipzVpdInf = "com.ibm.ipzvpd.";
+constexpr auto offsetJsonDirectory = "/var/lib/vpd/";
+constexpr auto mapperObjectPath = "/xyz/openbmc_project/object_mapper";
+constexpr auto mapperInterface = "xyz.openbmc_project.ObjectMapper";
+constexpr auto mapperDestination = "xyz.openbmc_project.ObjectMapper";
+constexpr auto loggerObjectPath = "/xyz/openbmc_project/logging";
+constexpr auto loggerCreateInterface = "xyz.openbmc_project.Logging.Create";
+constexpr auto errIntfForBlankSystemVPD = "com.ibm.VPD.Error.BlankSystemVPD";
+constexpr auto errIntfForInvalidVPD = "com.ibm.VPD.Error.InvalidVPD";
+constexpr auto errIntfForStreamFail = "com.ibm.VPD.Error.InavlidEepromPath";
+constexpr auto errIntfForEccCheckFail = "com.ibm.VPD.Error.EccCheckFailed";
+constexpr auto errIntfForJsonFailure = "com.ibm.VPD.Error.InvalidJson";
+constexpr auto errIntfForBusFailure = "com.ibm.VPD.Error.DbusFailure";
 
 namespace lengths
 {