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 84 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 1,105: Line 1,105:
: Signal emitted from UI when the SIM PIN has been entered.
: Signal emitted from UI when the SIM PIN has been entered.
-
===Bluetooth D-Bus UI dialogs ===
+
===Bluetooth DBUS UI dialogs ===
conbtdialogs-dbus.h
conbtdialogs-dbus.h
-
<source lang="c">
+
<tt><span>''<span><font color="#9A1900">/** </font></span>''</span>
-
/**  
+
<span>''<span><font color="#9A1900">  Example of use (command line):</font></span>''</span>
-
  Example of use (command line):
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">  dbus-send --system --print-reply \</font></span>''</span>
-
  dbus-send --system --print-reply \
+
<span>''<span><font color="#9A1900">    --dest='com.nokia.icd_ui' /com/nokia/bt_ui \</font></span>''</span>
-
    --dest='com.nokia.icd_ui' /com/nokia/bt_ui \
+
<span>''<span><font color="#9A1900">    com.nokia.bt_ui.show_send_file_dlg \</font></span>''</span>
-
    com.nokia.bt_ui.show_send_file_dlg \
+
<span>''<span><font color="#9A1900">    array:string:</font></span>''</span><span><u><span><font color="#0000FF">file:///home/user/MyDocs/.documents/testing.txt</font></span></u></span>
-
    array:string:file:///home/user/MyDocs/.documents/testing.txt
+
<span>''<span><font color="#9A1900">    </font></span>''</span>
-
   
+
<span>''<span><font color="#9A1900">  dbus-send --system --print-reply \</font></span>''</span>
-
  dbus-send --system --print-reply \
+
<span>''<span><font color="#9A1900">    --dest=com.nokia.bt_ui  /com/nokia/bt_ui </font></span>''</span>
-
    --dest=com.nokia.bt_ui  /com/nokia/bt_ui  
+
<span>''<span><font color="#9A1900">    com.nokia.bt_ui.show_search_dlg \</font></span>''</span>
-
    com.nokia.bt_ui.show_search_dlg \
+
<span>''<span><font color="#9A1900">    string: string: array:string: string:</font></span>''</span>
-
    string: string: array:string: string:
+
<span>''<span><font color="#9A1900"><nowiki>*/</nowiki></font></span>''</span>
-
*/
+
-
 
+
-
#ifndef CONBTDIALOGS_DBUS_H
+
-
#define CONBTDIALOGS_DBUS_H
+
-
 
