r1759 - in trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm: . data src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Sun Apr 15 01:26:53 CEST 2007


Author: mickey
Date: 2007-04-15 01:26:52 +0200 (Sun, 15 Apr 2007)
New Revision: 1759

Added:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/SignalStrength_NR.png
Removed:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h
Modified:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/configure.ac
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/Makefile.am
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/Makefile.am
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
Log:
openmoko-panel-gsm: scratch the current state and reimplement it completely using the nice MokoGsmdConnection abstraction


Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/configure.ac
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/configure.ac	2007-04-14 23:19:36 UTC (rev 1758)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/configure.ac	2007-04-14 23:26:52 UTC (rev 1759)
@@ -11,15 +11,12 @@
 AC_PROG_LIBTOOL
 
 # base deps
-PKG_CHECK_MODULES(OPENMOKO, openmoko-libs >= 0.0.2,,
-                 AC_MSG_ERROR([*** Required OpenMoko Libraries >= 0.0.2 not installed ***]))
+PKG_CHECK_MODULES(OPENMOKO, openmoko-libs >= 0.0.3,,
+                 AC_MSG_ERROR([*** Required OpenMoko Libraries >= 0.0.3 not installed ***]))
 
-PKG_CHECK_MODULES(LIBGSMD, libgsmd,,
-		exit)
+LIBS="$LIBS $OPENMOKO_LIBS"
+CFLAGS="$CFLAGS $OPENMOKO_CFLAGS"
 
