Bus callout resolution support

Change-Id: I516d151350ac0d2342c966266f2e90bae8572c37
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
diff --git a/analyzer/resolution.hpp b/analyzer/resolution.hpp
index aee3851..9530b70 100644
--- a/analyzer/resolution.hpp
+++ b/analyzer/resolution.hpp
@@ -97,6 +97,48 @@
     void resolve(ServiceData& io_sd) const override;
 };
 
+/**
+ * @brief Resolution to callout all parts on a bus (RX/TX endpoints and
+ *         everything else in between).
+ */
+class BusCalloutResolution : public Resolution
+{
+  public:
+    /**
+     * @brief Constructor from components.
+     * @param i_busType  The bus type.
+     * @param i_unitPath The path of the chip unit that is connected to the
+     *                   other chip. An empty string refers to the chip itself,
+     *                   which generally means this chip is a child of another.
+     * @param i_priority The callout priority.
+     * @param i_guard    The guard type for this callout.
+     */
+    BusCalloutResolution(const callout::BusType& i_busType,
+                         const std::string& i_unitPath,
+                         const callout::Priority& i_priority, bool i_guard) :
+        iv_busType(i_busType),
+        iv_unitPath(i_unitPath), iv_priority(i_priority), iv_guard(i_guard)
+    {}
+
+  private:
+    /** The bus type. */
+    const callout::BusType iv_busType;
+
+    /** The devtree path the chip unit that is connected to the other chip. An
+     *  empty string refers to the chip itself, which generally means this chip
+     *  is a child of the other chip. */
+    const std::string iv_unitPath;
+
+    /** The callout priority. */
+    const callout::Priority iv_priority;
+
+    /** True, if guard is required. False, otherwise. */
+    const bool iv_guard;
+
+  public:
+    void resolve(ServiceData& io_sd) const override;
+};
+
 /** @brief Resolves a clock callout service event. */
 class ClockCalloutResolution : public Resolution
 {