Basic Imaging Profile (GSOC 2008)

This is page for GSOC 2008 project "Extend obex-data-server with BIP support".

Project goal is to implement partial Basic Imaging Profile support in obex-data-server. The actual parts of profile to be implemented: Image Push (initiator and responder) and Remote Display (initiator and responder).

The newest code resides in obex-data-server subversion repository (trunk): svn://muiline.com/obex-data-server/trunk (browse)

Implementation details and current status (Image Push and Remote Display features)

Handling of additional SDP record attributes for BIP (DONE)
src/ods-bluez.c

BIP functions

PutImage (client-side DONE)
PutLinkedThumbnail (client-side DONE)
PutLinkedAttachment (client-side DONE)
RemoteDisplay (client-side DONE)

src/ods-obex.c

BIP descriptors Image-Descriptor, Attachment-Descriptor (DONE)
src/ods-imaging-helpers.c

Acquiring image information (width, height, etc.) and image resizing (DONE)
src/ods-imaging-helpers.c (Implemented using ImageMagick?. TODO: need to pull in threading support and make all this optional)

Imaging capabilities XML object
Capabilities object will not be parsed when using Initiator mode, as Responder, obex-data-server will use static configuration file and serve that as Imaging capabilities object.

GObjects used in obex-data-server
Currently there are OdsSession?, OdsServer? and OdsServerSession? objects. Since BIP can reuse a lot of code from these objects, the best way is to just add BIP functionality to existing objects instead of creating new ones.

DBus API draft
Manager object:

CreateBluetoothImagingSession (string target_address, string source_address, string bip_feature)

Session object:

string  GetImagingCapabilities ()
void  PutImage (string file)
void  PutImageResized (string file, string pixels, string transformation)
void  PutLinkedAttachment (string image_handle, string file, string content_type)
void  RemoteDisplaySelectImage (string image_handle)
void  RemoteDisplayShowCurrentImage ()
void  RemoteDisplayShowNextImage ()
void  RemoteDisplayShowPreviousImage ()

Signals:
ImageHandleReceived(string image_handle)

ServerSession?:

Signals:
RemoteDisplayRequested (string image_file)