+
-
#ifdef __cplusplus
+
-
extern "C" {
+
-
#endif
+
-
 
+
-
/** Conbtdialogs service, resides in system dbus */
+
-
#define CONBTDIALOGS_DBUS_SERVICE                "com.nokia.bt_ui"
+
-
/** Conbtdialogs interface */
+
-
#define CONBTDIALOGS_DBUS_INTERFACE                "com.nokia.bt_ui"
+
-
/** Conbtdialogs path */
+
-
#define CONBTDIALOGS_DBUS_PATH                        "/com/nokia/bt_ui"
+
-
 
+
-
/**
+
-
  Show send file dialog
+
   
   
-
  Arguments:
+
  <span>'''<span><font color="#000080"><nowiki>#ifndef</nowiki></font></span>'''</span> CONBTDIALOGS_DBUS_H
-
 
+
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_DBUS_H
-
  uris: DBUS_TYPE_ARRAY                Array of strings representing the URIs of the
+
-
                                files to send.
+
-
 
+
-
  Returns:
+
-
 
+
-
  DBUS_TYPE_BOOLEAN            TRUE, if dialog was shown successfully.
+
-
  */
+
-
#define CONBTDIALOGS_SEND_FILE_REQ                "show_send_file_dlg"
+
-
 
+
-
/**
+
-
  File sending result signal
+
   
   
-
  Arguments:
+
<span>'''<span><font color="#000080"><nowiki>#ifdef</nowiki></font></span>'''</span> __cplusplus
-
 
+
<span>'''<span><font color="#0000FF">extern</font></span>'''</span> <span><font color="#FF0000">"C"</font></span> <span><font color="#FF0000">{</font></span>
-
  success: DBUS_TYPE_BOOLEAN        TRUE, if all files were sent successfully or
+
<span>'''<span><font color="#000080"><nowiki>#endif</nowiki></font></span>'''</span>
-
                                FALSE, if error occurred or sending was  
+
-
                                canceled.
+
<span>''<span><font color="#9A1900">/** Conbtdialogs service, resides in system dbus */</font></span>''</span>
-
  */
+
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_DBUS_SERVICE                <span><font color="#FF0000">"com.nokia.bt_ui"</font></span>
-
#define CONBTDIALOGS_SEND_FILE_SIG                "send_file"
+
<span>''<span><font color="#9A1900">/** Conbtdialogs interface */</font></span>''</span>
-
 
+
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_DBUS_INTERFACE                <span><font color="#FF0000">"com.nokia.bt_ui"</font></span>
-
/**
+
<span>''<span><font color="#9A1900">/** Conbtdialogs path */</font></span>''</span>
-
  Show BT device search dialog
+
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_DBUS_PATH                        <span><font color="#FF0000">"/com/nokia/bt_ui"</font></span>
 +
 +
<span>''<span><font color="#9A1900">/** </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Show send file dialog</font></span>''</span>
 +
<span>''<span><font color="#9A1900"> </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Arguments:</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  uris: DBUS_TYPE_ARRAY                Array of strings representing the URIs of the</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                files to send.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Returns:</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  DBUS_TYPE_BOOLEAN            TRUE, if dialog was shown successfully.</font></span>''</span>
 +
<span>''<span><font color="#9A1900"> */</font></span>''</span>
 +
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_SEND_FILE_REQ                <span><font color="#FF0000">"show_send_file_dlg"</font></span>
 +
 +
<span>''<span><font color="#9A1900">/** </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  File sending result signal</font></span>''</span>
 +
<span>''<span><font color="#9A1900"> </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Arguments:</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  success: DBUS_TYPE_BOOLEAN        TRUE, if all files were sent successfully or</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                FALSE, if error occurred or sending was </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                canceled.</font></span>''</span>
 +
  <span>''<span><font color="#9A1900"> */</font></span>''</span>
 +
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_SEND_FILE_SIG                <span><font color="#FF0000">"send_file"</font></span>
   
   
-
  Arguments:
+
<span>''<span><font color="#9A1900">/** </font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">  Show BT device search dialog</font></span>''</span>
-
  major_class: DBUS_TYPE_STRING To set filtering based on major_class or
+
<span>''<span><font color="#9A1900"> </font></span>''</span>
-
                                "". Possible major class values are:
+
<span>''<span><font color="#9A1900">  Arguments:</font></span>''</span>
-
                               
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
                                "miscellaneous", "computer", "phone",  
+
<span>''<span><font color="#9A1900">  major_class: DBUS_TYPE_STRING To set filtering based on major_class or</font></span>''</span>
-
                                "access point", "audio/video",  
+
<span>''<span><font color="#9A1900">                                "". Possible major class values are:</font></span>''</span>
-
                                "peripheral", "imaging", "wearable",
+
<span>''<span><font color="#9A1900">                                </font></span>''</span>
-
                                "toy" and "uncategorized".
+
<span>''<span><font color="#9A1900">                                "miscellaneous", "computer", "phone", </font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">                                "access point", "audio/video", </font></span>''</span>
-
  minor_class: DBUS_TYPE_STRING To set filtering based on minor_class or "".
+
<span>''<span><font color="#9A1900">                                "peripheral", "imaging", "wearable",</font></span>''</span>
-
                                Possible minor class values are:
+
<span>''<span><font color="#9A1900">                                "toy" and "uncategorized".</font></span>''</span>
-
                       
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
                                - Minor classes for "computer":  
+
<span>''<span><font color="#9A1900">  minor_class: DBUS_TYPE_STRING To set filtering based on minor_class or "".</font></span>''</span>
-
                                  "uncategorized", "desktop", "server",
+
<span>''<span><font color="#9A1900">                                Possible minor class values are:</font></span>''</span>
-
                                  "laptop", "handheld", "palm", "wearable"
+
<span>''<span><font color="#9A1900">                        </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                - Minor classes for "computer": </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "uncategorized", "desktop", "server",</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "laptop", "handheld", "palm", "wearable"</font></span>''</span>
 +
 +
<span>''<span><font color="#9A1900">                                - Minor classes for "phone": "uncategorized",</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "cellular", "cordless", "smart phone",</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "modem", "isdn"</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  service_classes: DBUS_TYPE_ARRAY To set filtering based on service classes.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  Supported classes include "positioning", </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "networking", "rendering", "capturing",</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "object transfer", "audio", "telephony", </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  "information". Can be empty list, when no</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                  service class filtering is performed.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  bonding: DBUS_TYPE_STRING    Bonding mode for found and selected device:</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                "require" for requiring a bonding from a</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                selected device (i.e. bond device if it has not</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                been bonded before). </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                "force" to always bond (i.e. device will be</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                bonded even if bonded before).</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                Any other string will allow to search and</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                select device without bonding it.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Returns:</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  DBUS_TYPE_BOOLEAN            TRUE, if dialog was shown successfully.</font></span>''</span>
 +
<span>''<span><font color="#9A1900"> */</font></span>''</span>
 +
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_SEARCH_REQ                <span><font color="#FF0000">"show_search_dlg"</font></span>
 +
 +
<span>''<span><font color="#9A1900">/** </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Bluetooth search result signal</font></span>''</span>
 +
<span>''<span><font color="#9A1900"> </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  Arguments:</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  address: DBUS_TYPE_STRING    Bluetooth address of the selected device, or ""</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                if search dialog was cancelled.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  name: DBUS_TYPE_STRING        Name of the device.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  icon: DBUS_TYPE_STRING        Logical name for the icon describing the </font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                device.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  major_class: DBUS_TYPE_STRING Major class of the device.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  minor_class: DBUS_TYPE_STRING Minor class of the device.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  trusted: DBUS_TYPE_BOOLEAN    Defines whether the device is marked as a trusted device.</font></span>''</span>
 +
<span>''<span><font color="#9A1900">  </font></span>''</span>
 +
<span>''<span><font color="#9A1900">  services: DBUS_TYPE_ARRAY    List of strings describing the service classes</font></span>''</span>
 +
<span>''<span><font color="#9A1900">                                and SDP-based services provided by the device.</font></span>''</span>
 +
<span>''<span><font color="#9A1900"> */</font></span>''</span>
 +
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> CONBTDIALOGS_SEARCH_SIG                <span><font color="#FF0000">"search_result"</font></span>
 +
</tt>
-
                                - Minor classes for "phone": "uncategorized",
+
<br>
-
                                  "cellular", "cordless", "smart phone",
+
-
                                  "modem", "isdn"
+
-
 
+
-
  service_classes: DBUS_TYPE_ARRAY To set filtering based on service classes.
+
-
                                  Supported classes include "positioning",
+
-
                                  "networking", "rendering", "capturing",
+
-
                                  "object transfer", "audio", "telephony",
+
-
                                  "information". Can be empty list, when no
+
-
                                  service class filtering is performed.
+
-
 
+
-
  bonding: DBUS_TYPE_STRING    Bonding mode for found and selected device:
+
-
                               
+
-
                                "require" for requiring a bonding from a
+
-
                                selected device (i.e. bond device if it has not
+
-
                                been bonded before).
+
-
                               
+
-
                                "force" to always bond (i.e. device will be
+
-
                                bonded even if bonded before).
+
-
                               
+
-
                                Any other string will allow to search and
+
-
                                select device without bonding it.
+
-
                               
+
-
  Returns:
+
-
 
+
-
  DBUS_TYPE_BOOLEAN            TRUE, if dialog was shown successfully.
+
-
*/
+
-
#define CONBTDIALOGS_SEARCH_REQ                "show_search_dlg"
+
-
/**  
+
<tt><span>''<span><font color="#9A1900">/**</font></span>''</span>
-
  Bluetooth search result signal
+
<span>''<span><font color="#9A1900">  Bluetooth UI Library for maemo</font></span>''</span>
   
   
-
  Arguments:
+
  <span>''<span><font color="#9A1900"> Copyright (C) 2006 Nokia. All rights reserved.</font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
  address: DBUS_TYPE_STRING    Bluetooth address of the selected device, or ""
+
<span>''<span><font color="#9A1900">  This sample demonstrates the use of conbtdialogs API and especially </font></span>''</span>
-
                                if search dialog was cancelled.
+
<span>''<span><font color="#9A1900">  send_file function. Compile the program with conbtdialogs and dbus:</font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
  name: DBUS_TYPE_STRING        Name of the device.
+
<span>''<span><font color="#9A1900">  gcc -Wall `pkg-config -libs -cflags dbus-glib-1 conbtdialogs` \</font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">-o send_file conbtdialogs_send_file.c</font></span>''</span>
-
  icon: DBUS_TYPE_STRING        Logical name for the icon describing the
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
                                device.
+
<span>''<span><font color="#9A1900">  Run with list of URLS:</font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">  </font></span>''</span>
-
  major_class: DBUS_TYPE_STRING Major class of the device.
+
<span>''<span><font color="#9A1900">  ./send_file </font></span>''</span><span><u><span><font color="#0000FF">file:///home/user/MyDocs/.sounds/Everyday.mp3</font></span></u></span>
-
 
+
<span>''<span><font color="#9A1900"><nowiki>*/</nowiki></font></span>''</span>
-
  minor_class: DBUS_TYPE_STRING Minor class of the device.
+
-
 
+
<span>'''<span><font color="#000080"><nowiki>#define</nowiki></font></span>'''</span> DBUS_API_SUBJECT_TO_CHANGE
-
  trusted: DBUS_TYPE_BOOLEAN    Defines whether the device is marked as a trusted device.
+
-
 
+
<span>'''<span><font color="#000080"><nowiki>#include</nowiki></font></span>'''</span> <span><font color="#FF0000">&lt;glib.h&gt;</font></span>
-
  services: DBUS_TYPE_ARRAY    List of strings describing the service classes
+
<span>'''<span><font color="#000080"><nowiki>#include</nowiki></font></span>'''</span> <span><font color="#FF0000">&lt;conbtdialogs-dbus.h&gt;</font></span>
-
                                and SDP-based services provided by the device.
+
<span>'''<span><font color="#000080"><nowiki>#include</nowiki></font></span>'''</span> <span><font color="#FF0000">&lt;dbus/dbus.h&gt;</font></span>
-
  */
+
<span>'''<span><font color="#000080"><nowiki>#include</nowiki></font></span>'''</span> <span><font color="#FF0000">&lt;dbus/dbus-glib.h&gt;</font></span>
-
#define CONBTDIALOGS_SEARCH_SIG                "search_result"
+
-
</source>
+
DBusGConnection <span><font color="#990000"><nowiki>*</nowiki></font></span>connection <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
 
+
GMainLoop <span><font color="#990000"><nowiki>*</nowiki></font></span>mainloop <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
<source lang="c">
+
-
/**
+
<span>'''<span><font color="#0000FF">static</font></span>'''</span> gboolean <span>'''<span><font color="#000000">initialize</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#009900">void</font></span><span><font color="#990000">)</font></span>
-
  Bluetooth UI Library for maemo
+
<span><font color="#FF0000">{</font></span>
-
 
+
    GError <span><font color="#990000"><nowiki>*</nowiki></font></span>error <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
  Copyright (C) 2006 Nokia. All rights reserved.
+
-
 
+
    <span>'''<span><font color="#000000">g_type_init</font></span>'''</span> <span><font color="#990000">();</font></span>
-
  This sample demonstrates the use of conbtdialogs API and especially  
+
-
  send_file function. Compile the program with conbtdialogs and dbus:
+
    <span>''<span><font color="#9A1900">/* Create main loop */</font></span>''</span>
-
 
+
    mainloop <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">g_main_loop_new</font></span>'''</span><span><font color="#990000">(</font></span>NULL<span><font color="#990000">,</font></span> TRUE<span><font color="#990000">);</font></span>
-
  gcc -Wall `pkg-config -libs -cflags dbus-glib-1 conbtdialogs` \
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span> mainloop <span><font color="#990000"><nowiki>==</nowiki></font></span> NULL <span><font color="#990000">)</font></span> <span>'''<span><font color="#0000FF">return</font></span>'''</span> FALSE<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
-o send_file conbtdialogs_send_file.c
+
-
 