-LIBS="$LIBS $OPENMOKO_LIBS $LIBGSMD_LIBS"
-CFLAGS="$CFLAGS $OPENMOKO_CFLAGS $LIBGSMD_CFLAGS" 
-
 # output stuff
 AC_OUTPUT([
 Makefile

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/Makefile.am	2007-04-14 23:19:36 UTC (rev 1758)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/Makefile.am	2007-04-14 23:26:52 UTC (rev 1759)
@@ -11,6 +11,8 @@
 		SignalStrength25g_04.png \
 		SignalStrength25g_05.png \
 		\
+		SignalStrength_NR.png \
+		\
         SignalStrength_00.png \
         SignalStrength_01.png \
         SignalStrength_02.png \

Added: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/SignalStrength_NR.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/data/SignalStrength_NR.png
___________________________________________________________________
Name: svn:mime-type
   + image/png

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/Makefile.am	2007-04-14 23:19:36 UTC (rev 1758)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/Makefile.am	2007-04-14 23:26:52 UTC (rev 1759)
@@ -4,7 +4,7 @@
 appletdir = $(libdir)/matchbox-panel/
 applet_LTLIBRARIES = libopenmoko-panel-gsm.la
 
-libopenmoko_panel_gsm_la_SOURCES = openmoko-panel-gsm.c moko-gsm-conn.c
+libopenmoko_panel_gsm_la_SOURCES = openmoko-panel-gsm.c
 libopenmoko_panel_gsm_la_LIBADD = @OPENMOKO_LIBS@
 
 MAINTAINERCLEANFILES = Makefile.in

Deleted: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c	2007-04-14 23:19:36 UTC (rev 1758)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.c	2007-04-14 23:26:52 UTC (rev 1759)
@@ -1,201 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include <libgsmd/libgsmd.h>
-#include <libgsmd/event.h>
-
-#include <glib/gmain.h>
-#include <glib/giochannel.h>
-
-#include "moko-gsm-conn.h"
-
-#undef FALSE
-#define FALSE 	0
-#undef TRUE
-#define TRUE 	1
-
-static struct lgsm_handle *lgsmh = NULL;
-static GPollFD GPfd;
-static gint gsm_q = -99;
-static gint gprs_q = -99;
-static int test = 0;
-
-static gboolean
-gsm_watcher_prepare (GSource * source, gint * timeout)
-{
-  *timeout = -1;
-
-  return FALSE;
-}
-
-static gboolean
-gsm_watcher_check (GSource * source)
-{
-  if (GPfd.revents & (G_IO_IN | G_IO_PRI))
-  {
-    return TRUE;
-  }
-  else
-  {
-    return FALSE;
-  }
-
-}
-static gboolean
-gsm_watcher_dispatch (GSource * source,
-                      GSourceFunc callback, gpointer user_data)
-{
-  int rc;
-  char buf[STDIN_BUF_SIZE + 1];
-  int gsm_fd = lgsm_fd (lgsmh);
-  /* we've received something on the gsmd socket, pass it
-   * on to the library */
-
-  rc = read (gsm_fd, buf, sizeof (buf));
-  if (rc <= 0)
-  {
-    return FALSE;
-  }
-  else
-  {
-    rc = lgsm_handle_packet (lgsmh, buf, rc);
-  }
-  
-  return TRUE;
-}
-
-static int 
-sigq_handler(struct lgsm_handle *lh, int evt, struct gsmd_evt_auxdata *aux)
-{
-  printf("EVENT: Signal Quality: %u\n", aux->u.signal.sigq.rssi);
-  gsm_q = aux->u.signal.sigq.rssi;
-  //FIXME: Call panel applet image change function here, instead of use g timeout function to check singal value
-  return 0;
-}
-
-static int 
-netreg_handler(struct lgsm_handle *lh, int evt, struct gsmd_evt_auxdata *aux)
-{
-  printf("EVENT: Netreg ");
-  
-  switch (aux->u.netreg.state)
-  {
-    case 0:
-      printf("not searching for network ");
-      break;
-    case 1:
-      printf("registered (home network) ");
-      break;
-    case 2:
-      printf("searching for network ");
-      break;
-    case 3:
-      printf("registration denied ");
-      break;
-    case 5:
-      printf("registered (roaming) ");
-      break;
-  }
-  
-  if (aux->u.netreg.lac)
-    printf("LocationAreaCode = 0x%04X ", aux->u.netreg.lac);
-  if (aux->u.netreg.ci)
-    printf("CellID = 0x%04X ", aux->u.netreg.ci);
-  
-  printf("\n");
-  return 0;
-}
-
-static int
-gsm_connect_init()
-{
-  lgsmh = lgsm_init(LGSMD_DEVICE_GSMD);	
-  
-  if (!lgsmh) 
-  { 
-    printf("Can't connect to gsmd\n");
-    return FALSE;
-  }
-  else 
-  {
-    lgsm_evt_handler_register(lgsmh, GSMD_EVT_NETREG, &netreg_handler);
-    lgsm_evt_handler_register(lgsmh, GSMD_EVT_SIGNAL, &sigq_handler);
-    return TRUE;
-  }
-}
-
-SignalStatus
-moko_panel_gsm_signal_quality()
-{
-  switch (gsm_q)
-  {
-    case 4 :
-      return LEVEL_1 ;
-    case 3 :
-      return LEVEL_2 ;
-    case 2 :
-      return LEVEL_3 ;
-    case 1 :
-      return LEVEL_4 ;
-    case 0 :
-      return LEVEL_5 ;
-    default :
-      return UN_CONN;
-  }
-}
-/*for a rainning day*/
-SignalStatus
-moko_panel_gprs_signal_quality()
-{
-//some code for only for test, since there have not any methord to check out gprs signal.
-if (0)
-{ 
-  test ++;
-  if (test > 11 || test < 0)
-    test = 0;
-  switch (test)
-  {
-    case 10 :
-      return LEVEL_1 ;
-    case 9 :
-      return LEVEL_2 ;
-    case 8 :
-      return LEVEL_3 ;
-    case 7 :
-      return LEVEL_4 ;
-    case 6 :
-      return LEVEL_5 ;
-    default :
-      return UN_CONN;
-  }
-}
-  return UN_CONN;
-}
-
-void
-gsm_watcher_install (void)
-{
-  static GSourceFuncs gsm_watcher_funcs = {
-    gsm_watcher_prepare,
-    gsm_watcher_check,
-    gsm_watcher_dispatch,
-    NULL
-  };
-  /* FIXME: we never unref the watcher. */
-  GSource *gsm_watcher = g_source_new (&gsm_watcher_funcs, sizeof (GSource));
-
-  gsm_connect_init();
-    
-  if (!lgsmh)
-    return ;
-
-  GPfd.fd = lgsm_fd (lgsmh);
-  GPfd.events = G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI;
-  GPfd.revents = 0;
-
-  g_source_add_poll (gsm_watcher, &GPfd);
-  g_source_attach (gsm_watcher, NULL);
-
-  return;
-}

Deleted: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h	2007-04-14 23:19:36 UTC (rev 1758)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/moko-gsm-conn.h	2007-04-14 23:26:52 UTC (rev 1759)
@@ -1,35 +0,0 @@
-#ifndef _MOKO_PANEL_GSM_CONN_
-#define _MOKO_PANEL_GSM_CONN_
-
-#include <glib-object.h>
-
-#define STDIN_BUF_SIZE	1024
-/*signal value: "0": best connection "5": connect error*/
-G_BEGIN_DECLS
-
-enum{
-  GSM,
-  GPRS,
-  SIN_NO
-};
-
-typedef enum{
-  UN_INIT = -1,
-  LEVEL_1 = 0,
-  LEVEL_2,
-  LEVEL_3,
-  LEVEL_4,
-  LEVEL_5,
-  UN_CONN,
-  TOTAL_STATUS
-}SignalStatus;
-
-void gsm_watcher_install (void);
-
-SignalStatus moko_panel_gsm_signal_quality(void);
-
-SignalStatus moko_panel_gprs_signal_quality(void);
-
-G_END_DECLS
-
-#endif /*_MOKO_PANEL_GSM_CONN_*/

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c	2007-04-14 23:19:36 UTC (rev 1758)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c	2007-04-14 23:26:52 UTC (rev 1759)
@@ -1,6 +1,6 @@
 /*  openmoko-panel-gsm.c
  *
- *  Authored by Sun Zhiyong <sunzhiyong at fic-sh.com.cn>
+ *  Authored by Michael 'Mickey' Lauer <mlauer at vanille-media.de>
  *  Copyright (C) 2007 OpenMoko Inc.
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -14,6 +14,7 @@
  *
  *  Current Version: $Rev$ ($Date$) [$Author: mickey $]
  */
+#include <libmokogsmd/moko-gsmd-connection.h>
 #include <libmokoui/moko-panel-applet.h>
 
 #include <gtk/gtkimage.h>
@@ -21,108 +22,50 @@
 #include <gtk/gtk.h>
 #include <time.h>
 
-#include "moko-gsm-conn.h"
-
-typedef struct{
-  GtkWidget *image;
-  SignalStatus status;
-} MokoSignal;
-
 typedef struct {
-  MokoSignal gsm;
-  MokoSignal gprs;
-  GtkWidget *hbox;
-  guint timeout_id;
+    GtkImage* image;
+    gboolean gprs_mode;
 } GsmApplet;
 
-static gchar *gsm_q_name[TOTAL_STATUS]={
-  "SignalStrength_01.png",
-  "SignalStrength_02.png",
-  "SignalStrength_03.png",
-  "SignalStrength_04.png",
-  "SignalStrength_05.png",
-  "SignalStrength_00.png"
-};
-
-static gchar *gprs_q_name[TOTAL_STATUS]={
-  "SignalStrength25g_01.png",
-  "SignalStrength25g_02.png",
-  "SignalStrength25g_03.png",
-  "SignalStrength25g_04.png",
-  "SignalStrength25g_05.png",
-  NULL
-};
-
-static void
-gsm_applet_free (GsmApplet *applet)
+static void gsm_applet_free(GsmApplet *applet)
 {
-  g_source_remove (applet->timeout_id);
-
-  g_slice_free (GsmApplet, applet);
+    g_slice_free( GsmApplet, applet );
 }
 
-static gboolean
-timeout_cb (GsmApplet *applet)
+static void gsm_applet_update_signal_strength(MokoGsmdConnection* connection, int strength, GsmApplet *applet)
 {
-  char path[512];
-  static SignalStatus status = 0;
-  
-  status = moko_panel_gsm_signal_quality ();
-  if (status != applet->gsm.status )
-  {
-    applet->gsm.status = status;
-    snprintf (path, 512, "%s/%s", PKGDATADIR, gsm_q_name[applet->gsm.status]);
-    if (GTK_IS_IMAGE(applet->gsm.image))
-      gtk_image_set_from_file (GTK_IMAGE(applet->gsm.image), path);
-    else 
-      g_error ("gsm image set failed");
-  }
+    g_debug( "gsm_applet_update_signal_strength: signal strength = %d", strength );
+    //TODO calibrate
+    int pixmap = 0;
+    if ( strength > 30 )
+        pixmap = 5;
+    else if ( strength > 20 )
+        pixmap = 4;
+    else if ( strength > 17 )
+        pixmap = 3;
+    else if ( strength > 13 )
+        pixmap = 2;
+    else if ( strength > 10 )
+        pixmap = 1;
 
-  status = moko_panel_gprs_signal_quality (); 
-  g_debug ("status = %d", status);
-  if (status == UN_CONN && GTK_WIDGET (applet->gprs.image))
-  {
-    gtk_widget_hide (GTK_WIDGET(applet->gprs.image));
-  }
-  else
-  {
-    applet->gprs.status = status;
-    snprintf (path, 512, "%s/%s", PKGDATADIR, gprs_q_name[applet->gprs.status]);
-    if (GTK_IS_IMAGE(applet->gprs.image))
-      gtk_image_set_from_file (GTK_IMAGE(applet->gprs.image), path);
-    gtk_widget_show (GTK_WIDGET (applet->gprs.image));
-  }
-  
-  /* keep going*/
-  return TRUE;
+    const char* imagestring = g_strdup_printf( "%s/SignalStrength%s%02d.png", PKGDATADIR, applet->gprs_mode ? "25g_" : "_", pixmap );
+    gtk_image_set_from_file( GTK_IMAGE(applet->image), imagestring );
 }
 
-G_MODULE_EXPORT GtkWidget* 
-mb_panel_applet_create(const char* id, GtkOrientation orientation)
+G_MODULE_EXPORT GtkWidget* mb_panel_applet_create(const char* id, GtkOrientation orientation)
 {
-  MokoPanelApplet* mokoapplet = moko_panel_applet_new();
+    MokoPanelApplet* mokoapplet = MOKO_PANEL_APPLET(moko_panel_applet_new());
 
-  GsmApplet *applet;
-  applet = g_slice_new (GsmApplet);
-   
-  g_object_weak_ref (G_OBJECT(mokoapplet), (GWeakNotify) gsm_applet_free, applet );
-  applet->timeout_id = g_timeout_add(4000, (GSourceFunc) timeout_cb, applet);
+    GsmApplet *applet;
+    applet = g_slice_new(GsmApplet);
+    applet->image = GTK_IMAGE(gtk_image_new_from_file( PKGDATADIR "/SignalStrength_NR.png" ) );
+    applet->gprs_mode = FALSE;
+    gtk_widget_set_name( GTK_WIDGET(applet->image), "openmoko-gsm-applet" );
+    g_object_weak_ref( G_OBJECT(applet->image), (GWeakNotify) gsm_applet_free, applet );
+    moko_panel_applet_set_widget( mokoapplet, GTK_WIDGET(applet->image) );
+    gtk_widget_show_all( GTK_WIDGET(mokoapplet) );
 
-  applet->gsm.image = gtk_image_new ();//make an empty GtkImage object
-  applet->gsm.status = UN_INIT;
-  applet->gprs.image = gtk_image_new ();//make an empty GtkImage object
-  applet->gprs.status = UN_INIT;
-
-  applet->hbox = gtk_hbox_new(FALSE, 0);
-  gtk_widget_show (applet->hbox);
-
-  gtk_box_pack_start (GTK_BOX(applet->hbox), GTK_WIDGET(applet->gprs.image), FALSE, FALSE, 2);
-  gtk_box_pack_end (GTK_BOX(applet->hbox), GTK_WIDGET(applet->gsm.image), FALSE, FALSE, 2);
-
-  moko_panel_applet_set_widget (GTK_CONTAINER(mokoapplet), GTK_WIDGET(applet->hbox));
-  gtk_widget_show_all (GTK_WIDGET(mokoapplet) );
-
-  gsm_watcher_install ();
-
-  return GTK_WIDGET(mokoapplet);
+    MokoGsmdConnection* gsm = moko_gsmd_connection_new();
+    g_signal_connect( G_OBJECT(gsm), "signal-strength-changed", G_CALLBACK(gsm_applet_update_signal_strength), applet );
+    return GTK_WIDGET(mokoapplet);
 };





More information about the commitlog mailing list