firmware: add handler for static layout

Add static layout handler.

Change-Id: I5c4cfe9782d59d32b16556e1d82b468c119eeb76
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/firmware_handler.hpp b/firmware_handler.hpp
index 18b04fc..1a9e8b0 100644
--- a/firmware_handler.hpp
+++ b/firmware_handler.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include "image_handler.hpp"
+
 #include <blobs-ipmid/blobs.hpp>
 #include <cstdint>
 #include <memory>
@@ -29,19 +31,20 @@
      * @param[in] transports - bitmask of transports to support.
      */
     static std::unique_ptr<GenericBlobInterface>
-        CreateFirmwareBlobHandler(const std::vector<std::string>& firmwares,
+        CreateFirmwareBlobHandler(const std::vector<HandlerPack>& firmwares,
                                   std::uint16_t transports);
 
     /**
      * Create a FirmwareBlobHandler.
      *
-     * @param[in] blobs - list of blobs_ids to support.
+     * @param[in] blobs - list of blobs_ids to support and their image handlers.
      * @param[in] transports - bitmask of transports to support.
      */
-    FirmwareBlobHandler(const std::vector<std::string>& blobs,
+    FirmwareBlobHandler(const std::vector<HandlerPack>& firmwares,
+                        const std::vector<std::string>& blobs,
                         std::uint16_t transports) :
-        blobIDs(blobs),
-        transports(transports)
+        handlers(firmwares),
+        blobIDs(blobs), transports(transports)
     {
     }
     ~FirmwareBlobHandler() = default;
@@ -72,6 +75,9 @@
     static const std::string activeHashBlobID;
 
   private:
+    /** List of handlers by type. */
+    std::vector<HandlerPack> handlers;
+
     /** Active list of blobIDs. */
     std::vector<std::string> blobIDs;