Linus Walleij | e8c5464 | 2006-03-28 09:45:00 +0000 | [diff] [blame] | 1 | TODO file: |
| 2 | ---------- |
| 3 | |
Linus Walleij | 7f2c3e3 | 2007-08-04 18:11:38 +0000 | [diff] [blame^] | 4 | COMPATIBILITY fixes: |
| 5 | |
| 6 | 1. 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 | |
| 16 | 2. 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 Walleij | 0558ac5 | 2006-09-07 06:55:03 +0000 | [diff] [blame] | 20 | |
Linus Walleij | d5ad885 | 2006-11-30 23:17:31 +0000 | [diff] [blame] | 21 | SPEEDUP fixes: |
Linus Walleij | c374349 | 2006-09-04 17:37:19 +0000 | [diff] [blame] | 22 | |
Linus Walleij | f0bf437 | 2007-07-01 21:47:38 +0000 | [diff] [blame] | 23 | 1. SPEED: Cache the supported object properties at first read/startup. |
Linus Walleij | d5ad885 | 2006-11-30 23:17:31 +0000 | [diff] [blame] | 24 | 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 Walleij | 7f2c3e3 | 2007-08-04 18:11:38 +0000 | [diff] [blame^] | 29 | (THIS MAY BE DISCARDED, IT DOESN'T SEEM TO YIELD MUCH.) |
Linus Walleij | c374349 | 2006-09-04 17:37:19 +0000 | [diff] [blame] | 30 | |
Linus Walleij | d5ad885 | 2006-11-30 23:17:31 +0000 | [diff] [blame] | 31 | FEATURE fixes: |
| 32 | |
| 33 | 1. FEATURE: Make abstract playlists really become size -1 when created as |
Linus Walleij | fa4e979 | 2006-08-27 20:15:38 +0000 | [diff] [blame] | 34 | the ones created on the device instead of the current 1 byte size. |
Linus Walleij | d5ad885 | 2006-11-30 23:17:31 +0000 | [diff] [blame] | 35 | (Is this possible using enhanced commands? See TODO remarks in |
| 36 | the create_abstract_entity() function) |
Linus Walleij | fa4e979 | 2006-08-27 20:15:38 +0000 | [diff] [blame] | 37 | |
Linus Walleij | d5ad885 | 2006-11-30 23:17:31 +0000 | [diff] [blame] | 38 | 2. FEATURE: Support playback and volume setting on devices that have it. |
Linus Walleij | ee73ef2 | 2006-08-27 19:56:00 +0000 | [diff] [blame] | 39 | (I don't have one that does - Linus.) |
Linus Walleij | cf223e6 | 2006-06-19 09:31:53 +0000 | [diff] [blame] | 40 | |
tedbullock | edde60b | 2007-03-09 09:02:08 +0000 | [diff] [blame] | 41 | 3. FEATURE: Support relevant events. MTP devices seen in existance provide |
Linus Walleij | d5ad885 | 2006-11-30 23:17:31 +0000 | [diff] [blame] | 42 | events for "object added" and "object deleted". These should result in |
| 43 | atleast a call to the flus_handles() function. |
Linus Walleij | a29ed2a | 2007-02-25 22:01:37 +0000 | [diff] [blame] | 44 | |
tedbullock | edde60b | 2007-03-09 09:02:08 +0000 | [diff] [blame] | 45 | 4. FEATURE: Have libmtp optionally create a folder hierarchy such as |
Linus Walleij | a29ed2a | 2007-02-25 22:01:37 +0000 | [diff] [blame] | 46 | /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 | |
tedbullock | edde60b | 2007-03-09 09:02:08 +0000 | [diff] [blame] | 49 | 5. FEATURE: Integrate libmtp with HAL / D-Bus so applications can dynamically |
Linus Walleij | 7f2c3e3 | 2007-08-04 18:11:38 +0000 | [diff] [blame^] | 50 | know when a device has been plugged in or removed. Need a mechanism to |
| 51 | connect a specific hal UDI. |
tedbullock | edde60b | 2007-03-09 09:02:08 +0000 | [diff] [blame] | 52 | |
Linus Walleij | 7f2c3e3 | 2007-08-04 18:11:38 +0000 | [diff] [blame^] | 53 | 6. 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 | |
| 57 | 7. 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 Walleij | a29ed2a | 2007-02-25 22:01:37 +0000 | [diff] [blame] | 62 | |
Linus Walleij | 971914e | 2007-04-20 08:15:22 +0000 | [diff] [blame] | 63 | |
Linus Walleij | a29ed2a | 2007-02-25 22:01:37 +0000 | [diff] [blame] | 64 | THOSE ARE ALREADY DONE: |
| 65 | |
| 66 | 1. 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 Walleij | f0bf437 | 2007-07-01 21:47:38 +0000 | [diff] [blame] | 68 | |
| 69 | 2. 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 Walleij | 338ade4 | 2007-07-03 20:44:08 +0000 | [diff] [blame] | 76 | |
| 77 | 3. SPEED: Cache track metadata, file metadata etc in params->proplist. |
| 78 | |
tsaarni | a3eb60a | 2007-07-06 17:41:30 +0000 | [diff] [blame] | 79 | 4. 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. |