From: Thierry Pierret <tpi@qspin.be>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: "linux-bluetooth@vger.kernel.org" <linux-bluetooth@vger.kernel.org>
Subject: Re: Obexd 0.8 : pull failure
Date: Mon, 2 Feb 2009 11:08:00 +0100 [thread overview]
Message-ID: <e6fea9c20902020208m34199fcey8d7ed2fe6f17c365@mail.gmail.com> (raw)
In-Reply-To: <1233507649.4809.12.camel@californication>
[-- Attachment #1: Type: text/plain, Size: 1709 bytes --]
Hi Marcel,
Here is the way I proceed :
- start the bluetooth daemon (bluetoothd -nd &)
- start a session D-bus and update the environment by exporting the
DBUS variables
- start the obex-client daemon (/usr/libexec/obex-client &)
To pull a business card, I use a C application, i.e. translation of
the python "pull-business-card" script (I did not succeed yet to
cross-compile the dbus-python package for the iMX31 platform). I
attached the source code as information.
Herre is the full output of the application :
$ puller 00:0E:ED:01:DB:67 /var/obex.pull.vcf
Obex puller : session bus connected
Obex puller : message created
Obex puller : message sent
Obex puller : disconnected
At this time, the mobile (Nokia 6810) asks whether data from the
target may be accepted. As soon as the mobile has accepted, the
following error appears on the OBEX client side :
bluetoothd[1773]: adapter_get_device(00:0E:ED:01:DB:67)
gw_obex_xfer_read(): Not found
Looking in the source code (client/session.c and openobex 1.3), one
can note that an OBEX_RSP_NOT_FOUND (0x44) response has been received.
Here is the point I'm blocked. I don't know in which direction
investigate !? I don't know what additional info can be given !?
Thanks in advance for your help.
Regards.
Thierry
2009/2/1 Marcel Holtmann <marcel@holtmann.org>:
> Hi Thierry,
>
>> Any attempt to pull a business card using the OBEX protocol failed
>> with the following message :
>>
>> bluetoothd[1844]: adapter_get_device(00:0E:ED:01:DB:67)
>> gw_obex_xfer_read(): Not found
>>
>> What does it mean ? What could be wrong ?
>>
>> Tested with BlueZ 4.26.
>
> we would need more details and log outputs to analyze this.
>
> Regards
>
> Marcel
>
>
>
[-- Attachment #2: puller.c --]
[-- Type: text/x-c, Size: 3213 bytes --]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dbus/dbus.h>
#ifndef TRUE
#define TRUE 0x01
#endif
/* Private calls ------------------------------------------------ */
static usage(FILE * stream, char * command)
{
fprintf(stream, "Usage : %s <remote address> <file_name>\n", command);
}
static void display_error(DBusError *perr, const char * message)
{
if (dbus_error_is_set(perr) == TRUE) {
fprintf(stderr, "%s : %s\n",message, perr->message);
dbus_error_free(perr);
} else
fprintf(stderr, "%s\n", message);
}
/* The main ---------------------------------------------------- */
int main(int argc, char *argv[])
{
DBusConnection *conn;
DBusError err;
DBusMessage * msg, * reply;
DBusMessageIter iter, dict, entry, value;
char * address, * file;
int ret = 0;
unsigned int serial;
if (argc != 3) {
fprintf(stderr, "Invalid parameters count !\n");
usage(stderr, argv[0]);
exit(EXIT_FAILURE);
}
address = argv[1];
file = argv[2];
dbus_error_init(&err);
/* Connect the session bus */
conn = dbus_bus_get(DBUS_BUS_SESSION, &err);
if (conn == NULL) {
display_error(&err, "Cannot connect session bus");
exit(EXIT_FAILURE);
}
else
printf("Obex puller : session bus connected\n");
/* Create the message to be sent */
msg = dbus_message_new_method_call("org.openobex.client", "/",
"org.openobex.Client", "PullBusinessCard");
if ( !msg ) {
fprintf(stderr, "Cannot allocate call method PullBusinessCard\n");
dbus_connection_unref(conn);
exit(EXIT_FAILURE);
}
dbus_message_iter_init_append(msg, &iter);
/* Add the destination argument */
dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY,
NULL, &entry);
char * key = "Destination";
dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
char sig[2] = { DBUS_TYPE_STRING, '\0' };
dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, sig, &value);
dbus_message_iter_append_basic(&value, DBUS_TYPE_STRING, &address);
dbus_message_iter_close_container(&entry, &value);
dbus_message_iter_close_container(&dict, &entry);
dbus_message_iter_close_container(&iter, &dict);
/* Add the file argument */
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &file);
printf("Obex puller : message created\n");
/* Send the message */
if ( !dbus_connection_send(conn, msg, &serial) ) {
fprintf(stderr, "Cannot send the message (serial=%u)\n", serial);
dbus_message_unref(msg);
dbus_connection_unref(conn);
ret = EXIT_FAILURE;
}
#if 0
if ((reply = dbus_connection_send_with_reply_and_block(conn, msg, 60000, &err)) == NULL) {
display_error(&err, "Cannot send the message !");
ret = EXIT_FAILURE;
}
#endif
else
printf("Obex puller : message sent\n");
dbus_message_unref(msg);
dbus_connection_flush(conn);
/* Disconnect */
dbus_connection_unref(conn);
printf("Obex puller : disconnected\n");
return ret;
}
prev parent reply other threads:[~2009-02-02 10:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-27 14:34 Obexd 0.8 : pull failure Thierry Pierret
2009-02-01 17:00 ` Marcel Holtmann
2009-02-02 10:08 ` Thierry Pierret [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e6fea9c20902020208m34199fcey8d7ed2fe6f17c365@mail.gmail.com \
--to=tpi@qspin.be \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcel@holtmann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox