PLDM: Add Entity and FRU interfaces

Add PLDM.Entity interface to represent a PLDM Entity. Also add a
PLDM.FRU interface to represent PLFM FRU properties.

Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
Change-Id: I1d2f2a3e102f4809905fd494ba8e60075236a827
diff --git a/xyz/openbmc_project/Inventory/Source/PLDM/FRU.interface.yaml b/xyz/openbmc_project/Inventory/Source/PLDM/FRU.interface.yaml
new file mode 100644
index 0000000..7dc47bf
--- /dev/null
+++ b/xyz/openbmc_project/Inventory/Source/PLDM/FRU.interface.yaml
@@ -0,0 +1,89 @@
+description: >
+    Implement to represent a PLDM FRU (
+    www.dmtf.org/sites/default/files/standards/documents/DSP0257_1.0.0.pdf).
+    This interface is composed of standard (not OEM) FRU field type (FRU
+    properties) definitions from table 5 in DSP0257.
+
+    Caveat: This interface is primarily for consumption by the PLDM FRU format
+    producer apps (for eg the PLDM daemon) and apps that transform specific FRU
+    formats to Inventory information, such as Entity Manager and Phosphor
+    Inventory Manager.
+
+    An OpenBMC implementation that wants to process a PLDM FRU record table
+    received by a connected PLDM entity must add this interface on a D-Bus
+    object that represents a PLDM FRU definition - a set of properties and their
+    values for the FRU. Typically such an app would parse PLDM FRU records and
+    relay the parsed information onto D-Bus. If the value of a certain standard
+    FRU field is missing in the FRU record, then the corresponding D-Bus
+    property in this interface will have a default value.
+
+    The proposal in https://gerrit.openbmc-project.xyz/#/c/openbmc/docs/+/32532
+    will make use of this interface.
+
+    PLDM stands for Platform Level Data Model. More information about PLDM (and
+    MCTP) can be found at https://www.dmtf.org/standards/pmci
+
+properties:
+    - name: ChassisType
+      type: string
+      description: >
+          Chassis type of the FRU. Can be empty if the FRU is not a chassis.
+    - name: Model
+      type: string
+      description: >
+          Model of the FRU.
+    - name: PN
+      type: string
+      description: >
+          Part number of the FRU.
+    - name: SN
+      type: string
+      description: >
+          Serial number of the FRU.
+    - name: Manufacturer
+      type: string
+      description: >
+          Manufacturer of the FRU.
+    - name: ManufacturerDate
+      type: string
+      description: >
+          Manufacturing date of the FRU in YYYYMMDD format. While the FRU spec
+          has this defined as 13 byte binary format, that is aligned with CIM. A
+          string is likely to be more useful. An implementation of this is
+          expected to transform the 13 byte binary format to a string.
+    - name: Vendor
+      type: string
+      description: >
+          Vendor of the FRU.
+    - name: Name
+      type: string
+      description: >
+          Name of the FRU.
+    - name: SKU
+      type: string
+      description: >
+          Stock-keeping unit number of the FRU.
+    - name: Version
+      type: string
+      description: >
+          Version of the FRU.
+    - name: AssetTag
+      type: string
+      description: >
+          Asset tag of the FRU.
+    - name: Description
+      type: string
+      description: >
+          A description of the FRU.
+    - name: ECLevel
+      type: string
+      description: >
+          Engineering change level of the FRU.
+    - name: Other
+      type: string
+      description: >
+          Other information about the FRU.
+    - name: IANA
+      type: uint32
+      description: >
+          The FRU vendor's IANA number.