Move object classes used by tests into obj/ subdir

Change-Id: I0b2963cf00acd1f9036dca2e87aa3b87a0f8066d
diff --git a/src/osmo_gsm_tester/obj/pcu.py b/src/osmo_gsm_tester/obj/pcu.py
new file mode 100644
index 0000000..6028f06
--- /dev/null
+++ b/src/osmo_gsm_tester/obj/pcu.py
@@ -0,0 +1,64 @@
+# osmo_gsm_tester: specifics pcu base abstract class
+#
+# Copyright (C) 2018 by sysmocom - s.f.m.c. GmbH
+#
+# Author: Pau Espin Pedrol <pespin@sysmocom.de>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from abc import ABCMeta, abstractmethod
+from ..core import log
+
+class Pcu(log.Origin, metaclass=ABCMeta):
+    """PCU Abstract Base Class."""
+
+##############
+# PROTECTED
+##############
+
+    def __init__(self, suite_run, bts, conf, name):
+        """Base constructor. Must be called by subclass."""
+        super().__init__(log.C_RUN, name)
+        self.suite_run = suite_run
+        self.bts = bts
+        self.conf = conf
+
+########################
+# PUBLIC - INTERNAL API
+########################
+
+    def egprs_enabled(self):
+        return self.bts.egprs_enabled()
+
+###################
+# PUBLIC (test API included)
+###################
+
+    @abstractmethod
+    def start(self, keepalive=False):
+        """Start the PCU. Must be implemented by subclass."""
+        pass
+
+#------------------------------------------------------------------------------
+
+class PcuDummy(Pcu):
+    """PCU for BTS without proper PCU control"""
+
+    def __init__(self, suite_run, bts, conf):
+        super().__init__(suite_run, bts, conf, 'PcuDummy')
+
+    def start(self, keepalive=False):
+        pass
+
+# vim: expandtab tabstop=4 shiftwidth=4