IPMIFruArea: move source into separate fru_area.cpp

Move the implementation of the class into its own source file.

Change-Id: I02d941dd8173f0cede8cdfe8af1fdc5f5418abb4
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/Makefile.am b/Makefile.am
index 5862009..41daebb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,6 +17,7 @@
 lib_LTLIBRARIES = libwritefrudata.la
 libwritefrudata_la_SOURCES = frup.cpp \
 	fru-gen.cpp \
+	fru_area.cpp \
 	writefrudata.cpp \
 	extra-properties-gen.cpp
 libwritefrudata_la_LDFLAGS = $(SYSTEMD_LIBS) \
diff --git a/fru_area.cpp b/fru_area.cpp
new file mode 100644
index 0000000..1f90064
--- /dev/null
+++ b/fru_area.cpp
@@ -0,0 +1,83 @@
+#include "fru_area.hpp"
+
+#include "frup.hpp"
+
+#include <cstdint>
+#include <cstring>
+#include <phosphor-logging/log.hpp>
+
+using namespace phosphor::logging;
+
+//----------------------------------------------------------------
+// Constructor
+//----------------------------------------------------------------
+IPMIFruArea::IPMIFruArea(const uint8_t fruid, const ipmi_fru_area_type type,
+                         bool bmc_fru)
+{
+    iv_fruid = fruid;
+    iv_type = type;
+    iv_bmc_fru = bmc_fru;
+    iv_valid = false;
+    iv_data = NULL;
+    iv_present = false;
+
+    if (iv_type == IPMI_FRU_AREA_INTERNAL_USE)
+    {
+        iv_name = "INTERNAL_";
+    }
+    else if (iv_type == IPMI_FRU_AREA_CHASSIS_INFO)
+    {
+        iv_name = "CHASSIS_";
+    }
+    else if (iv_type == IPMI_FRU_AREA_BOARD_INFO)
+    {
+        iv_name = "BOARD_";
+    }
+    else if (iv_type == IPMI_FRU_AREA_PRODUCT_INFO)
+    {
+        iv_name = "PRODUCT_";
+    }
+    else if (iv_type == IPMI_FRU_AREA_MULTI_RECORD)
+    {
+        iv_name = "MULTI_";
+    }
+    else
+    {
+        iv_name = IPMI_FRU_AREA_TYPE_MAX;
+        log<level::ERR>("Invalid Area", entry("TYPE=%d", iv_type));
+    }
+}
+
+//-----------------------------------------------------
+// For a FRU area type, accepts the data and updates
+// area specific data.
+//-----------------------------------------------------
+void IPMIFruArea::set_data(const uint8_t* data, const size_t len)
+{
+    iv_len = len;
+    iv_data = new uint8_t[len];
+    std::memcpy(iv_data, data, len);
+}
+
+//-----------------------------------------------------
+// Sets the dbus parameters
+//-----------------------------------------------------
+void IPMIFruArea::update_dbus_paths(const char* bus_name, const char* obj_path,
+                                    const char* intf_name)
+{
+    iv_bus_name = bus_name;
+    iv_obj_path = obj_path;
+    iv_intf_name = intf_name;
+}
+
+//-------------------
+// Destructor
+//-------------------
+IPMIFruArea::~IPMIFruArea()
+{
+    if (iv_data != NULL)
+    {
+        delete[] iv_data;
+        iv_data = NULL;
+    }
+}
diff --git a/writefrudata.cpp b/writefrudata.cpp
index 1cbf210..978f2b1 100644
--- a/writefrudata.cpp
+++ b/writefrudata.cpp
@@ -276,80 +276,6 @@
 
 } // namespace
 
-//----------------------------------------------------------------
-// Constructor
-//----------------------------------------------------------------
-IPMIFruArea::IPMIFruArea(const uint8_t fruid, const ipmi_fru_area_type type,
-                         bool bmc_fru)
-{
-    iv_fruid = fruid;
-    iv_type = type;
-    iv_bmc_fru = bmc_fru;
-    iv_valid = false;
-    iv_data = NULL;
-    iv_present = false;
-
-    if (iv_type == IPMI_FRU_AREA_INTERNAL_USE)
-    {
-        iv_name = "INTERNAL_";
-    }
-    else if (iv_type == IPMI_FRU_AREA_CHASSIS_INFO)
-    {
-        iv_name = "CHASSIS_";
-    }
-    else if (iv_type == IPMI_FRU_AREA_BOARD_INFO)
-    {
-        iv_name = "BOARD_";
-    }
-    else if (iv_type == IPMI_FRU_AREA_PRODUCT_INFO)
-    {
-        iv_name = "PRODUCT_";
-    }
-    else if (iv_type == IPMI_FRU_AREA_MULTI_RECORD)
-    {
-        iv_name = "MULTI_";
-    }
-    else
-    {
-        iv_name = IPMI_FRU_AREA_TYPE_MAX;
-        log<level::ERR>("Invalid Area", entry("TYPE=%d", iv_type));
-    }
-}
-
-//-----------------------------------------------------
-// For a FRU area type, accepts the data and updates
-// area specific data.
-//-----------------------------------------------------
-void IPMIFruArea::set_data(const uint8_t* data, const size_t len)
-{
-    iv_len = len;
-    iv_data = new uint8_t[len];
-    std::memcpy(iv_data, data, len);
-}
-
-//-----------------------------------------------------
-// Sets the dbus parameters
-//-----------------------------------------------------
-void IPMIFruArea::update_dbus_paths(const char* bus_name, const char* obj_path,
-                                    const char* intf_name)
-{
-    iv_bus_name = bus_name;
-    iv_obj_path = obj_path;
-    iv_intf_name = intf_name;
-}
-
-//-------------------
-// Destructor
-//-------------------
-IPMIFruArea::~IPMIFruArea()
-{
-    if (iv_data != NULL)
-    {
-        delete[] iv_data;
-        iv_data = NULL;
-    }
-}
-
 //------------------------------------------------
 // Takes the pointer to stream of bytes and length
 // and returns the 8 bit checksum