+
    <span>''<span><font color="#9A1900">/* Create DBUS connection */</font></span>''</span>
-
  Run with list of URLS:
+
    connection <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">dbus_g_bus_get</font></span>'''</span><span><font color="#990000">(</font></span>DBUS_BUS_SYSTEM<span><font color="#990000">,</font></span> <span><font color="#990000">&amp;</font></span>error<span><font color="#990000">);</font></span>
-
 
+
-
  ./send_file file:///home/user/MyDocs/.sounds/Everyday.mp3
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span>connection <span><font color="#990000"><nowiki>==</nowiki></font></span> NULL <span><font color="#990000">)</font></span>
-
*/
+
    <span><font color="#FF0000">{</font></span>
-
 
+
        <span>'''<span><font color="#000000">g_print</font></span>'''</span> <span><font color="#990000">(</font></span><span><font color="#FF0000">"Error: %s</font></span><span><font color="#CC33CC">\n</font></span><span><font color="#FF0000">"</font></span><span><font color="#990000">,</font></span> error<span><font color="#990000">-&gt;</font></span>message<span><font color="#990000">);</font></span>
-
#define DBUS_API_SUBJECT_TO_CHANGE
+
        <span>'''<span><font color="#000000">g_clear_error</font></span>'''</span> <span><font color="#990000">(&amp;</font></span>error<span><font color="#990000">);</font></span>
-
 
+
        <span>'''<span><font color="#0000FF">return</font></span>'''</span> FALSE<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
#include <glib.h>
+
    <span><font color="#FF0000">}</font></span>
-
#include <conbtdialogs-dbus.h>
+
-
#include <dbus/dbus.h>
+
    <span>'''<span><font color="#0000FF">return</font></span>'''</span> TRUE<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
#include <dbus/dbus-glib.h>
+
<span><font color="#FF0000">}</font></span>
-
 
