Commit graph

44 commits

Author SHA1 Message Date
Dominik Riebeling
731c5db875 rbutil: Fix autodetection messing up with multiple players.
When multiple players are connected, and at least one of them has a USB
ID that is shared between multiple targets the resulting list would be
off. Fix that by avoiding to modify a list while iterating over it,
that's usually not a good idea.

Change-Id: I0c1fc5e1a3264f269de2d71c3a7f2b82877636ba
2020-12-05 19:11:18 +01:00
Dominik Riebeling
82b53ebf54 rbutil: Merge finding player by USB ID with PlayerBuildInfo.
Remaining rework of player info data handling.

Change-Id: I0e10cdff43e0c9fef43b3b9a30af81f1cd7c4853
2020-12-05 19:11:18 +01:00
Dominik Riebeling
b064a6cbb5 rbutil: Rework and merge player and build server info handling.
Handling the data for players from rbutil.ini and the build-info data
from the server is closely related. Splitting things up into different
classes only creates tightly coupling, which is unnecessary, and the
need to differentiate between them in the application.

Merge both classes into a single one and rework handling so the
application doesn't have to deal with two separate classes anymore.

Furthermore, change URL templates to use new values from build-info
instead of hard coding them.

Change-Id: Ica550973ce23d1559110782add52bc214eba552d
2020-12-03 22:25:12 +01:00
Dominik Riebeling
12764781c6 rbutil: Modernize code to use C++11 nullptr.
Change-Id: I112cf95122a896cdb30a823b4c1f49831273dc7e
2020-11-19 21:32:41 +01:00
Dominik Riebeling
be1be797b2 rbutil: Rework player configuration.
Rename config entries and remove now unnecessary default value handling.

Change-Id: I5c60ef9769fc01f45f45290dafffb80c1962e674
2020-11-14 16:42:29 +01:00
Dominik Riebeling
2509def164 rbutil: Rework player configuration.
- Split internal configuration into player specific and common parts.
  Always require passing the player for player specific data instead of
  implicitly assuming the currently selected one; only use the currently
  selected one if the player name is explicitly passed as empty.
- Similarly adjust handling of server info data; prepare for splitting
  into build type specific values so the naming becomes cleaner.

Change-Id: I894e694f83bd9fe2d22ad46b3f8f7df3e2c68033
2020-11-14 16:42:29 +01:00
Dominik Riebeling
896b771710 Fix crash when detecting a player in MTP mode.
Change-Id: I65bf6928584735d6a179750c313fb8e7dcf7add5
2014-05-24 22:57:25 +02:00
Dominik Riebeling
4d2ce949b3 Use cutelogger for Rockbox Utility internal trace.
Change tracing from qDebug() to use cutelogger, which is available under the
LGPL2.1. This allows to automatically add filename and line number to the log,
and also provides multiple log levels.

Change-Id: I5dbdaf902ba54ea99f07ae10a07467c52fdac910
2013-11-04 23:32:52 +01:00
Dominik Riebeling
1977281bb3 Use function for updating detected device entry.
Use a function instead of looking for an existing entry and creating a new one
if necessary every time.

Change-Id: I7b385dad7366f27370545a7d1a9f7052510cca11
2013-09-30 23:42:21 +02:00
Dominik Riebeling
b943c59f35 Rework autodetection to better handle ambiguous cases.
The old detection code simply assumed only one player to be connected and threw
all information it could find together, causing wrong results in various cases.
Rewrite it to better handle this.

- Don't expect only a single player to be attached. Return a list of players
  found instead. The configuration dialog can then show the user a list to
  select from. This is not implemented yet, the configuration dialog will only
  show the devices found and tell the user to disconnect all but one.

- Handle ambiguous cases better. A player found that is ambiguous is treated as
  such, and if refining the result didn't lead to a single match for each
  possible player a single entry is created that indicates it being ambiguous.

