gpio-presence: Support for multiple iface assocs

This will allow additional interfaces to be specified
to associate with inventory items to allow for further
customization of inventory items.

Specifying property values for an interface added this way
is currently not supported.

Tested: Verified any given interface(s) is associated properly

Signed-off-by: Anthony Wilson <wilsonan@us.ibm.com>
Change-Id: I99e655b35120c82454a8851201218ec548ad9fe3
diff --git a/presence/gpio_presence.hpp b/presence/gpio_presence.hpp
index 834a171..edd2d7a 100644
--- a/presence/gpio_presence.hpp
+++ b/presence/gpio_presence.hpp
@@ -18,6 +18,7 @@
 using Device = std::string;
 using Path = std::experimental::filesystem::path;
 using Driver = std::tuple<Device, Path>;
+using Interface = std::string;
 
 /** @class Presence
  *  @brief Responsible for determining and monitoring presence,
@@ -57,6 +58,8 @@
      *  @param[in] name      - Pretty name of the inventory item
      *  @param[in] event     - sd_event handler
      *  @param[in] drivers   - list of device drivers to bind and unbind
+     *  @param[in] ifaces    - list of extra interfaces to associate with the
+     *                         inventory item
      *  @param[in] handler   - IO callback handler. Defaults to one in this
      *                        class
      */
@@ -64,9 +67,11 @@
              const std::string& path, const unsigned int key,
              const std::string& name, EventPtr& event,
              const std::vector<Driver>& drivers,
+             const std::vector<Interface>& ifaces,
              sd_event_io_handler_t handler = Presence::processEvents) :
         Evdev(path, key, event, handler, true),
-        bus(bus), inventory(inventory), name(name), drivers(drivers)
+        bus(bus), inventory(inventory), name(name), drivers(drivers),
+        ifaces(ifaces)
     {
         determinePresence();
     }
@@ -122,6 +127,11 @@
     /** @brief  Vector of path and device tuples to bind/unbind*/
     const std::vector<Driver> drivers;
 
+    /** @brief  Vector of extra inventory interfaces to associate with the
+     *          inventory item
+     */
+    const std::vector<Interface> ifaces;
+
     /**
      * @brief Binds or unbinds drivers
      *