tools: lpc: start implementation, send metadata

With the LPC interface, send the window information to the BMC.

Tested: Ran on test system and verified window mapped via ioctl to
driver as expected.

Change-Id: I7ffac6b52205b215fd698a574d098b505091c3d4
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/test/tools_lpc_unittest.cpp b/test/tools_lpc_unittest.cpp
new file mode 100644
index 0000000..5b7ddb1
--- /dev/null
+++ b/test/tools_lpc_unittest.cpp
@@ -0,0 +1,34 @@
+#include "blob_interface_mock.hpp"
+#include "internal_sys_mock.hpp"
+#include "lpc.hpp"
+
+#include <cstring>
+
+#include <gtest/gtest.h>
+
+namespace host_tool
+{
+
+using ::testing::ContainerEq;
+
+TEST(LpcHandleTest, verifySendsFileContents)
+{
+    BlobInterfaceMock blobMock;
+
+    LpcDataHandler handler(&blobMock);
+    std::uint16_t session = 0xbeef;
+    std::string filePath = "/asdf";
+
+    LpcRegion host_lpc_buf;
+    host_lpc_buf.address = 0xfedc1000;
+    host_lpc_buf.length = 0x1000;
+
+    std::vector<std::uint8_t> bytes(sizeof(host_lpc_buf));
+    std::memcpy(bytes.data(), &host_lpc_buf, sizeof(host_lpc_buf));
+
+    EXPECT_CALL(blobMock, writeMeta(session, 0, ContainerEq(bytes)));
+
+    EXPECT_FALSE(handler.sendContents(filePath, session));
+}
+
+} // namespace host_tool