diff --git a/tools/p2a.cpp b/tools/p2a.cpp
new file mode 100644
index 0000000..6d0ab37
--- /dev/null
+++ b/tools/p2a.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2019 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "p2a.hpp"
+
+#include "pci.hpp"
+
+namespace host_tool
+{
+
+bool P2aDataHandler::sendContents(const std::string& input,
+                                  std::uint16_t session)
+{
+    PciUtilImpl pci;
+    PciFilter filter;
+
+    filter.vid = aspeedVendorId;
+    filter.did = aspeedDeviceId;
+
+    auto output = pci.getPciDevices(filter);
+    for (const auto& d : output)
+    {
+        std::fprintf(stderr, "0x%x", d.vid);
+    }
+
+    return false;
+}
+
+} // namespace host_tool