+
-
DBusGConnection *connection = NULL;
+
<span>'''<span><font color="#0000FF">static</font></span>'''</span> gboolean <span>'''<span><font color="#000000">uninitialize</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#009900">void</font></span><span><font color="#990000">)</font></span>
-
GMainLoop *mainloop = NULL;
+
<span><font color="#FF0000">{</font></span>
-
 
+
    <span>''<span><font color="#9A1900">/* Quit main loop and unref it */</font></span>''</span>
-
static gboolean initialize(void)
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span>mainloop <span><font color="#990000"><nowiki>!=</nowiki></font></span> NULL<span><font color="#990000">)</font></span>
-
{
+
    <span><font color="#FF0000">{</font></span>
-
    GError *error = NULL;
+
        <span>'''<span><font color="#000000">g_main_loop_quit</font></span>'''</span><span><font color="#990000">(</font></span>mainloop<span><font color="#990000">);</font></span>
-
 
+
        <span>'''<span><font color="#000000">g_main_loop_unref</font></span>'''</span><span><font color="#990000">(</font></span>mainloop<span><font color="#990000">);</font></span>
-
    g_type_init ();
+
    <span><font color="#FF0000">}</font></span>
-
 
+
-
    /* Create main loop */
+
    <span>'''<span><font color="#0000FF">return</font></span>'''</span> TRUE<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    mainloop = g_main_loop_new(NULL, TRUE);
+
<span><font color="#FF0000">}</font></span>
-
    if ( mainloop == NULL ) return FALSE;
+
-
 
+
<span>'''<span><font color="#0000FF">static</font></span>'''</span> DBusHandlerResult <span>'''<span><font color="#000000">file_sent_signal</font></span>'''</span> <span><font color="#990000">(</font></span> DBusConnection <span><font color="#990000"><nowiki>*</nowiki></font></span>connection<span><font color="#990000">,</font></span>
-
    /* Create DBUS connection */
+
                                            DBusMessage <span><font color="#990000"><nowiki>*</nowiki></font></span>message<span><font color="#990000">,</font></span>
-
    connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);
+
                                            <span><font color="#009900">void</font></span> <span><font color="#990000"><nowiki>*</nowiki></font></span>data <span><font color="#990000">)</font></span>
-
 
+
<span><font color="#FF0000">{</font></span>
-
    if (connection == NULL )
+
    gboolean success <span><font color="#990000"><nowiki>=</nowiki></font></span> FALSE<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    {
+
-
        g_print ("Error: %s\n", error->message);
+
    <span>''<span><font color="#9A1900">/* check signal */</font></span>''</span>
-
        g_clear_error (&error);
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(!</font></span><span>'''<span><font color="#000000">dbus_message_is_signal</font></span>'''</span><span><font color="#990000">(</font></span>message<span><font color="#990000">,</font></span>
-
        return FALSE;
+
                                CONBTDIALOGS_DBUS_INTERFACE<span><font color="#990000">,</font></span>
-
    }
+
                                CONBTDIALOGS_SEND_FILE_SIG<span><font color="#990000">))</font></span>
-
 
+
        <span>'''<span><font color="#0000FF">return</font></span>'''</span> DBUS_HANDLER_RESULT_NOT_YET_HANDLED<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    return TRUE;
+
-
}
+
    <span>''<span><font color="#9A1900">/* get args */</font></span>''</span>
-
 
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span> <span><font color="#990000"><nowiki>!</nowiki></font></span><span>'''<span><font color="#000000">dbus_message_get_args</font></span>'''</span> <span><font color="#990000">(</font></span> message<span><font color="#990000">,</font></span> NULL<span><font color="#990000">,</font></span>
-
static gboolean uninitialize(void)
+
                                  DBUS_TYPE_BOOLEAN<span><font color="#990000">,</font></span> <span><font color="#990000">&amp;</font></span>success<span><font color="#990000">,</font></span>
-
{
+
                                  DBUS_TYPE_INVALID <span><font color="#990000">)</font></span> <span><font color="#990000">)</font></span>
-
    /* Quit main loop and unref it */
+
      <span>'''<span><font color="#0000FF">return</font></span>'''</span> DBUS_HANDLER_RESULT_NOT_YET_HANDLED<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    if (mainloop != NULL)
+
-
    {
+
    <span>''<span><font color="#9A1900">/* print if file sending was success or failure */</font></span>''</span>
-
        g_main_loop_quit(mainloop);
+
    <span>'''<span><font color="#000000">g_print</font></span>'''</span> <span><font color="#990000">(</font></span> <span><font color="#FF0000">"File sending was a "</font></span> <span><font color="#990000">);</font></span>
-
        g_main_loop_unref(mainloop);
+
-
    }
+
    <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_print</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"success</font></span><span><font color="#CC33CC">\n</font></span><span><font color="#FF0000">"</font></span><span><font color="#990000">);</font></span> <span>'''<span><font color="#0000FF">else</font></span>'''</span> <span>'''<span><font color="#000000">g_print</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"failure</font></span><span><font color="#CC33CC">\n</font></span><span><font color="#FF0000">"</font></span><span><font color="#990000">);</font></span>
