]> ToastFreeware Gitweb - gregoa/zavai.git/blobdiff - src/gsm.vala
Notes about remotising devices
[gregoa/zavai.git] / src / gsm.vala
index 5d00be16c28338985e079bd1a8477b275f16465c..b11065d0a79511493c222874ff28187847c92aeb 100644 (file)
@@ -31,6 +31,8 @@ protected class GSMActivator : Object
     public dynamic DBus.Object network;
     public dynamic DBus.Object sim;
 
+    public signal void status_changed(string message);
+
     public GSMActivator()
     {
         device = null;
@@ -56,6 +58,7 @@ protected class GSMActivator : Object
                     "org.freesmartphone.GSM.SIM");
         }
 
+        status_changed("Turning on antenna");
         device.SetAntennaPower(true, on_antenna_power);
     }
 
@@ -67,17 +70,20 @@ protected class GSMActivator : Object
             if (e.message.str("current status is 'enabling'") != null
                 || e.message.str("current status is 'unknown'") != null)
             {
+                status_changed("Waiting for ogsmd to settle");
                 zavai.log.info("trying again after 2 seconds");
                 Timeout.add(2 * 1000, () => {
                     device.SetAntennaPower(true, on_antenna_power);
                     return false;
                 });
             } else {
+                status_changed("Checking if PIN is required");
                 sim.GetAuthStatus(on_auth_status);
             }
             return;
         }
         zavai.log.warning("on_antenna_power ok");
+        status_changed("Registering with network");
         network.Register(on_network_register);
     }
 
@@ -88,7 +94,7 @@ protected class GSMActivator : Object
             zavai.log.warning("on_network_register: " + e.message);
             return;
         }
-        zavai.log.info("on_network_register: registered");
+        status_changed("Registered with network");
     }
 
     protected void on_auth_status(string status, Error e)
@@ -100,9 +106,15 @@ protected class GSMActivator : Object
         }
         zavai.log.info("on_auth_status: " + status);
         if (status == "READY")
+        {
+            status_changed("PIN ok");
             device.SetAntennaPower(true, on_antenna_power);
+        }
         else if (status == "SIM PIN")
+        {
+            status_changed("Sending PIN");
             sim.SendAuthCode(zavai.config.sim_pin, on_auth_code);
+        }
         else
             zavai.log.debug("Unknown status: " + status);
     }
@@ -114,7 +126,7 @@ protected class GSMActivator : Object
             zavai.log.warning("on_auth_code: " + e.message);
             return;
         }
-        zavai.log.info("PIN OK");
+        status_changed("PIN OK");
     }
 }
 
@@ -124,11 +136,14 @@ public class GSM: zavai.ScriptMonitorService
     public dynamic DBus.Object call;
     protected GSMActivator activator;
 
+    public signal void status_changed(string message);
+
     public GSM()
     {
         Object(name: "gsm");
 
         activator = new GSMActivator();
+        activator.status_changed += (msg) => { status_changed(msg); };
 
         call = null;
 
@@ -144,6 +159,8 @@ public class GSM: zavai.ScriptMonitorService
     {
         if (started) return;
 
+        status_changed("Starting");
+
         script_start();
 
         call = zavai.registry.sbus.get_object(
@@ -158,7 +175,10 @@ public class GSM: zavai.ScriptMonitorService
     {
         zavai.log.debug("NOC " + name + " from " + oldOwner + " to " + newOwner);
         if (name == "org.freesmartphone.ogsmd" && newOwner != "")
+        {
+            status_changed("ogpsd came online");
             activator.begin();
+        }
     }
 
     // Release usage of GPS