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: | ||
- | < | + | <tt> gboolean success <span><font color="#990000"><nowiki>=</nowiki></font></span> FALSE<span><font color="#990000"><nowiki>;</nowiki></font></span> |
- | + | <span>''<span><font color="#9A1900">/* Create connection object */</font></span>''</span> | |
- | + | 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> | |
- | + | <span>''<span><font color="#9A1900">/* Connect signal to receive connection events */</font></span>''</span> | |
- | + | <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> | |
- | + | <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> | |
- | + | <span>''<span><font color="#9A1900">/* Request connection and check for the result */</font></span>''</span> | |
- | + | 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> | |
- | + | <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> | |
- | + | ||
- | </ | + | |
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: | ||
- | < | + | <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> |
- | + | gpointer user_data<span><font color="#990000">)</font></span> | |
- | + | <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> |
- | + | ConIcConnectionError error<span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <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> | |
- | + | <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> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_STATUS_CONNECTED<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_STATUS_DISCONNECTING<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_STATUS_DISCONNECTED<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | 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> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_NONE<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_INVALID_IAP<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_CONNECTION_FAILED<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span>'''<span><font color="#0000FF">case</font></span>'''</span> CON_IC_CONNECTION_ERROR_USER_CANCELED<span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span><font color="#FF0000">}</font></span> | |
- | + | <span>'''<span><font color="#0000FF">break</font></span>'''</span><span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span>'''<span><font color="#0000FF">default</font></span>'''</span><span><font color="#990000"><nowiki>:</nowiki></font></span> | |
- | + | <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> | |
- | + | <span><font color="#FF0000">}</font></span> | |
- | + | <span><font color="#FF0000">}</font></span></tt> | |
- | } | + | |
- | </ | + | |
====Listening for Connection Events ==== | ====Listening for Connection Events ==== |
Learn more about Contributing to the wiki.