Editing Documentation/Maemo 5 Developer Guide/Using Connectivity Components/Maemo Connectivity

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.

Warning: This page is 67 kilobytes long; some browsers may have problems editing pages approaching or longer than 32kb. Please consider breaking the page into smaller sections.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 243: Line 243:
[http://maemo.org/api_refs/5.0/5.0-final/libconic/ LibConIc] is an asynchronous connection API, which heavily relies on <code>GObject</code> signals. Basically this means that <code>GMainloop</code> must be iterated in order to successfully execute connection requests. After the application is set up, use a <code>ConIcConnection</code> object to request a connection:
[http://maemo.org/api_refs/5.0/5.0-final/libconic/ LibConIc] is an asynchronous connection API, which heavily relies on <code>GObject</code> signals. Basically this means that <code>GMainloop</code> must be iterated in order to successfully execute connection requests. After the application is set up, use a <code>ConIcConnection</code> object to request a connection:
-
<source lang="c">
+
<tt>    gboolean success <span><font color="#990000"><nowiki>=</nowiki></font></span> FALSE<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    gboolean success = FALSE;
+
    <span>''<span><font color="#9A1900">/* Create connection object */</font></span>''</span>
-
    /* Create connection object */
+
    ConIcConnection <span><font color="#990000"><nowiki>*</nowiki></font></span>connection <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">con_ic_connection_new</font></span>'''</span><span><font color="#990000">();</font></span>
-
    ConIcConnection *connection = con_ic_connection_new();
+
    <span>''<span><font color="#9A1900">/* Connect signal to receive connection events */</font></span>''</span>
-
    /* Connect signal to receive connection events */
+
    <span>'''<span><font color="#000000">g_signal_connect</font></span>'''</span><span><font color="#990000">(</font></span><span>'''<span><font color="#000000">G_OBJECT</font></span>'''</span><span><font color="#990000">(</font></span>connection<span><font color="#990000">),</font></span> <span><font color="#FF0000">"connection-event"</font></span><span><font color="#990000">,</font></span>
-
    g_signal_connect(G_OBJECT(connection), "connection-event",
+
                      <span>'''<span><font color="#000000">G_CALLBACK</font></span>'''</span><span><font color="#990000">(</font></span>my_connection_handler<span><font color="#990000">),</font></span> NULL<span><font color="#990000">);</font></span>
-
                    G_CALLBACK(my_connection_handler), NULL);
+
    <span>''<span><font color="#9A1900">/* Request connection and check for the result */</font></span>''</span>
-
    /* Request connection and check for the result */
+
    success <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">con_ic_connection_connect</font></span>'''</span><span><font color="#990000">(</font></span>connection<span><font color="#990000">,</font></span> CON_IC_CONNECT_FLAG_NONE<span><font color="#990000">);</font></span>
-
    success = con_ic_connection_connect(connection, CON_IC_CONNECT_FLAG_NONE);
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(!</font></span>success<span><font color="#990000">)</font></span> <span>'''<span><font color="#000000">g_warning</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Request for connection failed"</font></span><span><font color="#990000">);</font></span></tt>
-
    if (!success) g_warning("Request for connection failed");
+
-
</source>
+
At this point, the application does not yet have an Internet connection. A successful return from <code>con_ic_connection_connect()</code> means only that the request was successfully dispatched to the Internet Connectivity daemon. When the daemon has a connection ready, the application receives an [http://maemo.org/api_refs/5.0/5.0-final/libconic/conicconnectionevent_8h.html event] (as an <code>GObject</code> signal) indicating that the device is connected. If the connection attempt fails, the application receives a disconnected event with an error describing the reason for the failure.
At this point, the application does not yet have an Internet connection. A successful return from <code>con_ic_connection_connect()</code> means only that the request was successfully dispatched to the Internet Connectivity daemon. When the daemon has a connection ready, the application receives an [http://maemo.org/api_refs/5.0/5.0-final/libconic/conicconnectionevent_8h.html event] (as an <code>GObject</code> signal) indicating that the device is connected. If the connection attempt fails, the application receives a disconnected event with an error describing the reason for the failure.
Line 259: Line 257:
The connection handler (<code>my_connection_handler()</code> function registered in the previous snippet) could look like this:
The connection handler (<code>my_connection_handler()</code> function registered in the previous snippet) could look like this:
-
<source lang="c">
+
<tt><span>'''<span><font color="#0000FF">static</font></span>'''</span> <span><font color="#009900">void</font></span> <span>'''<span><font color="#000000">my_connection_handler</font></span>'''</span><span><font color="#990000">(</font></span>ConIcConnection <span><font color="#990000"><nowiki>*</nowiki></font></span>connection<span><font color="#990000">,</font></span>
-
static void my_connection_handler(ConIcConnection *connection,
+
                                  ConIcConnectionEvent <span><font color="#990000"><nowiki>*</nowiki></font></span>event<span><font color="#990000">,</font></span>
-
                                  ConIcConnectionEvent *event,
+
                                  gpointer user_data<span><font color="#990000">)</font></span>
-
                                  gpointer user_data)
+
<span><font color="#FF0000">{</font></span>
-
{
+
    ConIcConnectionStatus status <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">con_ic_connection_event_get_status</font></span>'''</span><span><font color="#990000">(</font></span>event<span><font color="#990000">);</font></span>
-
    ConIcConnectionStatus status = con_ic_connection_event_get_status(event);
+
    ConIcConnectionError error<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    ConIcConnectionError error;
+
    <span>'''<span><font color="#0000FF">const</font></span>'''</span> gchar <span><font color="#990000"><nowiki>*</nowiki></font></span>iap_id <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">con_ic_event_get_iap_id</font></span>'''</span><span><font color="#990000">(</font></span><span>'''<span><font color="#000000">CON_IC_EVENT</font></span>'''</span><span><font color="#990000">(</font></span>event<span><font color="#990000">));</font></span>
-
    const gchar *iap_id = con_ic_event_get_iap_id(CON_IC_EVENT(event));
+
    <span>'''<span><font color="#0000FF">const</font></span>'''</span> gchar <span><font color="#990000"><nowiki>*</nowiki></font></span>bearer <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">con_ic_event_get_bearer_type</font></span>'''</span><span><font color="#990000">(</font></span><span>'''<span><font color="#000000">CON_IC_EVENT</font></span>'''</span><span><font color="#990000">(</font></span>event<span><font color="#990000">));</font></span>
-
    const gchar *bearer = con_ic_event_get_bearer_type(CON_IC_EVENT(event));
+
    <span>'''<span><font color="#0000FF">switch</font></span>'''</span><span><font color="#990000">(</font></span>status<span><font color="#990000">)</font></span> <span><font color="#FF0000">{</font></span>
-
    switch(status) {
+
        <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_STATUS_CONNECTED<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
        case CON_IC_STATUS_CONNECTED:
+
            <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Hey, we are connected to IAP %s with bearer %s!"</font></span><span><font color="#990000">,</font></span> iap_id<span><font color="#990000">,</font></span> bearer<span><font color="#990000">);</font></span>
-
            g_debug("Hey, we are connected to IAP %s with bearer %s!", iap_id, bearer);
+
            <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
            break;
+
        <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_STATUS_DISCONNECTING<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
        case CON_IC_STATUS_DISCONNECTING:
+
            <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"We are disconnecting..."</font></span><span><font color="#990000">);</font></span>
-
            g_debug("We are disconnecting...");
+
            <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
            break;
+
        <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_STATUS_DISCONNECTED<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
        case CON_IC_STATUS_DISCONNECTED:
+
            <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"And we are disconnected. Let's see what went wrong..."</font></span><span><font color="#990000">);</font></span>
-
            g_debug("And we are disconnected. Let's see what went wrong...");
+
            error <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">con_ic_connection_event_get_error</font></span>'''</span><span><font color="#990000">(</font></span>event<span><font color="#990000">);</font></span>
-
            error = con_ic_connection_event_get_error(event);
+
            <span>'''<span><font color="#0000FF">switch</font></span>'''</span><span><font color="#990000">(</font></span>error<span><font color="#990000">)</font></span> <span><font color="#FF0000">{</font></span>
-
            switch(error) {
+
                <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_NONE<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
                case CON_IC_CONNECTION_ERROR_NONE:
+
                    <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Libconic thinks there was nothing wrong."</font></span><span><font color="#990000">);</font></span>
-
                    g_debug("Libconic thinks there was nothing wrong.");
+
                    <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
                    break;
+
                <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_INVALID_IAP<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
                case CON_IC_CONNECTION_ERROR_INVALID_IAP:
+
                    <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Invalid (non-existing?) IAP was requested."</font></span><span><font color="#990000">);</font></span>
-
                    g_debug("Invalid (non-existing?) IAP was requested.");
+
                    <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
                    break;
+
                <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_CONNECTION_FAILED<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
                case CON_IC_CONNECTION_ERROR_CONNECTION_FAILED:
+
                    <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Connection just failed."</font></span><span><font color="#990000">);</font></span>
-
                    g_debug("Connection just failed.");
+
                    <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
                    break;
+
                <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_USER_CANCELED<span><font color="#990000"><nowiki>:</nowiki></font></span>
-
                case CON_IC_CONNECTION_ERROR_USER_CANCELED:
+
                    <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"User canceled the connection attempt"</font></span><span><font color="#990000">);</font></span>
-
                    g_debug("User canceled the connection attempt");
+
                    <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
                    break;
+
            <span><font color="#FF0000">}</font></span>
-
            }
+
            <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
            break;
+
        <span>'''<span><font color="#0000FF">default</font></span>'''</span><span><font color="#990000"><nowiki>:</nowiki></font></span>
-
        default:
+
            <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Unknown connection status received"</font></span><span><font color="#990000">);</font></span>
-
            g_debug("Unknown connection status received");
+
    <span><font color="#FF0000">}</font></span>
-
    }
+
<span><font color="#FF0000">}</font></span></tt>
-
}
+
-
</source>
+
====Listening for Connection Events ====
====Listening for Connection Events ====

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)