summaryrefslogtreecommitdiff
path: root/doc/client-api.txt
blob: 8621df8922eda4df73b8fb9dcbd50bde5fb114f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
OBEX client API description
***************************

Copyright (C) 2007-2010  Marcel Holtmann <marcel@holtmann.org>
Copyright (C) 2011-2012  BMW Car IT GmbH. All rights reserved.


Client hierarchy
================

Service		org.bluez.obex.client
Interface	org.bluez.obex.Client
Object path	/

Methods		object CreateSession(string destination, dict args)

			Create a new OBEX session for the given remote address.

			The last parameter is a dictionary to hold optional or
			type-specific parameters. Typical parameters that can
			be set in this dictionary include the following:

				string "Target" : type of session to be created
				string "Source" : local address to be used
				byte "Channel"

			The currently supported targets are the following:

				"FTP"
				"MAP"
				"OPP"
				"PBAP"
				"SYNC"

		void RemoveSession(object session)

			Unregister session and abort pending transfers.

Session hierarchy
=================

Service		org.bluez.obex.client
Interface	org.bluez.obex.Session
Object path	[variable prefix]/{session0,session1,...}

Methods		dict GetProperties()

			Returns all properties for the session.

		string GetCapabilities()

			Get remote device capabilities.

Properties	string Source [readonly]

		string Destination [readonly]

		byte Channel [readonly]

Object Push hierarchy
=====================

Service		org.bluez.obex.client
Interface	org.bluez.obex.ObjectPush
Object path	[variable prefix]/{session0,session1,...}

Methods		object, dict SendFile(string sourcefile)

			Send one local file to the remote device.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		object, dict PullBusinessCard(string targetfile)

			Request the business card from a remote device and
			store it in the local file.

			If an empty target file is given, a name will be
			automatically calculated for the temporary file.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		object, dict ExchangeBusinessCards(string clientfile,
							string targetfile)

			Push the client's business card to the remote device
			and then retrieve the remote business card and store
			it in a local file.

			If an empty target file is given, a name will be
			automatically calculated for the temporary file.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

File Transfer hierarchy
=======================

Service		org.bluez.obex.client
Interface	org.bluez.obex.FileTransfer
Object path	[variable prefix]/{session0,session1,...}

Methods		void ChangeFolder(string folder)

			Change the current folder of the remote device.

		void CreateFolder(string folder)

			Create a new folder in the remote device.

		array{dict} ListFolder()

			Returns a dictionary containing information about
			the current folder content.

			The following keys are defined:

				string Name : Object name in UTF-8 format
				string Type : Either "folder" or "file"
				uint64 Size : Object size or number of items in
						folder
				string Permission : Group, owner and other
							permission
				uint64 Modified : Last change
				uint64 Accessed : Last access
				uint64 Created : Creation date

		object, dict GetFile(string targetfile, string sourcefile)

			Copy the source file (from remote device) to the
			target file (on local filesystem).

			If an empty target file is given, a name will be
			automatically calculated for the temporary file.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		object, dict PutFile(string sourcefile, string targetfile)

			Copy the source file (from local filesystem) to the
			target file (on remote device).

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		void CopyFile(string sourcefile, string targetfile)

			Copy a file within the remote device from source file
			to target file.

		void MoveFile(string sourcefile, string targetfile)

			Move a file within the remote device from source file
			to the target file.

		void Delete(string file)

			Deletes the specified file/folder.

Phonebook Access hierarchy
=======================

Service		org.bluez.obex.client
Interface	org.bluez.obex.PhonebookAccess
Object path	[variable prefix]/{session0,session1,...}

Methods		void Select(string location, string phonebook)

			Select the phonebook object for other operations. Should
			be call before all the other operations.

			location : Where the phonebook is stored, possible
			inputs :
				"INT" ( "INTERNAL" which is default )
				"SIM" ( "SIM1" )
				"SIM2"
				...

			phonebook : Possible inputs :
				"pb" :	phonebook for the saved contacts
				"ich":	incoming call history
				"och":	outgoing call history
				"mch":	missing call history
				"cch":	combination of ich och mch

		object, dict PullAll(string targetfile)

			Return the entire phonebook object from the PSE server
			in plain string with vcard format, and store it in
			a local file.

			If an empty target file is given, a name will be
			automatically calculated for the temporary file.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		array{string vcard, string name} List()

			Return an array of vcard-listing data where every entry
			consists of a pair of strings containing the vcard
			handle and the contact name. For example:
				"1.vcf" : "John"

		object, dict Pull(string vcard, string targetfile)

			Given a vcard handle, retrieve the vcard in the current
			phonebook object and store it in a local file.

			If an empty target file is given, a name will be
			automatically calculated for the temporary file.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		array{string vcard, string name}
		Search(string field, string value)

			Search for entries matching the given condition and
			return an array of vcard-listing data where every entry
			consists of a pair of strings containing the vcard
			handle and the contact name.

			vcard : name paired string match the search condition.

			field : the field in the vcard to search with
				{ "name" (default) | "number" | "sound" }
			value : the string value to search for

		uint16 GetSize()

			Return the number of entries in the selected phonebook
			object that are actually used (i.e. indexes that
			correspond to non-NULL entries).

		void SetFormat(string format)

			Indicate the format of the vcard that should be return
			by related methods.

			format : { "vcard21" (default) | "vcard30" }

		void SetOrder(string order)

			Indicate the sorting method of the vcard-listing data
			returned by List and Search methods.

			order : { "indexed" (default) | "alphanumeric" |
					"phonetic" }

		void SetFilter(array{string})

			Indicate fields that should be contained in vcards
			return by related methods.

			Give an empty array will clear the filter and return
			all fields available in vcards. And this is the default
			behavior.

			Possible filter fields : "VERSION", "FN", ..., "ALL",
			"bit[0-63]"

		array{string} ListFilterFields()

			Return All Available fields that can be used in
			SetFilter method.

		array{string} GetFilter()

			Return the current filter setting

