Send commitlog mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:
1. r3504 - trunk/src/target/gsm/include/gsmd
([EMAIL PROTECTED])
2. r3505 - in trunk/src/target/OM-2007.2/libraries/libmokogsmd2:
. libmokogsmd ([EMAIL PROTECTED])
3. r3506 - in
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm: .
src ([EMAIL PROTECTED])
4. r3507 - in
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm: .
src ([EMAIL PROTECTED])
--- Begin Message ---
Author: mickey
Date: 2007-11-25 21:07:09 +0100 (Sun, 25 Nov 2007)
New Revision: 3504
Modified:
trunk/src/target/gsm/include/gsmd/usock.h
Log:
gsmd: start with gsmd_msg_auxdata union
Using a union here (similar to gsmd_evt_auxdata) allows for compiler checks and
is much less prone to fail than using pointer arithmetics.
Modified: trunk/src/target/gsm/include/gsmd/usock.h
===================================================================
--- trunk/src/target/gsm/include/gsmd/usock.h 2007-11-24 19:03:43 UTC (rev
3503)
+++ trunk/src/target/gsm/include/gsmd/usock.h 2007-11-25 20:07:09 UTC (rev
3504)
@@ -583,6 +583,19 @@
u_int8_t data[];
} __attribute__((packed));
+struct gsmd_msg_auxdata {
+ union {
+ struct {
+ struct gsmd_signal_quality sigq;
+ } signal;
+ struct {
+ char name[16];
+ } current_operator;
+ /* add more here please */
+ } u;
+ u_int8_t data[0];
+} __attribute__ ((packed));
+
#ifdef __GSMD__
#include <gsmd/usock.h>
--- End Message ---
--- Begin Message ---
Author: mickey
Date: 2007-11-25 21:10:02 +0100 (Sun, 25 Nov 2007)
New Revision: 3505
Modified:
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/ChangeLog
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
Log:
libmokogsmd2:
Register network message handler with libgsmd to get
answers for trigger messages.
Keep trying to connect to gsmd, if not available on startup.
Add new g_signal for incoming operator name
Modified: trunk/src/target/OM-2007.2/libraries/libmokogsmd2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/libraries/libmokogsmd2/ChangeLog 2007-11-25
20:07:09 UTC (rev 3504)
+++ trunk/src/target/OM-2007.2/libraries/libmokogsmd2/ChangeLog 2007-11-25
20:10:02 UTC (rev 3505)
@@ -1,3 +1,12 @@
+2007-11-25 Michael Lauer <[EMAIL PROTECTED]>
+
+ * libmokogsmd/moko-gsmd-connection.[c|h]:
+ Register network message handler with libgsmd to get
+ answers for trigger messages.
+ Keep trying to connect to gsmd, if not available on startup.
+ Add new g_signal for incoming operator name
+
+
2007-11-20 Thomas Wood <[EMAIL PROTECTED]>
* libmokogsmd/moko-gsmd-connection.c:
Modified:
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
===================================================================
---
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
2007-11-25 20:07:09 UTC (rev 3504)
+++
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.c
2007-11-25 20:10:02 UTC (rev 3505)
@@ -28,7 +28,7 @@
#include <errno.h>
#define DEBUG_THIS_FILE
-#undef DEBUG_THIS_FILE
+//#undef DEBUG_THIS_FILE
#ifdef DEBUG_THIS_FILE
#define moko_debug(fmt,...) g_debug(fmt,##__VA_ARGS__)
@@ -40,6 +40,11 @@
#define GSMD_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o),
MOKO_TYPE_GSMD_CONNECTION, MokoGsmdConnectionPrivate))
+#define MOKO_GSMD_CHECK_CONNECTION_GET_PRIV \
+ g_return_if_fail( MOKO_IS_GSMD_CONNECTION( self ) ); \
+ MokoGsmdConnectionPrivate* priv = GSMD_CONNECTION_GET_PRIVATE( self );
\
+ if ( !priv->handle ) moko_gsmd_connection_init( self ); \
+ g_return_if_fail( priv->handle );
GQuark
moko_gsmd_error_quark ()
@@ -91,6 +96,9 @@
SIGNAL_GSMD_EVT_IN_CBM = 14, /* Incoming Cell Broadcast message */
SIGNAL_GSMD_EVT_IN_DS = 15, /* SMS Status Report */
SIGNAL_GSMD_EVT_IN_ERROR = 16, /* CME/CMS error */
+
+ SIGNAL_GSMD_NET_CURRENT_OPERATOR = 100, /* Current Operator */
+
LAST_SIGNAL,
};
static guint moko_gsmd_connection_signals[LAST_SIGNAL] = { 0 };
@@ -241,7 +249,7 @@
//TODO add SIGNAL_GSMD_EVT_IN_CBM = 14, /* Incoming Cell Broadcast
message */
//TODO add SIGNAL_GSMD_EVT_IN_DS = 15, /* SMS Status Report */
- moko_gsmd_connection_signals[SIGNAL_GSMD_EVT_OUT_STATUS] = g_signal_new
+ moko_gsmd_connection_signals[SIGNAL_GSMD_EVT_IN_ERROR] = g_signal_new
("cme-cms-error",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
@@ -254,6 +262,20 @@
G_TYPE_INT,
NULL );
+ moko_gsmd_connection_signals[SIGNAL_GSMD_NET_CURRENT_OPERATOR] =
g_signal_new
+ ("network-current-operator",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+ G_STRUCT_OFFSET (MokoGsmdConnectionClass, network_current_operator),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING,
+ NULL);
+
+
/* virtual methods */
/* install properties */
@@ -298,9 +320,7 @@
size = read( self->pollfd.fd, &buf, sizeof( buf ) );
if ( size < 0 )
{
- g_warning( "moko_gsmd_connection_source_dispatch:%s %s",
- "read error from libgsmd:",
- strerror( errno ) );
+ g_warning( "moko_gsmd_connection_source_dispatch:%s %s", "read error
from libgsmd:", strerror( errno ) );
}
else
{
@@ -312,11 +332,102 @@
return TRUE;
}
-int
-_moko_gsmd_connection_eventhandler (struct lgsm_handle *lh,
- int evt_type,
- struct gsmd_evt_auxdata *aux)
+static int net_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
{
+ printf( "=================== new code here ==========================\n");
+
+ moko_debug( "moko_gsmd_connection_network_eventhandler type = %d",
gmh->msg_subtype );
+ MokoGsmdConnection* self = moko_gsmd_connection_instance;
+
+ struct gsmd_msg_auxdata* aux = (struct gsmd_msg_auxdata*) ((void *) gmh +
sizeof(*gmh));
+
+ switch ( gmh->msg_subtype )
+ {
+ case GSMD_NETWORK_SIGQ_GET:
+ g_signal_emit( G_OBJECT(self),
+
moko_gsmd_connection_signals[SIGNAL_GSMD_EVT_SIGNAL],
+ 0,
+ aux->u.signal.sigq.rssi );
+ break;
+ case GSMD_NETWORK_OPER_GET:
+ g_signal_emit( G_OBJECT(self),
+
moko_gsmd_connection_signals[SIGNAL_GSMD_NET_CURRENT_OPERATOR],
+ 0,
+ aux->u.current_operator.name );
+ break;
+ }
+ printf( "=================== old code here ==========================\n");
+
+ const struct gsmd_signal_quality *sq = (struct gsmd_signal_quality *)
+ ((void *) gmh + sizeof(*gmh));
+ const char *oper = (char *) gmh + sizeof(*gmh);
+ const struct gsmd_msg_oper *opers = (struct gsmd_msg_oper *)
+ ((void *) gmh + sizeof(*gmh));
+ const struct gsmd_own_number *num = (struct gsmd_own_number *)
+ ((void *) gmh + sizeof(*gmh));
+ static const char *oper_stat[] = {
+ [GSMD_OPER_UNKNOWN] = "of unknown status",
+ [GSMD_OPER_AVAILABLE] = "available",
+ [GSMD_OPER_CURRENT] = "our current operator",
+ [GSMD_OPER_FORBIDDEN] = "forbidden",
+ };
+ static const char *srvname[] = {
+ [GSMD_SERVICE_ASYNC_MODEM] = "asynchronous modem",
+ [GSMD_SERVICE_SYNC_MODEM] = "synchronous modem",
+ [GSMD_SERVICE_PAD_ACCESS] = "PAD Access (asynchronous)",
+ [GSMD_SERVICE_PACKET_ACCESS] = "Packet Access (synchronous)",
+ [GSMD_SERVICE_VOICE] = "voice",
+ [GSMD_SERVICE_FAX] = "fax",
+ };
+
+ //printf( "a = %p, b = %p\n", (void*)aux->u.current_operator.name, oper );
+
+ switch (gmh->msg_subtype)
+ {
+ case GSMD_NETWORK_SIGQ_GET:
+ if (sq->rssi == 99)
+ printf("Signal undetectable\n");
+ else
+ printf("Signal quality %i dBm\n", -113 + sq->rssi * 2);
+ if (sq->ber == 99)
+ printf("Error rate undetectable\n");
+ else
+ printf("Bit error rate %i\n", sq->ber);
+ break;
+ case GSMD_NETWORK_OPER_GET:
+ if (oper[0])
+ printf("Our current operator is %s\n", oper);
+ else
+ printf("No current operator\n");
+ break;
+ case GSMD_NETWORK_OPER_LIST:
+ for (; !opers->is_last; opers ++)
+ printf("%8.*s %16.*s, %.*s for short, is %s\n",
+ sizeof(opers->opname_num),
+ opers->opname_num,
+ sizeof(opers->opname_longalpha),
+ opers->opname_longalpha,
+ sizeof(opers->opname_shortalpha),
+ opers->opname_shortalpha,
+ oper_stat[opers->stat]);
+ break;
+ case GSMD_NETWORK_GET_NUMBER:
+ printf("\t%s\t%10s%s%s%s\n", num->addr.number, num->name,
+ (num->service == GSMD_SERVICE_UNKNOWN) ?
+ "" : " related to ",
+ (num->service == GSMD_SERVICE_UNKNOWN) ?
+ "" : srvname[num->service],
+ (num->service == GSMD_SERVICE_UNKNOWN) ?
+ "" : " services");
+ break;
+ default:
+ return -EINVAL;
+ }
+}
+
+int
+_moko_gsmd_connection_eventhandler (struct lgsm_handle *lh, int evt_type,
struct gsmd_evt_auxdata *aux)
+{
moko_debug( "moko_gsmd_connection_eventhandler type = %d", evt_type );
MokoGsmdConnection* self = moko_gsmd_connection_instance;
@@ -409,15 +520,10 @@
return 0;
}
-static void
-moko_gsmd_connection_init(MokoGsmdConnection* self)
+static gboolean
+moko_gsmd_connection_try_connect(MokoGsmdConnection* self)
{
- moko_debug( "moko_gsmd_connection_init" );
- /* fail here on more than one MokoGsmdConnection object per process */
- g_assert( !moko_gsmd_connection_instance);
-
- moko_gsmd_connection_instance = self;
-
+ moko_debug( "moko_gsmd_connection_try_reconnect" );
MokoGsmdConnectionPrivate* priv = GSMD_CONNECTION_GET_PRIVATE(self);
priv->handle = lgsm_init( LGSMD_DEVICE_GSMD );
@@ -430,7 +536,7 @@
g_warning( "libgsmd: %s",
"can't connect to gsmd. You won't receive any events."
);
- return;
+ return TRUE; // can't connect, please call me again
}
}
else
@@ -446,8 +552,8 @@
NULL,
};
- priv->source = (MokoGsmdConnectionSource*) g_source_new( &funcs,
- sizeof( MokoGsmdConnectionSource)
);
+ priv->source = (MokoGsmdConnectionSource*) g_source_new( &funcs,
+ sizeof( MokoGsmdConnectionSource) );
priv->source->handle = priv->handle;
priv->source->pollfd.fd = lgsm_fd( priv->handle );
priv->source->pollfd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
@@ -458,14 +564,26 @@
int rc = 0;
for ( int i = GSMD_EVT_IN_CALL; i < __NUM_GSMD_EVT; ++i )
{
- rc |= lgsm_evt_handler_register( priv->handle, i,
+ rc |= lgsm_evt_handler_register( priv->handle, i,
_moko_gsmd_connection_eventhandler );
moko_debug( "-- registered for event %d, return code %d", i, rc );
}
lgsm_register_handler( priv->handle, GSMD_MSG_PASSTHROUGH, &pt_msghandler);
+ lgsm_register_handler( priv->handle, GSMD_MSG_NETWORK, &net_msghandler);
+
+ return FALSE; // connection established, don't call again
}
+static void
+moko_gsmd_connection_init(MokoGsmdConnection* self)
+{
+ moko_debug( "moko_gsmd_connection_init" );
+ moko_gsmd_connection_instance = self;
+
+ g_timeout_add_seconds( 5, (GSourceFunc)moko_gsmd_connection_try_connect,
self );
+}
+
/* public API */
void
moko_gsmd_connection_set_antenna_power(MokoGsmdConnection* self, gboolean on,
GError **error)
@@ -490,7 +608,7 @@
}
}
-void
+void
moko_gsmd_connection_send_pin(MokoGsmdConnection* self, const gchar* pin)
{
MokoGsmdConnectionPrivate* priv;
@@ -509,7 +627,7 @@
lgsm_pin( priv->handle, 1, pin, NULL);
}
-void
+void
moko_gsmd_connection_network_register(MokoGsmdConnection* self)
{
MokoGsmdConnectionPrivate* priv;
@@ -523,7 +641,7 @@
}
int
-moko_gsmd_connection_get_network_status (MokoGsmdConnection* self)
+moko_gsmd_connection_get_network_status(MokoGsmdConnection* self)
{
MokoGsmdConnectionPrivate* priv;
enum lgsm_netreg_state state;
@@ -538,33 +656,33 @@
return state;
}
-void
+void
moko_gsmd_connection_voice_accept(MokoGsmdConnection* self)
{
MokoGsmdConnectionPrivate* priv;
-
+
g_return_if_fail ( MOKO_IS_GSMD_CONNECTION ( self ) );
priv = GSMD_CONNECTION_GET_PRIVATE( self );
-
+
g_return_if_fail( priv->handle );
lgsm_voice_in_accept( priv->handle );
}
-void
+void
moko_gsmd_connection_voice_hangup(MokoGsmdConnection* self)
{
MokoGsmdConnectionPrivate* priv;
-
+
g_return_if_fail ( MOKO_IS_GSMD_CONNECTION ( self ) );
priv = GSMD_CONNECTION_GET_PRIVATE( self );
-
+
g_return_if_fail( priv->handle );
-
+
lgsm_voice_hangup( priv->handle );
}
-void
+void
moko_gsmd_connection_voice_dial(MokoGsmdConnection* self, const gchar* number)
{
MokoGsmdConnectionPrivate* priv;
@@ -575,39 +693,39 @@
g_return_if_fail( strlen( number ) > 2 );
priv = GSMD_CONNECTION_GET_PRIVATE( self );
-
+
g_return_if_fail( priv->handle );
-
+
addr.type = 129; /* ??? */
g_stpcpy( &addr.addr[0], number );
lgsm_voice_out_init( priv->handle, &addr );
}
-void
+void
moko_gsmd_connection_voice_dtmf(MokoGsmdConnection* self, const gchar number)
{
MokoGsmdConnectionPrivate* priv;
-
+
g_return_if_fail ( MOKO_IS_GSMD_CONNECTION (self) );
-
+
priv = GSMD_CONNECTION_GET_PRIVATE( self );
-
+
g_return_if_fail( priv->handle );
-
+
lgsm_voice_dtmf( priv->handle, number );
}
-void
+void
moko_gsmd_connection_trigger_signal_strength_event(MokoGsmdConnection* self)
{
- MokoGsmdConnectionPrivate* priv;
-
- g_return_if_fail ( MOKO_IS_GSMD_CONNECTION (self) );
-
- priv = GSMD_CONNECTION_GET_PRIVATE( self );
-
- g_return_if_fail( priv->handle );
-
+ MOKO_GSMD_CHECK_CONNECTION_GET_PRIV
lgsm_signal_quality( priv->handle );
}
+
+void
+moko_gsmd_connection_trigger_current_operator_event(MokoGsmdConnection* self)
+{
+ MOKO_GSMD_CHECK_CONNECTION_GET_PRIV
+ lgsm_oper_get( priv->handle );
+}
Modified:
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
===================================================================
---
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
2007-11-25 20:07:09 UTC (rev 3504)
+++
trunk/src/target/OM-2007.2/libraries/libmokogsmd2/libmokogsmd/moko-gsmd-connection.h
2007-11-25 20:10:02 UTC (rev 3505)
@@ -12,7 +12,6 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Public License for more details.
*
- * Current Version: $Rev$ ($Date: 2006/12/21 18:03:04 $) [$Author: mickey $]
*/
#ifndef _MOKO_GSMD_CONNECTION_H_
@@ -39,23 +38,22 @@
struct _MokoGsmdConnectionClass {
GObjectClass parent_class;
- /* Voice signals */
- void (*incoming_call) (MokoGsmdConnection *self, int type);
- void (*call_status_progress) (MokoGsmdConnection *self, int type);
- void (*pin_requested) (MokoGsmdConnection *self, int type);
+ /* Call signals */
+ void (*incoming_call) (MokoGsmdConnection* self, int type);
+ void (*call_status_progress) (MokoGsmdConnection* self, int type);
+ void (*pin_requested) (MokoGsmdConnection* self, int type);
+ void (*incoming_clip) (MokoGsmdConnection* self, const gchar* number);
/* SMS signals */
/* GPRS signals */
- /* Misc signals */
- void (*incoming_clip) (MokoGsmdConnection *self, const gchar *number);
- void (*network_registration) (MokoGsmdConnection *self,
- int type,
- int lac,
- int cell);
- void (*trigger_signal_strength_event) (MokoGsmdConnection *self);
- void (*signal_strength_changed) (MokoGsmdConnection *self, int strength);
+ /* Network signals */
+ void (*network_registration) (MokoGsmdConnection* self, int type, int lac,
int cell);
+ void (*signal_strength_changed) (MokoGsmdConnection* self, int strength);
+ void (*network_current_operator) (MokoGsmdConnection* self, const gchar*
name );
+
+ /* Misc */
void (*cme_cms_error) (MokoGsmdConnection *self, int code);
/* Future padding */
@@ -112,6 +110,8 @@
/* network */
void moko_gsmd_connection_network_register (MokoGsmdConnection *self);
int moko_gsmd_connection_get_network_status (MokoGsmdConnection *self);
+void moko_gsmd_connection_trigger_current_operator_event(MokoGsmdConnection*
self);
+void moko_gsmd_connection_trigger_signal_strength_event(MokoGsmdConnection*
self);
/* TODO add type, i.e. MOKO_GSMD_CONNECTION_NETREG_AUTO */
/* voice calls */
--- End Message ---
--- Begin Message ---
Author: mickey
Date: 2007-11-25 21:11:23 +0100 (Sun, 25 Nov 2007)
New Revision: 3506
Modified:
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
Log:
openmoko-panel-gsm:
* Query operator name on network registration event.
* Show operator name in notification.
Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
2007-11-25 20:10:02 UTC (rev 3505)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
2007-11-25 20:11:23 UTC (rev 3506)
@@ -1,3 +1,8 @@
+2007-11-25 Michael Lauer <[EMAIL PROTECTED]>
+ * src/openmoko-panel-gsm.c:
+ Query operator name on network registration event.
+ Show operator name in notification.
+
2007-10-23 Michael Lauer <[EMAIL PROTECTED]>
* src/openmoko-panel-gsm.c: (gsm_applet_network_registration_cb):
Modified:
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
===================================================================
---
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
2007-11-25 20:10:02 UTC (rev 3505)
+++
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
2007-11-25 20:11:23 UTC (rev 3506)
@@ -31,6 +31,10 @@
MokoPanelApplet* mokoapplet;
gboolean gprs_mode;
MokoGsmdConnection* gsm;
+ int type;
+ int lac;
+ int cell;
+ char operator_name[255];
} GsmApplet;
static GsmApplet* theApplet = NULL;
@@ -77,26 +81,33 @@
g_free( image );
}
+static void gsm_applet_network_current_operator_cb (MokoGsmdConnection *self,
const gchar* name )
+{
+ if ( strcmp( name, theApplet->operator_name ) != 0 )
+ {
+ strcpy( theApplet->operator_name, name );
+ gsm_applet_update_signal_strength( self, 0, theApplet );
+ notify_notification_show( notify_notification_new( g_strdup_printf(
"Connected to '%s'", name ), NULL, NULL, NULL ), NULL );
+ }
+}
+
static void
gsm_applet_network_registration_cb (MokoGsmdConnection *self,
int type,
int lac,
int cell)
{
- NotifyNotification* nn;
- static MokoGsmdConnectionNetregType prev_type =
MOKO_GSMD_CONNECTION_NETREG_NONE;
+ theApplet->type = type;
+ theApplet->lac = lac;
+ theApplet->cell = cell;
- if ( (type == MOKO_GSMD_CONNECTION_NETREG_HOME) || (type ==
MOKO_GSMD_CONNECTION_NETREG_ROAMING) &&
- ( (prev_type != MOKO_GSMD_CONNECTION_NETREG_HOME) && (prev_type !=
MOKO_GSMD_CONNECTION_NETREG_ROAMING) ) )
+ if ( (type == MOKO_GSMD_CONNECTION_NETREG_HOME) || (type ==
MOKO_GSMD_CONNECTION_NETREG_ROAMING) )
{
- gsm_applet_update_signal_strength( self, 0, theApplet );
- nn = notify_notification_new ("Connected to GSM Network", NULL, NULL,
NULL);
- notify_notification_show (nn, NULL);
+ g_debug( "gsm_applet_network_registration_cb: NETREG type = %d", type
);
+ moko_gsmd_connection_trigger_current_operator_event( self );
}
- prev_type = type;
}
-
static void
gsm_applet_power_up_antenna(GtkWidget* menu, GsmApplet* applet)
{
@@ -117,10 +128,16 @@
moko_gsmd_connection_set_antenna_power( applet->gsm, FALSE, NULL );
}
+static void
+gsm_applet_test_operation(GtkWidget* menu, GsmApplet* applet)
+{
+ moko_gsmd_connection_trigger_current_operator_event( applet->gsm );
+}
+
G_MODULE_EXPORT GtkWidget*
mb_panel_applet_create(const char* id, GtkOrientation orientation)
{
- GsmApplet* applet = g_slice_new(GsmApplet);
+ GsmApplet* applet = g_slice_new0(GsmApplet);
theApplet = applet; // nasty global variable
MokoPanelApplet* mokoapplet = applet->mokoapplet =
MOKO_PANEL_APPLET(moko_panel_applet_new());
@@ -134,6 +151,7 @@
applet->gsm = moko_gsmd_connection_new();
g_signal_connect( G_OBJECT(applet->gsm), "signal-strength-changed",
G_CALLBACK(gsm_applet_update_signal_strength), applet );
g_signal_connect( G_OBJECT(applet->gsm), "network-registration",
G_CALLBACK(gsm_applet_network_registration_cb), applet );
+ g_signal_connect( G_OBJECT(applet->gsm), "network-current-operator",
G_CALLBACK(gsm_applet_network_current_operator_cb), applet );
// tap-with-hold menu (NOTE: temporary: left button atm.)
GtkMenu* menu = GTK_MENU (gtk_menu_new());
@@ -146,6 +164,9 @@
GtkWidget* item3 = gtk_menu_item_new_with_label( "Power-Down GSM Antenna"
);
g_signal_connect( G_OBJECT(item3), "activate",
G_CALLBACK(gsm_applet_power_down_antenna), applet );
gtk_menu_shell_append( GTK_MENU_SHELL(menu), item3 );
+ GtkWidget* item4 = gtk_menu_item_new_with_label( "Trigger Operation
(TEST)" );
+ g_signal_connect( G_OBJECT(item4), "activate",
G_CALLBACK(gsm_applet_test_operation), applet );
+ gtk_menu_shell_append( GTK_MENU_SHELL(menu), item4 );
gtk_widget_show_all( GTK_WIDGET(menu) );
moko_panel_applet_set_popup( mokoapplet, GTK_WIDGET (menu),
MOKO_PANEL_APPLET_CLICK_POPUP );
--- End Message ---
--- Begin Message ---
Author: mickey
Date: 2007-11-26 02:25:03 +0100 (Mon, 26 Nov 2007)
New Revision: 3507
Modified:
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
Log:
openmoko-panel-gsm:
Add menu button for redisplaying status notification
Show some details in the notification
Modified: trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
2007-11-25 20:11:23 UTC (rev 3506)
+++ trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/ChangeLog
2007-11-26 01:25:03 UTC (rev 3507)
@@ -1,4 +1,11 @@
+2007-11-26 Michael Lauer <[EMAIL PROTECTED]>
+
+ * src/openmoko-panel-gsm.c:
+ Add menu button for redisplaying status notification
+ Show some details in the notification
+
2007-11-25 Michael Lauer <[EMAIL PROTECTED]>
+
* src/openmoko-panel-gsm.c:
Query operator name on network registration event.
Show operator name in notification.
Modified:
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
===================================================================
---
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
2007-11-25 20:11:23 UTC (rev 3506)
+++
trunk/src/target/OM-2007.2/panel-plugins/openmoko-panel-gsm/src/openmoko-panel-gsm.c
2007-11-26 01:25:03 UTC (rev 3507)
@@ -31,14 +31,18 @@
MokoPanelApplet* mokoapplet;
gboolean gprs_mode;
MokoGsmdConnection* gsm;
+ int strength;
int type;
int lac;
int cell;
char operator_name[255];
+ GtkMenuItem* information;
} GsmApplet;
static GsmApplet* theApplet = NULL;
+static void gsm_applet_show_status(GtkWidget* menu, GsmApplet* applet);
+
static void
gsm_applet_free(GsmApplet *applet)
{
@@ -50,15 +54,21 @@
int strength,
GsmApplet* applet)
{
- gfloat percent;
gint pixmap = 0;
gchar *image = NULL;
+ applet->strength = strength;
g_debug( "gsm_applet_update_signal_strength: signal strength = %d",
strength );
- percent = (strength / _MAX_SIGNAL) * 100;
+ if ( strength == 99 )
+ {
+ moko_panel_applet_set_icon( applet, PKGDATADIR
"/SignalStrength_NR.png" );
+ return;
+ }
+ gfloat percent = (strength / _MAX_SIGNAL) * 100;
+
if ( percent == 0 )
pixmap = 0;
else if ( percent < 20 )
@@ -81,22 +91,23 @@
g_free( image );
}
-static void gsm_applet_network_current_operator_cb (MokoGsmdConnection *self,
const gchar* name )
+static void gsm_applet_network_current_operator_cb(MokoGsmdConnection *self,
const gchar* name)
{
if ( strcmp( name, theApplet->operator_name ) != 0 )
{
strcpy( theApplet->operator_name, name );
gsm_applet_update_signal_strength( self, 0, theApplet );
- notify_notification_show( notify_notification_new( g_strdup_printf(
"Connected to '%s'", name ), NULL, NULL, NULL ), NULL );
+ gsm_applet_show_status( 0, theApplet );
}
}
static void
-gsm_applet_network_registration_cb (MokoGsmdConnection *self,
+gsm_applet_network_registration_cb(MokoGsmdConnection *self,
int type,
int lac,
int cell)
{
+ g_debug( "gsm_applet_network_registration_cb: updating netreg values" );
theApplet->type = type;
theApplet->lac = lac;
theApplet->cell = cell;
@@ -109,6 +120,38 @@
}
static void
+gsm_applet_show_status(GtkWidget* menu, GsmApplet* applet)
+{
+ const gchar* summary = 0;
+ const gchar* details = 0;
+ switch ( applet->type )
+ {
+ case 0:
+ summary = g_strdup( "Not searching" );
+ break;
+
+ case 1:
+ summary = g_strdup_printf( "Connected to '%s'",
applet->operator_name );
+ details = g_strdup_printf( "Type: Home Network\nCell ID: %04x :
%04x\nSignal: %i dbM", applet->lac, applet->cell, -113 + applet->strength*2 );
+ break;
+
+ case 2: summary = g_strdup( "Searching for Service" );
+ break;
+
+ case 3: summary = g_strdup( "Registration Denied" );
+ break;
+
+ case 5:
+ summary = g_strdup_printf( "Connected to '%s'",
applet->operator_name );
+ details = g_strdup_printf( "Type: Roaming\nCell ID: %04x :
%04x\nSignal: %i dbM", applet->lac, applet->cell, -113 + applet->strength*2 );
+
+ default: summary = g_strdup( "Unknown" );
+ }
+
+ notify_notification_show( notify_notification_new( summary, details, NULL,
NULL ), NULL );
+}
+
+static void
gsm_applet_power_up_antenna(GtkWidget* menu, GsmApplet* applet)
{
//TODO notify user
@@ -139,6 +182,7 @@
{
GsmApplet* applet = g_slice_new0(GsmApplet);
theApplet = applet; // nasty global variable
+ strcpy( applet->operator_name, "<unknown>" );
MokoPanelApplet* mokoapplet = applet->mokoapplet =
MOKO_PANEL_APPLET(moko_panel_applet_new());
notify_init ("GSM Applet");
@@ -155,6 +199,17 @@
// tap-with-hold menu (NOTE: temporary: left button atm.)
GtkMenu* menu = GTK_MENU (gtk_menu_new());
+
+ GtkWidget* title = gtk_frame_new( "GSM Network" );
+ gtk_frame_set_label_align( GTK_FRAME(title), 0.5, 0.5 );
+ gtk_frame_set_shadow_type( GTK_FRAME(title), GTK_SHADOW_IN );
+ gtk_widget_set_name( title, "GsmAppletMenu" );
+
+ GtkWidget* titleitem = gtk_menu_item_new();
+ g_signal_connect( G_OBJECT(titleitem), "activate",
G_CALLBACK(gsm_applet_show_status), applet );
+ gtk_menu_shell_append( GTK_MENU_SHELL(menu), titleitem );
+ gtk_container_add( GTK_CONTAINER(titleitem), title );
+
GtkWidget* item1 = gtk_menu_item_new_with_label( "Power-Up GSM Antenna" );
g_signal_connect( G_OBJECT(item1), "activate",
G_CALLBACK(gsm_applet_power_up_antenna), applet );
gtk_menu_shell_append( GTK_MENU_SHELL(menu), item1 );
@@ -164,11 +219,12 @@
GtkWidget* item3 = gtk_menu_item_new_with_label( "Power-Down GSM Antenna"
);
g_signal_connect( G_OBJECT(item3), "activate",
G_CALLBACK(gsm_applet_power_down_antenna), applet );
gtk_menu_shell_append( GTK_MENU_SHELL(menu), item3 );
+#if 0
GtkWidget* item4 = gtk_menu_item_new_with_label( "Trigger Operation
(TEST)" );
g_signal_connect( G_OBJECT(item4), "activate",
G_CALLBACK(gsm_applet_test_operation), applet );
gtk_menu_shell_append( GTK_MENU_SHELL(menu), item4 );
+#endif
gtk_widget_show_all( GTK_WIDGET(menu) );
-
moko_panel_applet_set_popup( mokoapplet, GTK_WIDGET (menu),
MOKO_PANEL_APPLET_CLICK_POPUP );
return GTK_WIDGET(mokoapplet);
}
--- End Message ---
_______________________________________________
commitlog mailing list
[email protected]
http://lists.openmoko.org/mailman/listinfo/commitlog