blob: 0e5c723a31293b76049997265542ac6a5d8eb9b1 [file] [log] [blame]
Linus Walleije8c54642006-03-28 09:45:00 +00001TODO file:
2----------
3
Linus Walleij7f2c3e32007-08-04 18:11:38 +00004COMPATIBILITY fixes:
5
61. COMPATIBILITY: dual-mode devices, i.e. devices exposing both an MTP
7 and a USB Mass Storage Device Class (flashdrive) interface are and
8 have always been problematic. We must find a way to get this to work,
9 eventually. The problem is that the in-kernel mass storage driver hogs
10 the device before the MTP mode gets a chance of being used, whereas
11 the Windows kernel driver apparently does it the other way around,
12 trying the MTP mode first and then not fall back on mass storage if
13 MTP is available. (For some more explanations se src/libusb-glue.h.)
14 This may involve kernel modifications.
15
162. COMPATIBILITY: several devices tend to "hang" after disconnect,
17 needing to be unplugged and replugged before they can be used again.
18 We don't know why, it may be related to low-level USB behaviour that
19 is not exposed in the logs we read.
Linus Walleij0558ac52006-09-07 06:55:03 +000020
Linus Walleijd5ad8852006-11-30 23:17:31 +000021SPEEDUP fixes:
Linus Walleijc3743492006-09-04 17:37:19 +000022
Linus Walleijf0bf4372007-07-01 21:47:38 +0000231. SPEED: Cache the supported object properties at first read/startup.
Linus Walleijd5ad8852006-11-30 23:17:31 +000024 then use the cache to check for supported props instead of calling
25 out to PTP with ptp_mtp_getobjectpropssupported() every time.
26 The cache would be an array of size params->deviceinfo.ImageFormats_len
27 with a list for each format of the properties it will support. Notice
28 that this needs to be updated whenever flush_handles() is called too.
Linus Walleij7f2c3e32007-08-04 18:11:38 +000029 (THIS MAY BE DISCARDED, IT DOESN'T SEEM TO YIELD MUCH.)
Linus Walleijc3743492006-09-04 17:37:19 +000030
Linus Walleijd5ad8852006-11-30 23:17:31 +000031FEATURE fixes:
32
331. FEATURE: Make abstract playlists really become size -1 when created as
Linus Walleijfa4e9792006-08-27 20:15:38 +000034 the ones created on the device instead of the current 1 byte size.
Linus Walleijd5ad8852006-11-30 23:17:31 +000035 (Is this possible using enhanced commands? See TODO remarks in
36 the create_abstract_entity() function)
Linus Walleijfa4e9792006-08-27 20:15:38 +000037
Linus Walleijd5ad8852006-11-30 23:17:31 +0000382. FEATURE: Support playback and volume setting on devices that have it.
Linus Walleijee73ef22006-08-27 19:56:00 +000039 (I don't have one that does - Linus.)
Linus Walleijcf223e62006-06-19 09:31:53 +000040
tedbullockedde60b2007-03-09 09:02:08 +0000413. FEATURE: Support relevant events. MTP devices seen in existance provide
Linus Walleijd5ad8852006-11-30 23:17:31 +000042 events for "object added" and "object deleted". These should result in
43 atleast a call to the flus_handles() function.
Linus Walleija29ed2a2007-02-25 22:01:37 +000044
tedbullockedde60b2007-03-09 09:02:08 +0000454. FEATURE: Have libmtp optionally create a folder hierarchy such as
Linus Walleija29ed2a2007-02-25 22:01:37 +000046 /Album/Artist/Song.mp3 on the device. Currently it'll only put songs
47 into some /Music or /My Music folder if one exists.
48
tedbullockedde60b2007-03-09 09:02:08 +0000495. FEATURE: Integrate libmtp with HAL / D-Bus so applications can dynamically
Linus Walleij7f2c3e32007-08-04 18:11:38 +000050 know when a device has been plugged in or removed. Need a mechanism to
51 connect a specific hal UDI.
tedbullockedde60b2007-03-09 09:02:08 +000052
Linus Walleij7f2c3e32007-08-04 18:11:38 +0000536. FEATURE: Mechanism to retrieve the device icon device property, else if not
54 present, look for DevIcon.fil (Windows ICO format) and
55 DevLogo.fil (PNG Format) images from the device (if available).
56
577. FEATURE: Shared device access so that multiple client applications can have
58 an open connection to the device at the same time via a handle. For example,
59 it should be somehow possible to run mtp-detect at the same time as amarok or
60 mtpfs is connected to a device. This would require some form of resource
61 sharing.
Linus Walleija29ed2a2007-02-25 22:01:37 +000062
Linus Walleij971914e2007-04-20 08:15:22 +000063
Linus Walleija29ed2a2007-02-25 22:01:37 +000064THOSE ARE ALREADY DONE:
65
661. FEATURE: Make an API that can return several devices and let the user
67 choose which one to operate, not just connect to the first one...
Linus Walleijf0bf4372007-07-01 21:47:38 +000068
692. SPEED: Cache the object info for all items on the device.
70 Right now, ptp_getobjectinfo() is called repeatedly on the same
71 objects during startup, track listing, file listing, playlist listing,
72 album listing and whatever we implement tomorrow. A lot of useless
73 communication can be saved by cacheing this info. Notice that this
74 needs to be updated whenever flush_handles() is called too.
75 (This came from libgphoto2 implementing it!)
Linus Walleij338ade42007-07-03 20:44:08 +000076
773. SPEED: Cache track metadata, file metadata etc in params->proplist.
78
tsaarnia3eb60a2007-07-06 17:41:30 +0000794. SPEED: Whenever we add an object (file, track, playlist...) we
80 should only need to update the cache with relevant data. Atleast for
81 speedup caches.