Inventory.Decorator.I2CDevice: Add I2CDevice Interface YAML

Define a I2CDevice inventory item interface. This can be implemented by
inventory objects that want to expose i2c device bus number and address
on D-Bus.

One example of how this interface is used can be found in the Entity
Manager repo.

Signed-off-by: Santosh Puranik <santosh.puranik@in.ibm.com>
Change-Id: I236ea86a05f43e46605e4a6f9922156b1d15309f
diff --git a/gen/xyz/openbmc_project/Inventory/Decorator/I2CDevice/meson.build b/gen/xyz/openbmc_project/Inventory/Decorator/I2CDevice/meson.build
new file mode 100644
index 0000000..e4c3fd9
--- /dev/null
+++ b/gen/xyz/openbmc_project/Inventory/Decorator/I2CDevice/meson.build
@@ -0,0 +1,14 @@
+# Generated file; do not modify.
+generated_sources += custom_target(
+    'xyz/openbmc_project/Inventory/Decorator/I2CDevice__cpp'.underscorify(),
+    input: [ meson.source_root() / 'xyz/openbmc_project/Inventory/Decorator/I2CDevice.interface.yaml',  ],
+    output: [ 'server.cpp', 'server.hpp', 'client.hpp',  ],
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'cpp',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.source_root(),
+        'xyz/openbmc_project/Inventory/Decorator/I2CDevice',
+    ],
+)
+
diff --git a/gen/xyz/openbmc_project/Inventory/Decorator/meson.build b/gen/xyz/openbmc_project/Inventory/Decorator/meson.build
index 3755371..7515bad 100644
--- a/gen/xyz/openbmc_project/Inventory/Decorator/meson.build
+++ b/gen/xyz/openbmc_project/Inventory/Decorator/meson.build
@@ -89,6 +89,21 @@
     build_by_default: true,
 )
 
+subdir('I2CDevice')
+generated_others += custom_target(
+    'xyz/openbmc_project/Inventory/Decorator/I2CDevice__markdown'.underscorify(),
+    input: [ meson.source_root() / 'xyz/openbmc_project/Inventory/Decorator/I2CDevice.interface.yaml',  ],
+    output: [ 'I2CDevice.md' ],
+    command: [
+        sdbuspp_gen_meson_prog, '--command', 'markdown',
+        '--output', meson.current_build_dir(),
+        '--tool', sdbusplusplus_prog,
+        '--directory', meson.source_root(),
+        'xyz/openbmc_project/Inventory/Decorator/I2CDevice',
+    ],
+    build_by_default: true,
+)
+
 subdir('LocationCode')
 generated_others += custom_target(
     'xyz/openbmc_project/Inventory/Decorator/LocationCode__markdown'.underscorify(),
diff --git a/xyz/openbmc_project/Inventory/Decorator/I2CDevice.interface.yaml b/xyz/openbmc_project/Inventory/Decorator/I2CDevice.interface.yaml
new file mode 100644
index 0000000..c6240ff
--- /dev/null
+++ b/xyz/openbmc_project/Inventory/Decorator/I2CDevice.interface.yaml
@@ -0,0 +1,15 @@
+description: >
+    Implement this interface to expose an I2C device as an inventory item.
+    Properties include the I2C bus number and the device address.
+
+properties:
+    - name: Bus
+      type: size
+      description: >
+          The I2C adapter number as defined in the Linux kernel's i2c dev
+          interface document.
+
+    - name: Address
+      type: size
+      description: >
+          I2C address of the device as defined in the Linux kernel documents.