-
 
+
    <span>'''<span><font color="#000000">dbus_connection_close</font></span>'''</span><span><font color="#990000">(</font></span>connection<span><font color="#990000">);</font></span>
-
    return TRUE;
+
    <span>'''<span><font color="#000000">uninitialize</font></span>'''</span><span><font color="#990000">();</font></span>
-
}
+
-
 
+
    <span>'''<span><font color="#0000FF">return</font></span>'''</span> DBUS_HANDLER_RESULT_HANDLED<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
static DBusHandlerResult file_sent_signal ( DBusConnection *connection,
+
<span><font color="#FF0000">}</font></span>
-
                                            DBusMessage *message,
+
-
                                            void *data )
+
gint <span>'''<span><font color="#000000">main</font></span>'''</span><span><font color="#990000">(</font></span>gint argc<span><font color="#990000">,</font></span> gchar <span><font color="#990000"><nowiki>**</nowiki></font></span>argv<span><font color="#990000">)</font></span>
-
{
+
<span><font color="#FF0000">{</font></span>
-
    gboolean success = FALSE;
+
    GError <span><font color="#990000"><nowiki>*</nowiki></font></span>error <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
 
+
    gchar <span><font color="#990000"><nowiki>**</nowiki></font></span>files <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    /* check signal */
+
    gint idx <span><font color="#990000"><nowiki>=</nowiki></font></span> <span><font color="#993399">0</font></span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    if (!dbus_message_is_signal(message,
+
    DBusGProxy <span><font color="#990000"><nowiki>*</nowiki></font></span>proxy<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
                                CONBTDIALOGS_DBUS_INTERFACE,
+
    DBusConnection <span><font color="#990000"><nowiki>*</nowiki></font></span>sys_conn<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
                                CONBTDIALOGS_SEND_FILE_SIG))
+
    gchar <span><font color="#990000"><nowiki>*</nowiki></font></span>filter_string <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
        return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
-
 
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span>argc <span><font color="#990000">&lt;</font></span> <span><font color="#993399">2</font></span><span><font color="#990000">)</font></span> <span>'''<span><font color="#0000FF">return</font></span>'''</span> <span><font color="#993399">1</font></span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    /* get args */
+
-
    if ( !dbus_message_get_args ( message, NULL,
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(</font></span><span>'''<span><font color="#000000">initialize</font></span>'''</span><span><font color="#990000">()</font></span> <span><font color="#990000"><nowiki>==</nowiki></font></span> FALSE<span><font color="#990000">)</font></span> <span><font color="#FF0000">{</font></span>
-
                                  DBUS_TYPE_BOOLEAN, &success,
+
        <span>'''<span><font color="#000000">uninitialize</font></span>'''</span><span><font color="#990000">();</font></span>
-
                                  DBUS_TYPE_INVALID ) )
+
        <span>'''<span><font color="#0000FF">return</font></span>'''</span> <span><font color="#993399">1</font></span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
      return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
    <span><font color="#FF0000">}</font></span>
-
 
+
-
    /* print if file sending was success or failure */
+
    <span>''<span><font color="#9A1900">/* Copy urls to GLib compatible char array */</font></span>''</span>
-
    g_print ( "File sending was a " );
+
    files <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">g_new0</font></span>'''</span><span><font color="#990000">(</font></span>gchar<span><font color="#990000"><nowiki>*,</nowiki></font></span> argc<span><font color="#990000">);</font></span>
-
 
+
-
    if (success) g_print("success\n"); else g_print("failure\n");
+
    <span>'''<span><font color="#0000FF">for</font></span>'''</span> <span><font color="#990000">(</font></span>idx <span><font color="#990000"><nowiki>=</nowiki></font></span> <span><font color="#993399">1</font></span><span><font color="#990000"><nowiki>;</nowiki></font></span> idx <span><font color="#990000">&lt;</font></span> argc<span><font color="#990000"><nowiki>;</nowiki></font></span> idx<span><font color="#990000">++)</font></span>
-
    dbus_connection_close(connection);
+
        files<span><font color="#990000">[</font></span>idx<span><font color="#990000">-</font></span><span><font color="#993399">1</font></span><span><font color="#990000">]</font></span> <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">g_strdup</font></span>'''</span><span><font color="#990000">(</font></span>argv<span><font color="#990000">[</font></span>idx<span><font color="#990000">]);</font></span>
-
    uninitialize();
+
-
 
+
    files<span><font color="#990000">[</font></span>argc<span><font color="#990000">-</font></span><span><font color="#993399">1</font></span><span><font color="#990000">]</font></span> <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    return DBUS_HANDLER_RESULT_HANDLED;
+
-
}
+
    <span>''<span><font color="#9A1900">/* Open connection for btdialogs service */</font></span>''</span>
