2012-05-21 11:54:06

by Michał Poczwardowski

[permalink] [raw]
Subject: GSoC: OBEX Filesystem In Userspace

Hello BlueZ Community,

GSoC coding period started today. Using this thread I will write about
project progress during summer.

Initially prepared project repository could be found here:
https://github.com/dmp0x7c5/gobexfuse

We decided to use "gobexfuse" as a project's name :)

Thanks,
Michal


2012-05-21 16:13:45

by Vinicius Costa Gomes

[permalink] [raw]
Subject: Re: GSoC: OBEX Filesystem In Userspace

Hi Luiz,

On Mon, May 21, 2012 at 9:44 AM, Luiz Augusto von Dentz
<[email protected]> wrote:
> Hi Michal,
>
> On Mon, May 21, 2012 at 2:54 PM, dmp <[email protected]> wrote:
>> Hello BlueZ Community,
>>
>> GSoC coding period started today. Using this thread I will write about
>> project progress during summer.
>>
>> Initially prepared project repository could be found here:
>> https://github.com/dmp0x7c5/gobexfuse
>>
>> We decided to use "gobexfuse" as a project's name :)
>
> I thought this could be part of obexd repository, or this is just a
> clone? At least it doesn't look like a close which would mean you
> would have to copy gobex which IMO is a bad idea.

Makes sense, we can have this project inside obexd, and just enable it when
fuse is available in the system. And this makes it easier in case we need to
extend gobex.

>
> --
> Luiz Augusto von Dentz


Cheers,
--
Vinicius

2012-05-21 12:44:40

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: GSoC: OBEX Filesystem In Userspace

Hi Michal,

On Mon, May 21, 2012 at 2:54 PM, dmp <[email protected]> wrote:
> Hello BlueZ Community,
>
> GSoC coding period started today. Using this thread I will write about
> project progress during summer.
>
> Initially prepared project repository could be found here:
> https://github.com/dmp0x7c5/gobexfuse
>
> We decided to use "gobexfuse" as a project's name :)

I thought this could be part of obexd repository, or this is just a
clone? At least it doesn't look like a close which would mean you
would have to copy gobex which IMO is a bad idea.

--
Luiz Augusto von Dentz

2012-06-26 01:12:47

by Michał Poczwardowski

[permalink] [raw]
Subject: Re: GSoC: OBEX Filesystem In Userspace

Hello BlueZ Community,

During past GSoC weeks I did research on gobex library and developed
pieces of code useful for project. I've created special branch called
"playground" in my repository to do code examples.

Obexd code was extremely helpful, especially the client part. Thanks
to all examples from obexd source I produced some kind of middle layer
between g_obex_ and fuse code, I put it inside helpers.c[1].
Currently, I'm focused on folder listing, which looks the most
comlicated. Using mentioned helpers I was able to get file list inside
fuse driver. It's implemented in fusetest.c[2] and It was a really
great moment to see the very first "ls" command on gobex filesystem
that lists files from root directory at my phone :)

Some aspects was more complicated than I expected. For example
ListFolder operation couldn't be done using "higher-level" gobex
operations, it requires to create new request and add special phrase
"x-obex/folder-listing" to header. I had also strange problem with my
HTC phone, it was refusing every first connection after sdp scan. My
older Sony Ericsson hasn't got such issue. As Vinicius suggested I've
updated my kernel and it started working properly :)

I'm really happy to code for BlueZ. I'll keep on developing. As a side
note I'm really surprised by glib, this is my first project using it
and it really helps to "Write in C"[3].

[1] https://github.com/dmp0x7c5/gobexfuse/blob/playground/fuse/helpers.c
[2] https://github.com/dmp0x7c5/gobexfuse/blob/playground/fuse/fusetest.c
[3] http://youtu.be/XHosLhPEN3k

Thanks,
Michal

2012-08-20 07:17:10

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: GSoC: OBEX Filesystem In Userspace

Hi Michal,

On Sat, Aug 18, 2012 at 7:52 PM, dmp <[email protected]> wrote:
> Hello BlueZ Community,
>
> After Summer of Code we are reaching firm 'pencils down' date.
>
> Taking sentence from project's proposal: "Creating project using gobex
> will prove that library used by obexd has all the capabilities that
> open-obex has". I could definitely agree that gobex+glib based fuse
> filesystem - could replace obexfs. Prepared gobexfuse allows to
> listfolder, get, put, delete, mkdirs and move/copy files. From the
> user's point of view mounted gobexfuse behaves like local filesystem,
> just access time to larger files is noticeably slower due to bluetooth
> transfer.
>
> I've prepared (mentioned in previous e-mail) helpers middle layer
> between fuse and gobex operations. All functions declared by helpers.h
> could be easily used to write tool like obexftp (from openobex
> implementation). One think that I couldn't get tested (it's
> implemented) is rename operation (executed by g_obex_move).
> Unfortunately neither of my bluetooth devices supports this operation
> with their FTP profiles.

You can try against obexd, it does support move and copy action commands.


--
Luiz Augusto von Dentz

2012-08-18 16:52:23

by Michał Poczwardowski

[permalink] [raw]
Subject: Re: GSoC: OBEX Filesystem In Userspace

Hello BlueZ Community,

After Summer of Code we are reaching firm 'pencils down' date.

Taking sentence from project's proposal: "Creating project using gobex
will prove that library used by obexd has all the capabilities that
open-obex has". I could definitely agree that gobex+glib based fuse
filesystem - could replace obexfs. Prepared gobexfuse allows to
listfolder, get, put, delete, mkdirs and move/copy files. From the
user's point of view mounted gobexfuse behaves like local filesystem,
just access time to larger files is noticeably slower due to bluetooth
transfer.

I've prepared (mentioned in previous e-mail) helpers middle layer
between fuse and gobex operations. All functions declared by helpers.h
could be easily used to write tool like obexftp (from openobex
implementation). One think that I couldn't get tested (it's
implemented) is rename operation (executed by g_obex_move).
Unfortunately neither of my bluetooth devices supports this operation
with their FTP profiles.

Currently, with help from Vinicius code should be adopted to be in a
reviewable state and then we could think about integration with obexd
upstream.

Thanks,
Michal