The current code needs a bit of additional cleanup (the result exposes internal
data to the caller it shouldn't) to be done later.

Change-Id: I22dc2f73cdd6a9d90c34f3a0703aa9e0a2d2087a
2013-09-18 23:37:39 +02:00
Dominik Riebeling
e30b3d84e8 Change autodetection result to a list.
Both autodetection functionality and the configuration dialog assumed detection
to only return one found device. This isn't necessarily true, especially since
some players can be detected but detecting their mountpoint might be ambiguous
(only if no previous Rockbox installation is present).

Instead of returning individual results (found "ok" player, found "error"
player etc.) return a list containing an entry for each player. Current
autodetection code will never return more than one entry since it doesn't
handle multiple devices yet, and the configuration dialog will show an error if
multiple devices are found. Thus there is no user visible change yet. Both
autodetection and configuration dialog can now get extended to handle multiple
devices.

Change-Id: I79b763dbd6e7111783194bcc22ab7cc06a4061c1
2013-04-09 22:39:13 +02:00
Dominik Riebeling
5ce21366d7 Extend Utils::mountpoints() to allow filtering for supported types.
Instead of trying every mountpoint during autodetection allow filtering out
filesystems that are not supported when retrieving the system mountpoints.

Change-Id: Ic23a5c804cb7c78c146dbc1af7443c67ce12464e
2013-04-04 22:42:22 +02:00
Dominik Riebeling
163ab46170 Provide dealloc function to sansapatcher.
Similar as done with ipodpatcher provide a function to free the allocated
sector buffer.

Change-Id: Ie51e82f7191496bb48973148af1cc35cd37993d3
2013-01-01 15:06:41 +01:00
Dominik Riebeling
b63d429c8f Provide dealloc function to ipodpatcher.
On Windows the sector buffer is allocated using VirtualAlloc, thus releasing
this buffer should be done using VirtualFree. Provide an additional function
for deallocating the buffer so users of ipodpatcher do not need to know about
this.

Change-Id: Ibb0fc575a185148a389e63935e86a392bf8d180d
2013-01-01 15:06:41 +01:00
Dominik Riebeling
9c1ed84d28 sansapatcher: move sectorbuf pointer into sansa_t structure.
Similar as the ipod_t structure for ipodpatcher the sansa_t structure holds all
relevant information for sansapatcher. Put the global sansa_sectorbuf pointer
into it as well.

Change-Id: Iad08ef6aafc49609c3d0d556914246f230ee0179
2013-01-01 15:06:34 +01:00
Dominik Riebeling
24e37ddf57 ipodpatcher: move sectorbuf pointer into ipod_t structure.
The ipod_t structure holds all relevant information for ipodpatcher. Put the
global ipod_sectorbuf pointer into it as well. Allows the Rockbox Utility Ipod
class to be instanciated multiple times since each instance can now have its
own buffer.

Change-Id: Ie319cbadbc20c367ceadba9a46b4dc34b57a79a7
2013-01-01 15:05:52 +01:00
Dominik Riebeling
c659f9979a Allow USB IDs to be non-unique.
When retrieving USB IDs create a list of players matching to a USB ID instead
of assuming only one player.  This prevents non-unique IDs overwriting each
other and will be used for improved autodetection later.

Currently only the first ID is used during detection, and no additional IDs
have been added yet.

Change-Id: Ieac5594108bae708e364bd2c8df88f61fcdcbdcd
2012-10-06 13:53:09 +02:00
Dominik Riebeling
7263ccb105 Remove svn keyword lines from sources.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30806 a1c6a512-1295-4272-9138-f99709370657
2011-10-19 20:51:16 +00:00
Dominik Riebeling
9c9bc1216c Move some helper functions out of Autodetection.
Those functions are rather general, so put them into the Utils class instead.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30146 a1c6a512-1295-4272-9138-f99709370657
2011-07-17 08:08:58 +00:00
Dominik Riebeling
0110e558de Remove Ipod Video 64MB handling.
Since the builds for the Ipod Video 32MB and 64MB are now unified there
is no need to handle them separately in Rockbox Utility anymore.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27966 a1c6a512-1295-4272-9138-f99709370657
2010-09-01 17:47:33 +00:00
Dominik Riebeling
34e60dde60 Handle device name resolving failures.
Improve tracing of device name resolving. Explicitly fail if resolving the
device name from the mountpoint failed during ipod / sansa bootloader
installation. Fixes bootloader installation trying to use an empty device name
in some cases which can happen if the mountpoint to get resolved uses an
incompatible file system.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25743 a1c6a512-1295-4272-9138-f99709370657
2010-04-27 21:43:14 +00:00
Dominik Riebeling
5185d9e30a Log failures in mountpoint resolving, log filesystem formats in mountpoints().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25718 a1c6a512-1295-4272-9138-f99709370657
2010-04-25 21:22:36 +00:00
Dominik Riebeling
9fedc8187f Move utils.cpp functions into separate class and split it up.
Move class-less functions in utils.cpp into a new Utils class and make the old
functions static. This prevents clashes with system C functions. Rename some
functions to avoid macro problems (check() is a macro on OS X). Split out the
RockboxInfo class into a separate file.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25441 a1c6a512-1295-4272-9138-f99709370657
2010-04-02 21:24:19 +00:00
Dominik Riebeling
dd0a571c49 Use the data partition device node when trying to resolve the mountpoint.
The stricter matching for device nodes introduced with r24802 broke resolving
the mountpoint during autodetection as sansapatcher and ipodpatcher return the
device node of the player instead of its data partition.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24936 a1c6a512-1295-4272-9138-f99709370657
2010-02-27 11:27:13 +00:00
Dominik Riebeling
b1cc087a67 Be more strict when when resolving devices and allow hfs too.
On OS X HFS is a valid filesystem on an Ipod. When resolving device node to
mountpoints and vice versa also check mounts of hfs partitions. This results in
trying to install the bootloader on a MacPod to show the (intended) MacPod
warning instead of failing with a "could not open ipod" error because no valid
device node could be retrieved. Also, be more strict on matching to prevent
problems with one name being a subset of another.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24802 a1c6a512-1295-4272-9138-f99709370657
2010-02-20 22:46:58 +00:00
Dominik Riebeling
7f33b7d9fa Recognize and handle MacPods during autodetection.
Previously MacPods were detected but the mountpoint can't get resolved due to
the different partition layout, thus having a MacPod would only detect the Ipod
itself but not the mountpoint. Rockbox does not support MacPods, so inform the
user as soon as possible.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24799 a1c6a512-1295-4272-9138-f99709370657
2010-02-20 22:11:11 +00:00
Dominik Wenger
6128bd14e9 rbutil: split RbSettings. use Stable/unstable status from server.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24331 a1c6a512-1295-4272-9138-f99709370657
2010-01-24 21:12:11 +00:00
Dominik Riebeling
bd62c853d4 Fix Ipod Video 64MB workaround for rockbox-info.txt detection.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24013 a1c6a512-1295-4272-9138-f99709370657
2009-12-15 21:10:32 +00:00
Dominik Riebeling
38dde55c27 FS#10100: Wait for the system to remount the player after bootloader installation.
OS X requires to unmount the player during bootloader installation on Sansas / Ipods. The system remounts the player automatically after a short while.
Not waiting for the system to remount the player will result in a changed mount point, making the small / full install write the main build to the wrong
 location.
This currently waits up to 60 seconds for the player to get remounted until it errors out. This value seems to be sufficient, if it's not please report
so we can adjust it. Also, the waiting can't be interrupted right now.



git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23716 a1c6a512-1295-4272-9138-f99709370657
2009-11-22 22:13:25 +00:00
Dominik Riebeling
48df607faa Fix stupid combination of CnP error and typo.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23703 a1c6a512-1295-4272-9138-f99709370657
2009-11-22 14:41:00 +00:00
Dominik Riebeling
de37ce51ed OS X uses msdos as filesystem for vfat which is the same OpenBSD does. Fixes mountpoint resolving.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23701 a1c6a512-1295-4272-9138-f99709370657
2009-11-22 14:29:22 +00:00
Dominik Riebeling
b9a17dd0ce Add special handling for ipodvideo64mb when detecting the player via rockbox-info.txt.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22831 a1c6a512-1295-4272-9138-f99709370657
2009-09-25 15:26:59 +00:00
Dominik Riebeling
76100783af Improve notification about unsupported players.
- Display the name of a detected unsupported player when running autodetection from the configuration window.
- Extend the list of known-unsupported players.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22334 a1c6a512-1295-4272-9138-f99709370657
2009-08-15 21:29:31 +00:00
Dominik Riebeling
e2f5086916 Clean up and rename Detect class.
Move check() function out of the Detect class and place it into utils.cpp for now. Rename Detect class to System, as it now only retrieves data about the underlying system and doesn't detect anything anymore. Cleans up with the confusion between Detect and Autodetection.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22238 a1c6a512-1295-4272-9138-f99709370657
2009-08-10 19:46:51 +00:00
Dominik Riebeling
84ced00bbd Simplify and cleanup rockbox-info.txt handling.
Simplify RockboxInfo file handling. Remove Detect::installedVersion() and Detect::installedTarget(), as those became wrappers around RockboxInfo without functionality.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22237 a1c6a512-1295-4272-9138-f99709370657
2009-08-10 19:20:53 +00:00
Dominik Riebeling
bd5b744a6d Clean up some debug output, kill some trailing spaces and break some overly long lines.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22204 a1c6a512-1295-4272-9138-f99709370657
2009-08-08 12:12:49 +00:00
Dominik Wenger
33d9cf091a rbutil: make RbSettings a static class. (FS#10183 with improvements)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20890 a1c6a512-1295-4272-9138-f99709370657
2009-05-09 16:59:14 +00:00
Dominik Riebeling
f679cf91cf Bootloader installation for ipod and sansa: override the scanning with the device pointed to by the mountpoint. This allows selecting the correct player if two of the same brand are connected (FS#10096).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20832 a1c6a512-1295-4272-9138-f99709370657
2009-04-30 19:14:24 +00:00
Dominik Riebeling
bfce7eea5c Refactor USB ID map retrieval from device settings file and minimize duplicated code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20716 a1c6a512-1295-4272-9138-f99709370657
2009-04-16 20:49:43 +00:00
Dominik Wenger
6c73482d00 rbutil: create a RockboxInfo class so all rockbox-info.txt handling is in one place.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20429 a1c6a512-1295-4272-9138-f99709370657
2009-03-21 16:30:40 +00:00
Dominik Riebeling
fc7ba8806b Rename getMountpoints() to mountpoints() to be in line with general (and Qt) naming -- get functions don't get a get prefix. Make the function static.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19426 a1c6a512-1295-4272-9138-f99709370657
2008-12-13 19:45:11 +00:00
Dominik Riebeling
e2b69ddffb rbutil fixes for OpenBSD (FS#9340 by Brian Waichunas).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19417 a1c6a512-1295-4272-9138-f99709370657
2008-12-13 10:09:13 +00:00
Dominik Riebeling
5491273f86 Don't export includes unless needed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18815 a1c6a512-1295-4272-9138-f99709370657
2008-10-15 18:37:26 +00:00
Dominik Riebeling
f958717d43 Separate basic functionality from GUI parts by moving it into a separate folder. Some files still need to get cleaned up prior moving them too.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18788 a1c6a512-1295-4272-9138-f99709370657
2008-10-12 19:21:58 +00:00
Renamed from rbutil/rbutilqt/autodetection.cpp (Browse further)