Synchronization hierarchy
=======================

Service		org.bluez.obex.client
Interface	org.bluez.obex.Synchronization
Object path	[variable prefix]/{session0,session1,...}

Methods		void SetLocation(string location)

			Set the phonebook object store location for other
			operations. Should be called before all the other
			operations.

			location: Where the phonebook is stored, possible
			values:
				"INT" ( "INTERNAL" which is default )
				"SIM1"
				"SIM2"
				......

		object, dict GetPhonebook(string targetfile)

			Retrieve an entire Phonebook Object store from remote
			device, and stores it in a local file.

			If an empty target file is given, a name will be
			automatically calculated for the temporary file.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

		object, dict PutPhonebook(string sourcefile)

			Send an entire Phonebook Object store to remote device.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

Message Access hierarchy
=========================

Service		org.bluez.obex.client
Interface	org.bluez.obex.MessageAccess
Object path	[variable prefix]/{session0,session1,...}

Methods		void SetFolder(string name)

			Set working directory for current session, *name* may
			be the directory name or '..[/dir]'.

		array{dict} GetFolderListing(dict filter)

			Returns a dictionary containing information about
			the current folder content.

			The following keys are defined:

				string Name : Folder name

		array{object, dict} GetMessageListing(string folder,
								dict filter)

			Returns an array containing the messages found in the
			given folder.

			Each message is represented by an object path followed
			by a dictionary of the properties.

			Properties:

				string Handle:

					Message handle

				string Subject:

					Message subject

				string Timestamp:

					Message timestamp

				string Sender:

					Message sender name

				string SenderAddress:

					Message sender address

				string ReplyTo:

					Message Reply-To address

				string Recipient:

					Message recipient name

				string RecipientAddress:

					Message recipient address

				string Type:

					Message type

					Possible values: "EMAIL", "SMS_GSM",
					"SMS_CDMA" and "MMS"

				uint64 Size:

					Message size in bytes

				string Status:

					Message reception status

					Possible values: "complete",
					"fractioned" and "notification"

				boolean Priority:

					Message priority flag

				boolean Read:

					Message read flag

				boolean Sent:

					Message sent flag

				boolean Protected:

					Message protected flag

Message hierarchy
=================

Service		org.bluez.obex.client
Interface	org.bluez.obex.Message
Object path	[variable prefix]/{session0,session1,...}/{message0,...}

Methods		object, dict Get(string targetfile)

			Download message and store it in the target file.

			If an empty target file is given, a temporary file
			will be automatically generated.

			The returned path represents the newly created transfer,
			which should be used to find out if the content has been
			successfully transferred or if the operation fails.

			The properties of this transfer are also returned along
			with the object path, to avoid a call to GetProperties.

Transfer hierarchy
==================

Service		org.bluez.obex.client
Interface	org.bluez.obex.Transfer
Object path	[variable prefix]/{transfer0,transfer1,...}

Methods		dict GetProperties()

			Returns all properties for the transfer. See the
			properties section for available properties.

		void Cancel()

			Cancels this transfer.

Properties	string Name [readonly]

			Name of the transferred object.

		uint64 Size [readonly]

			Size of the transferred object. If the size is
			unknown, then this property will not be present.

		string Filename [readonly, optional]

			Complete name of the file being received or sent.

		uint64 Progress [readonly, optional]

			Number of bytes transferred. For queued transfers, this
			value will not be present.

Signals		PropertyChanged(string name, variant value)

			This signal indicates a changed value of the given
			property.

		void Complete()

			Informs that the transfer has completed successfully.

		void Error(string code, string message)

			Informs that the transfer has been terminated because
			of some error.