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