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 65 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 301: | Line 301: | ||
====Listening for Connection Events ==== | ====Listening for Connection Events ==== | ||
- | Sometimes the application does not actively start connections but needs to detect if the device is online. The Libconic "automatic events" feature, enabled with | + | Sometimes the application does not actively start connections but needs to detect if the device is online. The Libconic "automatic events" feature, enabled with "automatic-connection-events" <code>GObject</code> property, can achieve this: |
- | < | + | <tt> <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">/* Set automatic events */</font></span>''</span> | |
- | + | <span>'''<span><font color="#000000">g_object_set</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">"automatic-connection-events"</font></span><span><font color="#990000">,</font></span> TRUE<span><font color="#990000">,</font></span> NULL<span><font color="#990000">);</font></span></tt> | |
- | + | ||
- | </ | + | |
When automatic events are turned on, the application receives connected and disconnected events for all Internet connection changes. In addition to this, the application receives an event for the initial connection status. If the device is disconnected, <code>ConIcConnectionEvent</code> with status <code>CON_IC_STATUS_DISCONNECTED</code> is emitted. This event has <code>NULL</code> IAP ID and bearer, because there is no IAP getting disconnected, but the event indicates that the device is offline. | When automatic events are turned on, the application receives connected and disconnected events for all Internet connection changes. In addition to this, the application receives an event for the initial connection status. If the device is disconnected, <code>ConIcConnectionEvent</code> with status <code>CON_IC_STATUS_DISCONNECTED</code> is emitted. This event has <code>NULL</code> IAP ID and bearer, because there is no IAP getting disconnected, but the event indicates that the device is offline. | ||
- | N.B. The main loop must be | + | N.B. The main loop must be reiterated in order to receive the event. If you need the connection status information synchronously, you can iterate the main loop yourself: |
- | < | + | <tt><span>'''<span><font color="#0000FF">static</font></span>'''</span> <span><font color="#009900">void</font></span> <span>'''<span><font color="#000000">connection_info</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 connection_info(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> |
- | + | ConIcConnectionStatus <span><font color="#990000"><nowiki>*</nowiki></font></span>status_ptr <span><font color="#990000"><nowiki>=</nowiki></font></span> <span><font color="#990000">(</font></span>ConIcConnectionStatus<span><font color="#990000"><nowiki>*)</nowiki></font></span>user_data<span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span><font color="#990000"><nowiki>*</nowiki></font></span>status_ptr <span><font color="#990000"><nowiki>=</nowiki></font></span> status<span><font color="#990000"><nowiki>;</nowiki></font></span> | |
- | + | <span><font color="#FF0000">}</font></span> | |
- | } | + | <span>''<span><font color="#9A1900">/* ... */</font></span>''</span> |
- | /* ... */ | + | <span>''<span><font color="#9A1900">/* Create connection object and set on automatic events (see previous snippet) ... */</font></span>''</span> |
- | + | <span>'''<span><font color="#0000FF">static</font></span>'''</span> ConIcConnectionStatus status <span><font color="#990000"><nowiki>=</nowiki></font></span> <span><font color="#993399">0xFFFF</font></span><span><font color="#990000"><nowiki>;</nowiki></font></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="#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>connection_info<span><font color="#990000">),</font></span> <span><font color="#990000">&</font></span>status<span><font color="#990000">);</font></span> | |
- | + | <span>'''<span><font color="#000000">g_object_set</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">"automatic-connection-events"</font></span><span><font color="#990000">,</font></span> TRUE<span><font color="#990000">,</font></span> NULL<span><font color="#990000">);</font></span> | |
- | + | <span>''<span><font color="#9A1900">/* Iterate main loop for the first connection event */</font></span>''</span> | |
- | + | <span>'''<span><font color="#0000FF">while</font></span>'''</span> <span><font color="#990000">(</font></span>status <span><font color="#990000"><nowiki>==</nowiki></font></span> <span><font color="#993399">0xFFFF</font></span><span><font color="#990000">)</font></span> <span>'''<span><font color="#000000">g_main_context_iteration</font></span>'''</span><span><font color="#990000">(</font></span>NULL<span><font color="#990000">,</font></span> TRUE<span><font color="#990000">);</font></span> | |
- | + | <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span>status <span><font color="#990000"><nowiki>==</nowiki></font></span> CON_IC_STATUS_CONNECTED<span><font color="#990000">)</font></span> | |
- | + | <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"We are connected!"</font></span><span><font color="#990000">);</font></span> | |
- | + | <span>'''<span><font color="#0000FF">else</font></span>'''</span> | |
- | + | <span>'''<span><font color="#000000">g_debug</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"We are not connected!"</font></span><span><font color="#990000">);</font></span></tt> | |
- | + | ||
- | </ | + | |
==== Receiving Statistics of Connection ==== | ==== Receiving Statistics of Connection ==== |
Learn more about Contributing to the wiki.