-
 
+
    proxy <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">dbus_g_proxy_new_for_name</font></span>'''</span><span><font color="#990000">(</font></span>connection<span><font color="#990000">,</font></span>
-
gint main(gint argc, gchar **argv)
+
                                      CONBTDIALOGS_DBUS_SERVICE<span><font color="#990000">,</font></span>
-
{
+
                                      CONBTDIALOGS_DBUS_PATH<span><font color="#990000">,</font></span>
-
    GError *error = NULL;
+
                                      CONBTDIALOGS_DBUS_INTERFACE<span><font color="#990000">);</font></span>
-
    gchar **files = NULL;
+
-
    gint idx = 0;
+
    <span>''<span><font color="#9A1900">/* Send send file request to btdialogs service */</font></span>''</span>
-
    DBusGProxy *proxy;
+
    <span>'''<span><font color="#0000FF">if</font></span>'''</span> <span><font color="#990000">(!</font></span><span>'''<span><font color="#000000">dbus_g_proxy_call</font></span>'''</span><span><font color="#990000">(</font></span>proxy<span><font color="#990000">,</font></span> CONBTDIALOGS_SEND_FILE_REQ<span><font color="#990000">,</font></span>
-
    DBusConnection *sys_conn;
+
                            <span><font color="#990000">&amp;</font></span>error<span><font color="#990000">,</font></span>
-
    gchar *filter_string = NULL;
+
                            G_TYPE_STRV<span><font color="#990000">,</font></span> files<span><font color="#990000">,</font></span> G_TYPE_INVALID<span><font color="#990000">,</font></span>
-
 
+
                            G_TYPE_INVALID<span><font color="#990000">))</font></span>
