bts_*: Add ready_for_pcu API

This is required to start osmo-pcu after osmo-bts is already setup and
activated. Otherwise osmo-pcu ends after connecting to socket with:
"pcu_l1_if.cpp:416 BTS not available"

Change-Id: I7209589f60bda63094336e417638906be5e273c4
diff --git a/src/osmo_gsm_tester/bts_sysmo.py b/src/osmo_gsm_tester/bts_sysmo.py
index fc546ae..1a7b139 100644
--- a/src/osmo_gsm_tester/bts_sysmo.py
+++ b/src/osmo_gsm_tester/bts_sysmo.py
@@ -31,6 +31,7 @@
     remote_dir = None
     lac = None
     cellid = None
+    proc_bts = None
 
     REMOTE_DIR = '/osmo-gsm-tester'
     BTS_SYSMO_BIN = 'osmo-bts-sysmo'
@@ -76,11 +77,11 @@
 
         remote_lib = self.remote_inst.child('lib')
         remote_binary = self.remote_inst.child('bin', 'osmo-bts-sysmo')
-        self.launch_remote('osmo-bts-sysmo',
-            ('LD_LIBRARY_PATH=%s' % remote_lib,
-             remote_binary, '-c', remote_config_file, '-r', '1',
-             '-i', self.bsc.addr()),
-            remote_cwd=remote_run_dir)
+        self.proc_bts =  self.launch_remote('osmo-bts-sysmo',
+                            ('LD_LIBRARY_PATH=%s' % remote_lib,
+                             remote_binary, '-c', remote_config_file, '-r', '1',
+                             '-i', self.bsc.addr()),
+                            remote_cwd=remote_run_dir)
 
     def cleanup(self):
         pass
@@ -105,6 +106,7 @@
         proc = self._process_remote(name, popen_args, remote_cwd)
         self.suite_run.remember_to_stop(proc)
         proc.launch()
+        return proc
 
     def run_local(self, name, popen_args):
         run_dir = self.run_dir.new_dir(name)
@@ -153,6 +155,11 @@
         self.dbg(conf=values)
         return values
 
+    def ready_for_pcu(self):
+        if not self.proc_bts or not self.proc_bts.is_running:
+            return False
+        return 'BTS is up' in (self.proc_bts.get_stderr() or '')
+
     def set_bsc(self, bsc):
         self.bsc = bsc