Changeset 1790

Show
Ignore:
Timestamp:
04/17/07 15:40:06
Author:
djcb
Message:

* add the TnyMaemoConicDevice?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r1786 r1790  
     12007-04-17 Dirk-Jan C. Binnema <dirk-jan.binnema@nokia.com> 
     2 
     3        * Add the TnyMaemoConicDevice, which exposes libconic-specific 
     4        functionality. When built for scratchbox, it tries to work in 'dummy 
     5        mode', to make it still somewhat functional, even though connectivity 
     6        does not work in scratchbox. The conic-specifics are only lightly 
     7        tested. and need work, esp. for doing something in sbox 
     8 
     9        * TnyMaemoDevice goes back to the dummy it was before, so this should 
     10        make pre-libconic compiles (770) also possible; not tested though. 
     11 
    1122007-04-13  Philip Van Hoof  <pvanhoof@gnome.org> 
    213 
  • trunk/configure.ac

    r1783 r1790  
    325325               
    326326 
     327AC_DEFUN([ARMEL_TARGET], 
     328        [if sb-conf cu | grep -i 'armel' >/dev/null 2>&1; then 
     329            armel_target=yes]) 
     330 
    327331dnl ### libtinymail-maemo, a platform library implementation for the maemo platform ## 
    328332if test x$PLATFORMDIR = xlibtinymail-maemo; then 
    329  PKG_CHECK_MODULES(LIBTINYMAIL_MAEMO, glib-2.0 >= 2.8 gobject-2.0 gconf-2.0 gtk+-2.0 hildon-libs libosso   conic) 
     333 PKG_CHECK_MODULES(LIBTINYMAIL_MAEMO, glib-2.0 >= 2.8 gobject-2.0 gconf-2.0 gtk+-2.0 hildon-libs libosso) 
     334 PKG_CHECK_MODULES(LIBTINYMAIL_MAEMO_CONIC,conic,conic=yes,conic=no) 
     335 if test "$conic"=="yes"; then 
     336     MAEMO_DEVICE='tny-maemo-conic-device.$(OBJEXT)' 
     337 fi 
     338 dnl HACK: unless we are building for arm, make the device a 'dummy' assuming it is always online 
     339 dnl this is because scratcbhox-Conic does not support ethernet, and will therefore never consider 
     340 dnl itself 'online'     
     341if test -z "`sb-conf show -c | grep arm`"; then 
     342 AC_DEFINE_UNQUOTED(MAEMO_CONIC_DUMMY,1,["Whether to hack the TnyMaemoConicDevice to somewhat work in sbox"]) 
     343fi 
     344 
     345 AC_SUBST([MAEMO_DEVICE]) 
    330346else 
    331347 LIBTINYMAIL_MAEMO_CFLAGS= 
     
    334350AC_SUBST(LIBTINYMAIL_MAEMO_CFLAGS) 
    335351AC_SUBST(LIBTINYMAIL_MAEMO_LIBS) 
     352AC_SUBST(LIBTINYMAIL_MAEMO_CONIC_CFLAGS) 
     353AC_SUBST(LIBTINYMAIL_MAEMO_CONIC_LIBS) 
     354 
     355 
     356 
     357 
     358 
    336359 
    337360dnl ### libtinymail-gpe, a platform library implementation for the GPE platform ## 
  • trunk/libtinymail-maemo/tny-maemo-device.c

    r1779 r1790  
    1919 
    2020#include <config.h> 
    21 #include <glib.h> 
    22 #include <glib-object.h> 
     21 
     22#include <glib/gi18n-lib.h> 
     23 
    2324#include <tny-maemo-device.h> 
    24 #include <coniciap.h> 
    25 #include <conicconnection.h> 
    26 #include <conicconnectionevent.h> 
    27  
    2825 
    2926static GObjectClass *parent_class = NULL; 
    3027 
     28 
    3129typedef struct { 
    32         ConIcConnection *cnx; 
    33         gboolean        is_online; 
    34         const gchar     *iap; 
     30        gboolean fset, forced; 
    3531} TnyMaemoDevicePriv; 
    3632 
     
    3935 
    4036 
     37static void tny_maemo_device_on_online (TnyDevice *self); 
     38static void tny_maemo_device_on_offline (TnyDevice *self); 
     39static gboolean tny_maemo_device_is_online (TnyDevice *self); 
     40 
     41 
    4142static void  
    42 tny_maemo_device_reset (TnyDevice *device) 
    43 
    44         /* intentionally left blank */ 
    45 
    46  
    47  
    48 static void 
    49 on_connection_event (ConIcConnection *cnx, ConIcConnectionEvent *event, gpointer user_data) 
    50 
    51         TnyMaemoDevice *device;  
    52         TnyMaemoDevicePriv *priv; 
    53         gboolean is_online; 
    54  
    55         g_return_if_fail (CON_IC_IS_CONNECTION(cnx)); 
    56         g_return_if_fail (user_data); 
    57  
    58         device = TNY_MAEMO_DEVICE(user_data); 
    59         priv   = TNY_MAEMO_DEVICE_GET_PRIVATE (device); 
    60          
    61         switch (con_ic_connection_event_get_error(event)) { 
    62         case CON_IC_CONNECTION_ERROR_NONE: 
    63                 break; 
    64         case CON_IC_CONNECTION_ERROR_INVALID_IAP: 
    65                 g_warning ("conic: IAP is invalid"); 
    66                 break; 
    67         case CON_IC_CONNECTION_ERROR_CONNECTION_FAILED: 
    68                 g_warning ("conic: connection failed"); 
    69                 break; 
    70         case CON_IC_CONNECTION_ERROR_USER_CANCELED: 
    71                 g_warning ("conic: user cancelled"); 
    72                 break; 
    73         default: 
    74                 g_return_if_reached (); 
    75         } 
    76  
    77         switch (con_ic_connection_event_get_status(event)) { 
    78         case CON_IC_STATUS_CONNECTED: 
    79                 is_online = TRUE; 
    80                 break; 
    81         case CON_IC_STATUS_DISCONNECTED:                 
    82                 is_online = FALSE; 
    83                 break; 
    84         case CON_IC_STATUS_DISCONNECTING: 
    85                 is_online = FALSE; 
    86                 break; 
    87         default: 
    88                 g_return_if_reached (); /* should not happen */ 
    89         } 
    90  
    91         if (is_online != priv->is_online) { /* was there a change? */ 
    92                 priv->is_online = is_online; 
    93                 g_signal_emit (device, tny_device_signals [TNY_DEVICE_CONNECTION_CHANGED], 
    94                                0, is_online); 
    95         } 
    96 
    97  
     43tny_maemo_device_reset (TnyDevice *self) 
     44
     45        TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
     46 
     47        priv->fset = FALSE; 
     48        priv->forced = FALSE; 
     49 
     50
    9851 
    9952static void  
    10053tny_maemo_device_force_online (TnyDevice *self) 
    10154{ 
    102         TnyMaemoDevicePriv *priv;        
     55        TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
     56 
     57        priv->fset = TRUE; 
     58        priv->forced = TRUE; 
     59 
     60        tny_maemo_device_on_online (self); 
     61 
     62        return; 
     63
     64 
     65 
     66static void 
     67tny_maemo_device_force_offline (TnyDevice *self) 
     68
     69        TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
     70 
     71        priv->fset = TRUE; 
     72        priv->forced = FALSE; 
     73 
     74 
     75        tny_maemo_device_on_offline (self); 
    10376         
    104         g_return_if_fail (TNY_IS_DEVICE(self)); 
    105         priv   = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
    106  
    107         if (!con_ic_connection_connect (priv->cnx, CON_IC_CONNECT_FLAG_NONE)) 
    108                         g_warning ("could not send connect dbus message"); 
    109 
    110  
    111  
    112 static void 
    113 tny_maemo_device_force_offline (TnyDevice *self) 
    114 
    115         TnyMaemoDevicePriv *priv;        
    116  
    117         g_return_if_fail (TNY_IS_DEVICE(self)); 
    118         priv   = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
    119  
    120         return; 
    121          
    122         if (!con_ic_connection_disconnect (priv->cnx)) 
    123                 g_warning ("could not send disconnect dbus message"); 
    124 
    125  
     77        return; 
     78
     79 
     80static void 
     81tny_maemo_device_on_online (TnyDevice *self) 
     82
     83        g_signal_emit (self, tny_device_signals [TNY_DEVICE_CONNECTION_CHANGED], 0, TRUE); 
     84 
     85        return; 
     86
     87 
     88static void 
     89tny_maemo_device_on_offline (TnyDevice *self) 
     90
     91        g_signal_emit (self, tny_device_signals [TNY_DEVICE_CONNECTION_CHANGED], 0, FALSE); 
     92 
     93        return; 
     94
    12695 
    12796static gboolean 
    12897tny_maemo_device_is_online (TnyDevice *self) 
    12998{ 
    130         g_return_val_if_fail (TNY_IS_DEVICE(self), FALSE);       
    131  
    132         return TRUE; 
    133         return TNY_MAEMO_DEVICE_GET_PRIVATE (self)->is_online; 
    134 
    135  
     99        TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
     100        gboolean retval = TRUE; 
     101        return retval; 
     102
    136103 
    137104static void 
     
    140107        TnyMaemoDevice *self = (TnyMaemoDevice *)instance; 
    141108        TnyMaemoDevicePriv *priv = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
    142          
    143         priv->is_online     = FALSE;  
     109 
     110        return; 
    144111} 
    145112 
     
    154121tny_maemo_device_new (void) 
    155122{ 
    156         TnyMaemoDevice *self;  
    157         TnyMaemoDevicePriv *priv; 
    158  
    159         self = g_object_new (TNY_TYPE_MAEMO_DEVICE, NULL); 
    160         priv   = TNY_MAEMO_DEVICE_GET_PRIVATE (self); 
    161  
    162         priv->cnx = con_ic_connection_new (); 
    163         if (!priv->cnx) { 
    164                 g_warning ("con_ic_connection_new failed"); 
    165                 g_object_unref (self); 
    166                 return NULL; 
    167         } 
    168         g_signal_connect (priv->cnx, "connection-event", 
    169                           G_CALLBACK(on_connection_event), self); 
    170  
    171         /* 
    172          * this will get us in connected state only if there is already a connection. 
    173          * thus, this will setup our state correctly when we receive the signals 
    174          */ 
    175         if (!con_ic_connection_connect (priv->cnx, CON_IC_CONNECT_FLAG_AUTOMATICALLY_TRIGGERED)) 
    176                 g_warning ("could not send connect dbus message"); 
     123        TnyMaemoDevice *self = g_object_new (TNY_TYPE_MAEMO_DEVICE, NULL); 
    177124 
    178125        return TNY_DEVICE (self); 
    179126} 
    180127 
    181 static void 
    182 tny_maemo_device_finalize (GObject *obj) 
    183 
    184         TnyMaemoDevicePriv *priv; 
    185         priv   = TNY_MAEMO_DEVICE_GET_PRIVATE (obj); 
    186         if (CON_IC_IS_CONNECTION(priv->cnx)) { 
    187         //      if (!con_ic_connection_disconnect (priv->cnx)) 
    188         //              g_warning ("failed to send disconnect dbus message"); 
    189                 g_object_unref (priv->cnx); 
    190                 priv->cnx = NULL; 
    191         }        
    192         (*parent_class->finalize) (obj); 
     128 
     129static void 
     130tny_maemo_device_finalize (GObject *object) 
     131
     132        (*parent_class->finalize) (object); 
     133     
     134        return; 
    193135} 
    194136 
     
    199141        TnyDeviceIface *klass = (TnyDeviceIface *)g; 
    200142 
    201         klass->is_online_func     = tny_maemo_device_is_online; 
    202         klass->reset_func         = tny_maemo_device_reset; 
     143        klass->is_online_func = tny_maemo_device_is_online; 
     144        klass->reset_func = tny_maemo_device_reset; 
    203145        klass->force_offline_func = tny_maemo_device_force_offline; 
    204         klass->force_online_func  = tny_maemo_device_force_online; 
     146        klass->force_online_func = tny_maemo_device_force_online; 
     147 
     148        return; 
    205149} 
    206150 
     
    218162 
    219163        g_type_class_add_private (object_class, sizeof (TnyMaemoDevicePriv)); 
     164 
     165        return; 
    220166} 
    221167 
     
    255201 
    256202        } 
     203 
    257204        return type; 
    258205} 
  • trunk/libtinymail-maemo/tny-maemo-device.h

    r900 r1790  
    3535#define TNY_MAEMO_DEVICE_GET_CLASS(inst)  (G_TYPE_INSTANCE_GET_CLASS ((inst), TNY_TYPE_MAEMO_DEVICE, TnyMaemoDeviceClass)) 
    3636 
    37 /* This is an abstract type */ 
    38  
    3937typedef struct _TnyMaemoDevice TnyMaemoDevice; 
    4038typedef struct _TnyMaemoDeviceClass TnyMaemoDeviceClass;