ofono: try a different way to catch missing dbus interfaces

The nested wait was definitely a bad idea. This here is certainly not very
nice either, but an attempt to catch cases where a dbus interface cannot
be used yet despite being signalled by ofono (sporadically happens).

Change-Id: I2ac7eb0f5174250f4b97e2bf758666410d8cb854
diff --git a/src/osmo_gsm_tester/ofono_client.py b/src/osmo_gsm_tester/ofono_client.py
index ed62536..b983548 100644
--- a/src/osmo_gsm_tester/ofono_client.py
+++ b/src/osmo_gsm_tester/ofono_client.py
@@ -127,18 +127,21 @@
                 except:
                     self.log_exn()
 
-    def _interface_really_present(self, interface_name):
-        try:
-            self.dbus_obj()[interface_name]
-            return True
-        except:
-            return False
-
     def _on_interface_enabled(self, interface_name):
         self.dbg('Interface enabled:', interface_name)
-        test.wait(self._interface_really_present, interface_name)
         if interface_name == I_SMS:
-            self.dbus_obj()[I_SMS].IncomingMessage.connect(self._on_incoming_message)
+            while True:
+                retries = 3
+                try:
+                    self.dbus_obj()[I_SMS].IncomingMessage.connect(self._on_incoming_message)
+                    break
+                except:
+                    self.dbg('Interface not yet available:', I_SMS)
+                    retries -= 1
+                    time.sleep(1)
+                    if retries <= 0:
+                        self.err('Interface enabled by signal, but not available:', I_SMS)
+                        raise
 
     def _on_interface_disabled(self, interface_name):
         self.dbg('Interface disabled:', interface_name)