-
    if (argc < 2) return 1;
+
    <span><font color="#FF0000">{</font></span>
-
 
+
        <span>'''<span><font color="#000000">g_print</font></span>'''</span><span><font color="#990000">(</font></span><span><font color="#FF0000">"Error: %s</font></span><span><font color="#CC33CC">\n</font></span><span><font color="#FF0000">"</font></span><span><font color="#990000">,</font></span> error<span><font color="#990000">-&gt;</font></span>message<span><font color="#990000">);</font></span>
-
    if (initialize() == FALSE) {
+
        <span>'''<span><font color="#000000">g_clear_error</font></span>'''</span><span><font color="#990000">(&amp;</font></span>error<span><font color="#990000">);</font></span>
-
        uninitialize();
+
        <span>'''<span><font color="#000000">g_strfreev</font></span>'''</span> <span><font color="#990000">(</font></span>files<span><font color="#990000">);</font></span>
-
        return 1;
+
        <span>'''<span><font color="#000000">g_object_unref</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>proxy<span><font color="#990000">));</font></span>
-
    }
+
        <span>'''<span><font color="#000000">uninitialize</font></span>'''</span><span><font color="#990000">();</font></span>
-
 
+
        <span>'''<span><font color="#0000FF">return</font></span>'''</span> <span><font color="#993399">1</font></span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    /* Copy urls to GLib compatible char array */
+
    <span><font color="#FF0000">}</font></span>
-
    files = g_new0(gchar*, argc);
+
    <span>'''<span><font color="#000000">g_strfreev</font></span>'''</span> <span><font color="#990000">(</font></span>files<span><font color="#990000">);</font></span>
-
 
+
    files <span><font color="#990000"><nowiki>=</nowiki></font></span> NULL<span><font color="#990000"><nowiki>;</nowiki></font></span>
-
    for (idx = 1; idx < argc; idx++)
+
-
        files[idx-1] = g_strdup(argv[idx]);
+
    <span>'''<span><font color="#000000">g_object_unref</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>proxy<span><font color="#990000">));</font></span>
-
 
+
-
    files[argc-1] = NULL;
+
    <span>''<span><font color="#9A1900">/* Now wait for file sent signal, use low level bindings as glib </font></span>''</span>
-
 
+
<span>''<span><font color="#9A1900">      bindings require signal marshaller registered */</font></span>''</span>
-
    /* Open connection for btdialogs service */
+
    sys_conn <span><font color="#990000"><nowiki>=</nowiki></font></span> <span>'''<span><font color="#000000">dbus_bus_get</font></span>'''</span><span><font color="#990000">(</font></span>DBUS_BUS_SYSTEM<span><font color="#990000">,</font></span> NULL<span><font color="#990000">);</font></span>
-
    proxy = dbus_g_proxy_new_for_name(connection,
+
    <span>'''<span><font color="#000000">g_assert</font></span>'''</span><span><font color="#990000">(</font></span><span>'''<span><font color="#000000">dbus_connection_add_filter</font></span>'''</span><span><font color="#990000">(</font></span>sys_conn<span><font color="#990000">,</font></span>
-
                                      CONBTDIALOGS_DBUS_SERVICE,
+
                                        file_sent_signal<span><font color="#990000">,</font></span>
-
                                      CONBTDIALOGS_DBUS_PATH,
+
                                        NULL<span><font color="#990000">,</font></span>
-
                                      CONBTDIALOGS_DBUS_INTERFACE);
+
                                        NULL <span><font color="#990000">));</font></span>
-
 
+
    filter_string <span><font color="#990000"><nowiki>=</nowiki></font></span>
-
    /* Send send file request to btdialogs service */
+
        <span>'''<span><font color="#000000">g_strdup_printf</font></span>'''</span> <span><font color="#990000">(</font></span><span><font color="#FF0000">"type='signal',interface='%s'"</font></span><span><font color="#990000">,</font></span> CONBTDIALOGS_DBUS_INTERFACE<span><font color="#990000">);</font></span>
-
    if (!dbus_g_proxy_call(proxy, CONBTDIALOGS_SEND_FILE_REQ,
+
-
                          &error,
+
    <span>'''<span><font color="#000000">dbus_bus_add_match</font></span>'''</span><span><font color="#990000">(</font></span>sys_conn<span><font color="#990000">,</font></span> filter_string<span><font color="#990000">,</font></span> NULL<span><font color="#990000">);</font></span>
-
                          G_TYPE_STRV, files, G_TYPE_INVALID,
+
    <span>'''<span><font color="#000000">dbus_connection_unref</font></span>'''</span><span><font color="#990000">(</font></span>sys_conn<span><font color="#990000">);</font></span>
-
                          G_TYPE_INVALID))
+
-
    {
+
    <span>''<span><font color="#9A1900">/* Run mainloop */</font></span>''</span>
-
        g_print("Error: %s\n", error->message);
+
    <span>'''<span><font color="#000000">g_main_loop_run</font></span>'''</span><span><font color="#990000">(</font></span>mainloop<span><font color="#990000">);</font></span>
-
        g_clear_error(&error);
+
-
        g_strfreev (files);
+
    <span>'''<span><font color="#0000FF">return</font></span>'''</span> <span><font color="#993399">0</font></span><span><font color="#990000"><nowiki>;</nowiki></font></span>
-
        g_object_unref(G_OBJECT(proxy));
+
<span><font color="#FF0000">}</font></span></tt>
-
        uninitialize();
+
-
        return 1;
+
-
    }
+
-
    g_strfreev (files);
+
-
    files = NULL;
+
-
 
+
-
    g_object_unref(G_OBJECT(proxy));
+
-
 
+
-
    /* Now wait for file sent signal, use low level bindings as glib  
+
-
      bindings require signal marshaller registered */
+
-
    sys_conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
+
-
    g_assert(dbus_connection_add_filter(sys_conn,
+
-
                                        file_sent_signal,
+
-
                                        NULL,
+
-
                                        NULL ));
+
-
    filter_string =
+
-
      g_strdup_printf ("type='signal',interface='%s'", CONBTDIALOGS_DBUS_INTERFACE);
+
-
 
+
-
    dbus_bus_add_match(sys_conn, filter_string, NULL);
+
-
    dbus_connection_unref(sys_conn);
+
-
 
+
-
    /* Run mainloop */
+
-
    g_main_loop_run(mainloop);
+
-
 
+
-
    return 0;
+
-
}
+
-
</source>
+
[[Category:Development]]
[[Category:Development]]
[[Category:Documentation]]
[[Category:Documentation]]
[[Category:Fremantle]]
[[Category:Fremantle]]

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)