#include <dbus/dbus-glib.h>
#include <stdio.h>
#include <stdlib.h>
#include "sms_features.h"

static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF
(1, 2);
static void lose_gerror (const char *prefix, GError *error)
G_GNUC_NORETURN;

static void release_val(gpointer data)
{
        GValue *val = (GValue *)data;
        g_value_unset(val);
        g_free(val);
}

GType sms_get_features_type(void)
{
        return dbus_g_type_get_map("GHashTable", G_TYPE_STRING,
G_TYPE_VALUE);
}

GHashTable *sms_create_features(const char * alphabet, int csm_num,
int csm_seq)
{
        GHashTable *hash;
        GValue *val;

        hash = g_hash_table_new_full  (g_str_hash, NULL, NULL, release_val);

        val = g_new0(GValue, 1);
        g_value_init (val, G_TYPE_STRING);
        g_value_set_string (val, alphabet);
        g_hash_table_insert(hash, "alphabet", val);

        val = g_new0(GValue, 1);
        g_value_init (val, G_TYPE_INT);
        g_value_set_int (val, csm_num);
        g_hash_table_insert(hash, "csm_num", val);

        val = g_new0(GValue, 1);
        g_value_init (val, G_TYPE_INT);
        g_value_set_int (val, csm_seq);
        g_hash_table_insert(hash, "csm_seq", val);

        return hash;
}



static void
lose (const char *str, ...)
{
  va_list args;

  va_start (args, str);

  vfprintf (stderr, str, args);
  fputc ('\n', stderr);

  va_end (args);

  exit (1);
}

static void
lose_gerror (const char *prefix, GError *error)
{
  lose ("%s: %s", prefix, error->message);
}

static void
print_hash_value (gpointer key, gpointer val, gpointer data)
{
  printf ("%s -> %s\n", (char *) key, (char *) val);
}

int
main (int argc, char **argv)
{
  DBusGConnection *bus;
  DBusGProxy *remote_object;
  DBusGProxy *remote_object_introspectable;
  GError *error = NULL;
  char *introspect_data;
  guint i;
  gint sum;

  g_type_init ();

  {
    GLogLevelFlags fatal_mask;

    fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
    fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
    g_log_set_always_fatal (fatal_mask);
  }

  bus = dbus_g_bus_get (/*DBUS_BUS_SYSTEM*/DBUS_BUS_SESSION, &error);
  if (!bus)
    lose_gerror ("Couldn't connect to session bus", error);

  remote_object = dbus_g_proxy_new_for_name (bus,
                                             "org.openobex.client",
                                             "/",
                                             "org.openobex.Client");


  GHashTable *features;

  features = sms_create_features ("Destination", 3, 6);


  if (!dbus_g_proxy_call (remote_object, "SendFiles", &error,
                          sms_get_features_type(), features, G_TYPE_STRV, argv,
DBUS_TYPE_G_OBJECT_PATH, "/", G_TYPE_INVALID,
                          G_TYPE_INVALID))
    lose_gerror ("Failed to call Add", error);
  printf("sum is %d\n", sum);


  g_free (introspect_data);

  g_object_unref (G_OBJECT (remote_object_introspectable));
  g_object_unref (G_OBJECT (remote_object));

  exit(0);
}
when I run it:
[...@localhost src]$ ./example-client 00:13:E0:06:01:C1 /home/lm/
download/hello-dbus3-0.1/src/example-client.c
Failed to call Add:

The error value is NULL,but the dbus_g_proxy_call() return 0. I don't
know how to deal this problem. Is there someone know this? thanks.

the sendfiles method define in obexd like this:
{ "SendFiles", "a{sv}aso", "", send_files,
                                                G_DBUS_METHOD_FLAG_ASYNC },

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to