Added functions to start/stop GPRS
authorEnrico Zini <enrico@enricozini.org>
Fri, 9 Oct 2009 20:32:46 +0000 (21:32 +0100)
committerEnrico Zini <enrico@enricozini.org>
Fri, 9 Oct 2009 20:32:46 +0000 (21:32 +0100)
src/Makefile.am
src/app_gsm.vala [new file with mode: 0644]
src/config.vala
src/gsm.vala [new file with mode: 0644]
src/zavai.vala

index 651ad4b2ed68b5e0653f88efc56bce5c5006da1d..bfa60031a10e7c059229114c36b3328a4833dcd3 100644 (file)
@@ -36,6 +36,7 @@ zavai_VALASOURCES = \
        registry.vala \
        input.vala \
        gps.vala \
+       gsm.vala \
        clock.vala \
        audio.vala \
        app.vala \
@@ -43,6 +44,7 @@ zavai_VALASOURCES = \
        app_power.vala \
        app_wm.vala \
        app_gps.vala \
+       app_gsm.vala \
        app_calendar.vala \
        app_polygen.vala \
        app_main.vala \
diff --git a/src/app_gsm.vala b/src/app_gsm.vala
new file mode 100644 (file)
index 0000000..c8b88fa
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * app_gsm - zavai GSM UI functions
+ *
+ * Copyright (C) 2009  Enrico Zini <enrico@enricozini.org>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+using GLib;
+
+namespace zavai {
+namespace ui {
+namespace gsm {
+
+public void init()
+{
+    // Menus
+    var menu_gsm = zavai.registry.getmenu("menu.gsm");
+    menu_gsm.add_service_toggle("gsm.gprs", "Start GPRS", "Stop GPRS");
+}
+
+}
+}
+}
index 4626d22d3de5d48d35dfd5d420f2d37257e2f9c5..d73171653f3746fbd0c2d927ec08455d1375b080 100644 (file)
@@ -26,6 +26,9 @@ public class Config
     public string homedir { get; set; }
     public string icondir { get; set; }
     public int min_button_height { get; set; }
+    public string gprs_apn { get; set; }
+    public string gprs_user { get; set; }
+    public string gprs_pass { get; set; }
 
     public Config()
     {
@@ -34,6 +37,9 @@ public class Config
         homedir = GLib.Environment.get_home_dir() + "/.zavai";
         icondir = "./icons";
         min_button_height = 80;
+       gprs_apn = "";
+       gprs_user = "x";
+       gprs_pass = "x";
     }
 
 /*
diff --git a/src/gsm.vala b/src/gsm.vala
new file mode 100644 (file)
index 0000000..25ed65d
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * gsm - gsm resource for zavai
+ *
+ * Copyright (C) 2009  Enrico Zini <enrico@enricozini.org>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+using GLib;
+
+namespace zavai {
+namespace gsm {
+
+// For a list of dbus services, look in /etc/dbus-1/system.d/
+public class GPRS: zavai.Service
+{
+       public dynamic DBus.Object device;
+
+       public GPRS()
+       {
+               name = "gsm.gprs";
+
+               device = zavai.registry.sbus.get_object(
+                       "org.freesmartphone.ogpsd", 
+                       "/org/freesmartphone/GSM/Device",
+                       "org.freesmartphone.GSM.PDP");
+       }
+
+       /// Request GPS resource
+       public override void start()
+       {
+               if (started) return;
+               try {
+                       device.ActivateContext(
+                               zavai.config.gprs_apn,
+                               zavai.config.gprs_user,
+                               zavai.config.gprs_pass);
+                       zavai.log.info("Started GPRS");
+                       base.start();
+               } catch (GLib.Error e) {
+                       zavai.log.error(e.message);
+               }
+               base.start();
+       }
+
+       // Release usage of GPS
+       public override void stop()
+       {
+               if (!started) return;
+               try {
+                       device.DeactivateContext();
+                       zavai.log.info("Stopped GPRS");
+                       base.stop();
+               } catch (GLib.Error e) {
+                       zavai.log.error(e.message);
+               }
+               base.stop();
+       }
+}
+
+public zavai.gsm.GPRS gprs = null;
+
+public void init()
+{
+       gprs = new GPRS();
+
+       zavai.registry.register_service(gprs);
+}
+
+}
+}
index eaa9aeff1c6182a860622dad6b73e087dbcefa5f..3f31cb88fa9ea9059a5357af889e6ca0f34530bb 100644 (file)
@@ -51,6 +51,7 @@ static int main (string[] args) {
     // Additional infrastructure
        zavai.input.init();
        zavai.gps.init();
+       zavai.gsm.init();
        zavai.audio.init();
        zavai.clock.init();
 
@@ -68,6 +69,10 @@ static int main (string[] args) {
     zavai.registry.register_menu("menu.gps", menu_gps);
     zavai.registry.getmenu("menu.main").add_applet("menu.gps");
 
+    var menu_gsm = new zavai.Menu("GSM");
+    zavai.registry.register_menu("menu.gsm", menu_gsm);
+    zavai.registry.getmenu("menu.main").add_applet("menu.gsm");
+
     var menu_misc = new zavai.Menu("Misc");
     zavai.registry.register_menu("menu.misc", menu_misc);
     zavai.registry.getmenu("menu.main").add_applet("menu.misc");
@@ -75,6 +80,7 @@ static int main (string[] args) {
        // User interface
        zavai.ui.main.init();
        zavai.ui.gps.init();
+       zavai.ui.gsm.init();
        zavai.app.run_script(zavai.config.homedir + "/display init");
        zavai.ui.power.init();
        zavai.ui.kbd.init();