Compare commits

...
Sign in to create a new pull request.

8150 commits
v3.9 ... master

Author SHA1 Message Date
339f770b0c
feat(ipod): Piezo beeps now match headphone beeps 2023-08-14 19:29:52 +02:00
Christian Soffke
e5ecff3db7 font.c: Fix regression introduced in a749a95
Index was increased by 2 instead of by 1
in each loop iteration

Change-Id: I58d6957d46880f4207421b79c3ea6aa6660fbde4
2023-07-08 17:51:19 +02:00
Solomon Peachy
102dc49ed9 libmusepack: Fix inconsistent definition of an array size
Change-Id: If91eed5a0cbce44723e9581dce7de02e644f7e3e
2023-07-02 20:45:16 -04:00
Solomon Peachy
9fd59557fc pdbox: Fix inconsistent function definition
Change-Id: Ia258f1d111cedf9698538a38a1b949a43199b92c
2023-07-02 20:45:16 -04:00
Aidan MacDonald
b1fac21e4e playlist: Fix wrong handling of playlists without UTF-8 BOM
add_indices_to_playlist() wrongly assumes playlist->utf8 means
the playlist has a UTF-8 BOM. It only means the file is UTF-8
encoded, and says nothing about the presence of a BOM.

Trying to seek past a BOM when there is none mangles the first
filename in the playlist. Avoid this by closing & reopening the
playlist, which ensures the BOM (or lack of it) gets detected
properly.

Change-Id: I222fa6fc31e941d0252f1895b393a51694b93b7c
2023-07-02 12:15:57 -04:00
Aidan MacDonald
3b1e95d480 playlist: Simplify get_track_filename()
Have get_track_filename() read track seek offset & insert type
itself to avoid duplicating code. Most callers are not interested
in that information, and only use it to call get_track_filename().

Change-Id: I46d50fda10e515f74e27eebdded8e281bbf4456f
2023-07-02 12:14:58 -04:00
Aidan MacDonald
9ba51e3552 playlist: Remove playlist_add()
It was only used in filetree.c. It's still implemented in Lua so
scripts using rb.playlist_add() won't break, but has been removed
from the Lua API "backend".

Change-Id: I5625a47f0692456008c6b10dee14755151d22f29
2023-07-02 12:14:33 -04:00
Christian Soffke
129fb4016b Tagtree 'Play Next' Menu: Eliminate redundant filename retrieval
The file name for a track in the database has been
retrieved already, before its context menu is displayed,
or a hotkey is executed, see:
8a22d2678a/apps/tree.c (L811)

So, skip over tagtree_current_playlist_insert and instead
use playlist_insert_track() directly, when user selects
something from the "Playing Next" menu or uses a hotkey.

Change-Id: Ie0789d8314949e9872bf261634d81b96432ccda3
2023-06-29 17:09:15 -04:00
Christian Soffke
207a7fe448 last.fm scrobbler: Use portable alignment
Change-Id: I44cd89f4a4dca1ab9c6134b6a1bf16328d233c0e
2023-06-23 16:09:37 +02:00
Solomon Peachy
8a22d2678a skin: Fix minor compile warning caused by printf with size_t
Change-Id: I785d1dd05ac8ef81d817cdd1f7d1867c158bfadf
2023-06-22 15:59:53 -04:00
Christian Soffke
2f0034e012 plugins: last.fm scrobbler: fix crashes on iPod/ARM
Change-Id: Ife0f1be20c681c153163233569933348b06d5c32
2023-06-22 20:27:36 +02:00
Christian Soffke
939bd9c2c3 Playlist Viewer: Reset 'dirty' flag when saving playlist
Playlist Viewer, when quitting, should not ask
you to save a playlist that hasn't been modified
since it was last saved.

Change-Id: Ia401239392ba5f2d66562a991ba49b01c6c2d452
2023-06-22 11:31:10 -04:00
Christian Soffke
422ea20cef Warn before overwriting another playlist on disk
When saving a playlist to an existing file on disk,
warn user, unless the playlist's file name remains
unchanged.

Change-Id: I10d82667de5fadb5323be4f981bea9263849f07a
2023-06-21 13:09:05 -04:00
Christian Soffke
2747e920ba Track Info: Never return NULL in list item name callback
Just for good measure

Change-Id: I9dc25b2fd687da2b1fddf31ce1c1ea8895e4399c
2023-06-15 18:56:20 +02:00
Christian Soffke
cfd5ef8db8 Current Track Info: Respond to track changes or finished playlist
Properly update displayed playlist index and all available
metadata for the currently playing track. Also exit screen
when playlist has finished to prevent nonsense data from
being displayed.

Change-Id: Iecc53c0eda5cbd374b51827a25916ee4e2c6456f
2023-06-15 00:46:23 +02:00
Christian Soffke
666a836227 Skin Engine: Enable dithering for images drawn onto backdrop layer
Backdrop images loaded using %X(filename) already had
dithering enabled, but images loaded using the %x tag
in viewports annotated with %VB did not.

Change-Id: I9c6d11d8e7ab41a53eb9e453d78ae0dc58cb947b
2023-06-09 03:15:10 +02:00
Solomon Peachy
bd339dabac FS#13993: Updated Polish translation (Adam Rak)
Change-Id: I56b905e6ae776eb34af7a44caf61e1839bcfbfa7
2023-06-05 21:17:09 -04:00
Solomon Peachy
412e0621c1 Update english-us "translation"
Change-Id: Ifad2ecb526c1f2ba5c554601003049915877fcdd
2023-06-05 21:17:09 -04:00
Christian Soffke
3ef49d9c5e PictureFlow: Make Shuffle options available
The "Playing Next..." menu couldn't display any
options for shuffling tracks of an album before

Change-Id: I54f4497394fb29877bf8bce0ef95a27c82eb2279
2023-05-27 19:17:52 -04:00
Christian Soffke
028eafaeef Onplay: Fix items from Queue submenu appearing at top level
If "Show Queue Options" was set to "in Submenu",
the queue options would incorrectly appear at
the top level after you had queued a track, at
least until you entered and exited the submenu
again without selecting an option.

Change-Id: I59abd73de7e3634bc8701aa2288b56bde7552513
2023-05-26 19:13:29 +02:00
Christian Soffke
31b8cd8f73 PictureFlow: Remove menu items for "Return" and "Clear Playlist"
On all players, it should be possible to return from the Main Menu
by pressing the Back or Menu key. Unless I'm missing something...

"Clear Playlist" has hopefully become superfluous after the "Playing Next"
context menu was added, which offers similar functionality.

Change-Id: I741544978fb7936b8d5a34dfc656472e20c1737e
2023-05-26 13:08:12 -04:00
Solomon Peachy
6e192dc28d hiby: the second drive for these is "USB" not "HD1"
Change-Id: I6a703265398db14ac9c83a51091184492123e1fb
2023-05-26 12:48:23 -04:00
Christian Soffke
49b877470d PictureFlow: Add ability to go to last album
After launch, PictureFlow always goes to the currently playing
album, or to a selected album, if applicable. Which is probably
a useful default, but not always wanted. You can now get back
to the album you were looking at when PictureFlow was last
closed, or when the sorting was last changed.

Change-Id: Iba3e0d5388f6b49534d09fe0224b0dbfa65d5f1d
2023-05-26 18:29:07 +02:00
Christian Soffke
bbef598817 PictureFlow: Scroll through albums from track list
This lets players that can't spare any keys scroll through
albums without leaving the track listing first, which was
only possible on the M3K before.

Enter mode from Main Menu. While active, the gradient
highlighting an album's selected track will not appear,
and context menu options apply to the whole album
instead of to a single track.

Exit mode by pressing buttons for Select/Back, or by
quitting PictureFlow.

NB: Be sure to enable "Database in RAM" for a good
experience, as the loading time for each album can
become quite annoying otherwise.

Change-Id: Id6c9a8cc49e4cfb2aea958610b95a19887f496b6
2023-05-26 12:26:06 -04:00
Solomon Peachy
0f941488af dbtool: Fix red.
Apparently _most_ targets have a dbtool built as a simulator variant,
but _some_ are built as an application target.  This commit fixes
simulator-based targets, which weren't ever broken.

(Prior commits fixed things for _app_ targets, which haven't worked
 since at least 2020, maybe never..)

Change-Id: I7fef2b10e5128059b293118617701630bf3dc1fb
2023-05-25 16:27:10 -04:00
Solomon Peachy
8bc7ba5d22 dbtool: More fixes to dbtool operation
Now properly treats current directory as "/"

Change-Id: I54357a65f2fda7d2cfb56ff18a044ae10b87bbce
2023-05-25 16:05:59 -04:00
Solomon Peachy
e803daae0a dbtool: Fix it up so that it runs from the CURRENT working directory
This makes it far more useful, as before it insisted on scanning from
the root directory and putting the generated db files in /.rockbox

Change-Id: I0d0e3c6c6c7ee1fc5473185482fbfb9a2a2be29f
2023-05-25 15:43:15 -04:00
Solomon Peachy
11e858b209 fix yellow introduced in previous commit
Change-Id: I794f6423853cf5d2c368de55f4be2ce54e3076c9
2023-05-25 12:47:04 -04:00
Solomon Peachy
220fb04250 hosted: Fix the disk storage display in the rockbox info page
This was introduced by adding multivolume support to the hibyplayer units,
and might affect other things, if so a more general fix might be needed.

Change-Id: Ia9c1b6b1eb50e67221ce440d30d6770daaeac74e
2023-05-25 12:13:37 -04:00
roman.artiukhin
f2a5b78b51 Sansa Clip keymap: Playlist on short Down press and Hotkey on long Down press in WPS
Change-Id: I39a01df90b658d76b9cf2f94d9a81a4f7ff076cf
2023-05-24 13:23:26 -04:00
Solomon Peachy
3acd5f86e5 build: Fix problems compiling old glibc with gmake >= 4.4
Three separate problems:

1) Make 4.4 defaults to a named pipe for jobserver control, this
   was incompatible with how glibc did recursive makes
2) Make 4.4 passed long arguments ( --foo ) into MAKEFLAGS and this
   broke stuff that wasn't expecting it
3) Circular dependency in a header generation due do make 4.4 being
   stricter/more consistent in how it orders rules vs which makefiles
   they came from.  This one was the real !@#!@ to deal with.

This patch set fixes the hosted arm (glibc 2.19) and mips (glibc 2.25)
toolchains.

Change-Id: Ie6d6a0ab7e1b36f24c43e524fee4afc0bd3a14d6
2023-05-23 15:57:00 -04:00
Solomon Peachy
56fe1129da configure: Deal with more variations of the 'ld' version output
eg, our current toolchian generates this:

   GNU ld (GNU Binutils) 2.26.1

But the system toolchain on the buildserver generates this:

   GNU ld version 2.37-37.fc36

Change-Id: I0166f12d660654c1456289954fb256db98213618
2023-05-22 15:58:29 -04:00
Aidan MacDonald
e7cc77e5b8 configure: Detect linker's NO_CROSSREFS_TO() support
NO_CROSSREFS_TO() was first introduced in binutils 2.27.
It is used to have the linker report errors when symbols
from a list of sections refer to a specified section,
which is useful for verifying that normal code does not
refer to INIT_ATTR code.

Note this doesn't actually start using NO_CROSSREFS_TO()
for builds -- that will have to wait until the toolchain
upgrade when we'll have a new enough binutils -- it just
detects support for the feature so it can be conditionally
enabled in linker scripts.

Change-Id: If1553eaa671fcbbdfe6af357a6331931e7c4f997
2023-05-22 14:48:07 -04:00
Solomon Peachy
6e05fcf4d0 FS#13551: Correct the native name for the Slovak language (in rbutil)
Change-Id: I01281b2ac8c8112e44d5fb6da208b18f703ba92e
2023-05-22 10:53:22 -04:00
Solomon Peachy
92b80bdba5 lang: Support languages that speak the units before a numerical value
Previously, it was hardcoded to the english convention of units-last, so
"100%" would be voiced as "one hundred percent".  This adds a new
language flag that makes the units be voiced first, ie "100%" will be
voiced as "percent one hundred".

So far only the Chinese-traditional and Chinese-simplified languages
utilize this feature (taken from an old ticket, FS#10340) but I'm sure
others would want this feature too.

Change-Id: Idf825ec9299dc0ed09921cf67aec61b1ab262fc6
2023-05-22 10:30:13 -04:00
Solomon Peachy
ab0ba139f5 pdbox: Gate the warning suppression to apply only to GCC 13 and newer.
Change-Id: Ie0f39fde5e682f3995ed852417b61ae383c5e23b
2023-05-22 10:28:38 -04:00
Solomon Peachy
3a8d5525ae pdbox: Fix warning with GCC13
Change-Id: I7814e7894b315d06c962fdaedf1a9f9cd59daf5c
2023-05-21 20:58:29 -04:00
Solomon Peachy
5dc0e4e0bc disk: Support GUID Partition Tables (GPT)
Notes:

 * Currently limited to 32-bit sector addresses due to internal Rockbox
   APIs. So this means a practical limit of 2TiB per drive.
 * Only 'General Data' GPT partition type is recognised, as that's
   what SD cards seem to use for exFAT/FAT32.

Note that _booting_ off GPT-partitioned drive will require rebuilding
the various rockbox bootloaders, and even then there may be platform
limitations that preclude this.

Change-Id: Ibfaae1960adcb1e81976d4b60dd596c6d16318e4
2023-05-21 20:34:03 -04:00
William Wilgus
8fbd44a3d3 [BugFix] Last Fm Scrobbler corrupted entries
I couldn't seem to reproduce the issue here:
https://forums.rockbox.org/index.php/topic,54165.msg252081.html#msg252081

but I figure its probably a threading issue

so we now have a mutex on the cache

and to top it all off each cached entry has a crc and length that are
checked before writing the entry to the file otherwise it is prepended
with # FAILED - so hopefully scrobbler 'parsers?' don't barf on the log

Other changes:
there is now a MRU table for tracks this should help prevent duplicates
it is configurable..

the cache buffer now no longer uses fixed chunks allowing more tracks
to be written between flushes

Change-Id: Iaab7e3f6a76abfc61130f3233379a51c9a6d12e5
2023-05-20 22:41:34 -04:00
Franklin Wei
4554b90859 sdl: fix two bugs in ROCKBOXAUD_PlayAudio()
First was an off-by-one bug in the loop over buffers. The condition was
`i < this->hidden->n_buffers', but should have been <=, not <. This wasn't
a critical issue, because the last iteration would check the currently
playing buffer - an unlikely situation.

The second logic bug would make the code always think it had found an empty
buffer, even when it had not, since `idx' was being unconditionally set
every loop, rendering it unusable for a sentinel value. Fix that.

Change-Id: I137330965d699acf827e59b6aa5c5f9ddf2ca617
2023-05-17 13:23:14 -04:00
Nikita Burnashev
e232f69214 atjboottool: gzipped fw files, option for big-endian fw, clarify ECIES in fwu
Added fw modifications required to unpack real world player dumps.


Documented more fwu header fields, magic numbers and finite field arithmetics (extended Euclidean for inverse, long division for reducing modulo field_poly).

v3 encryption used is standard RC4 with the key additionally ciphered by the Elliptic Curve Integrated Encryption Scheme.

Either sect233k1 (NIST K-233) or sect163r2 (NIST B-163) curves can be used, with the former overwhelmingly prevailing, being hardwired in SDK's maker.exe. Using a private/public key scheme is superfluous because both are stored in the firmware, with the added level of complexity likely serving the purpose of obfuscation. The private key is generated at random with each invokation.

None of KDF or MAC from ECIES are used, RC4 key is directly xored with the shared secret. The random number r used to calculate rG isn't stored, but that's unimportant since only krG == rkG is actually used in the encryption.

Change-Id: Ieacf8cc744bc90c7c5582dd724b2c10a41bfc191
2023-05-17 13:19:31 -04:00
Solomon Peachy
72c0e49b41 scroll: Fix red from previous commit.
Targets with remote LCDs need to have the lcd scroll driver instantiated,
even in the bootloader.

This is because lcd_remote_scroll_stop() is called, in addition to
lcd_scroll_stop().  This could probably be excised.

Change-Id: I475269f9361eb469c62ad0f74abc1eb3baa4c134
2023-05-17 11:55:58 -04:00
Solomon Peachy
9134c688d9 scroll: Eliminate a warning when building a bootloader
Bootloaders don't support scrolling, so don't even try to compile
the scroll_thread stuff

Change-Id: I6bd4f901a2c3e9b79654d27c0349be7e7aa3fa1a
2023-05-17 11:03:02 -04:00
Solomon Peachy
fdf661606c FS#13992: Update Serbian translation (Ivan Pesic)
Change-Id: If0a7b2202a77b1482b3d4a819cff070b45b4fa4a
2023-05-09 16:37:07 -04:00
William Wilgus
f4c95c70f9 [Bugfix] diacritic.c MRU discards an entry when slot available
a new slot gets added but it is set to 0 and an entry gets discarded
instead set it to the last entry read

Change-Id: I3d6f9b73030c8a5083d299c99314f9c40052689a
2023-04-24 23:13:10 -04:00
roman.artiukhin
67b98292a3 Temp quick fix for broken bookmarks
Mark playlist as not modified in playlist_resume

Change-Id: I8a9769a1fc1265f024da230e496eac9a10186097
2023-04-22 12:58:18 -04:00
Solomon Peachy
8ff0fb6075 toolchain: Globally use '-fno-strict-overflow'
This turns on -fwrapv and -fwrapv-pointers.

As per GCC docs:

  "This option instructs the compiler to assume that signed arithmetic
   overflow of addition, subtraction and multiplication wraps around
   using twos-complement representation. This flag enables some
   optimizations and disables others."

All of our targets fall under this category.

For some time now we've been using -Wall which implies
-Wstrict-overflow=2, which only warns when the compiler actually
implements a possibly questionable optimization, so I'd expect this to
not affect our code size at all.

Change-Id: I8e1c10183e390c6d0897e81f84a5df4590b02d84
2023-04-18 10:51:24 -04:00
William Wilgus
100e9ac137 Fix Red lastfm_scrobbler_viewer.c
plugins need rb-> for things like strlen

Change-Id: Ia3b52423d3f7f91c2996aa9b9b194f39af44468f
2023-04-17 00:36:04 -04:00
William Wilgus
dfe12252bb [Feature, Plugin] lastfm_scrobbler_viewer
a plugin to view lastfm scrobbler logs

uses print cell to give a spreadsheet view of scrobbler logs

buffers the whole file if possible otherwise it reads entries from disk

rudimentary text searching for columns
include / exclude; all/any and case sensitive

Change-Id: Id9616e5796658952fba4ea747f596cb77d6f34c0
2023-04-16 23:50:24 -04:00
Christian Soffke
43b0fba75d Track Info: Show number of tracks being inspected
Applies to the database and PictureFlow

+ fix red 6ca57ec

Change-Id: If708851ebdfe075e9d6ea3f2e2dd790cc9deac94
2023-04-13 03:55:21 +02:00
Christian Soffke
6ca57ec389 Track Info: Display larger file size and length values
When displaying Track Info for multiple tracks,
the value for combined file sizes or length was
capped at 2 GiB / ~596h.
Limit has been raised by a factor of 1000.

Change-Id: I942c64e81864cba3f719c83a24912883fafeb70e
2023-04-13 02:31:32 +02:00
William Wilgus
78c92c5ca8 [Feature] Supress voice during sleep timer shutdown
if show_shutdown_message == false and sleep timer is active
talk will be disabled on shutdown

Change-Id: Ia660e753700f3e283691f41797ef7a77a2d9a8d9
2023-04-08 17:13:07 -04:00
Christian Soffke
3554306617 PictureFlow: Minor fixes/refactoring
- get_albumart_for_index_from_db:
slide_index not allowed to be -1

- Fix visual glitch changing scroll direction:
An errant frame was displayed when switching
from one scroll direction immediately to the other

- Rename/combine functions and replace
magic numbers for zoom animation

- iPods: Fix inability to skip or reverse zoom animation
using Back button

Change-Id: I888c3c437bb123325813bf79be56b320cfbfda0c
2023-04-05 11:42:31 -04:00
Christian Soffke
8b95f2e758 plugins lib: use existing mp3info function
Change-Id: I88d3c04db5cbc0905153b0e616adb7a64afee707
2023-04-05 11:27:25 -04:00
roman.artiukhin
1e678977f2 Hotkey: Add List Bookmarks action
Change-Id: I8cc775d2403b682d6d91069e26947fc08d379258
2023-04-05 09:06:28 -04:00
Christian Soffke
31d56d4a59 Database: Disable delete hotkey unless audio file is selected
Fixes behavior where Rockbox would offer to
delete nonexistent directories.

Change-Id: I219da382b181372023b9408ac9a85189bffdcb74
2023-04-05 07:16:18 -04:00
Dana Conrad
b31127db7d [bugfix] x1000: Wait for FIFO to be empty rather than flushing
When data is not in packed-16-bit mode, flushing the fifo
may result in swapping left and right channels if there
happens to be an odd number of entries in the FIFO.
This is especially likely when switching sample frequencies
for some reason.

When stopping PCM DMA, disable DMA and Underrun Interrupts
and then wait for FIFO to be empty before stopping AIC's playback.

Change-Id: I45b6b022c9e3889627842663cd9b7d2e0affb7c6
2023-04-02 11:34:39 -04:00
Christian Soffke
287747591e plugins: vbrfix: Fix fd leak & error handling
- mp3info returns true for error
- fd wasn't closed for non-vbr files

Change-Id: I5432025d3384ddf92ed0a478587dcc1715fcf524
2023-04-01 08:19:22 -04:00
William Wilgus
2456d28e21 [BugFix] open_plugin didn't recognize opx shortcuts
opx shortcuts allow an easy way to add parameters to plugins
you should be able to set them as shortcuts now

the plugin hd a use after free bug on the dat file file descriptor

Change-Id: I5fe3b0628e7da003c03b9b54f5788b0d0dbfea74
2023-03-30 01:04:51 -04:00
William Wilgus
a2e5d9563f [Feature] resume TSR plugins after interruption WIP
save tsr plugin path for later

resume tsr plugin when user stops the interrupting plugin

expand return of tsr_exit function to allow
continue, suspend, terminate

tsr plugins check parameter at start to determine if
the plugin is being resumed

Change-Id: I6fc70de664c7771e7dbc9a1af7a831e7b50b1d15
2023-03-25 10:02:43 -04:00
Aidan MacDonald
2e99e2175b playlist: Remove control file cache
Control cache entries cost 24 bytes per command, but cacheable
commands are always less than that when written out to the file.
We can actually cache *more* data by writing commands directly
to the fd (native Rockbox has a 512-byte cache per fd) and it's
much simpler.

Change-Id: Ibb1b9ffa56ef17431b281419a04082e14d0cbd85
2023-03-24 19:02:56 +00:00
Aidan MacDonald
a4cfa8ae6a playlist: Unconditionally strip bogus dirs in playlist_peek()
The intent behind the check is to only do this if the filename
comes from an on-disk file. With the RAM buffer is gone this is
now "always" the case.

Change-Id: I4c26e32c482dde176b69a6071e9562e9955d7171
2023-03-24 19:02:56 +00:00
Aidan MacDonald
aab6a44fc5 filetree: Remove dead code in ft_build_playlist()
This checks for an out of memory condition when the filenames
were buffered in RAM. The playlist no longer buffers anything
in RAM so the code is unreachable.

Change-Id: I4c2d0b2ac4ba3b7e7c94fe554a0cf7cb1a798e09
2023-03-24 19:02:56 +00:00
Aidan MacDonald
1f1893f520 playlist: Remove in-ram filename storage
Use the playlist control file for directory playback instead of
storing filenames in RAM. The implementation of that feature is
very iffy and probably responsible for random crashes that may
occur when skipping through directories rapidly.

Change-Id: I3863940cd4542410d8046a3ca47508b5d97309a1
2023-03-24 11:10:12 +00:00
Aidan MacDonald
ac1cbd5dd0 playlist: Clean up close_playlist_control_file()
Move locking outside the function since most callers already
hold the lock.

Change-Id: I4b6774e2322c86962b4cc7a5f33d13cd4ffb1c7b
2023-03-24 11:10:12 +00:00
Aidan MacDonald
e6534b051e playlist: Add helpers for opening/closing .m3u playlist
This helps maintainability and ensures the opening is done
consistently.

Change-Id: I7805716182dfa93f917d54d40f8e420e87da16b0
2023-03-24 06:36:23 -04:00
Aidan MacDonald
5eb24a9582 playlist: Cleanup get_next_dir()
Pass the direction as a signed integer to avoid jumping through
unnecessary hoops.

Change-Id: I1a36c3804b5f7103464f0d2ee69d060505261274
2023-03-24 06:12:01 -04:00
Aidan MacDonald
58b2e45782 Fix unified syntax in ARM inline assembly
GCC 4.9 always emits assembly with divided syntax. Setting unified
syntax in inline assembly causes the assembler to complain about
GCC's generated code, because the directive extends past the scope
of the inline asm. Fix this by setting divided mode at the end of
the inline assembly block.

The assembler directives are hidden behind macros because later
versions of GCC won't need this workaround: they can be told to
use the unified syntax with -masm-syntax-unified.

Change-Id: Ic09e729e5bbb6fd44d08dac348daf6f55c75d7d8
2023-03-23 18:16:33 +00:00
Chris Chua
86429dbf1e Using ARM Unified Assembler Language
Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
2023-03-23 13:28:22 -04:00
Aidan MacDonald
a64cad847e playlist: Simplify playlist modified detection
Any modifications to the playlist (insert, delete, shuffle, etc)
will cause the modified flag to be set. The flag is cleared when
the playlist is saved. Code that generates playlists can manually
clear the modified flag if appropriate; there is now a proper API
for this so the tagcache and pictureflow don't need to resort to
hacks.

Change-Id: I8d3c723265a41db07a13de3f1d2abb0444528d57
2023-03-23 13:01:23 -04:00
Aidan MacDonald
d40a598970 plugins: Simplify plugin/codec API versioning
Replace the minimum version bound with a check on the size of
the API struct. The version only needs to be incremented for
ABI breaking changes. Additions to the API won't need to touch
the version number, resulting in fewer merge conflicts.

Change-Id: I916a04a7bf5890dcf5d615ce30087643165f8e1f
2023-03-21 16:23:54 -04:00
Aidan MacDonald
2fb2364686 makefiles: Fix escaping issues under GNU make 4.2
Make 4.3 and newer doesn't interpret comments in a shell call,
whereas Make 4.2 and older do. Escaping the comment directly
works on old makes, but on new makes the backslash is passed
as well -- which we want to avoid.

The safe way to pass a literal "#" character to the shell on
both versions is by embedding it in a variable and expanding
that. It's ugly, but it works...

Change-Id: I1a217c42d747fd5aa83f9990c234e06966ac1a00
2023-03-21 09:31:18 +00:00
Aidan MacDonald
ed7ab52e27 makefiles: Suppress stray backslash warnings with grep 3.8
GNU grep 3.8 warns about "\#" when compiling. The "#" has to be
escaped for Makefiles and shell, but it isn't special to grep so
grep thinks it's an invalid escape sequence.

Change-Id: Ieb2607d42b7daa1939ca0101b915ec0c7afd4298
2023-03-21 04:48:31 -04:00
William Wilgus
977bc698db [Feature] lastfm_scrobbler add option to set beep volume level
Change-Id: Id045f0f844b67f07ba5cd47d084f5d8f1841dad8
2023-03-20 19:04:12 -04:00
Aidan MacDonald
a0a59ab610 Fix locked context fallthrough
Enabling locked actions for all softlock targets accidentally
broke keylock on touchscreens because the generic touchscreen
keymap was missed. Trying to lookup CONTEXT_WPS|CONTEXT_LOCKED
returned the mapping for CONTEXT_STD because the locked version
wasn't explicitly handled.

But on almost all cases, a context's keymap does not change when
the screen is locked. It makes more sense to mask out the locked
flag and only check for it where needed.

Change-Id: I65cda2de82950d272d4394fd772286699e7c3779
2023-03-18 17:47:19 +00:00
William Wilgus
0c29d1788e [Bugfix] open_plugin_browse() not showing plugins
rockbox_browse() overrides the desired dirfilter with
global_settings.dirfilter if you aren't using one of the
SHOW_ modes > NUM_FILTER_MODES (which come with their own sideeffects)

add flag BROWSE_DIRFILTER to
override global_settings.dirfilter with browse_context.dirfilter

add ability to set tc->browse to NULL to exit dirbrowse immediately

Change-Id: I2f40d394f9dc0864b2041293eda219f7436a7bf0
2023-03-18 04:23:43 -04:00
William Wilgus
b6d04d1ac0 [BugFix] chunk_alloc pass NULL to buflib_shrink
old_chunk has already been unpinned therefore the address
could be incorrect
NULL will ensure buflib_shrink uses the same start address

Change-Id: I9371e4f8263c6e5bf769108a8558dc938d4c8b87
2023-03-09 20:15:38 -05:00
Solomon Peachy
4faffe0a9c Update english-us "translation"
Change-Id: Ief43b8b7c852af5fca0225b26a94801fdf6ab2e1
2023-03-03 09:36:16 -05:00
Solomon Peachy
f6db0c60e0 FS13390: Update Polish Translation (Adam Rak)
Change-Id: I7dc58071b37cf149a620d462dd73a28d482d6f0d
2023-03-03 09:35:49 -05:00
William Wilgus
fcf24ae387 [BUGFIX] chunk_alloc pinned buffer
if there weren't previous chunks new buffer was pinned
without being unpinned

Change-Id: Ia45bc0eb67673e8df5154447d9116fcd4c147f6b
2023-02-16 15:43:59 -05:00
William Wilgus
a749a95840 font.c cleanup
find_font_index can use font_filename_matches_loaded_id()

font_path_to_glyph_path doesn't need strcat

Change-Id: I8d1d36a68abbc700078d651eed930035641b6240
2023-02-15 23:02:36 -05:00
Wolfram Sang
e7a01ca4b2 usb screen: honor HAVE_LCD_SPLIT
Clip+ displays the logo with the LCD split inbetween. Calculate the y
offset to be directly after the split if possible. Thanks go to William
Wilgus for fixing a similar issue and pointing me to macros I was
looking for.

Change-Id: I2183aec1149ce74ffb840716910d2051e4a284ed
2023-02-15 22:43:33 -05:00
William Wilgus
ff98a54cd9 font.c return false if id is out of range instead of NULL
forgot to change this to match the bool return

Change-Id: I2cc6dc985b07f2bc0ae493b060aff6105f329097
2023-02-15 01:27:50 -05:00
William Wilgus
91c8633e8c [BugFix] font.c filename was movable
stupid bug on my part font_filename was pointing to a movable
alloc therefore that data could be moved out from under the returned pointer

instead pin the internal calls to core_get_data and
remove font_filename in favor of a function that checks if a
filename matches the loaded font as this was all it was used for anyway

Change-Id: Iebb47ffe3f81aa9d5e3968975f26d64283633ffc
2023-02-15 01:15:59 -05:00
William Wilgus
3bb75e0039 tagtree.c optimize get_tag()
store tag length to shortcut strcmp

this is nearly as fast as making a hash table using gperf

its not the hottest path but its
even slightly faster to shortcut
based on string length

    if (tagstr_len > match->len)
        continue;
    else if (tagstr_len < match->len)
        break;

but I found no measurable difference
I don't think its worth the extra constraint of keeping tags sorted

Change-Id: I4bb47cc6c5b8266d5f13c4ac78ae11d55ecb2d67
2023-02-09 06:56:58 -05:00
Solomon Peachy
23cb6139bd SID: Disable SID on 2MB targets, as cRSID needs a lot of RAM.
Also add a note that SID might not play in realtime on all targets

Change-Id: Ic14b20a7c1427e31e38204ae3ecff6bd235ec1b4
2023-02-07 11:25:02 -05:00
Wolfram Sang
88f4f1c8d0 metadata: sid: allow RSIDs as well
cRSID also allows to play RSIDs (hence the name of the library). So,
allow them as well.

Change-Id: Iae8f0ac083ed714771767a4c23f5a09bad637208
2023-02-07 09:19:32 -05:00
Wolfram Sang
70ce734ece codec: sid: use cRSID as a library for playing SID files
Change-Id: Iee70933e47ff8df8f26c9a63112de4da4a8e6c17
2023-02-07 09:19:32 -05:00
Wolfram Sang
15c0f0576e codec: sid: split cRSID header into a public and a private header
Needed to compile cRSID as a proper library.

Change-Id: I276967f46037bd65db1ff38985a781183fc26a00
2023-02-07 09:19:32 -05:00
Wolfram Sang
e8135fea5a codec: sid: add cRSID-1.0 for 21st century SID playback
Plain import of the library parts first. Adaptions to Rockbox will
follow. A *lot* of kudos go to Mihaly Horvath for creating this library
from his already lightweight cSID-light, mainly for Rockbox. Besides a
lot of other things, he made his algorithms integer-only and
significantly improved the C64 emulation, so finally RSIDs could be
played as well as PSIDs. TinySID was nice for what it is, but this is a
quantum leap in SID playback quality for Rockbox. Check for example:

https://hvsc.csdb.dk/MUSICIANS/P/Page_Jason/Eighth.sid
https://hvsc.csdb.dk/MUSICIANS/J/Jeff/Blowing.sid

Change-Id: I353e12fbfd7cd8696b834616e55743e7b844a73e
2023-02-07 09:19:32 -05:00
William Wilgus
1c26f565bf tagnavi make track submenu
add some faster options to the track menu
add a shortcut for basename formatting
sort basename results

filename - by sorted filename
title - just title no formatting untagged items are unsorted as well
title mm:ss - title and duration

Change-Id: I90aea95051f6231580ef7f1fc08cd2d0d69601fb
2023-02-07 08:44:57 -05:00
William Wilgus
b5d93a6605 Revert "tagtree remove unneeded strlen"
This reverts commit 8379c6eb07.

Reason for revert:
tcs.result_len is not the same as strlen(dptr->name) + 1
since it gets filled with filename

Change-Id: I1264afc0a43ffe75adf1de00d27ab98e3adbca19
2023-02-05 06:47:38 -05:00
William Wilgus
d5a84d42b0 [BugFix] tagcache.c fix off by one error in find_entry_disk()
the tagcache counts the null terminator strlen however, does not
no matching entries makes for a terrible amount of disk searching
and a hang on devices without dircache to save them

Change-Id: Id3460037199ee9853de0f11e4763a7ff11130e45
2023-02-04 11:39:43 -05:00
William Wilgus
c955d93075 font.c dynamic path name
only alloc enough space for the path  instead of a fixed buffer

round up the path buffer size to slightly more thna the longest
common path length to reduce reallocations

Change-Id: I51b8b17584d6a905ea3a66a7c38b7b1b9da2e786
2023-01-30 23:36:34 -05:00
Aidan MacDonald
78718aa7eb playlist: Annotate locks as read/write
Distinguish read locks from write locks to aid converting the
mutex to an MRSW lock at some point in the future. Everything
is a write lock for now and a mutex is still used, so there's
no change in behavior.

Change-Id: I25aeed580580bdb0c3048fc7e1eaad1c32c30159
2023-01-29 08:24:48 -05:00
Aidan MacDonald
25bd3bc971 playlist: Optimize playlist_remove_all_tracks()
This was insanely slow for large playlists. Implement it as a
constant-time operation to avoid the O(N!) blowup, and add a
new "clear" command to the control file to avoid flooding it
with individual delete commands.

Change-Id: Ied82d1cba015591edd583f2a2ff6772108f4e176
2023-01-29 07:55:10 -05:00
Aidan MacDonald
2c4546ba99 playlist: Remove unused PLAYLIST_DELETE_CURRENT
Change-Id: I4d1a8798aca249d343ca27a9973213d427b73963
2023-01-29 07:32:26 -05:00
Aidan MacDonald
d85f4b5e1c pdbox: Move core thread off COP
This is all but guaranteed to be broken since pdbox doesn't use
SHAREDBSS_ATTR or SHAREDDATA_ATTR, needed to share memory safely
with COP threads.

Judging by the codec performance comparison on the wiki, if the
iRiver H100 and H300 can run PDbox on one core, PP targets should
have no problem doing it - they are 2-4x faster even on codecs
that don't have multi-core optimizations.

Change-Id: I8f556013146cb670f69cc42e80b1c768ba0f74cd
2023-01-29 07:15:40 -05:00
William Wilgus
4e5fcbe898 fix red #2 d6fb80d4
Change-Id: I147e9b8f7c8e64234f55d39f9ac7c7253b065f9a
2023-01-27 01:12:42 -05:00
William Wilgus
1d6ce5193f fix red d6fb80d4
Change-Id: I805490f660626f48220b41de3ee1026c260d0067
2023-01-27 00:40:20 -05:00
William Wilgus
00e5c81ecb debug_menu database delay redraw
only redraw every 100 entries

Change-Id: Ie0bb54812c1b8341aa4d8303341904d17baa2890
2023-01-27 00:10:47 -05:00
William Wilgus
d6fb80d4ff Tagcache - Ramcache Move ref checks, speed up disk searches
move loading file reference to a separate function

some optimization of the disk search function check tag length before
reading the actual entry & reduce number of lseek calls
this affects startup resume as well before tagcache is done loading

Change-Id: I2bd2fc53c4870416ecd1a4034b34cb6984d8ad51
2023-01-27 00:03:51 -05:00
Aidan MacDonald
1025283042 usb: Fix iPod video connection issues
Apparently a response is coming out of nowhere and tripping this
check. I can't be bothered to look into it; it would be better to
just update the ARC USB driver to the new control request API...

Change-Id: Ic5062443e060534f170d3afe17c00d3c25d1d3bd
2023-01-23 16:04:16 +00:00
Aidan MacDonald
c0c1a6e5f0 Fix yellow 65b3ff81c5
Change-Id: Ibf99e4e6f98021b35d420520219287336bf25f0e
2023-01-23 14:46:02 +00:00
Aidan MacDonald
65b3ff81c5 playlist: Fix dircache scan thread deadlocks
Fix deadlocks in the dircache scan thread caused by incorrect
lock ordering. Mutating operations need to stop the thread to
prevent it from accessing invalid data; this must always be
done before taking the playlist lock to avoid deadlocking the
scan thread.

Change-Id: If719a8b28ed0b0b3eac068073581e606c4a5f58a
2023-01-23 12:24:12 +00:00
Aidan MacDonald
ce52d0c870 playlist: Fix mutex initialization
This is a one-time thing; make sure it doesn't happen more than once.

Change-Id: Ic42f48e5714dff2906c252ecd091989d2d6e5a86
2023-01-23 12:24:12 +00:00
Aidan MacDonald
2a40d42012 playlist: Refactor control cache flush
Make background control file flushing work on non-dircache targets.
It has nothing to do with dircache and doesn't belong in the dircache
scan thread.

Change-Id: I3f39261ccaebb5dce69e7db3d2e0c0c0c54f640b
2023-01-23 12:24:12 +00:00
Aidan MacDonald
551e6aac50 playlist: Remove volatile from indices
This is not necessary. Volatile doesn't create a memory barrier
wrt. non-volatile accesses and there are no interrupts involved,
so there's no reason to use it here.

Change-Id: I78299e2f318e68735364601b3bc2aa036e71130e
2023-01-23 12:24:12 +00:00
Aidan MacDonald
fcb6239aba playlist: Remove current flag
Only current_playlist will have it set, so compare pointers instead.

Change-Id: I46dc7baef9699990962176db7c8796bba1e4809d
2023-01-23 12:24:12 +00:00
Aidan MacDonald
dd2a0aeab0 Use perceptual volume scale for volume bars
Display volume bars using a perceptual scale instead of the
linear dB scale. This makes adjusting volume with the bar a
lot more usable on touchscreen targets.

Change-Id: I2db010486e6ba17f9d08202ee74a0b509f2cb434
2023-01-22 22:10:46 +00:00
Aidan MacDonald
82e26ff2e4 Fix manuals 5b27e2255a
Some targets don't have \ButtonVolUp and \ButtonVolDown so reword
to avoid using them.

Change-Id: I5353d85e579f51e07555e1048b40d90bffa9ae90
2023-01-22 22:10:02 +00:00
Aidan MacDonald
5b27e2255a Add perceptual volume adjustment
The perceived loudness change of a change in volume depends
on the listening volume: at high volumes a 1 dB increment is
noticeable, but at low volumes a larger increment is needed
to get a comparable change in loudness.

Perceptual volume adjustment accounts for this fact, and
divides the hardware volume range into a number of steps.
Each step changes the dB volume by a variable amount, with
most of the steps concentrated at higher volumes. This
makes it possible to sweep over the entire hardware volume
range quickly, without losing the ability to finely adjust
the volume at normal listening levels.

Use "Volume Adjustment Mode" in the system settings menu
to select perceptual volume mode. The number of steps used
is controlled by "Number of Volume Steps". (Number of steps
has no effect in direct adjustment mode.)

It's still possible to set a specific dB volume level from
the sound settings menu when perceptual volume is enabled,
and perceptual volume does not affect the volume displayed
by themes.

Change-Id: I6f91fd3f7c5e2d323a914e47b5653033e92b4b3b
2023-01-22 21:19:57 +00:00
Aidan MacDonald
15c4447b66 Fix red dc83963962
Change-Id: I196268c6f6bc4f6e2d8f2cb7dcc3a12218c5d9d4
2023-01-22 21:19:34 +00:00
Aidan MacDonald
dc83963962 Add helpers for converting to/from normalized (perceptual) volume
These routines were taken from alsamixer and converted to fixed
point for Rockbox.

Change-Id: I64e8bf08da02b1e6e3ef10fdc78254bf8e87ff20
2023-01-22 15:43:00 -05:00
Dana Conrad
66519000f4 ErosQNative: Enable Line Out capabilities on new revision players
The newer players have some changed hardware, but most importantly
the line out now appears to be routed through the stereo switch
instead of being hardwired directly off the DAC.

Disable muting the headphone amp, enable switching the stereo switch,
and rename some of the GPIOs to be more generic since the DAC,
headphone amp, and stereo switch all appear to have changed.

Change-Id: I220fe5e37bcbcd959b544183e1fcf70673a83c13
2023-01-22 15:11:35 -05:00
Aidan MacDonald
c307d98e3f playlist: pin dircache fileref buffer during background scanning
dircache_search() can yield, which would lead to memory corruption
if the playlist dcfrefs buffer is moved at that point. Prevent this
from happening by storing the buflib handle and pinning the buffer
while scanning the dircache.

Change-Id: I28b122de283953dd6d54c1d00598759f5bdcbe93
2023-01-22 13:47:50 +00:00
Christian Soffke
32f365bf3c database: make parent tables work with plugin
Enables the use of PictureFlow and the Properties plugin
with parent tables of ALLSUBENTRIES, such as an album
or album artist, instead of individual tracks.

Change-Id: I18c4779ed116a48c732ae32b9629e7e0d93ce7c8
2023-01-19 15:56:35 -05:00
Christian Soffke
4d53d1b52b PictureFlow: fix_path_part checked too many chars
Shouldn't have any effect if album_name
is null-terminated, but still....

Change-Id: I51acb6c7858347d3bd922758ac4f0fcde349c9e1
2023-01-19 15:36:18 -05:00
Christian Soffke
f441d6bf05 plugins: lrcplayer: eliminate redundant function
Change-Id: I93fff9eb616f08bdad021180f83fea1fdb758870
2023-01-19 15:34:20 -05:00
Christian Soffke
36cef88d47 PictureFlow: id3 functions refactoring
- Move multiple-id3 functionality into lib
- Extract retrieve_id3 function

In preparation for using these functions
from the Properties plugin.

Change-Id: I7252581340680e32df763f1f4b41646a055fe19e
2023-01-19 15:12:57 -05:00
Christian Soffke
6129bfbb95 PictureFlow: Eliminate 'prompt' launch parameter
This was added in commit d553bb1 and
doesn’t seem to be used anymore.

Return PLUGIN_OK since an error message
is already produced.

Change-Id: I5eaf7e7eb7c850a6fa9c3d2717c440e335f5efd1
2023-01-19 14:52:49 -05:00
William Wilgus
1b383ef480 chunk alloc add buflib_get_pinned and chunk caching
Change-Id: Ia581656793b8ce9b80545705cfbba0fb225bb616
2023-01-19 00:04:25 -05:00
Aidan MacDonald
bd7b54a3c4 usb: Attempt to handle overlapped control requests in legacy drivers
It seems connecting an iPod Video to a Mac triggers the null
request check, resulting in a panic. Ignoring the error with
a bare return "fixes" it and allows the iPod to connect. This
isn't ideal though, because it could silently introduce bugs
on other targets.

The likely cause of this is the host sending control requests
too fast, or a driver problem (the Video uses the ARC driver,
which is still on the legacy interface), with multiple requests
getting queued at once. Since the USB core expects to deal with
only one request at a time, the second response trips the check.

Try to handle this situation a bit more gracefully by detecting
overlapped requests and returning a STALL to the host when it
occurs. At this point the USB stack is able to safely handle a
new request.

Link: https://forums.rockbox.org/index.php/topic,54414.0.html
Change-Id: I9a2b7e35620ff540ebdb39f81671377062a4917d
2023-01-18 14:22:26 -05:00
Aidan MacDonald
969e1ef6cd Bump codec API version, remove dummy configure loop in dsp_init()
It turns out removing DSP_INIT broke the codec ABI and caused
old codecs to crash; the loop and mdelay() was a red herring.

This reverts commit 541960a110.

Change-Id: I020d826e7b4beb006d093d9c3d4f45fa5eaac717
2023-01-18 17:52:55 +00:00
Aidan MacDonald
aae34b2e7f playlist: enable queue send
Apparently queue_send() silently falls back to queue_post()
if sending isn't enabled. Doesn't seem like a good idea, as
post and send are definitely *not* interchangeable!

The playlist code relies on queue_send()'s blocking behavior
to prevent the dircache thread from using potentially stale
pointers.

Change-Id: Ibf4b0def3bf9c96cb2fe80cd75043b7ce1dcf250
2023-01-16 16:57:23 +00:00
Aidan MacDonald
a9b93bb4cd buflib_malloc: fixed signed/unsigned comparison
Change-Id: Ie346759a0dda96debd8448fd44ca3e86d40ef348
2023-01-16 16:57:23 +00:00
William Wilgus
d521020d21 [Feature] Add total entries to database info
show total database entries in debug>Database Info

Change-Id: Ic22b6a032ae0ee23e0f38c0da6a9cf1433ba29e2
2023-01-15 22:57:00 -05:00
Solomon Peachy
d39fcf5c89 Update english-us "translation"
Change-Id: I479e1fd337d3384241959782f3f2720e0cac6578
2023-01-15 20:32:14 -05:00
Solomon Peachy
0d8b3fe0b9 FS#13385: Updated Polish Translation (Adam Rak)
I applied the wrong diff, which missed a bunch of stuff.

Change-Id: I3c4da707243c5c0d579ad3130194bfb70fcb4d45
2023-01-15 20:32:14 -05:00
Solomon Peachy
2cb9c7ac29 FS#13385: Updated Polish Translation (Adam Rak)
Change-Id: I346440642c6de0ad5fe73a9cf384dafe266c1e03
2023-01-15 16:41:48 -05:00
Aidan MacDonald
56442f6b7f rbcodec: Fix FLAC out of bounds read
Commit 6bcd830490 ported an optimization to decode_subframe_fixed()
from FFmpeg (upstream commit 08965b22e2). This contains an out of
bounds read, which doesn't affect the decoder output, but makes ASAN
complain.

FFmpeg fixed the out of bounds read (upstream commit 0ec7b71de8) but
that appears to increase code size a lot.

Inlining the initialization of a, b, c, d into the switch produces
similar code as the non-bounds-checked version with only a handful
of instructions of overhead (checked on MIPS & ARM).

Change-Id: I053fac4efc4676b133eb7545c80e23f37fb00d86
2023-01-15 16:11:28 -05:00
Aidan MacDonald
67cb2e3cdc Add core_get_data_pinned(), use it where possible
Change-Id: I1b2f62f27780f99423085d2fffc972ea2701f998
2023-01-15 08:57:45 -05:00
Aidan MacDonald
9e53d5541f "Fix" warble build warnings 800bc000a0
Not really sure how best to deal with the warnings (redefinition of
ARRAYLEN, etc.) short of splitting things out of system.h but this
is good enough for now.

Change-Id: Ibea9f693d128c7995f564f0f5c81d572462a5553
2023-01-15 13:33:22 +00:00
Aidan MacDonald
800bc000a0 buflib: Add pinned get/put data functions
These are more efficient than separate pin/unpin calls because
pin count increment and decrement can be done cheaply when the
data pointer is known.

Secondly, pinned access can be made safe against preemption by
hardware interrupts or other CPU cores; buflib_get_data() can't.
This makes it more useful under different threading models and
for SMP targets; both of which are not particularly relevant to
Rockbox now, but might be in the future.

Change-Id: I09284251b83bbbc59ef88a494c8fda26a7f7ef26
2023-01-15 11:06:27 +00:00
Aidan MacDonald
92565e9246 buflib: Add malloc-backed buflib
This is intended for improving the effectiveness of tools like
ASAN when debugging memory errors in the sim. It's not meant to
be a serious allocator for hosted targets.

Enable it by changing the buflib backend in config.h.

Change-Id: I0cf23cefa47ee35dede7b49e0e5b72dac60e8d3e
2023-01-15 10:04:13 +00:00
Aidan MacDonald
f2f198663e buflib: Move the API back into buflib.h
To minimize code duplication between buflib backends move the
public part of the API to buflib.h. Also rewrote documentation
for the whole API.

Change-Id: I4d7ed6d02084d7130cb41511e63c25ec45b51703
2023-01-15 10:04:13 +00:00
Aidan MacDonald
f995c26de9 buflib: Add CONFIG_BUFLIB_BACKEND for selecting a buflib backend
Defaults to the normal "mempool" backend, which is currently the
only implementation.

Change-Id: I56d034a6e0f5edc90c39526d1551945eec6ca336
2023-01-15 10:04:13 +00:00
Aidan MacDonald
680261fbb7 buflib: Prep for multiple backend support, rename to buflib_mempool
Rename the current buflib implementation to buflib_mempool.

Change-Id: Iefdf74be1f7d8fcd19e6ce2289c3d1459b54d013
2023-01-15 10:04:13 +00:00
Wolfram Sang
e23c78522a si4700: remove unneeded ';' directly after a 'case'
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Change-Id: I3527308cc2495ef5c09b63a071a2c3bdc8ad0e5e
2023-01-14 21:17:58 +01:00
Christian Soffke
e61a5c957c PictureFlow: Add ability to insert into playlists
Songs or albums can now be added to new or
existing playlists directly from PictureFlow.

Change-Id: I6ea27e393fee0d5688385f9e91cf835be1756a7a
2023-01-14 19:44:11 +01:00
Christian Soffke
1e4ee1917c Fix red in 7f265ee
Change-Id: Ib2496af0ed6176ea537e1f61804c1ba514374fb6
2023-01-14 19:40:29 +01:00
Christian Soffke
7f265ee8dd Database: Add ability to insert multiple files into playlists
You could only add single files to playlists
from the database browser before. This
enables adding any database selection to
a new or existing playlist.

Change-Id: I811c7167641c589944bb2afc18dcc1d299a7b979
2023-01-14 12:14:28 -05:00
William Wilgus
cc79f1b543 on_play.c clean up playing_time
move seconds and sizes to arrays indiexed by enums
use a loop for the display and talk of each
stop exiting on SYS_EVENTs

Change-Id: I49d5b9827df4e711b38326e5fef3c54292000370
2023-01-14 10:31:56 -05:00
William Wilgus
6e08731835 [Feature] onplay.c Playlist Playing Time more fault tolerant
bad tracks now get skipped with a message at the end of scanning
rather than an error killing the count

Change-Id: I6d8c14ce00e78416b772bc5e9093a889351bc3de
2023-01-14 00:46:08 -05:00
William Wilgus
202d8939c8 [Feature] xduoo X3 add pitchscreen hotkey to wps
Back(home) + option in that order will bring up the pitchscreen

Change-Id: Iee1f7faf9415033ec8dbd0832e8550e86cd0a844
2023-01-13 23:56:10 -05:00
William Wilgus
958daa925e [BUGFix] ClipPlus move picker below yellow screen split
Sansa Clip and Clip+ have a split monochrome screen
 some versions have a dead line of pixels
having text split at this line makes it hard to read
move text picker below this split on these devices

Change-Id: I1ebcb4c4c7b1ea950f38e35fed06ed85437a657f
2023-01-13 23:12:28 -05:00
William Wilgus
91c7e333d7 Revert "keyboard.c make editline respect current UI font"
This reverts commit ebebef5566.

Reason for revert: I don't want to get too deep into this till I come back to the keyboard rewrite (hopefully)

Change-Id: Ia273f1a19a042be2dd0f1ee46690c03f2865cd95
2023-01-13 22:46:25 -05:00
Solomon Peachy
255a34c685 fix red from #641e91aa2f
Change-Id: I7e648a7bdf1d706258afd49c1edd63655b2d2830
2023-01-13 17:02:23 -05:00
Solomon Peachy
641e91aa2f jz47xx: Add support for INIT region
Change-Id: I100cd661e9b1225167463542800c6aafbc3c17b3
2023-01-13 16:14:42 -05:00
Solomon Peachy
fe16ab33dd toolchain: Bump zlib to 1.2.13, for reals this time.
Change-Id: I4907b2785b7b05d92d2f09de8228525b84947213
2023-01-13 16:04:39 -05:00
Solomon Peachy
dc0d05e220 toolchain: Bump zlib to 1.2.13 due to 1.2.12 being withdrawn
Change-Id: Ia79e19464f5042305fc1707bf4b18483f9051071
2023-01-13 15:29:04 -05:00
William Wilgus
40355caefd buflib_shrink use NULL to signal start isn't changing
Change-Id: Id3e86d3860b8ed860dc6dcbc394b1b8f9f3274b5
2023-01-13 09:50:29 -05:00
Aidan MacDonald
719d48afc4 buflib: Refactor various debugging features
Gate buflib_get_data() checking, debug printing, and buflib
integrity checks behind individual defines in buflib.h, and
turn them all off by default. If needed, they can be turned
on manually when compiling.

The buflib debug menu is only available if debug printing is
enabled, so after this commit it will no longer be included
in normal builds -- it isn't very useful to end users.

Change-Id: Iab25b7852bc7c5592ce04c9c45762046a87d5bc3
2023-01-13 10:32:57 +00:00
Aidan MacDonald
e492b51d83 buflib: Remove block start / end distinction
Removing the variable-length name in the middle of buflib metadata
makes it a lot easier to deal with.

Change-Id: I6eaf236c2285cae40fb6ff0fa5acf827972cdd8b
2023-01-13 10:32:57 +00:00
Aidan MacDonald
5a3ee83555 buflib: Remove CRC checks
The CRC is a fairly useless safety check because we already
have specific checks to validate the metadata, and CRCs are
only verified before calling the move callback. Removing the
check should not significantly reduce buflib's robustness.

Change-Id: Ica99bd92fc514819b4fd9f359b4272e581020f75
2023-01-13 10:32:57 +00:00
Aidan MacDonald
31f03d9433 buflib: Optimize away the BSIZE metadata field
Now that allocations are unnamed, BSIZE is a constant.

Change-Id: Iab52cbebe426ea0d12f428582347e20ed243367f
2023-01-13 10:32:56 +00:00
Aidan MacDonald
1e9ad3ca0d Remove buflib allocation names, part two
Remove allocation names from the buflib API and fix up all callers.

Change-Id: I3df922e258d5f0d711d70e72b56b4ed634fb0f5a
2023-01-13 10:32:54 +00:00
Aidan MacDonald
3301c5aa6d Remove buflib allocation names, part one
Remove the name handling code, but leave the allocation structure
otherwise untouched; it's as if all callers provided a NULL name.
The public API still accepts names but names are no longer stored
or returned.

Change-Id: I6c4defcdfd255774f02030949a0fd731477e6a54
2023-01-13 05:12:17 -05:00
Aidan MacDonald
879888b158 Avoid using buflib names for storing font paths
Naming your allocations is more of a debugging feature; it's a
bad idea to abuse this feature for storing some random string.
The font code does exactly that to remember the path used to
load a font, and it's the only code that uses buflib names in
this way.

Store the path inside the font allocation instead as a regular
char array. For simplicity it's MAX_PATH sized, so this'll use
a bit more memory than the buflib name method, maybe 1-2 KiB if
a few fonts are loaded.

Change-Id: Ie286a1a273d6477af9e5d3f76e0534b62f72e8f7
2023-01-13 04:54:05 -05:00
William Wilgus
ebebef5566 keyboard.c make editline respect current UI font
Change-Id: I4dc95d42544a10df8086cc58c4a305d45b56bb1b
2023-01-13 01:36:45 -05:00
William Wilgus
2d9cb673e5 add chunk_alloc to playlist.c #2
dc_thread_playlist was asking for invalid indices
since previously the name buffer would have been valid
it just got whatever junk data was left over

add dc_discard_playlist_pointers for HAVE_DIRCACHE targets
this allows the dc_playlist_thread to stop its current lookup loop

Change-Id: I6f25b97b8c4e314d27c5e1e6ff0925b5a3e93f26
2023-01-12 19:36:38 -05:00
William Wilgus
00c7817c9c [BugFix] playlist.c DIRCACHE stop scanning when changing indices
dc_playlist_thread may continue loading pointers even while
underlying indices are changing instead stop the loop by marking
pointers as clean and rebuild later

Change-Id: If154f673b4af8d6e9c364499d58f1321834a76a4
2023-01-12 19:36:38 -05:00
Aidan MacDonald
16a32c576c Fix red in 7e5fc4076a
Change-Id: I1704ea0de243bff05262556723daea5b3531558b
2023-01-12 11:56:47 +00:00
Aidan MacDonald
7e5fc4076a Add INIT_ATTR to i2c_init()
It's usually only called from init() in main.c, so this is safe.

There is one more call in system-dm320.c from system_init(), but
that's also "safe". I don't know if it's okay to call i2c_init()
twice, but presumably it works...

Change-Id: I9c1cd918d162d9955f7cf03209e836cbd5e30c57
2023-01-12 06:33:50 -05:00
Aidan MacDonald
39439f6909 Add INIT_ATTR to system_init()
On single-core targets, system_init() is only called from init()
in main.c, which is also INIT_ATTR, so this is safe.

Multi-core targets additionally call system_init() from cop_main(),
which isn't marked INIT_ATTR. I'm fairly certain that it would be
safe to add INIT_ATTR to cop_main() with a bit of refactoring, but
I don't have a way of testing it. So for now, leave INIT_ATTR off
for multi-core targets.

Change-Id: I8fe4358f975880ca317d46bda01d7d9db529d3e3
2023-01-12 06:05:55 -05:00
Aidan MacDonald
541960a110 rbcodec/dsp: restore configure loop in dsp_init() (FS#13386)
It seems removing this causes a crash on the Clip+ when playing
any file. Appears to be a timing-related issue as replacing the
loop with an mdelay() also fixes it. Needs further investigation
to identify the real cause of the problem, see FS#13386.

Change-Id: Ia93a2887a79b376de50563d6bb3bbc79cee11a1c
2023-01-12 04:56:06 -05:00
William Wilgus
746fd7f2db Revert "add chunk_alloc to playlist.c"
This reverts commit 89c021fbfa.

Reason for revert: crash when playing on disk playlist then playing a directory as an in-ram playlist

Change-Id: Ia5cf5da9f46f8c10c5c0f3707e7978c05664b8a4
2023-01-11 01:14:22 -05:00
William Wilgus
89c021fbfa add chunk_alloc to playlist.c
Change-Id: Ia2e02a61f0b269dc0508717a56a2ca1a334d2378
2023-01-10 23:59:19 -05:00
William Wilgus
7faf6be35f chunk_alloc
chunk_alloc allows arrays (or any data) to be allocated in smaller chunks

you have to save the indices..
 variable data will have variable indices you need to
 store these as [chunk_alloc] doesn't keep track
 if you have a fixed size for each
 alloc you can do indice / sizeof(data)
 or index * sizeof(data) to convert

Lots of debug stuff still in and it needs optimization

User provides chunk_size and max_chunks
max_chunks * struct chunk will be allocated at start
with (1) chunk_size allocation initially

alloc_chunk() with size = 0 shrinks the last allocation to the size of the data used

add OOM checks on buflib_alloc -- oops

move bytes available to the header -- less memory per chunk & better alignment
keep track of the current in use chunk index -- should speed things up a bit

Now allows:
realloc chunk header
larger allocations than chunk size

reallocs smaller than existing will shrink the current array
rather than alloc a new and copy data

Comments welcome :)

Change-Id: I8ed170eef73da95da19430a80b32e5debf0c8276
2023-01-10 23:59:19 -05:00
Christian Soffke
a513cee822 PictureFlow: Add 'Track Info' for tracks or whole albums
Context menu gains new option to view
metadata for individual tracks or albums.

Will display an album's length and total file size.
Other fields are displayed only if they are identical
across all tracks (except for the album year, which
is determined by the highest value encountered).

Change-Id: Ibc14cfaf2cb3d91b8d1cfbee05c6261db4975355
2023-01-10 18:50:12 +01:00
Christian Soffke
d5e38062ea Fix hotkey strings
missed in 7d13c0c

Change-Id: I7299b6a646dc143943b2c8d1d89ecdc4a16667c7
2023-01-10 17:05:53 +01:00
William Wilgus
3694314058 [BugFix] voicefont.c buffer overflow
voicefont.c expected a max of 999 voice IDs we are at 1013 or so
bad stuff happened TM new limit is 2048 and added an error message
(no file will be created if limit exceeded)

Change-Id: Ifda6dc5c45883551f8ae8f0d4efc9f7acdb7c90f
2023-01-08 15:43:05 -05:00
William Wilgus
282a54b23c [Feature] filetree fallback to loading a playlist from disk
give user option to load playlist from disk when
namebuffer is too small -- max_playlist size still
limits the total entries but filename length
 won't stop them from playing the directory

Change-Id: I1787689417661ea670a211f575f2c52e84465869
2023-01-08 09:52:23 -05:00
Aidan MacDonald
593103cd8b lcd: Fix 4bpp optimized 16-bit alpha blit
Fixes a bug introduced by commit 5d0c382a59 that caused graphical
corruption on anti-aliased fonts.

Change-Id: I6052ca758382bd9a1154d2e2208dee633dd17715
2023-01-08 10:50:39 +00:00
Christian Soffke
528b6a9a15 manual: Update screenshots
Change-Id: I264210ee0a759fc3a7e89578f7d9d32d58dfd609
2023-01-07 19:48:26 +01:00
Christian Soffke
7d13c0c4eb Rename "Playing Next..." menu items & hide Queue/Shuffle
"Play Next" instead of "Insert Next"
"Add" instead of "Insert"
"Play Last" instead of "Insert Last"
"Add Shuffled" instead of "Insert Shuffled"
"Play Last Shuffled" instead of "Insert Last Shuffled"

-"Queue" items hidden by default
- Shuffled options hidden by default
(Both can be enabled in options)

Resulting default menu:

Playing Next...
	Play Next
	Add
	Play Last
	Play

Change-Id: Ib0c07a8077ab4b10c2dbc7af33516adcd0d4b83a
2023-01-07 16:32:22 +01:00
Christian Soffke
ed95892a1f Rename “Current Playlist” and “Playlist Catalogue” context menus
Use action-oriented and more descriptive titles

"Add to Playlist..." instead of "Playlist Catalogue"
- "Add to Existing Playlist" instead of "Add to Playlist"
- "Add to New Playlist" (unchanged)

- "Playing Next..." instead of "Current Playlist"

In WPS context menu:

- "Current Playlist" instead of "Playlist"

Change-Id: I5cce9e317676537988682f46ac6b920598af3b9e
2023-01-07 14:53:36 +01:00
Christian Soffke
21ca64d7cd File Browser: Add “Set As..." context menu
Moves options for configuring:

- Playlist Directory
- Recording Directory
- Start Directory

into a single menu.

Necessary prerequisite for giving the
"Playlist Catalogue" context menu item a title that's a
little more action-oriented ("Add to Playlist…”).

Change-Id: I4ee08fc67d5350c38ae1a57cb345c4ed1082d0b5
2023-01-07 14:53:36 +01:00
Aidan MacDonald
5bb062391f playlist.c fix old out of bounds read
In case next_index == -1, this would read before the start of
the playlist->indices buffer.

Change-Id: I0a32a31c7c97c755a1217b8bea90a650f9e36a93
2023-01-06 14:19:28 -05:00
Aidan MacDonald
5d0c382a59 lcd: Rewrite 16bit alpha bitmap blit
Avoids a harmless out of bounds reads in ASAN that occurs with
malloc buflib. Code size and performance is similar.

Change-Id: I1c674d046b069e64ad8cb6941356f7c568a81e88
2023-01-06 13:54:09 -05:00
Christian Soffke
b444ecfca2 plugins: Properties: Add 'Last Modified' for audio files
In commit f3358eb, the Properties plugin started using the
Track Info screen for audio files, which didn't show when
the file was last modified. This adds it back.

Change-Id: I3ce519da234a4bcadab1d64b67de0298cada8f6e
2023-01-06 19:00:24 +01:00
Christian Soffke
5750eb3181 browse_id3: Only push activity when called from WPS
The Properties plugin and playlist viewer have each
started using the existing Track Info screen.

In both cases, it may not be necessary to push a new
activity. Which eliminates the need to perform an
additional skin refresh.

I've also noticed at least one theme in the wild that
assumes ACTIVITY_ID3SCREEN will only ever display
info for the currently playing track (as it did
previously) and adjusts the skin specifically for
that purpose.

Change-Id: Ic436d0d4e075a865225839a524387ff2b9058428
2023-01-06 12:50:18 -05:00
Christian Soffke
8366b8511d Fix red in 9bd5249
Change-Id: I4aa18b4afd68e35b1af5fe40dc02cc406ee31978
2023-01-06 06:38:57 +01:00
Christian Soffke
9bd5249445 plugins: Credits: Fix logo sizes
Commit 1930ca8 repurposed the 'Logo' plugin's
logos, whose dimensions are different from those
used by show_logo, which was previously called
to display the logo.

Change-Id: I4d0c5f597dadfdadae244d895518bbcfefebb581
2023-01-05 23:45:41 -05:00
William Wilgus
9367ef1ed6 [BugFix] Fix some Shif related UB -- ASAN
these are the low hanging fruit identified by ASAN

cast the byte values before shift

Change-Id: Ifc5645354a10c15ccd09d1343e1705857a51e011
2023-01-04 22:00:25 -05:00
William Wilgus
ea33e66021 [BugFix] Buffering.c NULL src for memcpy is UB -- ASAN
No clue if our implementation would suffer the same fate
but the C standard states:
Where an argument declared as size_t n specifies
the length of the array for a function, n can have
the value zero […] pointer arguments on such a call
shall still have valid values, as described in 7.1.4.

Change-Id: Iee0dd9c948c6ad4b0d96309053127ab11111f04c
2023-01-04 20:20:08 -05:00
Aidan MacDonald
a23ae63a31 Increase maximum files in directory limit
Increase the default limit to 5000 files for targets with at
least 8 MiB of RAM (the vast majority). The upper limit of the
setting is now 40,000 or 100,000 if you have at least 8 MiB or
16 MiB of RAM, respectively.

Update the manual to mention that this setting can also impact
the database browser. "Using the Database" already mentions it,
but it's useful to say so in the setting's description.

Change-Id: I6f204eec6cf2ccaea2af81d2fa287f92476eed4a
2023-01-02 20:55:48 +00:00
Aidan MacDonald
9d6f9441ae manuals: Update warning on max entries in file browser / playlist
These settings have a warning that increasing them will shorten the
audio buffer. This is not very useful, because users might not know
what "shortening the music buffer" implies.

Since the size of the audio buffer is probably irrelevant for flash
based storage, display the warning only for HDD-based targets, and
explain what the drawbacks may be if the settings are set too high.

Change-Id: Ie9eb4907c67e20695bfa083e1c2a29385e66afcf
2023-01-02 20:55:02 +00:00
Aidan MacDonald
e8e781b006 lua: rocklib_events fix
Do not spawn threads on COP as PP lacks cache coherency between cores,
making it unsafe to access cacheable memory that might be accessed by
the other core.

Change-Id: Idf910e9cc9dad3f0bf5bdb63800ed4abaa97558a
2023-01-02 13:38:08 -05:00
William Wilgus
84fe501f53 Add locked actions to all soft lock targets
fiio m3k native is currently the only player with
defined buttons different from the standard
mapping.

This allows the user to use the keyremap plugin
to specify differing keymaps for their device in the locked state

Change-Id: Ie0b447bba0d5978e8d23fed423df30c794afc6f9
2023-01-02 13:19:43 -05:00
William Wilgus
a00bd421ac clean up button.c optimize !filter_first_keypress
do a bit of cleanup in button_tick move filter_first_keypress to a function pointer

Change-Id: Iefb05c1a182c1e15cfb5bca8e2ef31a710d15eba
2023-01-02 11:04:47 -05:00
William Wilgus
6cbf2160e5 tlsf fix corruption checks
Turns out (~PTR_MASK) != (0xFFFFFFFF - PTR_MASK) in 64 bit land

tmp_b = (bhdr_t*) ( (intptr_t)b->prev_hdr & BLOCK_SIZE );

using ~STATE_MASK or even #define BLOCK_SIZE (~PTR_MASK) resolves the issue

switching  BLOCK_SIZE TO  ~STATE_MASK appears to fix it

Also define BLOCK_SIZE (~PTR_MASK)

Fix a few signed / unsigned errors

Change-Id: Ica59db0faa2df408831c23312243ae19259dba6b
2023-01-02 10:09:46 -05:00
William Wilgus
3def8fee8c [FixRed] ClipV2 has a hold button -- news to me
HAVE_LOCKED_ACTIIONS requires !defined(HAVE_HOLD_BUTTON)

Change-Id: I1e98c282f17d11f08ea80cd5963b331a3ae19387
2022-12-31 17:12:36 -05:00
William Wilgus
6ebec601f9 [Feature/Bugfix] keyremap add Context flags
Add context flags to keyremap
CONTEXT_LOCKED
CONTEXT_REMOTE
CONTEXT_REMOTE_LOCKED

--CONTEXT_PLUGIN-- Removed -- Plugins need a custom action list
supplied and a method of supplying them

Change-Id: I5201d275ad0ab6130c2d05d5afb0c450f5c1746c
2022-12-31 16:12:18 -05:00
William Wilgus
0330aa8eb2 [BugFix] printcell_helper selection out of bounds
on load printcell.selcol is -1 whioch is out of bounds as an index into an array

Change-Id: I1e823712d268537d5d444458993ec2aa2cd253ff
2022-12-31 16:12:18 -05:00
Solomon Peachy
485e96d6be tlsf: Update to upstream 2.4.6 release
Seems to resolve FS#13383 and FS#13384

Change-Id: I43b2f166b78e61c16723a944729aa117260320fc
2022-12-31 15:21:55 -05:00
William Wilgus
85410589d1 Revert "keyremap allow remaps to work when player is locked"
This reverts commit ea7b80dab0.

Reason for revert: Adding Context flags to the keyremap plugin

Change-Id: I056ca2c0ee27e6cc7946166cf52461efda0ee1fb
2022-12-31 11:01:46 -05:00
Aidan MacDonald
484a79fcc0 x1000: Add INIT_ATTR to various target specific functions
Add INIT_ATTR to some low-hanging fruit in the X1000 code:
GPIO init, GPIO initial state tables, clock init, and DMA init.

Change-Id: Ia02b20945da1bbed103e2e01eaf60553eb5f72d4
2022-12-31 08:10:41 -05:00
Aidan MacDonald
a980d5f869 x1000: Enable support for INIT_ATTR
Enable INIT_ATTR support in config.h. Load init code to the
codec buffer, following the convention used by other targets
that support INIT_ATTR.

Change-Id: I8935fbaa100f0013bb328d71c4a49ec2ffafd003
2022-12-31 08:10:41 -05:00
William Wilgus
ea7b80dab0 keyremap allow remaps to work when player is locked
keyremap doesn't have a notion of locked contexts
add CONTEXT_LOCKED after keyremap so users don't have to specify
multiple context flags to get Advanced keylock working with keyremaps

Change-Id: I17b3f5b2ac9bf23277543fb04d66d6d90d16557f
2022-12-31 07:21:53 -05:00
William Wilgus
855540e1f5 [BugFix] keyremap browse missing root, entry count off by 1
browse_context was missing its root causing a NULL deref

Export User Keys was looking for at least 4 entries when it only needed 3

Change-Id: If92ecccb36bd54e1b850ac2a969fe262b5d7fd14
2022-12-31 07:04:18 -05:00
Christian Soffke
1773e56447 tagtree: Discard item history when selection changes in both directions
A changed selection only caused the item
history for deeper levels to be discarded
in tagtree_enter, when you were descending,
but not in tagtree_exit when you were ascending
the menu hierarchy again.

Change-Id: Ia40fa47980a05c2569e8af04e928b06130aa1f33
2022-12-30 21:57:55 -05:00
roman.artiukhin
178560f495 Treat cue file as folder for next/prev folder action
Do not get stuck if it's the only cue file in folder

Change-Id: Ibb1a406ff030f945e4234fbd1ece747d1e5a0c44
2022-12-30 19:56:44 -05:00
Christian Soffke
b321a719d3 option_select & time_menu : Fix unbalanced push/pop activity
Change-Id: Icabbabb16b2f173168a441af474ee8403b908dd4
2022-12-30 10:35:50 -05:00
William Wilgus
e180e45e01 events.c clean-up
check for invalid userdata by assigning the address of 'invalid_userdata'
this cleans up the functions a bit and removes some extra conditionals

Change-Id: Ic5e13147796e629010a1436eb60042f6550a959c
2022-12-30 07:23:29 -05:00
Christian Soffke
d59e135b04 plugins: Xobox: Fix highscore table on 2bit grayscale displays
After finishing a game of Xobox, background and
foreground were both the same color, making the
high score table invisible..

Change-Id: Iab4bad0e7d3f247a4b600ff9ec8e57207bc3832f
2022-12-29 11:26:57 +01:00
Christian Soffke
66bed14f17 plugins: SpaceRocks: iPod keymap, use Menu button for Menu
Missing from faa2cb9

- Thrust is now Right instead of Menu
- Teleport is Left instead of Play/Pause
- Pause is Play/Pause

Change-Id: Idd9758a68250bcfb2adec14589dffbe1a091511c
2022-12-29 08:10:01 +01:00
Christian Soffke
faa2cb9942 plugins: Improve usability of iPod keymaps
- Reduce need to press multiple buttons at
the same time to quit a plugin

- Have "Menu" be default way to quit plugins or
to access plugin menu

- Fall back to (Long) "Select" or Long "Menu"
in cases where Menu button isn't available
(e.g. in ImageViewer and many games)

out of scope:
boomshine, lua_scripts, Rockpaint,
Doom, Duke3D, Pacbox, Quake,
Sgt-Puzzles, Wolf3D, XWorld,
Minesweeper, Pixel Painter, Spacerocks

Change-Id: I6d4dc7174695fe4b8ee9cbaccb21bdbfe6af5c48
2022-12-29 04:39:22 +01:00
Christian Soffke
52f59f637d plugins: VU Meter: Ignore backlight timeout
Change-Id: Ic61cbd61dab18afe951b00a84b9ebeb15a8ee5f0
2022-12-27 09:43:34 -05:00
Aidan MacDonald
5f2ca6718d Revert "buflib.c strip path from alloc name"
The font code expects the full path to be stored in the
buflib alloc so this breaks eg. saving the glyph cache.

This reverts commit 2b4a4070c9.

Change-Id: I53844c39b34b14f7c8e5999825c1d012fa3f74dc
2022-12-23 19:59:06 +00:00
Aidan MacDonald
ba010851fa Remove lib/x1000-installer
Carrying this library is somewhat of a maintenance burden because
some Rockbox APIs are mocked or duplicated in the test suite and
thus need to be fixed up when refactoring.

It's also unused & incomplete, so there's no good reason to keep
it in tree any more.

Change-Id: If39c62744b4edc0d81b1b6608ee5df69430e6581
2022-12-23 19:54:18 +00:00
Aidan MacDonald
6e794c9a2d rbcodec dsp: Refactor DSP init routines, restore INIT_ATTR
Refactor DSP init routines so there is a dedicated init function
for the stages that need it. Remove the DSP_INIT configure message.
This allows the init code to be safely marked INIT_ATTR, saving a
bit of code size, and allowing the linker to verify that there are
no unsafe references to the init routines.

Change-Id: I1702f0f579bbb300a6fe7d0e67b13aa2e9dd7f8a
2022-12-23 12:47:10 -05:00
Aidan MacDonald
34a092a997 rbcodec dsp: Replace enum dsp_ids arguments with unsigned int
Because casting to and from "enum dsp_id" just adds noise,
change everything to unsigned int.

Change-Id: I52a7ae55f406e673d5b811b29657fcdc4b62ab10
2022-12-22 18:00:37 -05:00
Aidan MacDonald
b96b7640de rbcodec dsp: Move dsp_sample_io_configure() to its own file
Makes dsp_sample_input.c a bit less messy, and dependencies
are more explicit. There's possibly a minor loss of inlining
but it isn't a big deal.

Change-Id: I30f923a0ca758f2b113d32852d1f65586dff0cd1
2022-12-22 17:20:14 -05:00
Solomon Peachy
646d5f92ef ata: Prevent powering-off ATA hardwre if it reports as mSATA or m.2
As those form factors are typically not runtime removable and as such
expect to always being powered up.

This is an experimental change, and we might revert it if it doens't help

Change-Id: I61187f297866f64589a546352828a0ff8169fa30
2022-12-20 20:38:43 -05:00
William Wilgus
1387d6480e [Fix Red] consolidate bmp_read function between icons and skin_parser
Change-Id: I642ec2272ac94233127d8670f6adee938e53bce0
2022-12-20 19:32:32 -05:00
William Wilgus
88f6628423 consolidate bmp_read function between icons and skin_parser
uses fd now rather than opening file twice

Change-Id: If35418cbc77adacf5e96fb6aa0fc8ffef2fffcbd
2022-12-20 19:07:46 -05:00
William Wilgus
2b4a4070c9 buflib.c strip path from alloc name
Change-Id: I6a0f1cc9037fcbe0245d94b4c77ba4ec08378434
2022-12-20 18:10:44 -05:00
William Wilgus
18ec1a2aa6 [Bug Fix] Credits Plugin don't set the back/foreground on greyscale displays
Change-Id: I2e5a37111dd055932b84962b70ff6c3eace945c7
2022-12-20 02:40:14 -05:00
Solomon Peachy
83bb89d0b8 jx47xx: Rename crt0 'init' sections to 'startup'
Mirrors the change made to the x1000 target

Change-Id: I69663245b1d05c001500240af33164f222e70e90
2022-12-19 23:09:54 -05:00
William Wilgus
1930ca8d66 remove rockboxlogo after boot INIT_ATTR
nets about 5k on clipzip  (less on mono, more on others)
to move rockboxlogo to .initdata section

Remove show_logo completely and move to main.c
remove plugin stub
give credits plugin its own copy
credit fallback is now show_info()

Change-Id: Id9ed787e605ed29e7ab1e7a74d3821cd0f840ed4
2022-12-19 18:59:59 -05:00
William Wilgus
f37ebe5ed2 [BugFix] root redirect failed to match the peoper drive when internal drive is missing
HAVE_MULTIVOLUME is a subset of HAVE_MULTIDRIVE
in normal circumstances they are interchangable
but when the internal drive is not found the assumption falls apart

at the moment most of the bootloader are less selective about what drives/volumes
they will mount therefore the volume might not match between what the bootloader
returns for multiboot and what the firmware sees

updating bootloaders will fix this but it should probably be made more robust
at the same time

Change-Id: I93acd4a539894f093211b74b030df3b2c6a0aa11
2022-12-18 23:32:13 -05:00
Aidan MacDonald
992455dc58 Fix red in 8165a6c245
Change-Id: I939b40492902525c911c063c66b28529b7d0842f
2022-12-18 23:55:36 +00:00
Aidan MacDonald
8165a6c245 rbcodec dsp: Remove INIT_ATTR from the DSP library
All of these are technically unsafe cross-section references but
most aren't reported by the linker, probably due to inlining. In
practice there was no problem because the affected code was only
run at init time anyway.

For now, remove INIT_ATTR until the init code can be refactored
to avoid the problematic references. This should also save code
size by moving more code to the init section.

dsp_init() gets to keep its attribute because it's already OK.

Change-Id: Idc9ac0e02cb07f31d186686e0382275c02a85dbb
2022-12-18 22:23:52 +00:00
Aidan MacDonald
b650e774a1 kernel: Fix unsafe cross-section reference in init_tick()
This is a small wrapper function which calls other init code
and is only called from init code; mark it INIT_ATTR to fix
the unsafe reference.

Change-Id: I5525461e9fd63955c6396d3151d209c457b3d798
2022-12-18 22:23:52 +00:00
Aidan MacDonald
e8ad52be94 x1000: Rename crt0 .init sections to .startup
Avoid startup code clashing with the .init section, which is
by convention used for INIT_ATTR code that can be discarded
after app initialization.

Change-Id: Id59b7618ef41e65c33fc0f133644e07555a913eb
2022-12-18 22:14:22 +00:00
Aidan MacDonald
68af18a56f x1000: Simplify app linker script
Get the linker to automatically assign load addresses for
the .iram and .tcsm sections. Taken from the i.MX31 linker
script.

Change-Id: Ic03d577d8690c777726daf373a3289316639bfb9
2022-12-18 22:14:22 +00:00
Aidan MacDonald
d6744c92b1 x1000: Add missing LCD activation event on LCD enable
This event is needed to trigger a GUI redraw when the backlight
turns on.

Change-Id: Ib2300dfd1aaeacd84c6df8151072292409357212
2022-12-18 21:01:04 +00:00
Aidan MacDonald
6c52fa139c Remove browse_context_init()
Prefer to use designated initializers to avoid having to specify
unneeded parameters. Non-initialized members are zero-initialized
by the compiler.

Change-Id: Ia6a03c45cb3ef0b30f458d7d0ae1604a350c737c
2022-12-17 13:36:38 +00:00
Aidan MacDonald
701e262d3d settings: Remove setting ID return from find_setting()
Now that all users have replaced setting IDs with direct pointers,
find_setting() and friends don't need to return an ID value.

Change-Id: I8c5c31bb68d3bca5350d43538335265a55fd5517
2022-12-17 13:36:38 +00:00
Aidan MacDonald
767ddef550 quickscreen: Settings ID to pointer conversion
Saves a good deal of code...

Change-Id: Ibaf4138ddffd5d8f7cca560cc52645dbce44149c
2022-12-17 13:36:38 +00:00
William Wilgus
c85a4f1fa4 menus remove reserved 'param' parameter
-- missed the plugin menu --

Change-Id: Iac2c9b0b8212ab5f3ac2ef90e1ac2723d212f86c
2022-12-17 04:24:37 -05:00
William Wilgus
ccf1aaa5be menus move functions with parameters to their own type
left the union with function(void) and function_w_param(param)
as a few areas might still need to use both (onplay.c)

there might be a few I missed yet..

Change-Id: I593a6875301923e19ba04ad1b0f3173dc9ebdf1f
2022-12-17 02:51:43 -05:00
William Wilgus
6f54bb63fc open_plugin.c access open_plugin_entry through a function
just a few updates to open_plugin save a bit of space by granting access through a getter function

Change-Id: I2c0eaa1ade867510798b213006064ee1c00aa016
2022-12-16 09:05:06 -05:00
William Wilgus
626be18da0 [Bug Fix] haas surround use delay_ms instead of index surround_strength
this appears to be an old bug

rather than using an index use delay_ms directly

Change-Id: Ia4d0bf8eb8030d6ded08354abc31cc7ddefdda99
2022-12-16 08:30:54 -05:00
William Wilgus
5903cd4bc8 [Bug Fix] setting.c fail to check F_TABLE_SETTING w/o arbitrary values
table settings have a list of valid values when
they do not have F_ALLOW_ARBITRARY_VALS flag

they were not being treated as such

Change-Id: Ib02643a65ee4fc2abb1be8563a1849076de2f708
2022-12-16 08:30:54 -05:00
Christian Soffke
222ff0cb14 Plugin return: only skip SBS refresh if WPS was previous activity
1) the plugin return value isn't necessarily respected.
2) the screen will be updated regardless, before
the WPS is displayed, which means the skin may
appear in an "incorrect" state for a moment.

It is therefore better to simplify this to a single
condition.

Change-Id: I723e6fe4862172075b9a4814080f612c2b2fb490
2022-12-16 13:04:56 +01:00
Christian Soffke
a6bafe51a6 WPS hotkeys: Don't enable SBS for pitch screen or bookmarking
Change-Id: I5d5f4f1c402500abd15fcbb8b62013c97f4f931c
2022-12-16 08:25:20 +01:00
Christian Soffke
79e6139f56 Playlist Viewer: Fix delayed appearance of backdrop on return from plugin
Change-Id: I84ff9b581d185fecbe3c7405d3e1887715d55d17
2022-12-16 02:05:33 -05:00
William Wilgus
28f768cb84 onplay hotkey add flags
idea here as discussed with chris_s is to allow flags
in the hotkey_assignment struct to change how items are displayed

Change-Id: Id4cf1d79fbe3ff8f5590b9a863fccf00ddd457f9
2022-12-16 01:44:05 -05:00
William Wilgus
31759c9e53 [Bug Fix] quickscreen clashed with WPS Hotkey browser
chris_s noted:
When you set the WPS hotkey as a QuickScreen item and shuffle through the options,
it eventually gets to the "Open Plugin" option and will show the File Browser,
clashing with the Viewports of the QuickScreen

Change-Id: I3addbbbac5842f89c000c155484d7cb934dc500e
2022-12-14 23:45:58 -05:00
William Wilgus
99839960a2 abrepeat add dummy functions and remove some of the ifdefs
Change-Id: Icae7e334e87bb1974712a7a76296cf69bbdbffba
2022-12-14 23:37:14 -05:00
William Wilgus
6b87bfadff wps.c cleanup gui_show_wps
remove some old cruft move a few things around clean-up flow

Change-Id: I138c6cd9e2d58ef526eb686333da413819df725d
2022-12-14 22:35:33 -05:00
William Wilgus
eaf717744d [Bug Fix] open_plugin.c update checksum check for spinning disks
Lang_id keys take LANG_LAST_INDEX_IN_ARRAY for the checksum
spinning disks did not have the code to do so

Change-Id: I617e1a5462d8d6c4830a9b59171bdd7167d5e7a1
2022-12-13 23:37:26 -05:00
William Wilgus
c6c1d62489 [Bug Fix] filetypes.c move voice data out of INIT_ATTR
tree_get_filetype_voiceclip is called after init it shouldn't be marked as INIT_ATTR

add _init to the functions & data that are used at init only to be a bit more clear

Change-Id: I8eb1914560b782c2c0fdd7649e761f94e382d5cb
2022-12-13 22:35:24 -05:00
Christian Soffke
8ff2c81bde Improve transition between plugin and WPS
Eliminate flashing when plugins are launched
from WPS, by not enabling the SBS, and by
deferring other lcd updates.

Also prevents flashing root menu activity when
returning from plugins.

Change-Id: I7d761867027f2275c4ab8e16ada3107c7ba0be6e
2022-12-13 21:10:16 -05:00
Christian Soffke
0e2e9df991 Plugins: Eliminate 'Loading' splash unless disk is inactive
My impression is that the waiting time for plugins
is only ever significant if a disk needs to spin up.

In other cases, the experience seems nicer
without a 'Loading' splash, especially for
often-used plugins, such as 'Properties',
when it is launched from the Database or
from the File Browser.

Change-Id: I018ccb13466fa618ef089b6dc7714db38cffd9b6
2022-12-13 20:52:09 -05:00
roman.artiukhin
d520dcbfbb Exit Pitchscreen on BUTTON_HOME for Sansa Clip
ToggleMode is remapped to BUTTON_SELECT
Reset is remapped to Long BUTTON_HOME or Long BUTTON_SELECT (avoids accidental reset by pressing BUTTON_SELECT)

Change-Id: I6fc4050c66db2d7db7ec899f9c83b70754fef9df
2022-12-13 20:24:37 -05:00
William Wilgus
0747415277 Settings.c add logf debugging to verify settings
decodes saved settings and available settings & flags

Change-Id: I46bea15e7cef23fe9e41778455564f38bf00eeb1
2022-12-12 23:12:31 -05:00
William Wilgus
2b79ad43bd Haas Surround add flag so the settings can be read back from the config file
not sure how long this has been broken

Change-Id: Ifdbfff1e43f3cd6b5ef1c66d45b6b6f38f60cb95
2022-12-12 03:15:38 -05:00
William Wilgus
863538c50a [Bug Fix] dsp_proc_enable init race / crash
haas surround is causing a seg fault

it appears process is null see https://www.rockbox.org/tracker/task/13382
for details

when the low_latency_callback is enabled it happens less frequently

lets default to an empty process that way there are no NULL pointers to call

Change-Id: Ib72ba1a58cbb20cef04b5ea50964adadeee74a75
2022-12-11 22:17:12 -05:00
Christian Soffke
ac9066dd44 Setttings: Eliminate gui_synclist_init_display_settings callbacks
Since synclists are now re-initialized after leaving
Settings menus where the callback was used, it
shouldn't be needed anymore.

gui_synclist_init_display_settings can also be made
local to list.c now.

Change-Id: I674e4da49153440b48298fed7c4d98b421b7beaa
2022-12-11 11:50:33 +01:00
Christian Soffke
dfd9c10589 Eliminate skin updates in between activities
1) Adds way to pop activity without refreshing the skin at
the same time.

Activities are sometimes popped in immediate succession,
or one activity is popped before another one is pushed right
away. This can lead to the UI appearing glitchy, due to an
activity only appearing for a split-second, which is especially
noticeable with complex skins that change the dimensions
of the UI viewport depending on the current activity

To fix this, prevent superfluous skin updates

* when switching between:
- WPS and browser
- WPS and Playlist Catalogue
- WPS and playlist
- WPS and Settings/System/Plugins

* when accessing Track Info or when displaying
bookmarks using the context menu on the WPS

* when switching from QuickScreen to Shortcuts Menu

2) The playlist viewer activity was pushed & popped
redundantly by playlist_view.

----
NB:
Behavior has remained unchanged in all instances of the
code where pop_current_activity() has been replaced by
pop_current_activity(ACTIVITY_REFRESH_NOW).

Change-Id: I56b517b8c9dba823a9fed3a3f558d7469dcea9fd
2022-12-11 11:50:33 +01:00
Aidan MacDonald
90d1ac0448 settings: Rewrite cfg_int_to_string() and cfg_string_to_int()
It's easier to do the parsing manually.

Change-Id: Ief8b71942d3ab9313dd6927bd7f4bb254d0c12db
2022-12-10 14:21:42 +00:00
William Wilgus
fc18235323 Selective backlight add CONTEXT_MAINMENU
I think its better to just limit this to the mainmenu rather than all contexts

Change-Id: If734a9516b14ec96d9e32beceba22419c47c0720
2022-12-09 17:54:02 -05:00
roman.artiukhin
b63f4c5884 Exit option select on ACTION_STD_MENU
Similar to 59f3f43d. It makes it behave consistently with tree/playlists other menus. So it's possible to exit option select using Back button on Clip Zip or Power button on Rocker

Change-Id: I93fe71ba2222ae16d59f3ba4cfbbedad3fb2568b
2022-12-09 11:02:50 -05:00
William Wilgus
7a00ad72e4 [Bug Fix] bookmark.c failure to compare existing tracks and playlist
the underlying global buffer fo bookmark is overwritten by the read function so
instead make a hash of the playlist and track names

might needa better hash but hopefully CRC32 is sufficient

Change-Id: Ie25dbb62e664b804e4f858d9e0cc248fdc8c9895
2022-12-08 17:55:36 -05:00
Dana Conrad
3555e84a7a Bugfix: some settings can have spaces in them
90bc769 strips spaces from the settings value, but it
goes to the first space rather than just stripping off
the last one. Break out of the loop when we find the
first non-space character.

Also change 0 to '\0' for readability.

Change-Id: I915b82a6d1603740998a67c575d08005456ffbd8
2022-12-08 15:38:12 -05:00
William Wilgus
f6f12db062 events.c do_add_event() only traverse event array once
we already go through the whole array might as well save the free slot as well

Change-Id: I6e1164b57a5510f5de5555d2cb91379afc58ae08
2022-12-08 05:19:40 -05:00
Christian Soffke
66a411a1ba Tree / Playlist Viewer / Menu: Fix redraw issues
1) Tree_lists was only initialized when booting the player.

In cases where a skin used custom UI viewports of
different sizes, when switching between screens, such as
between root menu, QuickScreen, and tree browser, this
caused list titles to appear with a significant delay,
unless a GUI_EVENT_ACTIONUPDATE was sent.

Tree_lists is now initialized when entering dirbrowse
or when restoring/reloading the list.

This eliminates multiple redundant UI refreshes when
entering the tree browser, due to gui_synclist_draw not
being called twice anymore and by being able to omit
GUI_EVENT_ACTIONUPDATE.

Separate calls to gui_synclist_init_display_settings
have become unnecessary since it is already called
by gui_synclist_init.

2) The synclist is also re-initialized when returning
from the QuickScreen in the Playlist Viewer or
regular menus, or when returning from Settings
menus

Change-Id: I2884249eda55f782e97abad9dc19b3d9d1267fc9
2022-12-08 00:38:59 -05:00
Solomon Peachy
a9a284c1a0 lang: Correct a "mistranslation" in english-us
Introduced in 9a8ec7e0d from March 2021

Change-Id: Ica0767531bfd09d57cda2093d0e2764234b79526
2022-12-07 13:17:56 -05:00
William Wilgus
a1e4385acb backlight.c move some conditionals out to functions
de clutter bavklight_thread a bit

no functional changes

Change-Id: Iee3901a0abcea9bcf4fe364839af177e3791d980
2022-12-07 09:07:27 -05:00
Aidan MacDonald
90bc76956c Ignore trailing whitespace in settings .cfg files
Have settings_parseline() strip trailing whitespace from
the setting value.

Fixes a regression introduced by 5b1dd64f5, which caused
filename settings to be parsed incorrectly when there is
trailing whitespace in the .cfg file.

Change-Id: I6c54428f6467ea2d169d2a7449705b40627e1a40
2022-12-07 08:44:18 -05:00
Richard Goedeken
f3b522cac6 bugfix: for Eros Q / Surfans F20, when the scroll wheel is moved, in addition to resetting the power-off timer, we also need to reset the backlight timer and turn it on in case it's currently off.
Change-Id: I73b463e74727a2d00b0d4ce599f0cc611fb98685
2022-12-07 08:16:13 -05:00
William Wilgus
fceb4f6292 misc.c format_time_auto() make several const tables static
Change-Id: I597eee8f2d531d4cc2ec69dd8bc78f8cd7950162
2022-12-07 01:40:49 -05:00
William Wilgus
152a238947 playlist add mutex to public functions
mutexes are in just trying to refactor the rest and make it a smaller
and more robust system

--Done

Change-Id: If64807c3e0ee1966f7593795f26f1f538caf831b
2022-12-06 23:40:02 -05:00
Aidan MacDonald
a89f279fd4 settings: Clean up NVRAM code
Code style fixes, tighten error checking, replace a static buffer
with a stack allocated one.

Change-Id: I48392fa187057cc4a07847d45147f0db9f43f509
2022-12-05 14:18:06 -05:00
Christian Soffke
961e73b3a1 Addendum to d3d2045
Forgot to remove this...

Change-Id: Ifc97e47bb3923554030296097ef46352dad6eff1
2022-12-05 07:53:25 +01:00
Christian Soffke
d3d2045cab Bookmarks: Fix redraw issue in Select Bookmarks screen
Parts of the skin weren't redrawn after deleting a bookmark.

Change-Id: Id06fb95a6d3740340df989bcb9827fe3a87bb296
2022-12-05 07:28:21 +01:00
Aidan MacDonald
1e6c8d2ea6 skin engine: Settings ID to pointer conversions
Convert %St tag to operate on settings pointers instead of IDs.

Change-Id: Iabf4c280be82b495a64b560b59620fb477e0c738
2022-12-04 11:19:57 -05:00
Aidan MacDonald
4ff97ae07c settings: More settings ID to pointer conversions
Convert cfg_int_to_string(), cfg_to_string(), settings_write_config().

Change-Id: Icb72d2ff874cf90ffe5fe14878aece0a53f6bd18
2022-12-04 10:46:02 -05:00
Richard Goedeken
08aa09e15d add Richard Goedeken to CREDITS file
Change-Id: I51c40815ede4c24ef5b287dbda8218b427b3476d
2022-12-04 10:16:14 -05:00
Richard Goedeken
d06cf3ac2d bugfix: for ErosQ/SurfansF20, reset poweroff timer when scroll wheel is moved so that we dont blank the screen while the user is scrolling through a list
Change-Id: Ifdce301e2d75e3f6f54fba5b3eef15b2141cb954
2022-12-04 10:16:14 -05:00
Aidan MacDonald
bbe3942039 settings: Settings ID to pointer for cfg_string_to_int()
Accept a pointer to struct settings_list instead of an index in the
settings array. Refactor the skin engine's touchregion_setup_setting()
to avoid the use of indices.

Change-Id: I784a5e49205da6874b8b419dd5413f722ad45b67
2022-12-04 05:25:50 -05:00
Christian Soffke
0550c64226 Bookmarks: Fix autoload return from bookmark selection
- Fix placement of parentheses from commit 780990
- Return cancel when play_bookmark fails or user declines
to erase dynamic playlist after warning
- Go back to Playlist Catalogue when user cancels out of
screen

Change-Id: Ibe8c315bdf8c6c9e696f68541b5d4d97dc0e778a
2022-12-04 05:38:50 +01:00
Aidan MacDonald
879b5dae39 Fix red 8f582c90de
global_settings is not defined when building the database tool.
Add a path buffer in tc_stat to fix this. This also avoids race
conditions that may occur if changing the path setting at runtime.

Change-Id: Ib2ca92c2e34929c79b19ef145fd7ccdcd62c8d04
2022-12-03 13:13:16 +00:00
William Wilgus
3957aa8720 RFC BugFix tagtree.c reload data abort
TagNav.lua adds Reload to the Custom View menu of tagnav to allow users to make new search queries on the fly
previously you had to reboot the device to do this

I was getting a data abort prior to calling tagnav_init now but it worked fine if I copy pasted
the contents of the init function

I'm not sure how this fixed it but making a static init function makes it work as intended
is it a race some weird thing with the compiler??

Ideas??

Change-Id: I7fd6c50f929d3ac2d9ecec5336942288e9213ad5
2022-12-03 07:41:33 -05:00
Aidan MacDonald
8f582c90de tagcache: add a setting for customizing the database path
Add a new setting,

    database path: /path/to/folder

to change where the database files are stored, which allows it to
be shared by multiple builds when using multiboot. This avoids the
need to maintain a separate copy of the database for each build.
This setting can only be set from the config file; it has no menu
option yet (due to lack of a GUI to pick the directory).

Change-Id: Ide7b3ccdd84abb62b52f900421bd3d101773e093
2022-12-03 07:29:42 -05:00
William Wilgus
f033fd390e Fix Red playlist update a few functions
Change-Id: I0d9b4c8f7e4b128dd7378c6b7515f8195534fce7
2022-12-03 06:49:07 -05:00
Aidan MacDonald
98c7505c60 tagcache: move TAGCACHE_STATEFILE define to .c file
Provide a function to remove the statefile so that external
users of this define can call that instead.

Change-Id: Id3e1e0564b25fe28bbc68c2e9365d8bf51e6e4f8
2022-12-03 06:34:47 -05:00
William Wilgus
03c225fe54 playlist.c clean-up and organize
No functional changes

Change-Id: I5c7a4a63c54bc867b7d6c2ca6cbc8ef135e01a90
2022-12-03 06:28:48 -05:00
Aidan MacDonald
90dc64da32 tagcache: remove TAGCACHE_STRICT_ALIGN flag
This has been defined to 1 since forever, so the last remaining
check presumably isn't catching anything.

Change-Id: I0b60f831a6e5e8fc45788e7581fccb0cb62bce73
2022-12-03 11:00:35 +00:00
Aidan MacDonald
b6c2b54e01 tagcache: move most defines to .c file
Most of the defines in the header file are internal to the tagcache
and therefore should not be exposed in the header, to make it clear
that outside code does not depend on the values.

Change-Id: I83b0c83c61c755231e03719a6845a555f983194a
2022-12-03 11:00:27 +00:00
William Wilgus
177a15b2ed playlist_catalog remove static playlist_dir in favor of generation at runtime
this needs tested by the heavy playlist users

with the addition of initialize_catalog_buf there shouldn't be any stack overflow concerns
since we are no longer creating another max_path sized buffer when one is already available
this also simplifies the code a bit

rather than carrying around the playlist directory just generate it on the fly
copies the directory to the supplied buffer

add catbroswe_status to keep track of what browse context(s) are currently in use

Change-Id: I145ec501f601c84bb52f2241ed28c6aefab6897b
2022-12-01 22:29:35 -05:00
William Wilgus
773fa7874d RFC playlist.c add_indices_to_playlist() seek back to start of file
get_filename() changes the seek pos with out restoring it
seek back to the beginning or after the BOM if utf8
--
the other option is to open our own file descriptor this will
remove the need for the mutex but it would no longer block get_filename
from getting potential stale / bad data

Change-Id: I0d2b8a1a297c7aaf453b3bc558b2b5b53dbe591b
2022-12-01 17:56:31 -05:00
Aidan MacDonald
d7557e8da8 settings: Update doc comment for struct settings_list::cfg_vals
cfg_vals has not been used in conjunction with F_T_UCHARPTR for
quite a while.

Change-Id: I7f710201484ca25aab112897123afd07abdfd4c2
2022-12-01 14:24:51 -05:00
Aidan MacDonald
528dd0b03d settings: Remove redundant lang_id check for F_PADTITLE settings
All the F_PADTITLE settings use a lang string so it's safe to
assume the title (which is usually from the setting's lang_id)
is ok. Not like it's very useful or safe to show the cfg_vals,
anyway...

Change-Id: I0bf710e1b2a5a7bcdfe9e4370f48a2f25e8dddf0
2022-12-01 14:24:51 -05:00
Aidan MacDonald
fb0757b913 settings: Remove F_ALLOW_ARBITRARY_VALS from hotkey settings
The hotkey settings come from a fixed enum, arbitrary values are
not supported. It's not possible to use choice settings for them
because some enum values are only used in the WPS, and some are
only used in the tree.

Change-Id: I4647a8c02d960234323a7f2bbf31fee9f8c5b91a
2022-12-01 14:00:01 -05:00
Aidan MacDonald
8aa3b22160 settings: Update int fallback check for settings with cfg_vals
This atoi() was added long ago in commit d490f441, and it looks
like it's intended to allow arbitrary values in table settings.
These table settings have some symbolic values (eg. off, on) but
are otherwise int-valued.

As far as I can see the only settings that can take this branch
are all table settings with F_ALLOW_ARBITRARY_VALS. It doesn't
make a lot of sense to accept random integers without that flag,
so make the atoi() conversion dependent on it.

Change-Id: I7bb1bc4997601b73ad8dcbf2f3ddf434d16adf23
2022-12-01 13:59:49 -05:00
Aidan MacDonald
6346be51a3 settings: Clean up and simplify settings_load_config()
Use find_setting_by_cfgname() instead of doing it manually.
Reduce the excessive level of indentation.

Change-Id: I410fd7e0c26d065bc479dad3b6facfb5368cd091
2022-12-01 13:36:54 -05:00
Aidan MacDonald
5b1dd64f50 settings: Add helper function for handling filename settings
The old inline implementation was buggy -- it didn't check the
suffix was actually at the end of the string before stripping
it, and didn't check for truncation. This version also avoids
using an extra buffer.

Change-Id: I33abfefc508675d3079cc64a9ad2b11d646baa0d
2022-12-01 13:07:24 -05:00
Aidan MacDonald
afa58ef277 settings: Remove unused INT_SETTING_W_CFGVALS
This hasn't been used for quite some time; it appears to have been
obsoleted by table settings.

Change-Id: I8818e3f639d9783aaa2554dd098128ceda686527
2022-12-01 13:07:24 -05:00
Aidan MacDonald
7819a06d74 Add rectangle utility functions
Change-Id: Iebcddfc36733aab5131d2fcb9fd8c8a32eff84b8
2022-12-01 12:36:28 -05:00
Aidan MacDonald
52ca658069 x1000: Add support for DS35x1GAxxx flash chips
This flash chip is found on some Surfans F20 units. For our purposes
it's the same as the GD5F1GA4xExx so just #define an alias instead of
adding a whole new chip struct.

Change-Id: I2f4c4fbf1faf3a0c7a1503534430afacbddc426e
2022-12-01 12:11:46 -05:00
William Wilgus
c9c340704f playlist_create fix race condition
I'm pretty sure this is a very old bug I traced it down to the
current_playlist getting changed out from under add_indices_to_playlist
causing myriad of issues from buffer full to invalid control file to shifting indices

this only appears to happen with the dircache on

I still get an incorrect resume state with the wrong song very rarely -- turns out get_filename seeks the file FIXED

Some debugging left in for now till we can verify there are no other instances

Change-Id: I289a775462eddfe93da4a326dc9e38605af06816
2022-11-30 23:15:49 -05:00
William Wilgus
0ba3392b9f Bug Fix bookmark.c fix resume_info overwritten
fix a bug where when 'most recent bookmarks'
was enabled the next bookmark file written
would get the info from the last 'most recent'
bookmark instead of the current bookmark

also removed the global resume_info struct in favor of local variables

added verification of the resumed track

Change-Id: I10176a2e4a18da6d5c4bb5fc0ed5d7e81d803ed5
2022-11-30 00:01:47 -05:00
Solomon Peachy
0c7394e39a ata: Improve heuristics for detecting SSDs
mSATA devices should be new enough to report their form factor proprerly

Change-Id: I2605c8ee0c97432e6e03bd78719e12bb14837f8d
2022-11-27 09:15:29 -05:00
William Wilgus
3f4e55a872 bookmark.c fix bookmark.c fix filename generator #2
strlcpy returns the size of the string it tried to create so we still need strlen

since we know what the sizes are of the strings just check for overflow first and use strmemccpy

fix bufsz on playlist_get_name()

Change-Id: Iaa52f869994ca94487c19b0cf2958330db4fc786
2022-11-27 02:05:34 -05:00
Solomon Peachy
65db4acabe pcf56065: Fix a compile warning uncovered by GCC8
Basically, use '!' instead of '~' on bools.

Change-Id: If0d94b294e69a939101e16808d4adc50a9fe1c81
2022-11-27 01:20:03 -05:00
William Wilgus
b11777b06c bookmark.c fix off by one error in filename generator
strlcpy expects the buffer size so the name gets truncated by one character

Change-Id: I05ca0fed0a65a8b200f75b9647f7bf11407777a6
2022-11-26 20:51:33 -05:00
Christian Soffke
4ecf3970a6 Playlist Catalogue: Return to opened playlists
The playlist catalogue now remembers when you left
a playlist open and will return to it automatically.

Change-Id: I5b725a776b0a524139588c86e38150e5e25cb7d7
2022-11-26 17:20:06 +01:00
Christian Soffke
098a8fd334 Playlist Catalogue: Restore selection in playlist
Saves and restores the selected item in your
most-recently accessed playlist, similar to Database
and File Browser.

Change-Id: I00afca41e33470cb458c4b87baccd6fd4016887a
2022-11-26 17:20:06 +01:00
William Wilgus
88ecaf2b8c bookmark.c remove static bookmark buffer
Change-Id: Ie23760890e76177acf3700fb8eb73ca7f81f112e
2022-11-25 23:39:47 -05:00
William Wilgus
853d70e938 Fix Red confirm_delete, CHECKWPS & DBTOOL
Change-Id: I2f375def92e4c3c4b6be9d0494de682e6d3ebd2d
2022-11-24 23:44:35 -05:00
William Wilgus
71934d4c16 move confirm delete prompt to misc.c
Change-Id: Iadb1c7199caa5070f555eb4d329efb02e3193289
2022-11-24 23:09:26 -05:00
William Wilgus
3a22322ab7 bookmark.c parse_bookmark remove redundant conditional
we can just use the buffer not being NULL to decide

Change-Id: I233191ce16db4c18ed418794c18b8c51bb05399d
2022-11-24 23:30:37 -04:00
William Wilgus
780990fe5d bookmark.c remove some global buffers
refactor to allow removing some of the static buffers

Change-Id: Ia3ff6ea28f35634fd8c31b023431ad53bd542085
2022-11-24 22:00:14 -05:00
William Wilgus
8b522b8973 bookmark.c clean-up
No functional changes

Change-Id: If82f3e58ca848ade2a49f31357d39de9c5ba9ece
2022-11-24 20:08:00 -05:00
William Wilgus
1e6d643cfb Fix Red lib/helper.h
missing brightness defines

Change-Id: I7f6d67e2eb1be9c156a02ad3ff1ba4141e7cd08c
2022-11-23 23:55:45 -05:00
William Wilgus
97a82ee3ec plugins HAVE_BACKLIGHT helper remove ifdefs in favor of dummy functions
lessen the ifdef hell

Change-Id: I52f830284e4599f3fc3a75c27dda27058b8de1a3
2022-11-23 23:00:29 -05:00
William Wilgus
3745c813f9 misc.c open_pathfmt caller supplied buffer
Amachronic raised concern about open() blocking causing a static buf
to get overwritten in multiple calls its prudent to just have the caller
supply the buffer to minimize stack issues later

Change-Id: Iae27c7d063adb1a65688f920f6aa5c395fa5694a
2022-11-23 22:09:46 -05:00
William Wilgus
80b8b13544 BUG FIX settings_list fix un-macro'd int_settings for backlight & contrast
missed these

Change-Id: Ifdc682cc36a9192c8e0bbd2e2fee1f32946362e7
2022-11-23 21:14:09 -05:00
William Wilgus
8379c6eb07 tagtree remove unneeded strlen
unfortunately most of the overhead in searching for <Untagged> occurs in
reading of entries so changing searching the resulting string faster doesn't
do much good but any we don't need this strlen call since its already been
computed

Change-Id: Ia2815a6e7d75237366977632f9b0bc7999254096
2022-11-23 11:01:19 -05:00
Aidan MacDonald
ec1611dfa6 Add a comment about the ordering of 'enum playmode'
Change-Id: I1f259afaa2d0212c5bedba41380e51b9a911aaaf
2022-11-23 10:08:49 -05:00
Aidan MacDonald
9f09cdc9b8 skin engine: Streamline handling of the %mp tag a little
current_playmode() returns a value from 'enum playmode' and we
can take advantage of the enum values to simplify the code.

Change-Id: I368ec38ba5061f6cc6d3382e536db2312b27d643
2022-11-23 10:08:49 -05:00
Aidan MacDonald
3815ef8050 skin engine: Remove albumart viewport field
The viewport field in albumart is unnecessary, but for a different
reason than eg. the progressbar was. The skin engine draws images
by going over a global list of images shared between all viewports.
Prior to drawing a viewport, every image is marked "not displayed."
When an image display tag is encountered during rendering this mark
is set to the index of the subimage to be displayed.

The albumart is handled similarily, by setting a handle to -1 and
then updating it when the %Cd tag is encountered. The albumart is
not drawn unless the handle is set to >= 0 by the %Cd tag. So we
don't need to track or check viewports at all, because only the
viewport that contains the %Cd tag will ever draw the albumart.

Change-Id: Ibc0233d168012759325d3c16dc317de9ad3dcf6c
2022-11-23 10:07:29 -05:00
Aidan MacDonald
830436a282 skin engine: Remove viewport_colour viewport field
Yet again, no need to store the viewport because we already know
it -- and this time the render code is obviously relying on that
assumption.

Change-Id: Id5eb7cd9999fbe1efccd54bd8f0fd3c8a3011c8e
2022-11-23 10:06:16 -05:00
Aidan MacDonald
9368844ad1 skin engine: Remove progressbar viewport field
Again, we don't need to store the viewport in the progressbar
struct because it's known at render time.

Change-Id: I12514ceaace7c897194b18929364340871ef4635
2022-11-23 09:44:23 -05:00
Christian Soffke
f242b0ec6c Settings/System/Plugins: Go to WPS when ACTION_TREEE_WPS is pressed
Used to go to root menu before.

Change-Id: I5c0e0cb204cb3979917dde0f243185c32ef4177a
2022-11-23 01:24:59 -05:00
Christian Soffke
17cae50497 PictureFlow: Add hotkeys for changing sorting on iPods / Update manual
Adjust current sorting by pressing both
the Select button and Menu (or Play)
at the same time.

Change-Id: I474b79a16e278d34e3983384125015bdfb6f484a
2022-11-23 01:24:59 -05:00
Christian Soffke
0c7f66ab5f Playlist Viewer: Display playlist name in title
Change-Id: I7b258a566f55d026710d3441d1b4188f7614c5ee
2022-11-23 01:22:14 -05:00
Christian Soffke
6bc443f474 Hotkeys: Add placeholder for function return value
Seems a bit clearer to me than redefining the meaning
of ONPLAY_OK in this context, which was easy to miss.

Fixes the return value for the bookmark_create_menu
hotkey, too. It was previously mapped to ONPLAY_OK
in case the function failed, and to ONPLAY_RELOAD_DIR
if it succeeded. This had no ill effect - or any effect –
since either of the values were disregarded by the WPS
when executing a hotkey.

Return values of playlist_insert_shuffled also had no
effect (by design, apparently, see commit 482b45b).
Use ONPLAY_FUNC_RETURN in hotkey_assignment.

Behavior hasn't changed, it's only been made more
explicit.

Change-Id: Iefc60c9f42c1063af78d368dc382916848064d38
2022-11-23 01:22:14 -05:00
William Wilgus
0d355a9c47 filetree.c add back SORT_ALPHA_REVERSED
this is used for the playlist folder advance

Change-Id: I9da826d39c1a5880f6b97c33389afd601ce07834
2022-11-23 00:51:54 -05:00
William Wilgus
263cc13985 tagtree.c move sort_inverse out of compare function
Change-Id: I9c91a96a45fe98d51d27974bc2d6d79eaa5039d3
2022-11-22 19:14:26 -05:00
William Wilgus
2a9482ad7c filetree.c move sort functions out of cmp function for SORT_ALPHA
move sort function decision out of the compare function

Change-Id: Ibc26ebeaf409048efa92cb611edc223ed73c9e39
2022-11-22 18:38:58 -05:00
William Wilgus
1561b4ec9a filetypes.c clean-up
make icon a voice struct one

Change-Id: I44df788d03e38fe1bca7ea50f32c8dc5941405ab
2022-11-22 15:19:45 -05:00
William Wilgus
dc47bf8ae2 BUG FIX settings_list.c
fix dumb mistake reordered mavro args instead of just struct args

Change-Id: I0067d6c9fb9e00a927d2936629981fd5a15f705b
2022-11-22 02:19:06 -05:00
William Wilgus
5240202226 filetypes.c put attr mask back
not totally sure of the implications but this mask should be here

Change-Id: I605841a4ec41a2ffbf7b0f6eeaf142068577b919
2022-11-21 23:28:23 -05:00
William Wilgus
b40dff510a cuesheet.c guard against invalid digits causing underflow on field ASAN
is digit checks for invalid fields but could possibly check field = -1

Change-Id: I5f6bc5047b1ec0bf122d360f8eb86e64a2784bef
2022-11-21 23:24:30 -05:00
William Wilgus
19aa4ca276 tree.c spell names AFTER voicing filetype
Change-Id: Iff2102c2993593f7b3c24f131c0f67f45c870bc7
2022-11-21 23:05:01 -05:00
William Wilgus
d077fec5f1 tree.c move voice filetypes to its own conditional
Change-Id: I3a5171378355e64192de1e29f62d52e03771afe4
2022-11-21 22:54:54 -05:00
William Wilgus
efdc6feddb move inbuilt_filetypes.voiceclip to a separate struct
there are a lot of duplicated voiceclips in the inbuilt_filetypes struct
its already looked up so deduplicate

Change-Id: I7846277d2da308f605d5564e9081d6077e697239
2022-11-21 23:52:59 -04:00
William Wilgus
2056878e46 move inbuilt_filetypes.icon to a separate struct
there are a lot of duplicated icons in the inbuilt_filetypes struct
its only used at load so deduplicate and look-up by attr

Change-Id: I5eb34e5243d88688984f689e0add08f92d953a6f
2022-11-21 21:27:10 -05:00
William Wilgus
658cc95885 remove some sprintf putsxy calls in favor of putsxyf
we now have putsxyf in screens[] so no need for a separate
buffer in these cases

Change-Id: Ife0738e731f03d255f512bab3d5bb07b8be8693d
2022-11-21 00:25:12 -05:00
William Wilgus
eb9b3513fa Remove strtok_r.c
strtokspn emulates the original libc function

Change-Id: Ie6cd033ebf5d4f78ce4462f19bfb8ffb16d04ae1
2022-11-20 23:37:20 -05:00
William Wilgus
0661784469 make int_setting step & unit int16_t
since int_setting is the largest struct in the union of settings
saving 32 bytes adds up over every setting

frees ~200 bytes

Change-Id: Id4722262e40db3021c740e138fe7352be10e2c70
2022-11-20 13:57:09 -05:00
Christian Soffke
b7603adc64 Properties: Refactoring & Minor fix
- Extract functions for
* determining whether it's a file or dir
* showing stats for dir or file without id3

- Remove typedef for struct
- Fix unit string not being displayed correctly during scanning
(use %s instead of %cB)

Change-Id: I31440ebd96bca791a96c66511c3de9727608218a
2022-11-20 00:41:10 -05:00
William Wilgus
da2eaf3bf7 misc.c open_pathfmt fix yellow
Change-Id: Id844825726654a3a5b19a1672cb66af9aadaed32
2022-11-20 00:00:40 -05:00
William Wilgus
e7e20fab1b create function open_pathfmt() to allow printf formatting on open()
save some space by allowing printf formatting directly rather than
having a buffer and using sprintf

Change-Id: I049c8f898fb4a68a26ad0f0646250c242647ba12
2022-11-19 23:13:42 -05:00
Christian Soffke
8fe42c43c6 WPS plugin hotkey: Fix UB
HOTKEY_PLUGIN action resulted in return value
of void function being assigned and then returned
by execute_hotkey.

Change-Id: I8b141e878fc2c0b09070186fc3520314c18a83b0
2022-11-19 22:19:15 +01:00
Christian Soffke
dcde5aa89d Database & Playlist Viewer: Fix return to WPS from plugin
After calling up PictureFlow from the database or from the
Playlist Viewer, you would not be returned to the WPS as
would be expected when picking a new song, selecting
"Go to WPS" or pressing the WPS action button.

Change-Id: I902ac9185ebe092d0c4c08804db0a813a32cc39c
2022-11-19 17:08:39 +01:00
Christian Soffke
b3a464c9d1 Playlist Viewer & Catalogue: Go to WPS when ACTION_TREE_WPS is pressed
Change-Id: Id69253beadcc203ea0e2d16e5acc353aee0f6ad4
2022-11-19 13:39:58 +01:00
Christian Soffke
3d34140cfb Fix return to root after selecting items from playlist viewer
When selecting an item, Rockbox only checked that
playback was stopped before entering the viewer and
went to the WPS if music had started playing afterwards,
but returned to the root menu otherwise

The WPS will now be displayed whenever a new item has been
selected, even if audio was paused or playing before.

boomark_autoload required slight adjustments to its return values,
so that the WPS would not be opened after a user cancels out of
the bookmark selection screen for a playlist, since it  previously
returned true in that case, too.

Change-Id: I231ea788e2f80fdda5fe4ad4d2420450931f686f
2022-11-19 10:01:23 +01:00
William Wilgus
3b1230b365 talk.c add busy loop to talk_spell
talk spell can lose the remainder of the words on longer sequences

Change-Id: I5f8f0f42d780ea9d1f00d99ff32746be34c27745
2022-11-19 02:13:51 -05:00
William Wilgus
b0ccb1b95f talk.c clean up
Change-Id: Ie06859c80e9ca14bf3e4a23b82d3d1c76263b2b8
2022-11-19 02:12:09 -05:00
Aidan MacDonald
38687821b2 skin engine: Remove playlistviewer viewport field
We already know the viewport at render time (I think... at least
this seems to be the case for themes I tested) so there's no need
to store a pointer to the viewport.

Change-Id: I75fa2262e96c6f735e6b5da33cd4ca9ac68cd2ee
2022-11-17 16:12:19 +00:00
Aidan MacDonald
7de16eee26 viewportmanager: Fix missing void in function definition
Change-Id: Ibc56e3ce92b4559fd310843a0761e7bfb6511e1d
2022-11-17 16:12:19 +00:00
Aidan MacDonald
15b36a02b1 Remove get_viewport_default_colour()
The function isn't used except for the skin engine's %Vf/%Vb tags,
so inline it there and remove the separate function.

Change-Id: Ia207321877234bc3679457c820a4292ae53f3520
2022-11-17 16:12:19 +00:00
William Wilgus
016090b2a4 Bug fix multiboot.c get_redirect_dir didn't reach index 0
add_path[0] was never reached

Change-Id: If375a70832b0666d87f7d87b136cc377484b9ec1
2022-11-17 05:36:55 -05:00
William Wilgus
7b3e2f6f85 fix yellow iap-core.c
Change-Id: Idebedd10962e358002ea1a3dd6ae491e59c44ecb
2022-11-17 04:43:38 -05:00
William Wilgus
00f915d92e strnatcmp.c use a fn pointer to call strcmp/strcasecmp
Change-Id: I2bfaeec4cf2af4bed8f0781bcfa24b0b104fb22a
2022-11-17 04:15:38 -05:00
William Wilgus
972810f6cf strlcpy finish cleanup
remove strlcpy & strlcat from string.h

document suspicious strlcpy call

convert strlcat.h users to string-extra

Change-Id: I313e75db86385c0e6d1aee75d252093be4935f60
2022-11-17 01:54:46 -05:00
William Wilgus
0b7a387671 open_plugins add name when plugin can't open & check LANG_LAST_INDEX_IN_ARRAY
can't open '' was confusing for users so pass the key to open plugin
in theory you could have a plugin that defaulted to these lang_ids
run but its good enough to tell the user what failed to open IMO

lang_id changes mess with open_plugin since it uses them as look-up keys
so add checks for LANG_LAST_INDEX_IN_ARRAY to the checksum

the plugin now removes entries with an invalid checksum

devices with harddrives only append their .dat file so have them skip entries
with invalid checksums and only notify user if a valid entry wasn't found
(these users can run the open_plugins plugin to remove invalid entries)

Change-Id: Icf157675beaccda785643d5a9ed032a7cde30f12
2022-11-17 01:43:16 -05:00
William Wilgus
4c3937591c lua Fix potential event stack OVFL
you could return values in the event callbacks that would never be processed
this would eventually cause a lua stack overflow

settop(0) eats all return values (if any)

Change-Id: Icac6b27e592b385421275d4bd899ed3fe1065669
2022-11-16 20:54:30 -05:00
Aidan MacDonald
2f278af760 codecs: alac: Improve resume accuracy and clean up rounding errors
Resume by offset was obviously inaccurate for ALAC -- it tried
to convert the offset to an elapsed time using the approximate
bitrate, which is going to be wrong for VBR files. This became
a problem since commit 26ffcd8f9f restored the ability to resume
by offset.

It turns out that m4a_seek_raw() has terrible resolution since
it can only seek to chunk boundaries, and lies about the real
sample position; basically the same issue that affected seeking
described in commit 4dd3c2b33e. Resuming by offset is still not
very accurate because of this. Prefer to resume by time first,
which is normally highly accurate (and never worse than offset)
but use the file offset if it's the only thing we have.

There were a couple time calculations still using 32-bit math,
so clean those up too to reduce issues due to rounding errors.

Change-Id: Idd3bccd67505f4e59e784d92e45ea80a273975bb
2022-11-16 06:48:28 -05:00
Aidan MacDonald
ea61347a0b codecs: aac: Prefer to resume by time instead of offset
m4a_seek_raw() is relatively inaccurate, so time-based resume
should be preferred.

Change-Id: I959ef165f9a99d12deb804c13d20413c1cecf867
2022-11-16 06:48:22 -05:00
Aidan MacDonald
5fdd491ceb playlist: reduce memory usage for loading playlists
There's probably little benefit to using core_alloc_maximum() for
loading playlists since they are parsed incrementally. I/O speed
does not increase with increased read sizes beyond a certain point.
Read by 32 KiB chunks since that is what the buffering thread does.
Fall back to core_alloc_maximum() if a small allocation fails so
that buflib will try harder to free up space.

Change-Id: I08b94317d12b98af09ef2bd84aa1195c4c51d1b1
2022-11-16 06:47:38 -05:00
William Wilgus
dfa1539b13 Bug Fix test_viewports.c call scroll_stop before changing viewports
Change-Id: I0dd0374dfff7fef7e4f431e7231345ee1ae6cb2b
2022-11-16 01:49:41 -05:00
William Wilgus
7733abce29 strlcat use strlcpy for the copy part
Change-Id: I729b292a58d9f6542e58ac01d1dc90d36175886d
2022-11-16 00:36:47 -05:00
William Wilgus
28af87526d misc.c split_string replace with strtok_r
there isn't much difference from this function to strtok_r

now places a NULL in the last vector space permitting as well

Change-Id: Ibaaa1ad01b5054c41a6410788a2333b8d11a7cf7
2022-11-15 23:33:39 -05:00
William Wilgus
3ad8c0ad7b fix another non shadowed variable
another variable that shouldn't have been removed in 034b6d5b

Change-Id: Ie16aa2687cec7f55e9cc2477951c228de18755cd
2022-11-15 19:17:41 -05:00
Christian Soffke
be65ec2338 Fix menus in Settings
Commit 034b6d5b prevented other Settings menus
on the same menu level from being displayed after
accessing one item's context menu

Change-Id: I378e1748b7f449ad34042a3c8c626488fc07a7d4
2022-11-15 22:43:41 +01:00
Solomon Peachy
0458951464 translations: Update US English "translation"
Change-Id: I961f93c9668a2ddd424026321717d1c60d4e7d60
2022-11-15 09:56:07 -05:00
Solomon Peachy
cca954e427 FS#13363: Update Serbian Translation (Anonymous 'bugmenot' user)
Change-Id: I1be0bf36fe02f29f5136786d425dd6d88006b0f4
2022-11-15 09:28:26 -05:00
Solomon Peachy
90f6aa2afa FS13362: Update Dutch translation (Anonymous user 'bugmenot')
Change-Id: Iad3fa8e5853f31ecb85eacd7484b11e12c716759
2022-11-15 09:28:26 -05:00
roman.artiukhin
e68b727f4f Add more space for Time Elapsed/Remaining on Rocker WPS
Similair to 41934360. To display 20+ hours long audiobooks without overlaps.

Removed tag duplicates

Change-Id: Ibf95594000459d340e47849bc97286657a72da2d
2022-11-15 09:23:37 -05:00
Aidan MacDonald
73b1e30bb0 skin engine: Reduce scope of internal wps_data struct
A bunch of public API calls take a wps_data struct argument,
but that's an internal type that doesn't have a direct getter.
Instead the skin engine provides a gui_wps struct as a way
to refer to a particular skin instance. Use that instead of
wps_data in the public API.

Change-Id: I13e1aa8df7f08ccfb789bb728d493ac8d7de1a9b
2022-11-15 14:20:31 +00:00
William Wilgus
45bd4c7220 Fix last of red for strmemccpy
Change-Id: I76c421d938a879e57018e3f9706edf77c03de1b5
2022-11-15 01:58:28 -05:00
William Wilgus
687767bd8f convert a few more strlcpy to strmemccpy calls Fix Red and Yellow
albumart is imported to plugins just use a macro substitution
for now

Change-Id: I7c2e10d7559c087f0b3d0e6b844027d3b323da55
2022-11-15 01:24:26 -05:00
William Wilgus
aea324b746 Fix red strmemccpy CheckWps & Database
Change-Id: I88c5dc151010b6d8c01cd1a2a258f2923272acdf
2022-11-15 00:38:00 -05:00
William Wilgus
f6c719d7ec replace strlcpy with strmemccpy
replace applicable calls to strlcpy with calls to strmemccpy
which null terminates on truncation

in theory the strmemccpy calls should be slightly faster since they
don't traverse the rest of the source string on truncation
but I seriously doubt there is too much of that going on in the code base

Change-Id: Ia0251514e36a6242bbf3f03c5e0df123aba60ed2
2022-11-14 23:56:16 -05:00
William Wilgus
b25a9d8f99 add memccpy.c
Not sure if this is worth the added bin size yet but I will
see where I can use it to try and make it worth it

Change-Id: Icc299d3986172ff224a14be48da3bf065d728a66
2022-11-15 00:56:01 -04:00
William Wilgus
034b6d5bfb Remove some shadowed variables identified by -Wshadow
there are plenty more but these are the low hanging fruit

Change-Id: I86d9f4f56e8cd9b381d1bf6a6679cd58c6a4004d
2022-11-14 09:01:43 -05:00
William Wilgus
f94a14b859 increase the number of file & directory handles for devices with more ram
Change-Id: I06f517b3b1388aa43fe1aa9edae53c92d0b137e8
2022-11-14 08:21:29 -05:00
Christian Soffke
c088a9453d Database: Restore selection in lower menu levels
The database only remembered what you'd selected when
ascending the menu hierarchy again from a lower level.

Now it restores a previous selection going in the other
direction as well, when you enter a new menu, as long
as the selection at the current level hasn't changed.

Change-Id: I5068287ff758a7cfebf1428e9b0ffd30e6ef541e
2022-11-14 05:47:10 +01:00
Christian Soffke
e6ab74d4ac Database: Eliminate redundant list item selection
- gui_synclist_select_item will be called in the update_dir
function by dirbrowse()

- it is unnecessary to call when the tables opened by
tagtree_enter are not being displayed but are only being
used for inserting table contents into the current playlist.

Change-Id: Ib768b457b2baa7eb85cf73c6339fd4f603d03d90
2022-11-14 05:36:46 +01:00
Christian Soffke
97936e0661 Database: Fix problematic dirlevel reset
Dirlevel is restored in this error case without
exiting the previously entered tables.

Change-Id: I516c3ed635bc5c49dcf551223258215f79bff046
2022-11-14 05:35:28 +01:00
William Wilgus
a634557a88 fix strptokspn, add strcspn, fix splash.c
fix off by 1 error in strptokspn, add strcspn, fix fallout in splash.c

Change-Id: I61475d9633fc35db5a8ae30cbe588f69f2f7fabc
2022-11-13 01:14:49 -05:00
roman.artiukhin
ffe2df2e92 Implement Rewind across tracks functionality
Useful feature for audiobooks. To rewind from the end of the previous track - press rewind at the very beginning of the current track. So if you are in the middle of the track - first rewind till beginning then release and press rewind button again (Playback Settings -> Rewind Across Tracks option should be enabled)

Fixes FS#13290

Change-Id: I5d7f06f64ad76d1e8f7827fe594ccca5f621769d
2022-11-12 09:13:19 -05:00
William Wilgus
30ec10c790 splash.c Fix yellow const char
Change-Id: Iac4ab74d9fb7a290f44ae53a1865ec65b9008c43
2022-11-12 07:15:13 -05:00
William Wilgus
c756a8a89d make splash split on control characters
splits on spaces also considers \r\n\f\v\t as mandatory breaks

I'm still working on the strptokspn function
my goal is to use it directly rather than storing the matched char
and modifying the source string with \0 in order to tokenize the output
--Done

Change-Id: I7f378b5b9c4df8f10899b9a55a98950afb3931dc
2022-11-12 06:22:16 -05:00
William Wilgus
dd1fbd51fc TagTree Show file name for tag_title [UNTAGGED] BugFix
limit result to tags that only show <UNTAGGED>

Change-Id: I56ff4ea8c5a17df806d69d58599a9a88f8acc4b0
2022-11-11 18:36:07 -05:00
Aidan MacDonald
06f0465158 skin engine: Remove touchregion argument from skin_get_touchaction
Nobody uses the argument, and it exposes internals unnecessarily.

Change-Id: I376dc75db99ed89671175f906980526a23be70f6
2022-11-10 07:08:35 -05:00
Aidan MacDonald
56389b21b1 skin engine: Remove gui_img viewport field
This is set but never used.

Change-Id: Ifbeaa843ef070ea178cc270ffcade0d57a4fb45f
2022-11-10 06:37:41 -05:00
Aidan MacDonald
2c1adac3f8 skin engine: Remove unused viewport_change flag in skin rendering
Change-Id: Iad4487854d005a33184febf6cf97924b21010f6b
2022-11-10 06:37:41 -05:00
Aidan MacDonald
37da608f84 skin engine: Remove weird special casing for Onda VX747
I have no idea what bug this could possibly "fix", and nothing
looks different on the sim after removing it. As far as I can tell
the Onda has no unique features that could cause the skin engine
to act flaky, so I'm willing to bet this workaround isn't needed.

Change-Id: I2c183786948f3fe9778e04134d04bdfe3c6db543
2022-11-10 06:37:41 -05:00
William Wilgus
c2220a3b50 eq_menu cleanup some getstringsize calls
remove some unused calls and save some space by only grabbing font h once
it doesn't change throughout the function

Change-Id: Iec3b8b34150d15b36062cba59c8d365b751bd0f6
2022-11-09 11:58:17 -05:00
William Wilgus
e8aaee4979 misc.c show_logo remove 'ver.' when screen is too small
since its too early for the scroll engine just remove 'ver. '

cleanup the getstringsize calls, only need to calculate it once

Change-Id: I5e866733ed38ffa0bf34ce1b5e11ed3afd78a04a
2022-11-09 11:22:56 -05:00
Christian Soffke
51c1e3ce7f Shortcuts: Fix return to wrong menu
Rockbox would go to a previously selected
menu instead of returning to the current one
when leaving the Shortcuts screen.

Change-Id: I3546e32def9124956cd9edc258e14db91d19fa22
2022-11-04 16:09:07 -04:00
William Wilgus
8cbe5c95a9 screen.c remove unused getstringsize
getstringsize on SEPARATOR was overwritten by another call to
getstringsize

lang files use position to decide target strings 'RTC' was after targets using
different buttons therefore in error gained precedence

Change-Id: I40edc6c99140ac81bffd4c47d5e055ebc94ab1b2
2022-11-04 15:35:24 -04:00
Christian Soffke
9da3044cf7 Database: Remove firstpos/pos_history
From what I can tell, this is unused historical
baggage that has no effect whatsoever these
days.

Change-Id: I1b6fed64e7bf5cc4db4ec028617c818c59d81324
2022-11-02 07:19:36 -04:00
Christian Soffke
ca908d6336 Database: Fix FS#13368 – use separate selected item history
Database and File Browser were sharing
each other’s selected item history before.

Since the database isn’t browsed
recursively, it’s probably unnecessary to
include its own history in the tree context
and its backups, saving.a little bit of memory.

Change-Id: I87c9aed6f7056bc481b8b7299089851ef28f9bc5
2022-11-02 07:19:36 -04:00
roman.artiukhin
59f3f43d10 Exit Shortcuts on ACTION_STD_MENU
It makes it behave consistently with tree/playlists other menus. So it's possible to exit Shortcuts using Back button on Clip Zip or Power button on Rocker

Change-Id: I8a52422ed2d96d0727ddacf364f87878735c6e4c
2022-11-02 06:55:19 -04:00
Aidan MacDonald
4e60fb77e0 codecs: mpa: Improve seek & resume accuracy for VBR files
The codec used 32-bit math for elapsed time <-> file position
calculations. The rounding errors seem to be the cause of poor
seek/resume accuracy on long VBR files; switching to 64-bit math
makes things much better.

Change-Id: Iba638d9e031a891022510c31c141cc4541e3f149
2022-11-01 09:52:34 -04:00
Aidan MacDonald
26ffcd8f9f playback: Fix track resume from file offset
Resuming a track with "Resume Playback" or a bookmark is supposed
to pass both the file offset and elapsed time to the codec. Since
commit dfff938dff the offset has been getting zeroed because the
buffer handle wasn't open at the time of the buf_filesize() call,
causing it to return a negative error code.

Having a valid offset improves resume accuracy with some codecs,
like VBR MP3.

Change-Id: I8af7f001644f1ee1bd27ca3049a4cff2d2274149
2022-11-01 09:52:34 -04:00
roman.artiukhin
0d30356734 Refactor to reuse seek code for resume by time
It fixes Playback/Bookmarks Resume for long vbr mp3 files
It also fixes resume by time for asf files.

As a replacement for https://gerrit.rockbox.org/r/c/rockbox/+/4750

Change-Id: Iaa59b5862385f5fe91fdc2fb0b1fde8ce75c0b54
2022-11-01 09:23:35 -04:00
roman.artiukhin
5d7e15324b Fix tree scrolling not showing end of text
Fixes FS#13243

Change-Id: Icc9fa1e92ca5c928f90ba1a8291bdf37a6fe7898
2022-10-30 14:11:20 -04:00
roman.artiukhin
4193436000 Add more space for displaying time on WPS for Clip Zip
Replacing " of " with "/" allows to avoid overlaps for  > 20 hours long audiobooks

Change-Id: Ib7628fc5af9f77fd30fe2c4fc3d67d18eda5c0b9
2022-10-30 12:01:42 -04:00
Christian Soffke
246152a671 Database: Fix possible crash
The File Browser and Database apparently share
the same selected_item_history, which means that
selected_item can be -1 even in the context of the
database,

This leads to tree_get_file_position being called in
id3db mode, which isn't safe to do.

Change-Id: I46151e8a823afab0b57ad839cde13f6072b8917b
2022-10-30 11:57:33 -04:00
Aidan MacDonald
b4e7c60c6d Shanling Q1: Disable recovery kernel boot option
The Q1 handles firmware updates by unpacking the firmware image
from the player app, then rebooting into the recovery kernel.
The recovery kernel reflashes the player kernel and rootfs with
the unpacked update files on the SD card.

Booting the recovery kernel directly is therefore not useful to
the vast majority of users; remove the option from the recovery
menu and remove the key combo.

Change-Id: I6cebfb6a3514ff2ae7d6f3904ac93b481773799b
2022-10-29 12:51:05 +01:00
Aidan MacDonald
a5b08d0af7 Shanling Q1: Support OF-initiated firmware updates
It's now possible to install OF updates on a rockboxed Shanling Q1.
Previously these didn't work because the RB bootloader interrupted
the update process.

Updates will proceed as they normally do on a non-Rockboxed Q1,
except at the end of the update you'll reboot to Rockbox instead
of the OF. This is only a minor inconvienience and doesn't affect
the update process.

Change-Id: I0f8fc96f073c50c1512bf60e0927491be8178eb0
2022-10-29 12:51:02 +01:00
Aidan MacDonald
d09fb6bb6b x1000: Pass CPM scratch register to the bootloader
Change-Id: Iaef4606dc6f3cb9904d87ee92db69fb9ef48bcb0
2022-10-28 20:58:26 +01:00
Aidan MacDonald
744ea2ff43 x1000: Allow SPL and bootloader to pass arguments to next stage
Change-Id: I61591d704c14acf06cd192a6e9355f0a9c25d0d8
2022-10-28 20:32:38 +01:00
Aidan MacDonald
9e258652c4 x1000: Add a basic sanity check for bootloader backups
The bootloader backup is intentionally simple, but it's a little
*too* simple. Add a sanity check to make sure what we're backing
up or restoring contains the first 8 bytes of the SPL header.
This isn't going to catch all possible problems, but it'll stop
obviously non-functional backups from being restored.

Change-Id: I6e80351aeb96c467f0514bd0ecd77d94ff72a8f8
2022-10-28 20:32:38 +01:00
roman.artiukhin
202eb8c06a Fix wrong formatting in WPS
Fixes FS#13354 and FS#12980

Change-Id: I4ec4cb57cfb64494e633d0bb92e733d92593c075
2022-10-27 18:21:49 -04:00
Aidan MacDonald
4b7b7a0a83 shortcuts: Reduce SHORTCUTS_PER_HANDLE to 4
The current value of 32 per handle seems excessive. Buflib overhead
per handle is only 20 bytes and a single shortcut is > 500 bytes.
Reducing SHORTCUTS_PER_HANDLE means that minimum memory usage can
be lower when there are a few shortcuts, at the cost of marginally
increased usage for large numbers of shortcuts. This is helpful to
keep memory usage under control for low-memory targets, where 16 KiB
is almost 1% of system RAM!

Change-Id: I47dbe0da874ae512cf50a0bd8350576ab2fabdf4
2022-10-27 11:10:47 +01:00
Aidan MacDonald
b677da6595 shortcuts: Increase max shortcut name to 64 bytes
32 bytes is a little small, and it's also good to have extra
space to accommodate non-English languages.

Change-Id: Iced38fd5140e219b16dcfa6d30cc4191266926bd
2022-10-27 10:49:58 +01:00
Christian Soffke
f8d1f791be manual: update quickscreen defaults
'Show Files' hasn't been a default
QuickScreen setting for a while

Change-Id: I9ed95897bef5c3b95d38e3ee5a7db3cb723cb17b
2022-10-25 03:26:53 +02:00
Christian Soffke
193ebb5a36 Enable access to Shortcuts Menu from QuickScreen
Offers a quick way of switching to the Shortcuts Menu
by pressing the 'context menu' button while QuickScreen
is active (e.g. long press Select on iPods and some other
players)

Change-Id: I38292c7070cf093a81e1db688809b1f0d6a8764a
2022-10-25 03:26:51 +02:00
Christian Soffke
498988d34a PictureFlow: Minor fixes & changed defaults
- Fix FPS counter overlapping
the artist string when
"Show album title" was set to
"Show album and artist at the top"

- Fix disappearance of center album
if certain Settings menus had been
accessed while list of tracks was
showing and you then returned to the
list of albums

- Fix disappearing album artwork after
cache had been created until you started
scrolling

- Enable context menu even if WPS
integration is disabled

- Make splash screen appear only
on first launch and for database
updates, when it is actually on screen
for long enough

- Eliminate 'Loading' splash if tagcache
is in RAM

- Show both album and artist by default on
displays whose height > 100px

Change-Id: Ie70c0d9093789294d288a4f88338ee4a588bf4a5
2022-10-22 09:33:50 +02:00
Christian Soffke
653082ad1d Database: Adjust "Play Selected First"&"Shuffle" behavior
- With "Play Selected First" and "Shuffle" enabled,
another item was randomly selected when returning
to the list. This appears to be a bug

- With "Play Selected First" disabled, the first item was
selected. This appeared to be intentional, since, at least with
"Shuffle" disabled, that is the item that was played
back. This may not be helpful either, since it makes you lose
your place in what can be a long list. It is also  not
consistent with the behavior of the File Browser. The current
selection should probably be maintained in all cases.

- At least according to the manual and the behavior of the File
Browser, "Play Selected First" should only apply when "Shuffle"
is enabled.

Change-Id: Ic1205477d5bf8b22f8f32dd6d31d3b9ceb5a2d24
2022-10-21 03:59:49 +02:00
Aidan MacDonald
e27a6bad4f skin engine: Remove redundant argument from do_non_text_tags()
The skin viewport is already passed in info->skin_vp.

Change-Id: I5369684ba2a743d7bd804b33845bdb6ac17c46d0
2022-10-18 12:56:28 +01:00
Aidan MacDonald
015101bb2c Remove prototype for nonexistent sb_skin_data_load()
Change-Id: If4551cd10850c10ce091792da8770e0886aa20b9
2022-10-18 12:56:28 +01:00
Aidan MacDonald
14fbefdf39 Move skin global state to the WPS
This state is actually specific to the WPS and it makes more
sense to put it there.

Change-Id: I5dfee237fdcbae944806501ff3127a930820d68a
2022-10-18 12:56:28 +01:00
Aidan MacDonald
13da1ba785 Remove is_fading from the global WPS state
Turns out it was never assigned and always false.

Change-Id: I8cd9118682e7a0785c262d4c0594f8f51412c18b
2022-10-18 12:56:28 +01:00
Aidan MacDonald
33a47e4a49 Remove ff_rewind from global WPS state
Turns out it's local to ffwd_rewind() in the WPS.

Change-Id: Iaa6e69185db67b8aad61f1d2ad29c98f15f37370
2022-10-18 12:56:28 +01:00
Aidan MacDonald
6e4c866756 Remove unused 'may_fade' argument of pause/unpause_action
Change-Id: I4eedcf30fa704521e751732a56775c43e9a8bd99
2022-10-18 12:56:28 +01:00
Aidan MacDonald
e03bc66594 Correct typo DEFAULT_SKIP_TRESH -> DEFAULT_SKIP_THRESH
Change-Id: If8f7d11301a07a7f63adfac618f07cfed9516eef
2022-10-18 12:56:28 +01:00
Aidan MacDonald
46c3d1e030 Cleanup unused cruft in wps.h
Change-Id: I4278bea7342a859b18b72a9a4b1918b403842bb8
2022-10-18 12:56:28 +01:00
Christian Soffke
0761532d09 Don't autoload bookmarks after saving dynamic playlist
4f83e66 (FS#13287) introduced a useful option to
immediately re-load the saved dynamic playlist, so that
bookmark creation becomes possible.
(Current Playlist->Reload After Saving)

It seems unnecessary and won't produce the intended
effect to autoload bookmarks after the playlist is saved,
since playback position will be restored to where
it was previously.

Additionally, with "Load last Bookmark" set to "Ask",
the dialog  for choosing a stored bookmark will appear
after the playlist has been saved. The dialog is
unwanted, since:

- Selecting a bookmark doesn't have expected effect
- Selecting "Don't resume" will actually resume
- Cancelling out of the screen will prevent the
saved playlist from being loaded, without this being
obvious to the user
- It causes a crash if the dynamic playlist is saved
from within the Playlist Viewer (both the Playlist Viewer
and the bookmark selection screen use the plugin
buffer)

Change-Id: I7d696e56c89394b3cd10ef6acfed4ddc7e814118
2022-10-18 07:23:25 -04:00
Aidan MacDonald
55185277ba Fix red for Android builds (c6ee9dc883)
Change-Id: I416fbd24bd2dd91738cb8664b8f3f4877905336d
2022-10-17 15:20:28 +01:00
Aidan MacDonald
f805b492d5 Fix red for !HAVE_ALBUMART targets (c6ee9dc883)
Change-Id: Icdd6e051e5f9b31b287d53d9480f445df884d9d1
2022-10-17 15:20:19 +01:00
Aidan MacDonald
c6ee9dc883 Limit exposure of skin engine internals
Drop wps_internals.h from skin_engine.h. The WPS and to a lesser
extent the radio screen are too tightly integrated to drop their
dependency on wps_internals.h, unfortunately. Skinned lists, for
obvious reasons, also need access to the internals.

Change-Id: I00a55aa423900f9ad22edccbe2fc1910af380e38
2022-10-17 14:29:12 +01:00
Aidan MacDonald
4bd97c6535 mips: consolidate exception handling, add exception backtraces
Merge the x1000 and jz47xx exception handling code since they use
the same exception vectors and handlers. The interrupt handler is
now called from the common exception vector, but remains separate
for each board since they have different IRQ layouts.

The new exception handler can provide a stack traceback from the
interrupted code, rather than the (uninteresting) caller traceback
displayed by panicf. This allows you to see what led up to a null
pointer deref or division by zero, which makes it _much_ easier to
track down errors that occur in common leaf functions like strcmp.

Change-Id: I59a0ebb5e40fcb36505c3bfdb47f8cac2f9936b1
2022-10-17 09:04:18 -04:00
William Wilgus
56d4227897 yesno_res gui_syncyesno_run fix scroll run-on bug
the GUI_EVENT_NEED_UI_UPDATE event was not canceled till
after the call to scroll_stop this resulted in the scrolled line
being re-added after the function was done causing a crash

thanks spork, amachronic

Change-Id: I2e484a2b877f6da63171eb997f62a21e95ca9bfc
2022-10-16 13:02:12 -04:00
Aidan MacDonald
5e864ecde9 linked list: add lld_insert_prev/next()
Change-Id: I55ff061ccc0e6e2dad3125a8150c082c163db329
2022-10-16 16:10:24 +01:00
Aidan MacDonald
ee9679993b linked list: inline list init functions
These functions are so trivial it's always cheaper to inline them.

Change-Id: Ie0c77c8b6e7a716312105445a22e62ff57a76d90
2022-10-16 16:10:24 +01:00
Aidan MacDonald
8bf8036021 lcd: Fix clear_viewport on grayscale displays
The original drawmode change was "x = (~x & INVERSEVID) | SOLID"
which is essentially XOR'ing the INVERSEVID bit, but I changed it
to mask out INVERSEVID by mistake.

Fixes 44b9785465.

Change-Id: I87b059b89aea9c31a8ff408016264285e67ca80c
2022-10-16 15:41:50 +01:00
Aidan MacDonald
1718cf5f8a Convert a number of allocations to use buflib pinning
Several places in the codebase implemented an ad-hoc form of pinning;
they can be converted to use buflib pinning instead.

Change-Id: I4450be007e80f6c9cc9f56c2929fa4b9b85ebff3
2022-10-16 14:50:39 +01:00
William Wilgus
b16bae6fe6 skin_display.c cleanup - No functional changes
Change-Id: Ib8ce47d9cf33ba6b02d799862f322e481a712dfb
2022-10-16 04:30:22 -04:00
Aidan MacDonald
5e7c34f5b3 lcd: Fix off by one error in clipping check
When I converted all the clipping checks in 4b8fe8acd1 I messed
up the hline and vline checks. This produced some weird panics on
the Shanling Q1, probably memory corruption -- but somehow it got
past AddressSanitizer. Go figure.

Change-Id: I84820c23a491d422218c72d2d5e199e2fc7def0f
2022-10-15 20:56:11 +01:00
William Wilgus
ffdc64bea2 skin_engine fix invalid buflib handle checks
buflib considers handles <= 0 as invalid
skin engine was using handles < 0

Change-Id: Ie156223a43039d48ef4846fe31e6191630fa7c04
2022-10-15 11:17:52 -04:00
William Wilgus
f3d679aefe skin_engine fix free pointer crash
skin_engine uses -1 to signify a free handle 0 causes crash

Change-Id: I1db8743c14dd244fe92973e31bac61efdd12ca7f
2022-10-15 10:56:30 -04:00
William Wilgus
12ef045fdf move buflib_free invalid handle check to the function
allow buflib_free to check for invalid or already freed handles
within the function -- remove all the invalid handle guards thru core_free

Change-Id: Ibdcbc82760fc93b674c42283fca420d94907df8e
2022-10-15 09:26:58 -04:00
Solomon Peachy
9d3d925295 Revert "RFC: Get rid of mpegplayer plugin"
This reverts commit d25d24812e.

Change-Id: I1563223e343fb1e2eda72a45823b38350025ff93
2022-10-13 11:08:11 -04:00
Solomon Peachy
418169aff8 Revert "Remove YUV blitting functions and LCD modes"
This reverts commit fe6aa21e9e.

Change-Id: I8bb1e5d6c52ed1478002d2140ef494ec5d62b8e3
2022-10-13 11:08:06 -04:00
William Wilgus
f9ea1fc79d splash_progress add delay function
I figure this is a better way to allow a delay before showing the
progress meter

Change-Id: I909902a52619023b0b87635d2eb94ed00cb4bcec
2022-10-13 00:10:25 -04:00
Aidan MacDonald
c607bfac6f lcd: Fix update_viewport() for non-default stride viewports
Simplify update_viewport() by calling update_viewport_rect().
The resulting LCD driver calls are the same either way and
for some reason, update_viewport() didn't handle non-default
stride viewports correctly.

Change-Id: Ic34d3d40e4f758db897cb3944d9d7475bbdb4d2c
2022-10-12 08:06:12 -04:00
Aidan MacDonald
9549ddabba lcd: Fix bug in grayscale clear_display() implementation
clear_display() on grayscale LCDs sets the number of scrolling
lines to 0 but that's wrong, the scollers need to be shut down
first. Call scroll_stop() for that, as is done on color LCDs.

Change-Id: I75fb6839ed04f6fe1eb8e2855c8db820fcedddb8
2022-10-12 07:58:57 -04:00
Aidan MacDonald
44b9785465 lcd: Move grayscale clear_viewport() to lcd-bitmap-common.c
All grayscale LCDs have the same clear_viewport() implementation.

Change-Id: I087ac3be824c97a1f42857b4e2fedb0675d453fa
2022-10-12 07:58:57 -04:00
Aidan MacDonald
f737e5025d lcd: Refactor viewport clipping functions
There's no need to generate separate copies of these functions
for main and remote LCDs; we can just pass the viewport directly.

Change-Id: I20aa04a58d327b479a942708e161068bd6a3357b
2022-10-12 07:34:15 -04:00
Aidan MacDonald
6acc8a81a7 lcd: Cosmetic variable renaming
Assign lcd_current_viewport to a local variable for easier typing.

Change-Id: Ib5d4283fd1c5a21c94d3bd3c2c28ce206383fb96
2022-10-12 07:34:15 -04:00
Solomon Peachy
726673c638 toolchains: Enhancements to build scripts
* Explicitly require 'xz' (we've implicitly required it for a while now)
 * Prefer xz files in a few more places
 * Much better logging for native toolchain builds
 * Use -O2 for native toolchain binaries

Change-Id: I401b734882c2c21329624911c09a46168d82f388
2022-10-11 12:41:19 -04:00
Solomon Peachy
eb745d225d toolchains: Get rid of crosstool-ng builds.
Nothing current uses them, and it's surely bitrotten by now.

Change-Id: I5666471896503b71839023a9137ce52ea8cc9e20
2022-10-10 08:24:33 -04:00
Solomon Peachy
2928b71a69 mips: Work around an issue with GCC 8.
Change-Id: I9867674978ab6d4c99f5fa67c93e5b830531aefd
2022-10-10 08:24:33 -04:00
Solomon Peachy
af75619585 usb dwc2: Fix a potential garbage string print in an error path.
Change-Id: I56f8ee9bc883baac8707f136be396bb2669f911b
2022-10-10 08:24:33 -04:00
Solomon Peachy
5c6d6bd612 keyremap: Use '%z' when printing size_t
Change-Id: Ie752c8b8e35b98e52ed8999e92d5c65181109240
2022-10-10 08:24:33 -04:00
Christian Soffke
eb5e15803b Use splash_progress in database when inserting into dynamic playlist
Change-Id: Iaef66cc00a1be0ce3cf869f0e6137a2e9efa2713
2022-10-10 07:49:04 -04:00
William Wilgus
0374dea33a playlist_resume add delay before progress splash
Change-Id: I2927ddc49c3dbe96746237c8577f26f240182eeb
2022-10-10 07:20:07 -04:00
Aidan MacDonald
f8e968991d lcd: Move parameter handling calls to lcd-bitmap-common.c
No need to reimplement the same drawmode, getwidth, etc, calls
for each pixel format.

Change-Id: Ibbe32814f72e1492c190ba578cec303c1cf29b12
2022-10-09 22:07:49 +01:00
Aidan MacDonald
eaccdeeae2 lcd: Remove internal function get_viewport()
Only the scroll engine calls this, but it's easily replaced
by the return value of set_viewport_ex().

Change-Id: I2e2c8234f969bc07c9ff7d864e58551115175e26
2022-10-09 22:07:48 +01:00
Aidan MacDonald
4f9e4ddb99 lcd: Consolidate drawpixel, drawline, and drawrect functions
All three functions are nearly identical regardless of the
LCD pixel format. Consolidate them into a generic version in
lcd-bitmap-common.c.

Change-Id: Iab13429ea27ea2b0150b9004535bd27d4a4121a0
2022-10-09 22:07:46 +01:00
Aidan MacDonald
4b8fe8acd1 lcd: Consolidate in-viewport clipping routines
In-viewport clipping code is duplicated across 8 files, making
it a chore to change anything related to clipping; refactor the
clipping logic into dedicated functions.

Change-Id: I4ab20bb3c59b0406098d0c7d23833025f17a320a
2022-10-09 22:07:44 +01:00
William Wilgus
70d5b2cd45 splash_progress fix red for non-color targets
Change-Id: I6a50264a8edb2745c3d5ecd3cd558c0e83e4a529
2022-10-09 11:00:40 -04:00
William Wilgus
d73aaf3d9e add splash_progress
the loading track splash flashes and is ugly
add a function to display a progressbar along with the splash message

spruce up database commit message as well

Change-Id: I2749b958c1ee5dad2631a5f999a4b00ddca7f225
2022-10-09 08:46:51 -04:00
Aidan MacDonald
e57b4f9099 gui: Remove gui_synclist_item_is_onscreen()
Only the "Rockbox Info" screen uses it for a rather silly purpose,
so remove the function. This helps to decouple things from the GUI.

Change-Id: Icf73e3ee1230c75bf43016c0f1c05c7fe1a24895
2022-10-05 11:23:11 -04:00
Aidan MacDonald
1c5a0497cf gui: Remove list "limit_scroll" member
Get rid of the "limit_scroll" member from lists and make it a
local variable of gui_synclist_do_button().

Bump plugin API version since struct gui_synclist was changed.

Change-Id: Ie3244a85e5a1022a2f6e238a506fdbba67724962
2022-10-05 11:23:01 -04:00
Aidan MacDonald
d5a081cbd1 gui: Remove "enum list_wrap" from list action functions
Removing the "list_wrap" argument is actually pretty easy.
In practice, almost all lists are using LIST_WRAP_UNLESS_HELD
behavior so we can make that the default. A couple of lists
disable wraparound with LIST_WRAP_OFF; this is now achieved
by setting the list "wraparound" flag to false when setting
up the list. LIST_WRAP_ON was unused and is of questionable
value, so it has been removed entirely.

This makes list wraparound behavior a property of the list,
controlled solely by the "wraparound" flag. The result is a
simpler list API and implementation, without changing the
behavior of any lists.

Change-Id: Ib55d17519e6d92fc95ae17b84ab0aaf4233bcb5a
2022-10-05 11:22:55 -04:00
Aidan MacDonald
ff378deb69 gui: Remove gui_synclist_limit_scroll()
Since gui_synclist_do_button() overrides the setting at runtime
there is no reason to have a public API call to set it. Really
it should be a local variable, but it will be simpler to do that
after refactoring how list wraparound behavior is handled.

Change-Id: Id09d42197814102693752a9f64db8325118ca796
2022-10-05 11:22:34 -04:00
Aidan MacDonald
ead172c05d gui: Remove redundant copies of list scrolling settings
gui_list_screen_scroll_step() and gui_list_screen_scroll_out_of_view()
just copy the global setting into a local static variable.
Since they don't do anything special when the setting changes
it's simpler to use the global setting directly.

Change-Id: Ib6a7bf4e09b6dabbc1597cf28ddbafc0bc857526
2022-10-05 10:22:55 -04:00
Aidan MacDonald
fe6aa21e9e Remove YUV blitting functions and LCD modes
None of this is needed now that mpegplayer is gone.

Change-Id: I360366db8513e4d988021e8d7b7d8eb09930efb8
2022-10-03 13:30:01 +01:00
Aidan MacDonald
b371ff1f47 mrobe500: Fix missing parentheses in #define
Change-Id: Ifbba50a951fb3212eabe430dfef6868a7ad5e391
2022-10-03 13:29:52 +01:00
Solomon Peachy
d25d24812e RFC: Get rid of mpegplayer plugin
It might have made sense once upon a time, but in today's world...

Change-Id: I5d638e6f7a2308c50ab12bd901338f02cf426aae
2022-10-02 11:57:20 -04:00
Aidan MacDonald
9ce5b2a2ed gui: Remove show/hide selection option in lists
The implementation of the "show_selection_marker" option in
lists isn't great. It's a cosmetic option used to hide the
selection, but it causes the list to do funny things to the
selected_item and doesn't play nice with voiced menus, since
these rely on the selection to determine what item is spoken.

There are only two user-facing lists that use the option, the
"Rockbox Info" screen and a menu in the superdom plugin. The
rest are debug screens, and cosmetics don't matter much there.

Given how little used the option is, and its issues, removing
it seems reasonable.

Change-Id: I2c70b3e4c74ff3cc6dbac46366a371d271dd2d58
2022-10-02 09:21:25 -04:00
Aidan MacDonald
c1d75a6bcb Fix yellow from 5b0506e9de
Change-Id: I6391a6f13e64fad5c54dd29d8d696a08d45362dc
2022-10-02 13:57:52 +01:00
Aidan MacDonald
5b0506e9de gui: Constify list title text
Use const char* pointers for list titles. Only one debug menu
actually modifies the title, and in that case it's legal to
cast away const because the title points to a known mutable
buffer on the stack.

Change-Id: Idb8ab307b9a6ec23a93d8420c5e19fafd9f59c30
2022-10-02 08:20:10 -04:00
Aidan MacDonald
420fb1163c skin engine: Fix bug with %Vs(color) tag
The %Vs(color) tag doesn't set the text style properly and causes
the background to not be cleared when rendering lines. For static
text this is rarely a problem, but for scrolling text it'll cause
the text to "smear" once it starts scrolling.

Fix this by setting STYLE_DEFAULT, so the background gets redrawn
when the line scrolls.

Bug report: https://forums.rockbox.org/index.php/topic,54320.0.html

Change-Id: I835c806005ea40fd6bac3692e52a9c325581a293
2022-10-01 12:58:00 +01:00
Aidan MacDonald
3bc6408bbe lcd: Fix incorrect use of LCD_STRIDEFORMAT for remote LCDs
The get_address_fn implementations for some remote LCDs were
checking LCD_STRIDEFORMAT unconditionally, but that macro is
only valid for the main LCD. The remote LCD code only supports
horizontal strides, so when compiling for a remote LCD, force
the use of horizontal stride addressing.

This fixes a buffer overflow and out of bounds write that occurs
with the M:Robe 500 remote LCD. (Tested with sim + ASan only.)

Change-Id: I99c6aa11d38f5105b096fc448948b9ec1b27dfe6
2022-09-30 10:49:39 +01:00
Aidan MacDonald
f373c97c90 Define LCD_STRIDEFORMAT unconditionally
Instead of putting "#ifdef LCD_STRIDEFORMAT" at every usage of the
macro it's simpler to have config.h define LCD_STRIDEFORMAT to the
default of horizontal stride when the target leaves it unspecified.

Change-Id: Ib187012aad65ac678dbd837b1464a83bad722411
2022-09-30 10:42:49 +01:00
Solomon Peachy
9ed36ec22f FS#13361: Fix some compilation under MacOS (Michael Landherr)
Change-Id: Id7e0576e355a1d71493fb7b277fd92f38b7edab4
2022-09-27 10:00:03 -04:00
Aidan MacDonald
09cb3c7843 lcd: Remove HAVE_VIEWPORT_CLIP
This was only enabled for the mrobe500 and sansaconnect targets.
Most targets are therefore running without this "safety" measure,
and presumably we'd have noticed long ago if there was a problem.
So in all likelihood this is just a bunch of dead code that we
don't need to carry around.

Change-Id: I7d27701a38b1c2a985ee73fa6f277ad215d8d385
2022-09-27 14:13:15 +01:00
Solomon Peachy
24daa26598 FS13356: Update Polish Translation (Adam Rak)
Change-Id: I6ee55f2a6024411515670fc1249268b66aad09bd
2022-09-25 18:28:04 -04:00
Solomon Peachy
36ea69b27e FS#13365: Updated Italian translation (Alessio Lenzi)
Change-Id: Idbb6d58667a153d0381252da64383423d383471f
2022-09-25 16:15:30 -04:00
Aidan MacDonald
464889ecee Fix red in e75a3fb8
Change-Id: I2e98f68d03df757688b6c556b69d934c12f40a7c
2022-09-25 12:23:40 +01:00
Aidan MacDonald
e75a3fb8c7 usb: add debounce interval for USB status by event
This makes status by event debounce status changes over
a 200ms period, which is what polling was already using.

This is helpful on targets where events are excessively
noisy and generate a lot of transitions during insertion
and extraction.

Change-Id: I0eae2cca93aaa865e33c94a1318c27e91c7f7c4b
2022-09-25 06:49:11 -04:00
Aidan MacDonald
e4aec7d648 key remap: simplify and use movable allocations
Have action.c control the key remap buflib allocation so that it can
be made movable. With memory management offloaded, core_keymap.c only
needs to deal with loading keymap files. Simplify the code there and
use buflib pinning so the file can be loaded directly into the buffer.

Change-Id: Ia654cc05ce6b286f96c1031fa4f7d4b3859a2c1a
2022-09-25 11:05:59 +01:00
Aidan MacDonald
f47aa584a8 buflib: add pin/unpin operation
An allocation is pinned by calling buflib_pin() to up its pin count.
The pin count is like a reference count: when above 0, buflib won't
move the allocation and won't call its move callbacks. This makes it
safe to hold the pointer returned by buflib_get_data() across yields
or allocations.

Note that pinned allocations can still shrink because there are some
use cases where this would be valid, if buffer users coordinate with
the shrink callback.

Change-Id: I0d0c2a8ac7d891d3ad6b3d0eb80c5b5a1b4b9a9d
2022-09-19 15:09:51 -04:00
Aidan MacDonald
ecfec3e9bf buflib: add handle_to_block_end
Change-Id: I598cf32bc8cd08ab4bca3827645e0a38b284468f
2022-09-19 15:09:51 -04:00
Aidan MacDonald
88b21731fc buflib: enable all paranoia checks
Since allocation is infrequent in Rockbox enabling the extra
checks to catch memory corruption is probably worth the time
and code size cost.

Change-Id: If0d701421054328c57b69e4d0af30759d799d158
2022-09-19 15:09:51 -04:00
Aidan MacDonald
8f896b14d3 buflib: remove the 'name' member from union buflib_data
Using a length 1 char array to point to the name buffer triggers
a -Warray-bounds warning from GCC when fortified strcpy is used.

This type of construct isn't safe in general -- if the compiler
makes assumptions based on the array bound it can create subtle
bugs when accessing the array out of bounds.

Instead, add a function get_block_name() which returns a pointer
to the name field by casting. This suppresses the warning and it
should be a bit more portable.

Change-Id: I25d4f46f799022ad0ec23bef0218f7595cc741ea
2022-09-19 15:09:51 -04:00
Aidan MacDonald
6e9b1b344b buflib: remove buflib_print_allocs / buflib_print_blocks
These don't have any users and there is already another way to
print blocks (which is actually used by the debug menu).

Change-Id: Ic6a4f874c6499c42bc046e8af3e4aaddc9e68276
2022-09-19 15:09:51 -04:00
Aidan MacDonald
3090cf0da4 buflib: update BUFLIB_ALLOC_OVERHEAD
Allocation overhead should be 5 units, not 6.

Change-Id: I30aa0925aa49eb25d232f7de2bf8b8ce1509d862
2022-09-19 15:09:51 -04:00
Aidan MacDonald
59edcc57a2 buflib: omit CRC field if CRC paranoia is not enabled
If we don't check or generate CRCs then the CRC field can be left
out of the header, which reduces buflib overhead slightly.

Change-Id: I08b4cf77a701d8f6da453e019a0373d858a79ae4
2022-09-19 15:09:51 -04:00
Aidan MacDonald
dcc4e54b77 buflib: refactor CRC checks as paranoia
Move CRC checking and updating behind a paranoia bit, like the
other checks, so it can be enabled and disabled.

Change-Id: Icff66c842cbd5af2d99aa91e6c40447a64e6d4b2
2022-09-19 15:09:51 -04:00
Aidan MacDonald
f82f3044a7 buflib: add paranoia checks for handles
Handle checks ensure that the data in the handle table points
within buflib memory and checks handle entry pointers in block
headers before dereferencing them.

Change-Id: Ic16f1b81c1a0ea63c0e7f48d87938293b75c2419
2022-09-19 15:09:51 -04:00
Aidan MacDonald
73b9b227eb buflib: add block length paranoia checks for loops
Tighten up checking by adding length checks to loops which
ensure the iteration stays within bounds. Check is disabled
by default and can be enabled using a BUFLIB_PARANOIA bit.

Change-Id: I35e911e0878797d5ebf732be548ca659f6910fe0
2022-09-19 15:09:51 -04:00
Aidan MacDonald
b12427741a buflib: clean up and refactor to improve maintainability
Buflib is written with a lot of hardcoded offsets to header fields,
arbitrary pointer arithmetic, and similar but not quite duplicated
code, making maintenance a nightmare.

Most of the pointer arithmetic involving header fields is replaced
by indexing from two well-defined pointers, the block start and end
pointers. The start pointer points to the first header field, and
he end pointer is one past the end of the header.

Hardcoded field indices are replaced by two enums. Forward indices
(fidx_XXX) are used to access fields from a block start pointer and
negated backward indices (-bidx_XXX) are used to index from a block
end pointer. There is no overlap between the indices because of the
variable length name field in the middle of the header. The length
of the fixed fields in the block header is now a #define'd constant
rather than being open coded.

There is now a function to acquire the block end pointer from the
user data pointer (ie. the pointer stored in the handle table). The
old code was not consistent in this; some functions would handle a
non-aligned user pointer, which may occur as a result of shrinking,
while other uses just assumed the user pointer was aligned.

Block CRC calculations have also been factored out to a function
that accepts block start and end pointers.

Change-Id: I6a7e8a8c58aec6c6eaf0e5021400032d8e5f841e
2022-09-19 15:09:51 -04:00
Aidan MacDonald
fdde6bb5a7 buflib: optimize getting start of block from end of block
The block header has a variable length due to the embedded name.
The name length is stored at the back of the header after the
name, in order to allow finding the start of the header if only
the user data pointer is known (eg. from the handle table).

The name length is actually not interesting in itself; storing
the total length of the block header instead is marginally more
efficient, saving one addition in handle_to_block().

Instead the extra arithmetic must be done by buflib_get_name(),
which is a much less common operation than handle_to_block().

Change-Id: Ia339a1d2f556a11a49deae0871203e70548bd234
2022-09-19 15:09:51 -04:00
Aidan MacDonald
ef476ba298 buflib: correct a confusingly indented comment
Change-Id: I9ef13d697c4abb81883d4a47273e69fcc2dafe37
2022-09-19 15:09:51 -04:00
Aidan MacDonald
c8365b2bdd buflib: fix bug in handle_table_shrink
The way it iterated over the handle table is unsafe if *every*
handle is free, leading to an out of bounds access.

This is a contrived example, but the bug can be triggered by
making several allocations, freeing them out of order so that
the handle table remains uncompacted, and then triggering a
compaction using buflib_alloc_maximum().

Change-Id: I879e2f0b223e6ca596769610ac46f4edf1107f5c
2022-09-19 15:09:51 -04:00
Aidan MacDonald
4d3bf1c446 buflib: add comment in handle_alloc, remove a dead store
It isn't obvious why the "handle->val = -1" at the end of handle_alloc
is needed so add an explanatory comment. But "handle->val = 1" prior to
calling handle_free is simply a dead store.

Change-Id: I9ab4e96e87e940cfd1a2ed56f089287821669c73
2022-09-19 15:09:51 -04:00
Aidan MacDonald
840f6b79c7 buflib: update first_free_handle in handle_alloc
Since we're scanning the handle table for the first free slot,
we know none of the scanned slots are free. Use that knowledge
to update first_free_handle and avoid rescanning filled slots
again when the next handle is allocated.

Change-Id: I457372f66c231168cfffa7e905d1e9fb80002f5f
2022-09-19 15:09:51 -04:00
Aidan MacDonald
f622bcfe4f buflib: fix buflib_context_relocate alignment check
Use the standard IS_ALIGNED macro and check alignment against
sizeof(buflib_data), as it can be greater than 4 bytes if we're
on a 64-bit platform (eg. simulator).

Change-Id: I15110937d1f2978e733d169050de9531fe218214
2022-09-19 15:09:51 -04:00
Aidan MacDonald
bcaa9465e9 buflib: optimize find_block_before
Exiting the loop implies next_block == block, so remove that check.
The check ret < block is false only if block is the first block, which
can be checked before the loop, saving a few cycles in that case.

Change-Id: Id493b5259a23a35a70b09dfe4bc4eacaf420760c
2022-09-19 15:09:51 -04:00
James D. Smith
6beebd75e7 Cabbie v2: 240x320: Increase font size to 18. Remove linespace and increase the size of the album art slightly to better utilize the screen area.
Change-Id: Id20097006c9f82e1bb8a758c4edd94dc278c669f
2022-09-18 11:09:38 -06:00
James D. Smith
38a0f1a96f Cabbie v2: Place album above title and track on the WPS. The idea is to have the album immediately beneath any album art.
Change-Id: I8c5fe85207bb3ecfde131710170ef7a5f801f312
2022-09-18 09:26:23 -04:00
Aidan MacDonald
972c8c0ab6 Suppress bogus GCC 12 -Waddress warnings for SKINOFFSETTOPTR
This appears to be a bug in GCC 12 due to more aggressive -Waddress
warnings. According to the GCC documentation, the warning should be
suppressed because the "problem" code is coming from a macro, but it
doesn't happen for cases like "if(!SKINOFFSETTOPTR(...))" where the
macro is negated.

Assigning the result of SKINOFFSETTOPTR() to a temporary and checking
that suppresses the warning.

Change-Id: Ia37a1e06a454d29032bb8128a2f059b149ea2b83
2022-09-18 13:53:27 +01:00
Aidan MacDonald
bab8a41532 x1000: add support for GD5F1GQ4xExx NAND flash
This is another chip used in newer Surfans F20 units. Like the
Winbond chip, it's a 1-gigabit chip with on-die ECC. Notably it
has an expanded 128-byte OOB area that is only accessible when
on-die ECC is disabled.

Change-Id: I2203918a15c914097f5a6bbe4afa2d3a60dc67f7
2022-09-17 10:14:26 -04:00
Aidan MacDonald
e64b0e81ad x1000: add support for the W25N01GVxx NAND flash
This chip is apparently used in some Surfans F20 units, and has
the same geometry as the ATO25D1GA. It has an on-die ECC engine.

Change-Id: I4d37a2455620ce43cec0a9bcbb32c776d1a8eba1
2022-09-17 10:14:26 -04:00
Aidan MacDonald
17443de221 x1000: refactor NAND chip identification
Decouple chip IDs from chips, and allow the chip ID table to list
which read ID method should be used. Use a safe controller setup
during identification instead of using the first chip's parameters.

Change-Id: Ia725959c31b2838f4a3a30e5bb7fa6652ef377ed
2022-09-17 10:14:26 -04:00
Frank Gevaerts
189dee08ea rockboxdev.sh: Mention older NWZ for the arm toolchain.
The description for arm-linux mentions "Linux-based Sony NWZ", which
is misleading for people who aren't very familiar with the various
targets and history. People setting up toolchains for the first time
for their "traditional" NWZ will overlook the "linux" part (or not
understand what it means) and build the wrong compiler.

Mentioning "older Sony NWZ" may of course not immediately tell those
people which one to pick, but at least they'll know they need to look
things up.

Change-Id: I5743a6427842db7334cff5479291e2137c35ae0c
2022-09-17 09:01:43 -04:00
Christian Soffke
3f3b738e06 Partial fix for FS#12702: playlist catalogue silently fails to save files
Change-Id: I13130f6b257b38e7a0d8ae22accd182330ff4e9f
2022-08-21 09:36:04 -04:00
Benjamin Brown
a6e9ecb086 Updated keymaps for Sansa Connect
* added scroll wheel to doom
   * added scroll wheel to brickmania
   * changed spacerocks to use scroll wheel instead of buttons

Change-Id: I9d6ff0b4c5deea147178f5cd9f96ae435e7b5cd8
2022-08-19 00:31:00 -04:00
Christian Soffke
c1c0318c8d Playlist Viewer: Fix unintentional fallthrough
Change-Id: Iead5635e0e7f20dc556f26f735fd47597c9169b6
2022-08-19 00:29:17 -04:00
Christian Soffke
5e757b4d6e Playlists: Fix losing cached control data when resuming
Shuffle and Unshuffle commands are not flushed to
disk when control data is updated. The same applies
to Delete and Reset commands, unless HAVE_DIRCACHE
is undefined (see update_control() function in playlist.c)

playlist_resume() discards cached control data.

This resulted in a bug where (e.g.) removed tracks
from the current playlist would reappear if you stopped
and resumed playing immediately afterwards (instead of
restarting in between).

Change-Id: I273f61e823a1d99426a18079b81aa07915620f30
2022-08-19 00:28:35 -04:00
Christian Soffke
8f6d0efd71 tagtree: Delay showing search progress when ramcache is enabled
The disk doesn't need to spin up when the
database is in RAM. Results are usually returned
without any noticeable delay, so the splash  only
creates distraction.

Change-Id: I04e5b7d2e00f045143dd86e0561091be3d8f9724
2022-08-19 00:27:34 -04:00
Christian Soffke
cf37676fb1 pictureflow: fix FS#13360 softlock cannot be disabled
Change-Id: Id34cc737f9d43a5cbaf5519a6f05ca31efbee8f2
2022-08-16 13:19:11 +02:00
Christian Soffke
7a3d829543 pictureflow: fix stack overflow
I noticed a stack overflow on the Fiio M3K when launching
PictureFlow from the Playlist Viewer after opening a playlist
from the file browser using the context menu's "View" option.

Change-Id: Id87fb59e36518bd7ceb61f886d5759fc3206aadf
2022-08-16 13:18:43 +02:00
Solomon Peachy
d4917888e3 Fix yellow introduced in cef9fa22ef
(Wrap new function in HAVE_HOTKEY)

Change-Id: Idf5f96bd1e097fc580a6b1ba5be4b93a78de9deb
2022-08-05 14:05:33 -04:00
Christian Soffke
cef9fa22ef playlist viewer: enable hotkey
'File Browser' hotkeys can now be used while
browsing a playlist.

The manual has been updated to reflect this and
to say that the File Browser hotkey works in
the context of the database as well (existing
behavior)

Change-Id: I51b23e82e0fb00772efdb8784db966d454fb2560
2022-08-05 11:39:35 -04:00
Christian Soffke
3edf3ba18d add hotkeys for properties and pictureflow
Change-Id: I16b36dd02f1c2aa186d957c64ed7d239c4c91047
2022-08-05 11:39:35 -04:00
Christian Soffke
7727486423 playlist viewer: add menu option to show songs in pictureflow
(The playlist viewer has to be re-initialized
after returning from PictureFlow, since they
both use the plugin buffer)

Change-Id: Ib3ef0acec65c88363830c59c8c73e9cdf8b528f0
2022-08-05 11:39:35 -04:00
Christian Soffke
f0a05e0993 Properties plugin: Fix crash when parameter is zero-length string
This seems to be what is provided by the database when length
of path+file name of an entry is larger than MAX_PATH.

Change-Id: Iaf40ce945732a8a8c2e5270a80886dcb537a72be
2022-08-04 14:40:59 -04:00
Aidan MacDonald
4101aeac54 x1000: simplify NAND command macros
There is actually no need to parameterize most commands with row
or column cycles, usually the opcode and row/column address width
are linked. When this is not the case we can use raw SFC commands
or define new macros.

Change-Id: I22459d732dc01012e6a8ae026c4fb85495d372b4
2022-07-21 11:39:19 +01:00
Aidan MacDonald
9ab5d311cb x1000: move NAND commands to chip data
Using predefined commands is too inflexible so allow the chip data
to specify I/O commands directly.

Change-Id: Ie8f943914da4b8299678a59b1063c4c6d226e83e
2022-07-21 11:39:03 +01:00
Aidan MacDonald
2fce0a98f8 x1000: add flash ONFI info dumper to bootloader
Dumps parts of the standard ONFI info located at page 0x01
of the OTP area to a file for easy copy'n'pasting.

Change-Id: Ie0ba66d27c400737f14deec7c21e9dcb144028a6
2022-07-19 13:43:38 +01:00
Aidan MacDonald
c72f9c6d0f x1000: add NAND OTP access switch
Provide a way to toggle the OTP bit for reading OTP pages, mostly
useful for debug purposes.

Change-Id: Iec697de2dc188588c43d9ed466201971cac8f30c
2022-07-19 13:15:26 +01:00
Aidan MacDonald
45e2d5d641 x1000: check for ECC failures in bootloader uimage reader
Update the uimage reader's bad block handling to treat an ECC
uncorrectable error on the first page of the block as a bad block.

Change-Id: Id3aa7a338fcc36c0e2381063b119efe41f957122
2022-07-19 13:15:26 +01:00
Christian Soffke
5901ac8756 ipod6g: increase plugin buffer size from 512 KiB to 2 MiB
The iPod classic/6G comes with 64MB of RAM. This
brings it in line with the plugin buffer size of some
other targets that have the same amount of RAM,
such as the Fiio M3K, and enables the use of
PictureFlow for users with very large databases.

Change-Id: I1ccae1cacda7a243139f4887f54bd35cc8e501cf
2022-07-12 01:01:47 -04:00
Christian Soffke
23fea5dfa8 manual: add 'autoupdate bookmarks' to config file options
(from db1b823)

Change-Id: I863c0b366ad0c07ebce91da0017e57013fa126b8
2022-07-12 01:00:46 -04:00
Solomon Peachy
840fb4d47b doom: Fix a potential buffer trashing in the doom plugin
(caught by GCC12's -Waddress)

Change-Id: I122b44324c60c668ed4a066aa6301d40cb7597ba
2022-07-11 19:35:10 -04:00
Solomon Peachy
632af4837e xworld: Fix a really old bug that effectively disabled fast movement
(Thank GCC12's -Waddress for catching this)

Change-Id: I5153938ee490fe7976a3c81ea13d87abce2b9eba
2022-07-11 19:32:34 -04:00
Solomon Peachy
05149cd4dc Fix a couple of warnings uncovered by GCC12
Change-Id: Ib628a27bfc6f95a822e46b931ccfbed90f41b122
2022-07-11 16:11:29 -04:00
James Le Cuirot
4917f764bb rbutil: Try to use system-wide QuaZIP in preference to building our own
QuaZIP is included in several major Linux distributions and packaging
policies strongly oppose bundling of libraries.

Change-Id: I8d454784dc4b244f4dd8aa18deb3350a29aaab77
2022-07-11 15:00:07 -04:00
Aidan MacDonald
db2817eb1a Fix red in commit 131566b8f8
Use per-function sections to avoid linking in x1000_boot_linux()
on normal builds, which prevents link errors due to referencing
a non-existent usb_close().

Change-Id: Ied7b233603c49fc856db8445e368675b181e2f1f
2022-07-10 15:58:45 +01:00
Aidan MacDonald
47cbeb2e67 x1000: add support for simple on-die ECC with NAND flash
Many SPI NAND flash chips have on-die ECC engines that report
ECC status via the status feature register. This code handles
the common case where ECC status is reported with 2 bits: one
bit to indicate if flips were detected & corrected, and another
bit to indicate an uncorrectable error.

Change-Id: I5d587cd960ca9d090d2629e890724a6bc411e70c
2022-07-10 15:22:32 +01:00
Aidan MacDonald
df29c7991a x1000: add setup_chip hook for NAND chips
Add a chip setup hook for configuring vendor specific registers
after the chip is identified.

Change-Id: Ifffa7f01be16fd147a9db3d6e402b7b0debd7e12
2022-07-10 15:22:31 +01:00
Aidan MacDonald
ad8ace53e5 x1000: remove 'typedef struct' from NAND driver
Using 'typedef struct' is not in line with the project coding style
and somewhat problematic, so get rid of it here.

Change-Id: Icfe79de72ed82cb7526e9f4e8296ec12084c01ac
2022-07-10 15:22:10 +01:00
Aidan MacDonald
cc017f211a x1000: support 2nd device ID byte for NAND flash
Some components have additional ID bytes. Add support for an
optional 2nd device ID byte during the identification routine.

Change-Id: I5bbad73fb57004067c6f13f223f7bf4d43ff7849
2022-07-10 15:22:10 +01:00
Aidan MacDonald
131566b8f8 x1000: fix linux boot USB issues
If the USB controller is active when we hand over to Linux it'll
often trigger "irq nobody cared" warnings. Disabling the controller
before boot prevents that.

Also move the USB PHY bit workaround from the dualboot cleanup hook
to the main Linux boot function. Mainline kernels don't clear these
bits either.

Change-Id: Ieaf896c3b8c3e58a8c47de5afeb384ae2511a5fa
2022-07-10 09:48:39 -04:00
Aidan MacDonald
d0d13baf3e x1000: fix command line passing for linux boot
Change-Id: I2a016a5f64ef980f49a8cbdcbb0e0af9ad768ce0
2022-07-10 09:48:39 -04:00
Aidan MacDonald
ec9e484f64 firmware: Add load/store with endianness functions
Define common functions for loading 16/32/64-bit unsigned integers
with big, little, or host endianness, and distinguishing unaligned
and aligned cases.

Unaligned loads are supported generically by default, but this can
be overridden with a more efficient implementation on architectures
which support unaligned loads natively.

Change-Id: I3d826ec1a7646777876366eeece2cbccab60c1fb
2022-06-26 17:19:40 +01:00
William Wilgus
c3e75a1ce7 Reset settings on button hold fix lang for non supported ipods
Change-Id: I7ab15c26d7670472b0861e2862e865b63064c939
2022-06-21 23:49:44 -04:00
William Wilgus
8283752223 Reset settings on button hold
extend this properly to the gigabeast and iriver
updated manual entries

Change-Id: Ibd1bce8d113193cb3b76f4daf0d6ceb01a2f7585
2022-06-21 22:43:39 -04:00
William Wilgus
e75e07e1b6 plugin sliding puzzle fix unneeded check
Change-Id: Iab345d2ec490311fc8a5482c52dbed14f5e11070
2022-06-21 22:22:50 -04:00
William Wilgus
e1c5a3e296 fix uninitialized warning in libopus
likely this is truly a bug but I imagine much worse things
happen before this point in that case

Change-Id: If78465cf2ae1e5cf38ad7f087dd436b888bc9996
2022-06-21 22:05:17 -04:00
William Wilgus
75f618ea62 Rb Manual Fix missing bracket
Fix missing bracket from 7e0492444c g#4568

Change-Id: Iab897ae0c61c7a039a6870980cdb87f5fd33386f
2022-06-21 20:56:46 -04:00
Aidan MacDonald
7e0492444c usb: remove "Ask" USB Mode (FS#13317)
USB ask mode is basically a footgun: it can't work on native targets
and doesn't work reliably on hosted ones, and it continually produces
a slow trickle of problems. FS#13317 gives a rundown of the issues.
Removing the setting seems like the best solution for now, since a fix
would be pretty involved.

This partially reverts 60f581e8f5. The USB Mode setting is left in
place so the option can be added back later in a non-buggy way.

Change-Id: Ie01b28dd2ed95a31b509a7834d85bac8eb866098
2022-06-21 18:11:53 -04:00
William Wilgus
6cdd142d5c Setting reset fix red
Change-Id: I9174d7695b117fa10d10cda8ff9cccc50ebeb7f2
2022-06-20 20:16:55 -04:00
William Wilgus
ed37c2e894 FS#13193 - Add option to disable settings reset on startup
Updated version of the patch originally by user cockroach

UNTESTED
Ipods?, Iriver H10,
I do not own these players so YMMV

https://www.rockbox.org/tracker/task/13193

Change-Id: I7924837f582cc5c49ee68c186d6822f577f65147
2022-06-20 18:57:25 -04:00
Solomon Peachy
58bf7c7e6f Update english-us "translation"
Change-Id: I5b59e75d6c5ba06a3917fa7046bb769d873d6bfd
2022-06-13 09:16:34 -04:00
Solomon Peachy
7d5aeeecf1 FS13343: Updated Serbian translation (Ivan Pesic)
Change-Id: Ic4ba206b981dd03e7dcdd5a1fd3bc5f48ecc3584
2022-06-12 17:12:44 -04:00
Solomon Peachy
6a707cd913 FS13346: Updated Slovak translation (Matej Golian)
Change-Id: Icb2e7084c60fe091ea00928d84fe036b4341b762
2022-06-12 17:12:07 -04:00
Solomon Peachy
595a34640b FS13345: Updated Polish Translation (Adam Rak)
Change-Id: I9292f2dfcdbc65e9020ff2f1ef4569a371f780bc
2022-06-12 17:10:54 -04:00
Solomon Peachy
7296f30490 jz4760: Reformat USB driver a little. Prep work for later changes.
Change-Id: I74d068661ea8a8a59a88f0c2c5a938dcf6fb8b20
2022-06-12 17:09:32 -04:00
Pavel Rzehák
b9e7075837 Rockbox Utility: updated Czech translation
translated missing strings and revised existing

Change-Id: I96b8e3ecb678715c04748b56e7038e96aa6536cc
2022-06-12 10:01:44 -04:00
Aidan MacDonald
4d01168b9b x1000: add flash probe tool to bootloader
The flash probe mimics the boot ROM's flash read routines and
dumps the manufacturer & device IDs and 16-byte parameter data
to a file on the SD card.

Change-Id: I3d413bd0cc05a9d7f2285b85454420c3e90274e9
2022-05-30 14:08:02 +01:00
Aidan MacDonald
e05aa27124 x1000: move NAND commands to header file
Change-Id: Ic95b80494a101f7b349e115d82e9dfe3a64b643f
2022-05-30 14:02:13 +01:00
William Wilgus
1d39261338 lastfm_scrobbler Add settings WIP
add settings to the scrobbler plugin
Start Playback -- resume playback at plugin start
  (while enabled if nothing to resume will bring you back to scrobbler menu)
Save Threshold 0-100% -- when this much time has passed the track will be
  saved and marked (L)istened

Verbose -- Supress messages such as 'Scrobbler Started' and 'Scrobbler Flushed'

run the plugin a second time to bring up the menu
if you have resume playback enabled and there is nothing to resume
it brings you back to the scrobbler menu as well

Change-Id: I48d96ea3dc8f37d76a723136004af149429e0b2e
2022-05-28 06:23:37 -04:00
Aidan MacDonald
7345666d9c plugins: use menu for lastfm scrobbler TSR exit callback
Use standard menus and yes/no screen for the TSR exit callback,
similar to the recently added test_usb plugin. This removes the
need to define key bindings and it provides a more consistent
user experience.

It also allows the "flush cache" message to be popped up in the
main thread - doing it from the worker thread is unreliable and
the message often disappeared because the main thread did a UI
update immediately after leaving the plugin.

One issue is that quitting the plugin by selecting the scrobbler
plugin itself immediately restarts the scrobbler. This is because
there is currently no way for TSR plugins to terminate themselves
either through the exit_tsr callback or otherwise.

Change-Id: I9690239d5bd58ad2fbb36fd15a10683757aff0ff
2022-05-28 06:23:08 -04:00
Aidan MacDonald
85232fadbb simulator: fix off by one error in USB ack calculations
The sim's printout of the number of expected USB acks was off by one.
Since the sim queue is not registered for broadcasts, it will not
receive an ack message and does not need to account for itself when
determining the number of acks to expect, unlike the USB code.

Change-Id: I6715039c05c1ea95099716c5251d401e37f5b085
2022-05-22 15:34:42 +01:00
Aidan MacDonald
5ee9a45126 mips: stop backtraces at main()
Initialize ra=0 before calling main so backtraces don't walk
through the startup code.

Change-Id: Ia8796ce38b32d14025b47b3e00061267ee25cbaf
2022-05-22 07:16:11 -04:00
Aidan MacDonald
981e972839 mips: add native backtrace implementation
Should make debugging crashes on native MIPS targets far easier.
This is by no means a 100% complete or robust implementation but
it seems to handle the vast majority of functions.

Change-Id: Id5f430270e02b5092b79026b6876675c784aa649
2022-05-22 07:16:11 -04:00
Christian Soffke
cade488b08 pictureflow: Fix 'Update Cache' function and update manual
The artwork cache was previously always rebuilt,
even if you had selected the option to update.

"Preparing artwork" should be much quicker now
after a database update.

Change-Id: Ie81486e29d596b52afd21b01ba54c73f1b402be2
2022-05-22 06:55:58 -04:00
Christian Soffke
b357585852 pictureflow: Fix slide_index bound
Parameters for fbound were in the wrong order
and slide_frame wasn't assigned the bounded value

Change-Id: I9b466e8b45e4318cadf59298f8c1145fa4d30ede
2022-05-22 06:55:58 -04:00
Christian Soffke
5146c3043f pictureflow: Fix concurrency issues building art cache
Guards against possible image corruption

Change-Id: Id7e1e3a09cb13c255eea0ffdd2e4c4d558086997
2022-05-22 06:55:58 -04:00
Aidan MacDonald
c116db6065 plugins: add USB TSR test plugin
This is intended for testing USB event delivery to TSR plugins.
Usage:

1. enter plugin -> select Start
2. plug and unplug USB
3. reenter plugin -> select Status
   it should display "State: disconnected" then "Prev: connected"
4. when done -> select Stop Plugin

Change-Id: I6c70f452db642f3fcbfbcb4f06c57f93e60f4cfd
2022-05-21 14:58:55 +01:00
Aidan MacDonald
2f71571c0a Fix faulty Play Shuffled behavior (FS#13347)
When replacing a dynamic playlist with Play Shuffled, the current
track could incorrectly be left at the end of the new playlist.
Fix this - the current track should always be at the beginning,
so it can be skipped past regardless of the repeat/shuffle mode.

Change-Id: Ia86539bc23ad8ebd714b8dc50b5720671b4ad0a9
2022-05-15 15:23:36 +01:00
Aidan MacDonald
2315266628 kernel: remove unused function mutex_test()
No longer needed since the only user was in the Archos code.

Change-Id: I763f58050c70f2bb1d8cc0a044c63698f3157a8d
2022-05-14 11:29:55 -04:00
Aidan MacDonald
dafc8e5904 kernel: remove unused kernel/pthread/*.c files
These don't seem usable and it looks like the files were added by
accident by d66346789c "buflib: Check the validity of of handles
passed to buflib_get_data() in DEBUG builds."

Change-Id: I4d4601f1fef7901c08ae86448853d008f48d5f43
2022-05-14 11:29:55 -04:00
Aidan MacDonald
d20071def0 apps: Add "keep current track when replacing playlist" setting
Add a setting that makes Play and Play Shuffled in the playlist
context menu leave the current song (if any) playing when they
replace the playlist. Default to on, since this was the behavior
of the old "Clear List & Play Next" option.

Change-Id: I1340aed5c28bb3244e36d0953b3308ae59681c97
2022-05-14 16:05:46 +01:00
Aidan MacDonald
70087fb9f3 apps: Change playlist context menu behavior, fix FS#13336
Rename the "Clear List & Play" options to simply Play and Play
Shuffled, and change their behavior slightly. Previously they
would leave the current song playing, but now they will start
playing the first song of the new playlist immediately.

Shuffle options are now consistently hidden whenever a single
file is selected.

Fixes FS#13336 -- Play Shuffled is now always displayed where
applicable, regardless of playback state.

Change-Id: Idd454b4f9ab2c98cda3ce0389add747a3273fb42
2022-05-14 16:05:45 +01:00
Solomon Peachy
7363d65f10 manual: Fix up some issues to try and get texlive2021 working ok.
Change-Id: I6fd5cfd7f27792cffbd061d96fdc8c852cc85050
2022-05-09 10:36:42 -04:00
Christian Soffke
f3358eb20a Properties plugin: Eliminate redundant Track Info code
When opening an audio file from the file
browser or database using the Properties
plugin, it will now use existing code from
the Show Track Info screen for displaying
metadata. The menu option has been
renamed accordingly.

Change-Id: I5a824865b9f980151b91aff3c3c18ec45830a12c
2022-05-09 09:44:23 -04:00
Aidan MacDonald
4b293285ea pictureflow: fix album index alignment in load_album_index
Change-Id: I7c3c86ffdab62859ce88faeeb84160ea52a4626a
2022-05-07 16:28:27 +01:00
Aidan MacDonald
f661dc596e pictureflow: fix bug in calculation of album art buf size
I intended to check for enough space in buffer but this isn't
really doing it and it is making aa_bufsz slightly too big so
it's a possible buffer overflow.

Restore the old ALIGN_DOWN(..., 4) rounding in case it's important,
if not, then no harm done.

Change-Id: I904f255ac79a77d5328b44667502ceae8308e659
2022-05-07 15:52:26 +01:00
William Wilgus
2c4480979f tdspeed.c remove buffer name strings
get rid of the magic buffer size and the whole name buffer
naming the buffers individually doesn't serve any real purpose
instead add a static string for all td buffers

Change-Id: I962a966456453e1b84bab6fec6f4df7cb075ef4e
2022-05-05 00:31:07 -04:00
William Wilgus
09ef94ed8b add const to const * strings iriver Fix Red
the iriver devices overwrite the pointer

Change-Id: I20ae6db2aec0f957824b61db349c7c45a95e58d9
2022-05-03 23:58:00 -04:00
William Wilgus
79864c6ec2 add const to const * strings
I don't think this will amke any difference except maybe for hosted ports

Change-Id: I84f898aea92a6963901a6d889dd18b63f24c9a41
2022-05-03 23:00:58 -04:00
Aidan MacDonald
4dd3c2b33e codecs: m4a: improve seek accuracy
Seeking doesn't work well in M4A files with very few chunks due to
the seek method used (chunk based using the info in the 'stco' atom).
According to libm4a/demux.c the expected seek resolution using this
method is 1/4 to 1/2 seconds. However, ffmpeg generates files with a
1 megabyte chunk size, so the resolution is much worse than expected
on some files: around 30-40 seconds at 256kbps.

There was a bug with the seek position reported back to Rockbox: the
codec pretended it could seek exactly to the requested sample, but it
would only seek to the start of a chunk. This could leave the UI in a
confusing state because the real playback position was different from
what the elapsed time showed. Fix this by recalculating the reported
sample position using the chunk start.

To fix the low seek accuracy, use the table in the 'stsz' atom to skip
individual packets within a chunk. This is very accurate, but it takes
a lot of RAM to allocate the table. Currently the table is not allowed
to use more than half of the codec RAM, which should suffice for short
files on most targets. On files where the table is too large the codec
will fall back to the less accurate chunk-based seek method.

Change-Id: Ide38ea846c1cdd69691e9b1e1cd87eb0fa11cf78
2022-05-02 12:16:21 -04:00
Aidan MacDonald
b79eefc858 apps: fix tagtree arithmetic on null pointers
It was possible for the tag tree's buflib move callback to turn a
null pointer non-null. The tagcache_search_clause->str can be null
for OR clauses. Also ensure that clauses are zeroed on allocation
to ensure garbage pointers don't creep in.

Change-Id: Ic823a8eecc501eeaa75798066521e427a9a89190
2022-05-02 16:48:19 +01:00
Aidan MacDonald
6e37b31851 apps: fix use of negative fd in open_plugin.c
Bug reported by UBSan.

Change-Id: I3223a496dfa5df4e3df97fb88a14ea0174d4b428
2022-05-02 16:42:32 +01:00
Aidan MacDonald
dadfbfc6a5 apps: fix close of negative fd in talk.c
Bug reported by UBSan.

Change-Id: I02276521510acac8696499895fec15993c55aaf6
2022-05-02 16:34:18 +01:00
Aidan MacDonald
e5e457b526 apps: fix int/long mismatch in playlist.c
A couple of places use sizeof(int) for allocations and copying but
the indices are longs, which causes bugs in the simulator on 64-bit.

Change-Id: Ie101ac57d44217c4b1657cf0152c97e276bd7043
2022-05-02 16:10:15 +01:00
Aidan MacDonald
6b8c94a6e3 Fix some non-portable alignment values
UBSan reports an avalanche of unaligned pointer bugs stemming from
hardcoded 4-byte alignments used in certain places. Use sizeof(long)
instead to align to the machine word size.

Change-Id: I28e505212462c5268afa24e95df3a103ac3e2213
2022-05-02 15:38:48 +01:00
Aidan MacDonald
366f00a3d3 plugins: fix out of bounds read in chopper
GCC complains about this when compiling with UBSan.

Change-Id: I4bd8ff2b47882ab95620dc7750a9a80f823cc2ea
2022-05-02 15:38:48 +01:00
William Wilgus
ab71b9e334 tree.c update settings when new theme selected
Change-Id: I376aba4258dd3c54c45d97317aa1e7bc8f2a3a17
2022-04-28 18:56:13 -04:00
William Wilgus
f0d3a62d91 keyboard.c change math for editline above picker
Change-Id: I59e7f7face07f3f97fc6e016ee333cd3139ad5fd
2022-04-27 21:40:49 -04:00
Aidan MacDonald
9e93796407 buffering: remove bufgettail/bufcuttail
These operations can only be used in limited circumstances and have
exactly one user. bufgettail especially seems of dubious value; how
often do you need to read N bytes from the end of a file without
changing the file position?

strip_tags() was the only function using them, to strip off ID3v1
and APE tags off the end of buffered tracks. This would save only
32-192 bytes per track -- if the container format uses APE/ID3v1.
It hardly seems worth the effort.

Change-Id: I8fc3c1408517eda6126e75e76d76daea904b50eb
2022-04-20 16:51:49 -04:00
Dana Conrad
931d616071 Manual: Add Eros Q Native Bootloader download link
Forgot this in the previous patchset

Change-Id: I3f58e31e57e90cf3bc5f4b02a37ac4c99e8e52b4
2022-04-19 21:27:57 -05:00
William Wilgus
002575dbcf [BUGFIX] gui_synclist move global display settings to list struct
forgot to add the update function to the list_wraparound callback

Change-Id: I7ee7940f126726c727344d7d09371f1bf3295c81
2022-04-18 23:08:04 -04:00
Christian Soffke
1c3f6e063a fiiom3k Yes/No screen: Only accept Play button for YES
According to the on screen instructions, any other button
should mean No.

More importantly, in my experience at least, the Select
"button", since it is touch-activated, can sometimes be
pressed by accident, especially when a warning screen
is displayed as a result of pressing that same button.

Change-Id: Ieeadfa8018b5df99605297bc47948a181c22dab4
2022-04-18 22:28:13 -04:00
Dominik Riebeling
f8d54d0d1e rbutil: Bump to 1.5.1.
Change-Id: Idfc846ee1922271a709a097989c7a9a31e9d7279
2022-04-18 21:02:12 +02:00
Dominik Riebeling
3ed515872c rbutil: Fix progress dialog abort changed too early.
Don't change the abort button to Ok after a successful bootloader
install, this will be done by the following steps.

Change-Id: I4275de1f44bddf0580b10b36240a36a43daa68d0
2022-04-18 19:35:36 +02:00
Dominik Riebeling
80ac6893c0 rbutil: Update changelog.
Change-Id: I0d3ad4cba8cc5393d86cf2b96fc755ad6ec90b01
2022-04-18 19:35:36 +02:00
Dominik Riebeling
e4cb1615f4 rbutil: run lupdate on all translations.
Change-Id: I676cddf93724e07790cd393b697c127928f3949b
2022-04-18 19:35:36 +02:00
Dominik Riebeling
e2dc0a2c07 rbutil: Make zip install log less noisy.
No need to show a separate entry when a cached file has been used, do it
the same way as bootloader downloads do.

Change-Id: I42a21a37474a778975e82af0102e0152677a0343
2022-04-18 19:35:35 +02:00
Dominik Riebeling
1155851ffb rbutil: Make "Info" tab more responsive.
Loading the information can take a bit depending on the speed of the
disk. To make the application not appear as frozen update the UI more
often, and display a "Loading" text during data retrieval.

Change-Id: I012487d031ea71e62b583ca1c40220ea709e7034
2022-04-18 19:35:35 +02:00
Christian Soffke
e71a441762 ImageViewer: Fix buffer overflow
np_file is a buffer of size MAX_PATH. After
removing only the file name component and
leaving the rest of the path, the
available space may not be sufficient
for appending another file name (possibly of
size MAX_PATH itself) to it.

This can occur after a file of acceptable
length is opened in ImageViewer, and you
then advance to another file whose path
(including the file name) is longer than
MAX_PATH.

Change-Id: Ideadd9451359bd5735bce92fca5d983e61f300e9
2022-04-18 10:58:40 -04:00
Christian Soffke
1c66e97522 Database: Remove File View menu
These options don't seem to
apply to the database...

Change-Id: I777073eeaed4099acf44996b95fa05b4c2b3abc4
2022-04-18 10:48:41 -04:00
Aidan MacDonald
a234df30df Fix sim build for glibc >=2.34
Change-Id: If63787514b6bffc0afb71f9d651f8c6f0c328a2d
2022-04-18 09:54:07 -04:00
Christian Soffke
4d7327b04d Album Art: Eliminate redundant check
When the 'Album Art' setting was set to
'Prefer Image File' and neither image file
nor embedded artwork were found,
playback would check for files twice.

Change-Id: Ibe392928d58ec04103e2572124841724509bd859
2022-04-18 09:13:31 -04:00
Dana Conrad
b02123d349 Manual: Add Eros Q Native
Here is the PDF this patchset produces: https://www.dropbox.com/s/v1uz8p2fsgsz1ng/rockbox-erosqnative-923dabb5cd-220409.pdf?dl=0

Change-Id: I27554cb65a6498a6ccb714d4f93f25264b516e99
2022-04-18 09:09:03 -04:00
Bernd Busse
dc67d821c3 toolchain: update zlib to 1.2.12 for native mips targets
zlib has been updated to 1.2.12 on March 27, 2022 with the following note:

    Due to the bug fixes, any installations of 1.2.11 should be
    replaced with 1.2.12.

The previous version has been removed and is no longer available for
download on the official site.

Change-Id: I807fbb4605378d99654be3e4c1b28bd04de729c9
2022-04-18 09:07:39 -04:00
Dominik Riebeling
fc38cd8215 rbutil: Fix uninstall not updating install log.
Change-Id: Icd71f1a2de73d23c6580523de8c810b5a10a194b
2022-04-17 23:21:19 +02:00
Dominik Riebeling
37a60d5461 rbutil: Enable themes install depending on theme selection.
Don't store the "Install Themes" option. Automatically enable themes
installation if the themes selection has at least one entry selected
instead.

Change-Id: Ib46e8b53b0204555b79dea51545dd7c380f003ff
2022-04-17 23:21:19 +02:00
Dominik Riebeling
62108a9613 rbutil: Use references to avoid creating temporary objects.
Get rid of some unnecessary object creating / copying by using
references.

Change-Id: Ia44e34f6f66d230caa9af7ef7c0eca73be12de2a
2022-04-17 23:21:19 +02:00
Dominik Riebeling
8c55ce62b9 rbutil: Move bootloader file check to base class.
Avoid constructing the bootloader file path in the caller. Pass filename
list and mountpoint separately so it can directly fall back to the
mountpoint.

Change some functions to use references instead of creating temporary
objects.

Change-Id: I09c9d755553a32de3d02a42a8ce1fcb94f831b2a
2022-04-17 23:21:19 +02:00
Aidan MacDonald
1af92e5ff8 Fix red from 6f5af8e53c
Change-Id: I02dbc3e91856eaef081446ca77919e6182a85e1d
2022-04-17 17:21:02 +01:00
Aidan MacDonald
fca7b8e2ff Fix undefined behavior that blocks compiling with UBSan
Left shifts are not defined in C if they would cause signed overflow,
so these expressions get instrumented, which makes them unusable as
switch values and triggers compile errors when compiling with UBSan.

Change-Id: I0588d4be1e00ba1cfde0eac119ead368b20d10c9
2022-04-17 11:37:34 -04:00
Aidan MacDonald
c6df8cc4f7 configure: Add support for compiling the simulator with UBSan
By passing --with-ubsan to tools/configure, you can now build the
simulator with UBSan to catch undefined behavior at runtime.

Change-Id: I054cd46ca59587dd544efbd7bdf6d27a040a4891
2022-04-17 11:37:34 -04:00
Christian Soffke
6f5af8e53c Add Codec to Track Info screen
Change-Id: Ieec0e49d0b5e1ca14fa828a510edf30d548969b2
2022-04-17 11:32:13 -04:00
William Wilgus
c4156b1909 viewports, set flags to VP_DEFAULT_FLAGS
flags were getting un-initialized memory
it really didn't matter with the flags getting initialized
anyway
But once I added a new flag that didn't explicitly
set or clear the flag at init well here we are

set flags to VP_DEFAULT_FLAGS in viewport_set_defaults()

add the flags variable to the default vp's set to 0
(it was already initialized to 0 by bss, make it explicit)

Change-Id: I3a9a062455b4cf66d2b8c70fdf05402a5c0c091c
2022-04-17 10:59:56 -04:00
Christian Soffke
6703f43f5c Playlist Viewer: Always retrieve track Info from disk
Frequency, file size, and the codec are not stored
in the database and thus can’t be displayed in the
Playlist Viewer's Track Info screen when metadata
is only retrieved from the database.

Change-Id: I9e1d11c13ad8bf7b90b654ed78e4e7f763c30f8a
2022-04-17 10:58:42 -04:00
Aidan MacDonald
0e8f3669d0 Fix remaining red from 3fcdadce24
Change-Id: I619a637bdf1fb932c3618f1f40aaa1c9e7f98300
2022-04-16 16:06:13 +01:00
Aidan MacDonald
76035decc6 Fix red in 3fcdadce24
Change-Id: Idbee52505b3c109a0aad23e2edf7dd78519eb173
2022-04-16 10:41:19 -04:00
Christian Soffke
f989339664 Remove dead code
Change-Id: If31a99e6488dabab47d482637b2609ff829df1ca
2022-04-16 10:18:28 -04:00
Christian Soffke
68ac932585 PictureFlow: Disable 'Album Not Found' splash when stopped
...and go to last album, even if it hadn't
been selected for playback

Change-Id: I44013e930a1feb873f128c2885ecb8ddaf4ae3ff
2022-04-16 10:13:50 -04:00
Christian Soffke
e3bf6f08e3 PictureFlow: Delay LCD Update until center slide is loaded
Eliminates flashing of slide right after launch or
when changing sorting on the M3K using the
volume buttons

Change-Id: Icd317e0b0d5b939269dc8dafd30d0c0f9daa5fd9
2022-04-16 10:13:50 -04:00
Aidan MacDonald
3fcdadce24 plugins: Add multiboot select plugin
This plugin provides a menu for easily editing the root redirect file
on targets that support multiboot. You can select a new root from a
list of Rockbox installations detected on the filesystem or remove all
redirects to boot from the default location.

To avoid searching the whole filesystem, only subdirectories of the
volume roots are checked for valid installations. Only installations
that are compatible with the current player will be displayed.

Change-Id: I7dcbadfd97873b87817870e61d2ae37956d2da00
2022-04-16 14:36:39 +01:00
Aidan MacDonald
d55dceff37 apps: Add ability to do a clean reboot
Allow a clean shutdown to end in either power off or reboot. Add a
new event SYS_REBOOT to signal it and sys_reboot() to trigger the
event. SYS_REBOOT signals a reboot request and should be listened
for alongside SYS_POWEROFF events.

Change-Id: I99ba7fb5feed2bb5a0a40a274e8466ad74fe3a43
2022-04-16 14:36:39 +01:00
Dominik Riebeling
90960adf56 rbutil: Fix bootloader installation for various players.
Reworking handling of player specific data (static player configuration,
as well as information retrieved from the server) changed the behaviour
on a non-present configuration entry. This eventually caused the
mountpoint not being set for players that don't have a bootloader file
on disk. Fixing this accidentially removed the default-if-not-found
handling for the bootloader file.

Restore the old default value behaviour for both cases.

Change-Id: I627782ccdef198619fb507f8b09a64811b3bd18f
2022-04-15 21:03:44 +02:00
William Wilgus
ff08841ea9 viewport FIX RED remote screens
Change-Id: I894a5c3e9053f44dee4803e9cdbbcb8f651ee318
2022-04-15 08:16:28 -04:00
William Wilgus
d56d96031c viewports add flag to disable updates
when drwing multiple areas of the screen with other gui elements
you might want to combine updates into a single screen redraw

Change-Id: Ie4130366fa13e25d3d14e937257d11547dd61134
2022-04-15 01:54:42 -04:00
Dominik Riebeling
b9c3ab2e04 rbutil: Improve progress & responsiveness on (un)install.
- When uninstalling update the log file only at the end of removing all
  files. This gives a major speed improveness since othewise the log
  file is written after each file. This slows down things notably,
  especially on slow disks.
- Explicitly update the UI during install zip extraction. Avoids
  progress seemingly hanging due to the UI not getting updated often
  enough.

Change-Id: Ib353a92e02a7038d6e55f5f88dcfb5085602c0f2
2022-04-14 23:06:40 +02:00
Dominik Riebeling
97176d444e rbutil: Use progress bar on uninstall.
When uninstalling parts with lots of small files the process can take
quite some time. Update the progress accordingly.

Change-Id: Iecc4553b36abbc1cf9652a325ccb29b62a7fc4cc
2022-04-14 22:37:45 +02:00
Dominik Riebeling
6ef094c1a9 rbutil: Make QtMultimedia an optional component.
We only use it for playing the TTS sample so it's not too important.
Since this is a separate Qt module it might not be installed, so make it
optional.

Change-Id: I2c91dd5d587c8a984525b2297bbe7d597b816b4f
2022-04-14 22:23:35 +02:00
Dominik Riebeling
8a6ceff376 rbutil: Fix sansapatcher bootloader install on Windows.
During bootloader installation sansapatcher disk access is accidentially
set up twice. This is not a problem except on Windows, which will abort
with a "permission denied" error.

This is basically the same problem as for ipodpatcher bootloader install.

Change-Id: I03220e17d0e00a15fff23c02aba7da93d4781964
2022-04-14 22:22:46 +02:00
Dominik Riebeling
cc2f364926 rbutil: Fix ipodpatcher bootloader install on Windows.
During bootloader installation ipodpatcher disk access is accidentially
set up twice. This is not a problem except on Windows, which will abort
with a "permission denied" error.

Change-Id: I9a835ef0d49f24df741b7b2909c4bd87cb1c8341
2022-04-13 21:36:44 +02:00
William Wilgus
b9ab75732a bitmap/list.c fix red
--typo

Change-Id: Iaa632e215d7d1e3758f62fedd72565fa633d925e
2022-04-10 23:59:33 -04:00
William Wilgus
ddcab156f7 gui_synclist move global display settings to list struct
its really painful needing to override global settings in order to change
some aspects of lists

this patch moves:

[scrollbar position, cursor type,
talk_menus, keyclick,
wrap around, scroll paginated]

to variables within the synclist, it also makes updating
after settings changes a necessity

I think I have the static synclists in core covered

(I think the one in gui/list-skinned can be left as is)

this patch allows easy modification these flags on the fly

Change-Id: Id0dcb8b05eb9ecd78929c0aff7678bf2ab4c70a7
2022-04-10 22:24:28 -04:00
Aidan MacDonald
8dbc0914f6 imageviewer: limit progress bar LCD update rate
The progress callback doesn't rate limit LCD updates, which causes
excessive slowdowns (up to 150x!) on some targets. Limiting updates
to 20fps solves the problem and should boost load speed across the
board, particularly for large images and animated GIFs that may run
the progress callback thousands of times.

Change-Id: Ia48924d4dcb24c1111509329581809be494d0165
2022-04-09 23:15:48 +01:00
Aidan MacDonald
32f1418c5a buffering: fix buffer overflows with bitmap loading
In some circumstances it was possible for a bitmap to overflow its
buffer and overwrite the next handle. The easiest way to trigger it
is with a highly compressed JPEG that is decoded to a large bitmap.
Because the JPEG file size is used to determine how much to allocate
this would cause an obvious buffer overflow when the JPEG is smaller
than the decoded bitmap. Fix this by using the decoded bitmap size as
the allocation size. Some overhead must be added to deal with JPEGs,
but it will be freed once the image is loaded.

A less obvious possibility is the fact that add_handle() will allow
a handle to be added even if there's not enough space for the entire
allocation. This is generally beneficial because it allows the first
part of a file to be loaded while waiting for space to free up, but
for bitmaps it is not valid because the whole image is loaded at once.
Hence if there is not actually enough space in the buffer, the bitmap
load can again overflow the actual free space and overwrite the next
handle.

The buffering code supports an H_ALLOCALL flag for allocations that
need the free space available immediately, so use it for bitmaps to
avoid that bug.

load_image() had a sketchy-looking check for free space which stopped
me from triggering the bug with simple tests, but since guessing the
free space is obviously a bad idea when the caller *knows* how much
free space there really is, remove that guess and let the caller tell
load_image() the real deal.

Change-Id: If62a58759705d83c16ee5b50f26bcbccc3f6c01f
2022-04-09 15:20:57 +01:00
Aidan MacDonald
5aa0fc3b00 jpeg: provide a rough estimate of decoder memory overhead
JPEG decoding requires additional space in the bitmap buffer beyond
what is needed for the decoded pixel data. Provide a way to estimate
how much overhead is needed.

The actual overhead is sizeof(struct jpeg) + decode_buf_size, where
the latter depends on the image size and JPEG encoding used. From my
testing decode_buf_size is normally pretty small (under 5 KiB) but
looking at the code it could be large in some cases, primarily with
large images, so 32 KiB seems to be a decent compromise. Someone who
knows better about JPEG should pick a better value if that's too big.

Using a constant is obviously not the most accurate but it seems to
be the simplest option for retrofitting to existing code.

Change-Id: I573b0abb8ca2d79e43f185010487f07226edb793
2022-04-09 15:20:57 +01:00
Aidan MacDonald
7718b24401 buffering: fix signed overflow in next_handle_id()
Not sure what the comment is talking about - signed overflow
is undefined behavior and we don't use -fwrapv or other flags
to make it defined. I can't see how a compiler could abuse it
here, but the overflow is nonetheless easily avoided.

Change-Id: Ibed6d7c0d841db2aa86b9d8ba4c6a0d08c413354
2022-04-09 15:20:57 +01:00
William Wilgus
bd444ebd0a BUGFIX keyboard.c make vp alloc static
don't stop playback to alloc viewports for the keyboard
For the moment it doesn't make much difference
each vp takes about 40 bytes (double that in the sim?)
so not the end of the world 120 extra bytes

Change-Id: I482d7e3061cf9fb8065dc28bf62a6f830770f3c7
2022-04-08 18:11:21 -04:00
Christian Soffke
132034346f Manual: Update PictureFlow
- Update the manual entry for PictureFlow with
the latest features and fix keymap

- Strongly suggest enabling the database's
"Load to RAM" feature (in my experience, this
can lead to a ~60x speedup when building the
album index)

- Suggest enabling the dircache, as it can
noticeably improve the loading times for
album art.

Change-Id: I12c7ce5d5388159da1790fc125f2e20bb78dbf96
2022-04-08 11:19:45 -04:00
Christian Soffke
77717f36e0 Manual: Update fiiom3k keymap
Change-Id: I98250262a3ec17edcd35487411c42db6bfd5ce66
2022-04-08 11:19:45 -04:00
Nick Peskett
db55d30372 Allow cuesheet index offsets longer than 99 minutes.
While the track number is limited to 99, I know of no documented
constraint on the value of offset minutes to 99.

As we are storing the millisecond offset as unsigned long, assuming
32 bit, we can allow 70,000 minutes (2^32 / 60000).

However, I've been unable to generate a test audio file 48 days long
under 2GB, so I've set the limit to 30,000 minutes.

In addition, this change reduces the maximum number of seconds to 59,
and frames to 74.

I've generated some silent test files with the filenames being
cue_[minutes].mp3

http://peskett.co.uk/rockbox/test_cues/

Change-Id: I3ca4468ebc88ba134c4e785e9395f90bf76941ac
2022-04-07 20:10:19 -04:00
William Wilgus
d1be73cfc0 keyboard.c Use viewports, move text box pos
allows items to be moved around with less code changes

remove scrolling I was not overly impressed with it
add test_kbd plugin

Change-Id: Ic183c7221bda9405891632704f3a7bbfd79bfe83
2022-04-07 19:46:56 -04:00
William Wilgus
bf3e67204c lastfm_scrobbler check for back to back repeat entries
if you skip a track after the halfway point the scrobbler may double post
with slightly different timestamps but the same track info

take a crc of the non-unique part and check against the previously
written track

Change-Id: I676342c4cd76f632131d9cb6d9f7d2f59df357e6
2022-04-02 08:05:37 -04:00
William Wilgus
43abe2d820 lastfm_scrobbler check pointers for validity
we need to make sure we don't deref NULL pointers

Change-Id: I9c564b681cd20222c3a134680e60a310b2eb846c
2022-04-02 07:42:06 -04:00
Aidan MacDonald
98f762316f system: update MEM_ALIGN_ATTR for targets with CPU caches
MEM_ALIGN_ATTR should take advantage of cache line alignment on
all native CPUs which define it, not just ARM CPUs. (This could
arguably be done for hosted targets too, but we don't necessarily
know the size of a cache line there.)

Change-Id: Ife9302105ea57388afd55ce31da848b00b5b1b25
2022-04-01 12:08:41 -04:00
Dana Conrad
de285741bf ErosQ Native: Make power delay bootloader-only
gotta go fast

Change-Id: Ic01e4aa70a2bec4c48ae7cf8f32f8dfd366decad
2022-04-01 12:04:46 -04:00
Dana Conrad
7aa2a23b95 Eros Q Native: Add Original Firmware Boot option
Hold "Play" to boot the OF, or boot it from the recovery menu
by holding "Vol. Up". If you had the hosted port installed on your
player before installing the native port, you'll still have to go
through the hosted bootloader.

A couple notes:

- When booting from the menu, the recovery menu disappears, then
  reappears before going into the OF.

- You need to hold the play button for like a half second after the
  blue light comes on in order to get into the OF.

The recovery appears to be there, but it doesn't seem to be intended
for end users - it just says "Updater V1.1 - Insert TF Pls". I haven't
tested it beyond seeing that it boots, so I'm going to comment it out
for now.

Change-Id: Ie271ee479bb628cc74141b7fe07273b3f193f358
2022-04-01 12:04:30 -04:00
Aidan MacDonald
5ffe520de4 playlist: use path_strip_last_volume, clarify path conventions
The comment regarding Windows paths was fairly confusing as to
its intent. What the code is trying to do is replace the drive
letter with the volume containing the playlist, which appears
reasonable. The middle of the comment was devoted to explaining
why the code below was potentially incorrect which only served
to add to the confusion.

AFAICT the last volume specifier in a path will cause search to
start from the root of that volume, so any incorrect result can
be avoided by using the new function path_strip_last_volume().

Finally, add a comment at the top of the function that explains
what it does.

Change-Id: If4e4938801f2f81eb52f5d32b5461872995e5e83
2022-04-01 11:40:02 -04:00
Aidan MacDonald
4f05a9d066 Add path_strip_last_volume
This gets the volume that the path eventually refers to by parsing
the last volume specifier and returning the part of the path after
it (which does not contain any volume specifiers). The initial part
of the path therefore contains everything up to and including the
last volume specifier.

Change-Id: I9a935543256f8f22e0b8b1e3c88d4e47bd9dae8a
2022-04-01 11:40:02 -04:00
Christian Soffke
ca0c3dee0a ImageViewer: M3K keymap allow scrolling up/down
Change-Id: I385354688b1d8f8df4d44e7e177e23bdb6ed3df4
2022-04-01 11:01:52 -04:00
James D. Smith
6e3937e836 lastfm Scrobbler: Substitute album artist for empty artist.
Change-Id: I66dda13ec2cbb592ebe0d269f0c7eff749bc737a
2022-04-01 06:11:42 -04:00
Aidan MacDonald
412dbaeffe hosted: call 'sync' before poweroff
Might be needed to avoid filesystem corruption with buggy OF kernels.

Change-Id: I589eec6c1536beccf849716f11204b4b83a942a1
2022-03-31 21:40:04 -04:00
Solomon Peachy
a9e02b4850 FS13338: Updated Slovak translation (Matej Golian)
Change-Id: I41f794a457435f0d02da180673e272438e3879b2
2022-03-31 21:33:53 -04:00
Solomon Peachy
f08d083ed0 FS13441: Updated Italian translation (Alessio Lenzi)
Change-Id: I442d79842ca1d58d122058171175a6fee844a353
2022-03-31 21:32:42 -04:00
Solomon Peachy
cbb5efd525 FS13340: Updated Polish Translation (Adam Rak)
Change-Id: I5b10231277c6c546400b3d74e3c0339f6026b729
2022-03-31 21:31:33 -04:00
William Wilgus
43830d0128 alarm_menu share setter with settime
share the time picker with the alarm

block the date portion, seconds are ignored

Change-Id: Idc6974466772c33248ff532c8f3c62c744ee06d9
2022-03-30 09:05:28 -04:00
Dominik Riebeling
4c1fe3a899 rbutil: Bump to 1.5.0.
Change-Id: I074da5a2ce33b65d554a7de22a993e536e93f48d
2022-03-27 20:46:54 +02:00
Aidan MacDonald
7243f6b343 x1000: Add multiboot support
Enables multiboot for the FiiO M3K, Shanling Q1, and Eros Q native port.
Note this requires an up-to-date Rockbox _and_ bootloader.

Usage instructions will (eventually) be found on the wiki:
https://www.rockbox.org/wiki/MultibootBootloader

Change-Id: Ia2da1ad6ef611e499d2fbafa93838387bc1023ba
2022-03-27 10:35:02 -04:00
Aidan MacDonald
bcbb5a8b00 multiboot: Allow searching in volume 0 for redirect file
Searching in volume 0 is necessary for multiboot targets with only
one drive, like the M3K/Q1/ErosQ. Without this the search code will
never look at the redirect file on these targets.

The search bound is configured with a setting MULTIBOOT_MIN_VOLUME,
which defaults to 0, but is defined to 1 for Sansa players so they
keep their old behavior.

Change-Id: I6dc5cf98db4258731de2c68c3ab1182b4a4a655b
2022-03-27 09:50:33 -04:00
Christian Soffke
df3afcfa3b PictureFlow: Configurable album sorting
Now offers sorting by:

- Album artist, then album name
- Album artist, then album year
- Album year
- Album name

Years are determined by the most recently
released track appearing on an album, if the
value differs between tracks.

On the M3K,  instead of by going into Settings,
volume buttons can also be used for quickly
adjusting the current sorting

Change-Id: I2c50059617114fb418336c466fdd37415473ac7d
2022-03-27 08:51:58 -04:00
Christian Soffke
aec8b36348 PictureFlow: Prevent queue overflow & simplify locking
Change-Id: I41f620a4fdaf155913a944e7caf4c015990a53d4
2022-03-27 08:51:58 -04:00
Christian Soffke
ae121de149 PictureFlow: Write bitmaps in one go
Analogous to an earlier change w.r.t. reading bitmaps

Change-Id: I68e71160b51eb893f18071cc77d9c9a3ef84de0f
2022-03-27 08:51:58 -04:00
Dominik Riebeling
a490ff896f rbutil: Update german translation.
Change-Id: I5c5cd8a0496dced977c4ed1e7189d43c1b0314f1
2022-03-27 12:57:48 +02:00
Dominik Riebeling
493dce212d rbutil: Fix langstat script.
Change-Id: I323b0e8dbf87f1d53881f5b89f26c5906796fde4
2022-03-27 12:56:34 +02:00
Dominik Riebeling
aaf0f1c371 rbutil: Fix Qt6 Windows build.
It seems Qt6 doesn't require explicit linking to QSvgIconPlugin anymore,
and cmake has trouble finding it. On native Windows builds it isn't
required, so remove it.

Change-Id: I87651f51ab212511947ab9fca3297b0dff276577
2022-03-26 20:29:14 +01:00
Dominik Riebeling
6bc19c98ca rbutil: Fix implicit type conversion on Windows.
Change-Id: I30c5edd5ce0344c47c0f9514eda830a2be8992c4
2022-03-26 20:29:14 +01:00
William Wilgus
593d9f623d lastfm_scrobbler fix yellow for targets w/o storage callback
Change-Id: I0a3dbcf8c8c0c72efa2506d1998fd24d228ed91d
2022-03-26 11:12:19 -04:00
William Wilgus
053c1596d8 Last FM scrobbler remove manual entry
Change-Id: Ib49ceac9858c28813c596a38dd5376928330598f
2022-03-26 09:58:02 -04:00
William Wilgus
f105ad7b23 lastfm_scrobbler fix red for devices w/o storage callback
Change-Id: I2062534b6e2a82171b856cc76efe8b78dbf9b13c
2022-03-26 03:20:49 -04:00
William Wilgus
fd15ea25d3 LastFm remove scrobbler from core make a TSR plugin WIP
remove scrobbler from core make it a plugin

Change-Id: I606810eba7d570dfb332789aed913c6f8adc7fb7
2022-03-26 02:50:11 -04:00
William Wilgus
8eb4689ab1 add way to lock portion of plugin buffer for TSR plugins
Some things in core that should probably be plugins steal the plugin buffer
for their own use, TSR plugins have no way to detect or prevent this
lock buffer reserves buffer_size bytes directly after the plugin itself
returns the unreserved bytes still available from the plugin buffer

Change-Id: I5a7849e209129b09400036a594569ef396b1b85f
2022-03-25 18:16:11 -04:00
Aidan MacDonald
5d0f697e87 x1000: remove the last vestiges of boot option support
There should be no need for any compatibility hacks since this
value was mostly used internally between the SPL and bootloader.
clk_init() was the only user in the main Rockbox binary which
accessed it, but when loaded by the Rockbox bootloader that code
will not be reached since BOOT_FLAG_CLK_INIT is already set.

Change-Id: Idd68b9834172e652b47432bfb1e00c923ea35407
2022-03-25 21:36:51 +00:00
Aidan MacDonald
3ae4a98e3b x1000: spl: remove selectable boot option support
Now the SPL boots the Rockbox bootloader unconditionally, which
allows for some simplification.

Change-Id: Id75c82db25a87e0e9043bb0771f622b1fc9482fb
2022-03-25 21:36:51 +00:00
Aidan MacDonald
2810c549a6 x1000: spl: remove dual boot support code
Removes the SPL's dual boot support code, and removes the dual
boot selection code on the M3K and Q1 since they can now do it
from the main bootloader.

Change-Id: Ie1b27e98c6ed4b3e37db86cfb485d6f3a6c5b25e
2022-03-25 21:36:51 +00:00
Aidan MacDonald
7cb49cfb33 x1000: spl: split off NAND storage to separate file
Just tidying. No functional changes.

Change-Id: I8aa85c789d1a6bd357797c6c95e38a7325eba809
2022-03-25 21:36:51 +00:00
Aidan MacDonald
bd8cd58568 x1000: bootloader: Add button handlers for OF boot
The SPL soon won't be paying attention to buttons, so the bootloader
should check them.

Change-Id: I2048ca9fd19193f329bebecfefd986760c33fd68
2022-03-25 21:36:51 +00:00
Aidan MacDonald
cda8bd5437 x1000: bootloader: set touchscreen to button mode
The touchscreen "buttons" are used for screenshots on the Q1.

Change-Id: I6bff00976c614d203986e810e51f859e78e372ab
2022-03-25 21:36:51 +00:00
Aidan MacDonald
6bc69c797c x1000: bootloader: accept button input during splash
This allows screenshots to be taken while a splash is displayed.

Change-Id: Id494189283db1b6877416f5a1ef1a13c8b654507
2022-03-25 21:36:51 +00:00
Dana Conrad
3d88f455cf Fix double define of BL_SCREENSHOT_NAME on fiiom3k
Change-Id: Iaee40887de19ac2d78ec9bdea08cee678b7e50ef
2022-03-25 21:36:51 +00:00
Aidan MacDonald
5160c90690 x1000: bootloader: add screenshot function
Screenshots of the recovery menu will be useful for documentation.

This can be disabled by turning off HAVE_BOOTLOADER_SCREENDUMP in
the target config file if the bootloader should ever run up against
max size limits.

Change-Id: I62ec1e465df2ca7a8a0e78625d88b31f6c4ef078
2022-03-25 21:36:51 +00:00
Aidan MacDonald
4cf36dfbf3 x1000: bootloader: skip bad blocks when loading flashed kernels
Bad blocks in a kernel flash partition seem to be handled by skipping
ahead to the next block; this is a common bad block management scheme
for simple software like bootloaders (and is the default method for
reading NAND partitions in u-boot).

Extend the uImage flash reader to skip bad blocks while reading.

Change-Id: I815875e83a2418e2642f736e04a3437c31b354ba
2022-03-25 17:31:39 -04:00
Aidan MacDonald
5b011c8dca x1000: add bad block marker position to nand_chip info
Change-Id: I6f466d87f6f11bc3e23463c469f318ecb7049ba7
2022-03-24 23:40:07 +00:00
Aidan MacDonald
9bbe08f3ec x1000: bootloader: add whole-chip flash dump option
I don't expect this will be all that useful, but why not...

Change-Id: Ieb486bb719c5cc61e0f3e95f9fb603a1c30c6528
2022-03-24 23:40:07 +00:00
Aidan MacDonald
c3562b6df6 x1000: bootloader: add debug tools menu
Add a debug menu to invoke two new actions, dumping the OF kernel
and recovery images from flash to the SD card.

Change-Id: I3ca943fac22e725a2d56b84d62f4a04821042fed
2022-03-24 23:40:07 +00:00
Aidan MacDonald
0d21d80ca8 x1000: bootloader: add basic flash dump utility
Change-Id: Id4ce0f00a78ef27399bdef6a7b32c23f89b9cb05
2022-03-24 23:40:07 +00:00
Aidan MacDonald
ee68d9df8e x1000: bootloader: display uimage load error code
Change-Id: I08361aa85406303c10bb487636a6a61a93d2b127
2022-03-24 23:40:07 +00:00
Aidan MacDonald
fbe9e4ac10 x1000: bootloader: refactor splash/splash2
Allow the use of printf formatting and multiple lines of text
using newlines in the string.

Change-Id: I65919bf29c16c34c38cf3995e02d2ddbbaa4bdf3
2022-03-24 23:40:07 +00:00
Aidan MacDonald
41a8b874d2 linuxboot: add meaningful error codes
Change-Id: Ied964e99c389902bb1786c414c5d0fa20056040d
2022-03-24 23:40:07 +00:00
Aidan MacDonald
f7a341555d fiiom3k: trim OF kernel arguments to fix boot hangs
The M3K's kernel has an incredibly stupid function that mangles the
kernel args and copies them to a 100-byte buffer without any kind of
bounds checking. So, if the kernel arguments are more than 99 chars
the stack may be corrupted, sometimes crashing the kernel.

Fortunately, most of the arguments the OF uses are useless, and the
truly necessary arguments fit within the absurd 99-char limit.

Change-Id: I01ef4513298f79d3c08538239802c21e88509631
2022-03-24 23:40:07 +00:00
Aidan MacDonald
6a6c6083fa x1000: bootloader: fix Linux self-extracting kernel boot
Basically, there's longstanding bug in Linux with self-extracting
kernels on MIPS which just happened to manifest now on the M3K as
a hang on boot. The fix is applied to the M3K and Q1 since they
both use this type of kernel image.

Change-Id: I17d2bad6eebd677cd6d2e0bf146450c71fcf1229
2022-03-24 23:40:07 +00:00
Aidan MacDonald
44fbb1a593 x1000: bootloader: add LCD dualboot cleanup for the M3K
Disable LCD interrupts before booting the OF - the OF kernel
hangs at boot if they are enabled.

Change-Id: I4f119818d0243953cdd620e17d9509b4fb16cc28
2022-03-24 23:40:07 +00:00
Aidan MacDonald
90cb0b0ae5 x1000: bootloader: add mainline Linux boot option
This adds a *very basic* Linux loader to the Rockbox bootloader,
which allows running a mainline Linux kernel using the following
file layout on the SD card:

- /uImage
- /linux_cmdline.txt

The command line arguments are listed in linux_cmdline.txt, all
lines are concatenated together and whitespace is converted into
spaces. Comments aren't supported however.

The loader doesn't support the modern devicetree boot protocol,
so it can only pass command line arguments. It would be easy to
support an appended dtb though.

Change-Id: I373f465dbbdafe94738f619748cbb0278fc2c25f
2022-03-24 23:40:07 +00:00
Aidan MacDonald
53a92f0ecc x1000: bootloader: add original firmware boot capability
Adds the ability to boot the OF's player or recovery kernels
from the bootloader. Works on Shanling Q1 but broken on the
FiiO M3K (kernel hang) so leave it disabled for the M3K.

Change-Id: I26b973fba1c22afb906a78865963a96dd2107932
2022-03-24 23:40:07 +00:00
Aidan MacDonald
9bde653410 firmware: allow screendump in bootloader
Enabled if target defines HAVE_BOOTLOADER_SCREENDUMP

Change-Id: Idc135ef81e55d0f3eb8e7d2763d455c6455cf8fd
2022-03-24 18:59:50 -04:00
Aidan MacDonald
e956f7dc83 firmware: minor screendump related cleanups
- Remove unused redefinitions of screen_dump() from bootloaders
- Use empty do-while when screendump is compiled out

Change-Id: I3ccdb0390ddaa28d8f561ff744d0db6aaef17f5d
2022-03-24 18:59:50 -04:00
Dominik Riebeling
238cd13469 rbutil: Fix build info list handling with Qt6.
With Qt6 we need to check the type differently or we'd convert a
stringlist to a string.

Change-Id: I00a7a73535503b97f40edb51099a332902e881e0
2022-03-23 20:11:31 +01:00
Dominik Riebeling
f3b19de594 rbutil: Disable TTS test on Qt6.
Qt6 has QMultimedia, but QSound has been removed. It's only use for
playing a TTS test sample. Disable that for now.

Change-Id: Id3b5c834f9579a43e390c0c00a4c1a35b59182bd
2022-03-23 19:34:30 +01:00
Dominik Riebeling
00ec195c26 rbutil: Qt6 fixes.
Change-Id: Ied6bdf1c5269b53ccfedc1d80f3f3f0d6b4011da
2022-03-23 19:34:30 +01:00
Dominik Riebeling
948637c42c rbutil: Fix TalkGenerator string correction.
- Fix regexp case insensitive option being inverted.
- Pass more objects by reference.
- Some const-ness.

Change-Id: I1c77ad22ab1e505c8dce8c083d9c52e76a6860be
2022-03-23 19:34:30 +01:00
Dominik Riebeling
215ba4abf7 rbutil: Remove unnecessary Q_OBJECT.
PlayerBuildInfo uses no signals/slots, so we don't need Q_OBJECT.

Change-Id: If4e264b733d912ecda3659ea0e1abb9d2b56950e
2022-03-23 19:34:30 +01:00
Dominik Riebeling
1aea2d5b7e rbutil: Test for talkgenerator string correction.
Change-Id: I4c21dbbdae492938061883f1694f9c0f7b6b0fd9
2022-03-23 19:34:30 +01:00
William Wilgus
822b16b1c6 debug_menu dbg_buffering_thread show more on tiny screens
I think the clipzip has the smallest screen at 96
might need to be enabled for LCD_WIDTH <=128 too

remove scrolling thread info for larger screens

Change-Id: Ic98c9fc0b53f79e90776c13429194f9c37c1d48b
2022-03-22 17:55:23 -04:00
William Wilgus
7910f4a7aa debug_menu cleanup/optimize some common format strings
Change-Id: I84b070f8ea264ea64bddd82f9849ec20c72a4863
2022-03-22 16:16:11 -04:00
William Wilgus
61bc7b91bc tagcache.c remove 16-bit compression for add_uniqbuf
apparently there are tags such as year or genre that are indexed 1 byte
apart, as much as I like the idea of this I cannot come up with a way
to reliably denote 2 16 bit entries from a single 32 bit entry without
losing data or adding bookkeeping which would likely make it pointless

Change-Id: I8a9908575700cab9506c36f5422222145557fa6b
2022-03-22 00:22:42 -04:00
William Wilgus
cfeeb7889d Lcd save function pointer to frame buffer get_address_fn before loops
Calling multiple levels of indirection in a loop slows things down

Really these need to be rewritten to take a start and end address
like most of the rest of the codebase

But this is safer without having test hardware in hand

Change-Id: Idae7b92ee779d020ed7fcc9334e2d5a9c710e64d
2022-03-21 23:53:48 -04:00
William Wilgus
60e5786b48 lcd-bitmap-common optimize a few viewport functions
Change-Id: I71cd61f66e875280d07f17a9e828fbecc305bad2
2022-03-21 10:00:04 -04:00
William Wilgus
64c577a0c5 filetree.c cleanup
just a little cleanup of ft file filtering code

store result of filter mask to a local var

put skin apply code in its own function

Change-Id: Ib899608f64e36346b9bde07caa5d5ac29de05af9
2022-03-21 08:14:30 -04:00
Dominik Riebeling
c7c9a0f069 rbutil: Minor code cleanup.
Change-Id: Ia1b05747e64b2122cfe17ee0c2f7bf5477f3ba09
2022-03-20 20:14:21 +01:00
Dominik Riebeling
04e22d8719 rbutil: Replace use of QRegExp with QRegularExpression.
Change-Id: Ie89057a9857bc66612cb15fef81d3ca6c3e71b4c
2022-03-20 20:12:20 +01:00
William Wilgus
01d2979bce [COV] metadata module, fix uninit warnings #2
decrease size hit of initializing asf by using a union
remove init from bytes LE conversion in metadata common
-- bad idea for performance

Change-Id: I4514adc125e5da2b99d9f913ba74afd5f1345822
2022-03-20 09:56:44 -04:00
William Wilgus
2a88ec50cd [COV] metadata module, fix uninit warnings
Change-Id: Ifeb22642d7fb683542ff9dcfca0bc58c91ab5f38
2022-03-20 09:10:57 -04:00
Dominik Riebeling
ccdd9e6784 rbutil: Fix TTS "waiting for engine" appearing randomly.
QProgressDialog shows / hides itself automatically based on the progress
value set, so calling hide() directly doesn't prevent the dialog from
showing itself.

Change the logic to set a value instead. Fixes the progress dialog
sometimes appearing in situations where it wasn't used at all.

Change-Id: Ifef063f31b7f888bb74f180dea0679e81cc5c8fe
2022-03-20 10:00:25 +01:00
Dominik Riebeling
c21d10cb33 rbutil: Rework Festival TTS integration.
When communicating with Festival via socket don't assume readAll() would
read all data we expect. We can only read the data that has been sent by
the server so far, and this is not necessarily complete.

This notably improves the configuration dialog response and reliably.

Change-Id: I9a812f03df785fb3ad32783a8573a2c86dc317ed
2022-03-20 09:59:17 +01:00
Dominik Riebeling
e21f80f397 rbutil: Remove use of deprecated QSignalMapper.
With Qt5 we can now use lambdas instead.

Change-Id: I00fe9c355d72ef9987c61c7a36a810d6eca311bc
2022-03-19 22:04:09 +01:00
Dominik Riebeling
fcffe5fb81 rbutil: Change all download links to https.
Change-Id: I682c8e7cf4eb5d525aa64a4bbf864aa9eb7e73dc
2022-03-19 16:58:19 +01:00
Dominik Riebeling
7a2fdf3fd6 rbutil: Handle SSL certificate errors on first request.
Qt uses the systems certificate store. On old(er) systems the root
certificate might not be present, so checking the certificate from the
rockbox.org server might fail.

On startup we try to download the build-info file. If this fails with a
certificate error allow the user to temporarily accept the rockbox.org
certificate for all successive requests.

Change-Id: I459e12d53286aaedea4db659d90a5e057c56801f
2022-03-19 16:57:41 +01:00
Dominik Riebeling
a0459de4d5 rbutil: HttpGet: Return NetworkError in done signal.
Return the status value instead of simply a bool.

Change-Id: I2bffaac0087418656e80c74dc352011a4ea32ab1
2022-03-19 09:19:11 +01:00
William Wilgus
08b42791ff tag_cache.c optimize str_begins_ends_oneof
the function is shared

Change-Id: I362a75ea5a39690647df4f421d9429ef2114ef02
2022-03-19 03:30:54 -04:00
William Wilgus
ddbca125a6 tagtree/tagcache add new clause operators begins/ends _oneof
new operators @^, @$
begins_oneof and ends_oneof

albumartist @^ "L|The L"
Led Zeppelin, The look

albumartist @$ "girls|Boys"
spice girls, beasty boys

Change-Id: I26ce3d8155d970a55e003f74e2f9478db76204f1
2022-03-19 02:24:14 -04:00
William Wilgus
0f2d623216 tagcache add logging option for clause matching #2
Change-Id: Ideaa89a6fb227ecc8a4a107dced98f85b6b40a4f
2022-03-19 02:11:57 -04:00
William Wilgus
a56975af6c tagcache add logging option for clause mtching
Change-Id: I5099287398b448d2f44283419395ab8919d6019c
2022-03-19 01:59:07 -04:00
William Wilgus
b65763bc10 [COV] fix uninitialized warning
Change-Id: Ib526aeac51d626d02b073b26efd3020115641caa
2022-03-18 20:19:18 -04:00
William Wilgus
a5e684c894 BUGFIX root_menu.c
Change-Id: Ie6268c63f5ed5197d2da678851b4bfdf7764252c
2022-03-18 19:45:01 -04:00
William Wilgus
b31444261e [COV] cuesheet.c var line could be uninitialized
Change-Id: Id753ecc28f4029e05032be0c0ac6ecd27e9e370f
2022-03-18 18:57:55 -04:00
William Wilgus
99f8457279 cuesheet, fix dumb typo
Change-Id: I17aefb0b507898819f9f6d369d986205c6a59c9d
2022-03-18 17:34:11 -04:00
William Wilgus
a13ae2afd5 [COV] folder_select buffer overrun
Change-Id: I441e1fa13d3832b3b12e3f46f35ef63fb3c1de02
2022-03-18 08:59:32 -04:00
Aidan MacDonald
b309fae2bc touchscreen: fix quickscreen
Looks like I made a mistake testing this originally because there's
no way this would've worked.

Change-Id: I89dc0d831e381eb957cf6e1a801236b5cd829efa
2022-03-16 19:57:28 -04:00
Aidan MacDonald
67f7d399e5 x1000: restore crt0.S cache flush
I-cache must be flushed after copying code to IRAM... duh.

Change-Id: I6eacc4b7c4385175724c947f6c53f7bbddcb6295
2022-03-16 23:21:29 +00:00
Aidan MacDonald
c676736792 x1000: optimize crt0.S, improve correctness
Replace inline section copy/fill loops with subroutines, which
reduces code size a bit and and handle zero size copies properly.

Remove the cache initialization loop as well. There's no actual
reason for this because the SPL initializes the caches and just
dropping the cache can even be harmful (in this case it wasn't,
because the SPL flushes the whole cache right before calling in).

Change-Id: I7cddc9ed6d060b1f1bdd75544297883d014cad2d
2022-03-16 12:02:24 -04:00
Wolfram Sang
0df71c952c rds: make newly added function static
It won't be called outside the RDS core.

Change-Id: I22f9d7984213f32ad1db49368327243ba2aa917b
2022-03-16 11:54:26 -04:00
William Wilgus
b3e0d18f7d skin_engine.c settings_apply_skins cleanup
just some cleanup and removal of ifdefs in favor of dummy functions

Change-Id: I03a1d351344afcc428dedb67aab915184f99bd23
2022-03-15 20:17:11 -04:00
William Wilgus
a5c16d2990 rb_namespace add logf
add logging to the namespace file to allow debug of root redirect

Change-Id: I6032aea880998c05dacf3d0d2e0d222205b9376e
2022-03-15 00:45:00 -04:00
William Wilgus
20b9ce5497 debug_menu make scrolling manual for OS Threads item
the automatic scrolling is not very nice to try and read instead use
OK button to advance and long press std ok to reset to beginning
(or scroll up and down)

Change-Id: I964ccefcd3c16836cc92f52247d7b8e65c6d627b
2022-03-14 20:53:45 -04:00
William Wilgus
542609bb31 metadata.c fix red
comma, helpful

Change-Id: Iaa352cf1b542f1b805278af8560a6927684dc8d2
2022-03-14 17:38:55 -04:00
William Wilgus
9b4e784560 BUGFIX string_option parsers
fix bugs introduced in the switch over to using string_option
instead of if else strcmp trees,
embedded album art should work again
skin parser had an error for 'noborder' and 'nobar'

Change-Id: I957d81e5fa8467b33bbd93d63c4428c36100acca
2022-03-14 17:23:18 -04:00
William Wilgus
6dcbf7ff77 debug_menu scroll os stack screen
the os threads items update too quick to see them scroll

implement a simple scroller

Change-Id: I1161dec1b528c9b96b31eacd85c1ec2420cac61d
2022-03-14 02:42:02 -04:00
William Wilgus
6fdc160fab dircache_redirect.h, hide root volume when only one mounted
there is no need to show the root of the drive when only the
internal is mounted

Change-Id: I310c48befa51742d05b6d5ce501d0b7c2c7c7ab7
2022-03-13 17:40:17 -04:00
William Wilgus
6d122e3932 cuesheet, cleanup tag code with strncmp
Change-Id: I97076266103d20e59537e4e0959a70cc12b207f6
2022-03-13 17:11:50 -04:00
William Wilgus
2352cef6d0 replace more strcmp if then trees with string_option()
1

Change-Id: Ic89bbb2ab41068d09c7bd9caa5ba7f38749b9084
2022-03-13 14:31:02 -04:00
William Wilgus
a62d36d9e7 Warble builds define WARBLE fix metadata_common in warble builds
Change-Id: Ie5115162da5a06d917de09f75b90254bb30b7513
2022-03-13 11:41:30 -04:00
Dominik Riebeling
430999e399 utils: Work around windeployqt bug.
For Qt versions less than 5.14 MinGW windeployqt requires passing
--release or --debug to pick the correct libs to deploy. For newer
version this must not be passed, or otherwise windeployqt errors out.

Use a conditional expression to only add the parameter for older Qt
versions.

Change-Id: I7afe2b77e9829e989adaeeb7c7499d5955926da2
2022-03-13 16:20:10 +01:00
William Wilgus
77e4dd81f5 option_string clean-up and consolidate with metadata_common
Change-Id: I2649f6af37bd871fb8f181ae2f716ff0bcf1f65c
2022-03-13 10:55:47 -04:00
William Wilgus
eb86ee296a skin_parser.c fix red stupid typo
Change-Id: If4830afc84b32e79ec5aef7add8574485c11af3c
2022-03-13 04:51:16 -04:00
William Wilgus
3f2ad8bf2b skin_parser.c fix red
Change-Id: If093ad790f63d39855bf3253ae7a6c11afcc1a96
2022-03-13 04:22:05 -04:00
William Wilgus
74df3ba2d8 add function string_option to misc.c use in skin_parser.c
function string_option allows a string to be found in a
supplied list of options

Change-Id: If9134090406b74ab11f4ef9ed6517a4b99b9d73e
2022-03-13 03:45:00 -04:00
William Wilgus
a9c62f2c39 metadata_common.c optimize parse_tag
Change-Id: I84ad404fdcc9698b9d08e6e9c37929f4b7bf569f
2022-03-13 01:40:42 -05:00
Dominik Riebeling
22a6ae97a6 utils: Fix windeployqt step once more.
The path was actually correct before, the filename wasn't.

Change-Id: Ia7f1e5c171fbca22733bdbbcfd8844ade597f650
2022-03-12 23:32:19 +01:00
Dominik Riebeling
96f5b07d39 utils: Fix windeployqt call in cmake deploy step.
Change-Id: I295704796cf4dab32010844369b3a5492bf20e2a
2022-03-12 23:08:47 +01:00
Dominik Riebeling
403cb96f3a rbutil: Fix installing fonts / manual for development builds.
For development builds we provide a download URL, but use the daily
build files. Those require the version of the daily build to be set when
expanding the URL string.

Change-Id: Ie6dcf38f7e86527217edc01ee11a20758a178622
2022-03-12 22:46:07 +01:00
Dominik Riebeling
ce70e34476 rbutil: Fix ipodpatcher bootloader uninstall.
Fix mountpoint not passed and sectorbuf not initialized properly.

Change-Id: Ifa9d9e159767b20a51841ee422be59feca95c757
2022-03-12 22:46:07 +01:00
Dominik Riebeling
5c7b0e071f rbutil: Fix crash on sansapatcher access.
We now initialize sectorbuf explicitly, and there are situation where it
wasn't initialized explicitly.

Change-Id: I35516a1fa7326c0861885ffa058737de19285c2c
2022-03-12 22:46:07 +01:00
Dominik Riebeling
1ff11b627b rbutil: Fix bootloader uninstall availability.
The logic for disabling the uninstall button was wrong.

Change-Id: Icec4b70a7323bb6ae275e7b88fff414450ba4566
2022-03-12 22:46:07 +01:00
Aidan MacDonald
0ce287503c x1000: bootloader: use list widget for the recovery menu
This allows the menu to scroll when there isn't enough vertical
space to display the whole menu.

Change-Id: I6dc3e84cde0c1b003e579f107ae7f13e0ea33a5a
2022-03-12 14:50:45 -05:00
Aidan MacDonald
4b51ca5ce6 x1000: bootloader: add GUI list widget
Change-Id: Ic5bf4747ed99b713b7c035153865ed9bdebd89b0
2022-03-12 14:50:45 -05:00
Aidan MacDonald
8b4949381c x1000: add TCSM section to linker script
This is intended for debugging OF kernel boot problems and has
to be enabled manually at compile time to make it usable.

Change-Id: Ie5ce9f0a7639be0acf5e3879cfc3a7b8b89caa5c
2022-03-12 14:50:45 -05:00
Dominik Riebeling
0de2d3a0b6 utils: rework cmake deploy function.
Use named arguments for function and allow passing additional executable
targets to be copied to the deploy tree.

Update current uses and add ipodpatcher and sansapatcher to Rockbox
Utility deployment.

This is in preparation for moving ipodpatcher / sansapatcher
functionality out of Rockbox Utility so we eventually can avoid
elevation / sudo of the whole installer. Currently this only results in
Rockbox Utility releases shipping ipodpatcher / sansapatcher
executables.

Change-Id: Ibb6601b7e437648135059c580e2ce2532574835a
2022-03-12 20:40:08 +01:00
Dominik Riebeling
7319356dfd rbutil: Update build instructions.
Change-Id: Iaf08b0c84997d77b034dc23f40021c2dd52fc454
2022-03-12 20:40:08 +01:00
Dominik Riebeling
748b00a7fc ipodpatcher: Split executable only parts out.
Allow building both as library and executable at the same time.

Change-Id: Idc40354fdedaeace727043936352fc17232bf16e
2022-03-12 20:40:08 +01:00
Dominik Riebeling
08afedf1f5 sansapatcher: Add cmake target to build executable.
Change-Id: Idff5674acb5347643c8a26ef64506f892445977e
2022-03-12 20:40:08 +01:00
Aidan MacDonald
d56964cc2b x1000: add dual boot helpers for the main bootloader
Two helpers (_init_clocktree and _init_uart2) already existed in
the SPL and are copied verbatim from there. The SPL versions are
still present and will be removed when dual boot works from the
main bootloader.

The other two helpers (_cleanup and _load_pdma_fw) are new.

Change-Id: I4661667966e26f52e6c5142f1947d2a34b7008ef
2022-03-12 18:25:10 +00:00
Aidan MacDonald
a87f93d8ff x1000: add function for booting linux kernels
Change-Id: I0750b084fe88d21a8686daf0681b32b1dcba8fec
2022-03-12 18:25:10 +00:00
Aidan MacDonald
e6c2f26e82 x1000: bootloader: add uImage loaders
Adds loaders for uImages on the SD card or on a raw flash partition.
These work similarily to load_rockbox() and return a buflib alloc
and size. Booting the image is left up to the caller.

Change-Id: I0d58e8c6a61d8349bc5223431cdd06dfdf2503fa
2022-03-12 18:25:10 +00:00
Aidan MacDonald
b87f2ed851 x1000: bootloader: refactor rockbox boot
Separate loading out into its own routine with a file name
parameter in preparation for multiboot support.

Change-Id: Ic651e9fa7738ea97789e4a9669834c4e3ef22d66
2022-03-12 18:25:10 +00:00
Aidan MacDonald
ed897d1359 x1000: bootloader: move the main function to its own file
Now that everything has been refactored into separate files the
main routine is the only thing left to move. Put it in main.c.

Change-Id: I53aba87ed281b52944fb80d9a62beaec1c87f152
2022-03-12 18:25:10 +00:00
Aidan MacDonald
5bdb2fccdb x1000: bootloader: refactor usb handling
Drop init_usb(), instead initialize USB early in the main function
so the hardware is placed into a known good state after a USB boot.
The impact on boot time should be minimal.

Change-Id: I9774ddfc2c27811363bdb0c54cb0e57b5ca59d73
2022-03-12 18:25:10 +00:00
Aidan MacDonald
7554a49309 x1000: bootloader: refactor init_disk
Add check_disk() to query the disk insertion status and prompt the
user if necessary. Use this in place of init_disk().

Perform an unconditional disk_mount_all() from the main function.

Change-Id: I9a8cc42266edf99cd15ece3aee8fa25835df04ae
2022-03-12 18:25:10 +00:00
Aidan MacDonald
905591215f x1000: bootloader: split off recovery menu code
Change-Id: I6c6a25dc248b5dcbca796781f761bef05337431c
2022-03-12 18:25:10 +00:00
Aidan MacDonald
e2fcbd04ea x1000: bootloader: split off rockbox boot code
Change-Id: Ie3a097b24ee96551f6c3d08938dcb83f59ba1073
2022-03-12 18:25:10 +00:00
Aidan MacDonald
22cf852db1 x1000: bootloader: split off installer code
Change-Id: I75918301214cd415392f8c95e8a07205cfa21659
2022-03-12 18:25:10 +00:00
Aidan MacDonald
6fb1b8b342 x1000: bootloader: split off GUI code
Change-Id: If716cfd117c48da2cff221b8854630022bb0fe48
2022-03-12 18:25:10 +00:00
Aidan MacDonald
8558255f45 x1000: bootloader: split off definitions to a header
Change-Id: Ic3e8bc8f61974dbfc30e833abd9a0f0b850e0a43
2022-03-12 18:25:10 +00:00
Aidan MacDonald
58225bd2c8 x1000: remove plugin and codec buffers on bootloader
On the bootloader there's no point reserving memory for these,
the only users of codecbuf/pluginbuf are in the apps/ tree.

Change-Id: Ib57b4d59aff8f4dcc753d7993956ed15e61cdc52
2022-03-12 18:25:10 +00:00
Aidan MacDonald
38eafb60ff x1000: use core_alloc in bootloader for loading rockbox
Using the audio buffer directly is a bad idea because this will
render core_alloc non-functional if load_firmware() writes into
the buffer but then fails, for example on a checksum mismatch.

Change-Id: Ib2d17bcea53bdea1c4c5496cec0c4eee5dd66069
2022-03-12 18:25:10 +00:00
William Wilgus
376ffbcf9a ARM support, optimize popcount fn
Change-Id: Iec02d0b5973721a3943b9c23ced3afc721cd3753
2022-03-12 00:00:01 -05:00
William Wilgus
eecf840989 playlist.c fix red for non-DIRCACHE targets
Change-Id: Id02f67dee6f40a80c832dea785f56f32885a5528
2022-03-11 22:52:02 -05:00
William Wilgus
a59b3c5d11 playlist_resume, wait for dircache to complete before loading songs
with root redirect and even relative paths eventually we need the dircache
to get files from the disk

Change-Id: Ia443f473f09dd534674d5fdb71251214ce01eed7
2022-03-11 22:30:39 -05:00
William Wilgus
97ec0a7e73 Root redirect un-hide root volume
this appears to be problematic for now

Change-Id: Ieb789f5ec10a0d25c559e9bfc2497cbc4f59c0ad
2022-03-11 20:11:31 -05:00
William Wilgus
95af36d0dd playlist.c fix red for non multivolume targets
Change-Id: Ic0fdb325bc9c8d886c7627679fb2d02521400da7
2022-03-11 20:05:14 -05:00
William Wilgus
eb32238b22 playlist.c use basename for playlist_get_filename_crc32
strip the vol and use the relative portion

Change-Id: I6259343e63a84f0ab97bd6f491de09320d74eac4
2022-03-11 19:45:58 -05:00
William Wilgus
359c66982f playback.c use file_exists rather than open to check for bad files
the worst case is really slow for open

Change-Id: Ifcfe366ad9bee7ff43a0572e52f15b5c6f608288
2022-03-11 19:45:58 -05:00
Aidan MacDonald
603412f447 x1000: Clarify definition & usage of RAM areas
Document what the symbols are supposed to mean, fixup SPL's
usage of DRAM_END which should really be SDRAM_END instead.
No functional changes.

Change-Id: Ie85b0ee35fea8b7858891e5b9d6634eaae42c9f8
2022-03-11 11:15:56 -05:00
Aidan MacDonald
cdee5284d4 jztool: support new binary header on x1000
Change-Id: If0d3fb3d5b03cf6ed87cbbb8a968ef48edb660f7
2022-03-11 11:15:56 -05:00
Aidan MacDonald
35242c8d98 x1000: support new binary header in bootloader
Change-Id: I89754215139ec027bb122759f5b54400f544d3c1
2022-03-11 11:15:56 -05:00
Aidan MacDonald
428491df69 x1000: support new binary header in rolo
Change-Id: I192c3d69616c39534ff329174c4d8d4a357d014d
2022-03-11 11:15:56 -05:00
Aidan MacDonald
7fa48faeb5 multiboot: Refactor duplicated functions to a separate file
The implementation of write_bootdata() and get_redirect_dir() was
copied verbatim in two different places, obviously a bad thing for
maintainability. This moves them to a new file multiboot.c as they
are only used for multiboot.

Change-Id: Id0279216e4dd019f8bf612a81d3835eff010e506
2022-03-11 10:58:20 -05:00
Aidan MacDonald
439b4e8bca multiboot: Remove bad multiboot code from hosted RoLo
This looks like it was copy-pasted blindly from elsewhere and it
wouldn't even compile, since hosted RoLo is completely different
from native RoLo.

Change-Id: I4074f5323dcbdae85db8a04f222c858e9a228432
2022-03-11 10:58:20 -05:00
Aidan MacDonald
eae9f6f5b7 erosqnative: Fix missing END marker in LCD enable sequence
Change-Id: I75b3a396174e84d72e70c6f177bc1702021805f1
2022-03-11 10:42:18 -05:00
William Wilgus
355553baf4 playlist_resume, fix control fd, add some error info
I ocassionally see Playlist Invalid messages but which part is failing?
eventually it works so its probably a race

Change-Id: Ib2b09ab13ce09a55130430a2e94bc0498443b6ec
2022-03-11 09:40:31 -05:00
William Wilgus
f6a2bf28e1 BUGFIX file.c open failure leaves open file handle
Change-Id: Iad8eef2f65af0549da4dbec654c85adb2f325711
2022-03-11 03:18:38 -05:00
William Wilgus
68d0175172 BUGFIX arm aeabi_sdivmod crashes in interupt mode
Change-Id: I6e89334b0f5df1d513a3f466e1db9cdc198944fe
2022-03-11 03:05:15 -05:00
Dominik Riebeling
57cffae369 rbutil: Change MacOS bundle identifer to org.rockbox.
Change-Id: I06d0513a25197a942b222a59d04f44275edb7a5a
2022-03-09 19:02:01 +01:00
William Wilgus
01e76548c3 backtrace, put pc and sp on their own lines
Change-Id: Ia5853c4f2d1b86dc1e2cd0882f5da27e4eba5724
2022-03-08 23:37:50 -05:00
William Wilgus
a8b997e4e9 skinparser cleanup, optimize
hash clause strings for =, ==, !=, <, > <=, >=
store result of get_param() where possible

Change-Id: Ia5a4dbf613d6ec9e21546fa0c6a8de28eb7aa347
2022-03-08 16:51:04 -05:00
Dominik Riebeling
b1965b4197 rbutil: Fix setting bootloader "file" for Ipod bootloader.
On Ipods we use the bootloader "filename" to pass the mountpoint, which
is then used to determine the correct device to use.

Change-Id: I1dd2060ae9176bfdece9337160db08caf326e1f5
2022-03-08 22:42:34 +01:00
Dominik Riebeling
3cebc983a2 rbutil: Fix a crash for devices without bootloader file.
Don't try to get a bootloader filename from an empty list. This happens
if the device doesn't have a bootloader file on disk.

Change-Id: Idd4c265e7ae298913c5feefb3963120867a0e858
2022-03-08 22:32:13 +01:00
Dominik Riebeling
911b216aff rbutil: Properly initialize sansa / ipod bootloader buffer.
Fixes a crash on MacOS.

Change-Id: Ibb64a37266182c4ddfee32b2ac47b9d8f25a78e5
2022-03-08 22:32:13 +01:00
Aidan MacDonald
ca12478df6 x1000: add simple binary header to declare the load address
The header format is basic, a variable length list of values
tagged by 4-byte strings. The main application to to allow a
loader to determine the load address of the binary at runtime
instead of using a hardcoded address. But the header contents
aren't fixed and it could be extended for other purposes too.

Change-Id: If51d85b4c2eb53c919a91b54985b157e8e5c20ef
2022-03-06 23:22:49 +00:00
William Wilgus
19d95d7b56 keyremap add plain text import and export
allows users to edit and view keymaps in a text editor
(parser requires one entry per line (LF or CRLF work as line endings)

allow naming of files on save

Change-Id: Id6627171eb96210b2deeef8d15bab3f8d1e0ab3f
2022-03-06 17:00:27 -05:00
William Wilgus
bc3fa53937 Sansa Multiboot Root Redirect Enhance + bug fix
filename buffer was too small to retrieve redirect path

if redirected to sd root remove <SD1> as it is redundant

Change-Id: I1326601f1ba4a18d6bc173798759eb762b55528c
2022-03-06 16:42:26 -05:00
Aidan MacDonald
ee87bfb933 Add support code for dealing with U-Boot uImages
Adds a loader for the legacy uImage format that is commonly used on
embedded Linux systems. It verifies checksums and supports uncompressed
and gzipped images. Supports arbitrary reader functions to allow the
images to be streamed off any storage device, for optimal RAM use.

Change-Id: I93c35f9a6f323999a22a07300e05627fabfcbd2c
2022-03-04 09:02:56 -05:00
Aidan MacDonald
d541a3a191 x1000: fix nand driver reference counting
Somehow I screwed this up as well. Seems it didn't cause trouble.

Change-Id: I5ab99dd9182a4e60d55984fecbf20ca823dbd004
2022-03-04 08:57:35 -05:00
Aidan MacDonald
3cb7167e22 x1000: fix bug in nand_read_bytes
This didn't account for partial page reads properly which resulted
in corrupted data. Fortunately, current released bootloaders do not
perform such reads so they don't trigger this bug.

Change-Id: I426a95ef8d0f20f4567498530e216d80e1aceef2
2022-03-04 08:57:35 -05:00
Aidan MacDonald
3bd5f335f7 inflate: Add helper for getting decompressed data size
Helper for another semi-typical operation: find out how big of a
buffer should be allocated before decompressing. This can be useful
when the stream container doesn't specify the decompressed size.

Change-Id: I5f1536f809bb6f9bc6023120c024c3de7cea4269
2022-03-04 08:44:56 -05:00
Aidan MacDonald
ce4620413b inflate: Add helpers for using in-memory buffers
Using an in-memory buffer for the input or output data for 'inflate'
is likely to be extremely common and there's really only one way to
do it, so predefined helpers should be provided.

Change-Id: Ifd22e7b140a08e0e7dc05aec6b340dff5e2d9d0a
2022-03-04 08:44:56 -05:00
William Wilgus
fe4628fc30 Fix Red Multiboot Firmware Root Redirect
Exclude bootloaders

Change-Id: Id26120df0a047711efe49a43917dfec4c25107cb
2022-03-03 23:20:07 -05:00
William Wilgus
c9857098ac Multiboot Firmware Root Redirect - WIP
Loads external drive into root namespace
Root Redirects can now be put into different folders
For instance placing '/_test' into SD1/rockbox_main.<playername>
will redirect to /<1>/_test/.rockbox
Debug menu>Bootdata now has root directory listed in addition to RAW Bootdata

Redirect root work from Michael Sevakis g#1556, RESTORED -> g#4256

Change-Id: Ia97cf50ff5f5b440877f9c005da6f12c53af931e
2022-03-03 22:08:28 -05:00
William Wilgus
c7bbd5b090 Fix Red SDL, Android mounting root directory, and all the yellow too
Change-Id: Ic5077140fdcb1e3168111336bc428c27a782123c
2022-03-03 20:38:57 -05:00
William Wilgus
0ddac1fdaf Fix Red SDL, Android mounting root directory
Not actually used in either atm

Change-Id: I40e0143fdde1970ac485bf664962c62d4c493d57
2022-03-03 20:08:12 -05:00
William Wilgus
9daacabd65 [RESTORED!] Allow mounting of any directory as the root directory.
Provide definitions for the macros:
* RB_ROOT_VOL_HIDDEN(v) to exclude certain items from the root.
* RB_ROOT_CONTENTS to return a string with the name of the
directory to mount in the root.

Defaults are in export/rbpaths.h

It's a bit much for those that don't need the full functionality.
Some conditional define can cut it back a lot to cut out things only
needed if alternate root mounts are required. I'm just not bothering
yet. The basic concept would be applied to all targets to keep file
code from forking too much.

Change-Id: I3b5a14c530ff4b10d97f67636237d96875eb8969
Author: Michael Sevakis
2022-03-03 18:58:07 -05:00
William Wilgus
f88ea12bac tagcache compress uniqbuf 2 16-bit indices occupy a single 32 bit slot
a lot of space is wasted when file indices less than 65535
entries should be more than 1 byte apart so use the LSB as a flag
when indices are > 65535 set flag to 0 and proceed as before

explicitly mark uniqbuf as 32bit

Change-Id: I54e06c152c369eb6c0322186fe2c1e9a1e6d940d
2022-03-02 20:22:49 -05:00
Dominik Riebeling
ae97d410c5 utils: Set cmake build type to default to Release.
Change-Id: Ie4e6aa326840cb1fbae0fe8d025e592e139d4508
2022-02-28 20:37:32 +01:00
Dominik Riebeling
8d462a1edd rbutil: Rework Logo display.
Replace QLabel with QSvgWidget so the widget draws the svg directly
instead of first creating a pixmap from it.

This also avoids an issue when building with mxe which causes the image
to not show due to a missing svg plugin (which doesn't happen for svg
icons.)

Change-Id: Ic4e265f0567984d1ffe7a3e1cc641df27755e90b
2022-02-28 20:37:32 +01:00
Dominik Riebeling
83e4078d9c cmake: Strip Release binaries when building with gcc.
Change-Id: Iaf87d6b65a38b6d0ecb66c5cb8bc7164741d7419
2022-02-28 20:37:32 +01:00
Dominik Riebeling
72904569e3 Remove outdated theme editor deploy script.
This doesn't work anymore since the switch to cmake.

Change-Id: I3a829cc58412f2e1415c6c9defeb552137757214
2022-02-28 20:37:32 +01:00
Dominik Riebeling
fa1e6cc5bf rbutil: Replace deploy with tarball script.
The old deployment script doesn't work anymore due to the change to
cmake, and since we build the distribution packages (zip / dmg /
AppImage) with cmake directly there's not much need left for the old
deployment.

Change-Id: Ide20887c5bc2e22aabbfb47374d70529609fbc3c
2022-02-28 20:37:23 +01:00
William Wilgus
045f52d475 tagtree.c optmize clause operator parsing
makes WS after a clause conditional optional

Change-Id: I335b5381fb788c19130aa8d57dfb18bb43a07c18
2022-02-28 06:35:11 -05:00
William Wilgus
1bcb1e39ee tagcache, coverity cleanup, Add TAGS_ALL_COUNT
Change-Id: Ia880c921a00b603aa4ba81b0c0670ed00491e41a
2022-02-27 11:01:24 -05:00
William Wilgus
6b360d8b04 action.c keyremap clean-up add logf to core_keymap.c
move the remap out of the loop and eliminate a status flag

Change-Id: I9ab841037a8ea7dff736b452ff55e8242084af82
2022-02-26 00:40:42 -05:00
William Wilgus
887249671c TagTree Show file name for tag_title [UNTAGGED]
fallback to filename as [UNTAGGED] is a terrible way to browse titles

Change-Id: Ifcdc4c27562339b8a916313fb946c88c4eba3b5a
2022-02-25 22:54:47 -05:00
William Wilgus
836616b937 Tagcache Don't create filters when parsing a logical OR
if possible search clauses are converted to filters

once a logical OR is added to the mix (CLAUSE1|CLAUSE2 & CLAUS3))
if CLAUSE1,2 are database non-numeric tags they get made into filters
but the logical OR gets carried to the next CLAUSE

Rather than trying to figure this out just keep all clauses around a logical OR

Change-Id: I03e064e7f897033c5d47d78a1d34238217cde485
2022-02-25 22:04:49 -05:00
William Wilgus
bba0564ec1 keyremap plugin use yes_no prompts, bugfix
use the supplied yes_no dialogs for file delete, key reset, save prompt

return to root menu automatically after loading a file

fix bug where deleting the last file in the list exited the menu

Change-Id: Ib98f6b200b9dee3e4350ad4d7ef80bbb95c77481
2022-02-24 00:26:40 -05:00
William Wilgus
295ec3790d Core Keyremap Allow setting keymap from plugin
Allow setting and removing keyremap on the fly

It was pretty annoying trying to work out a keyremap with a restart
required to set the remap and was quite annoying when I was no
longer able to navigate to the plugin or filebrowser due to setting
the wrong remap

now you can try out a keymap and if it doesn't work a restart will
sort things out

Change-Id: I848fb3bd759f9684ac2497324a371f92b7464f7b
2022-02-23 21:38:27 -05:00
William Wilgus
f7bb9e2167 Add custom action mapping to core
results of an idea I discussed in IRC

changed the way the lookup in the remap file works..

 entries consist of 3 int [action, button, prebtn]
 context look up table is at the beginning
 action_code contains the (context | CONTEXT_REMAPPED)
 button_code contains the index of the first remapped action for the matched context
 [0] CORE_CONTEXT_REMAP(ctx1) offset1=(3), count=(1)
 [1] CORE_CONTEXT_REMAP(ctx2, offset2=(5), count=(1)
 [2] sentinel, 0, 0
 [3] act0, btn, 0
 [4] sentinel 0, 0
 [5] act1, btn, 0
 [6] sentinel, 0, 0

 Note:
 last entry of each group is always the sentinel [CONTEXT_STOPSEARCHING, BUTTON_NONE, BUTTON_NONE]
 contexts must match exactly -- re-mapped contexts run before the built in w/ fall through contexts
 ie. you can't remap std_context and expect it to match std_context actions from the WPS context.

-- Done --

Code for reading core remap entries

-- Done --

import of core remap entires from disk
-- Done --

plugin to set new key mapping (the hard part)

The plugin is started and FULLY functional
you can add actions and contexts
you can change context, action, button, prebtn
delete keymap files
load keymapfiles
save user keymaps
test keymaps before applying them
loading keymaps to core still requires restart
-----------------------------------------------------------------------------------------------

Change-Id: Ib8b88c5ae91af4d540e1829de5db32669cd68203
2022-02-23 08:47:12 -05:00
Solomon Peachy
7952687185 FS#13337: Updated Slovak translation (Matej Golian)
Change-Id: I067c5a8e26b44def88fa60b38aabd1d014555e23
2022-02-22 11:15:02 -05:00
Aidan MacDonald
e8faf2f2ad buflib: add a common dummy callbacks struct & use it
There are various allocations that can't be moved or shrunk.
Provide a global callback struct for this use case instead of
making each caller declare its own dummy struct.

Also fixed ROLO and x1000 installer code which incorrectly
used movable allocations.

Change-Id: I00088396b9826e02e69a4a33477fe1a7816374f1
2022-02-12 10:24:32 -05:00
Wolfram Sang
95dfc489b5 sync clock with RDS time
Tested with my SansaClip+. I don't think this will need extra battery
but let me know if I am wrong.

Change-Id: I287dae134113e0f8a138af68f5087b8ea45b0f4c
2022-02-07 22:04:10 +01:00
Wolfram Sang
5b8873bf33 RFT: convert Gigabeat RDS to thread
This kind of reverts 7b596416bf ("Gigabeat S: Update RDS processing to
use asynchronous I2C rather than thread."). However, requiring RDS to
run in thread context will a) allow more upcoming features and b) remove
quite some complexity from the codebase (see the diffstat here) because
Gigabeat is the only user. iMX31 should be able to handle one more
thread, as it can even run Linux.

Change-Id: I46130034595ba66392c5417c275d036f4bd26943
2022-02-07 22:01:20 +01:00
Christian Soffke
8d453ae9c3 Fix glitches with custom list title viewports
Elements were not being drawn correctly or
title text appeared delayed in several places
when using themes with a custom viewport
for list titles.

E.g.:
- after deleting a shortcut
- when returning from a warning screen in
Playlist Viewer
- returning to some Settings screens
- in "Playing time" screen

Change-Id: I8ab07a31d4b6f290e089ecd7857f43ec195a06e0
2022-02-06 11:20:34 -05:00
Solomon Peachy
04cbb3c7e4 misc: Add 'mpga' as a valid file extension
Some podcasts use this, apparently.

Change-Id: I24f372ed760f15e204dba3a99552ad3b6a051515
2022-02-01 13:23:39 -05:00
Christian Soffke
fb91184c4f PictureFlow: Fix broken (iPod) keymap
I must have only tested de8ee6c9e9 using my
custom iPod keymap. Re-mapping the "Left"
and "Right" buttons in this context badly breaks
existing behavior in Pictureflow when using
Rockbox's default iPod keymap.

Change-Id: I2aff6297d7e229a056383afe6074c41829b38e2d
2022-01-30 16:36:07 -05:00
Solomon Peachy
2ddbb9cad5 Fix manual build on some targets (76a2a00732)
Change-Id: Iaf87d11cd2ce3faf9b98da0a1978dfd3fcdb2ba8
2022-01-30 16:33:58 -05:00
Aidan MacDonald
b25d8457bc Shanling Q1: fix DAC power mode switching
The OST prescaler bugfix (7a5130a277) broke runtime switching
between 1.0V and 2.0V modes. The 1ms delay after shutting down
the DAC isn't long enough to reset it, so it gets stuck in the
power mode assigned at boot. Change the delay back to 4ms, the
effective value prior to the OST bugfix.

Change-Id: Ic4583d1a6fa82540062aa185386f14bbf785a3f4
2022-01-30 17:37:24 +00:00
Wolfram Sang
76a2a00732 si4700: optimize RDS cache update a little
use si4700_read() instead of si4700_read_reg() to make it clear we are
not interested in the register itself but in the cache update. Also, a
tiny bit more efficient as we save a function call and don't request a
return value we don't use anyhow.

Change-Id: Ibbb66fd9e5ea748ba11ac3c2a0570f5219b72637
2022-01-30 12:27:30 -05:00
Wolfram Sang
68887b4730 manual: reenable "Configuring the Theme" for devices without remote LCD
Commit 0c4f89370d ("[2/4]  get rid of HAVE_LCD_CHARCELLS") missed a
closing brace which disabled the above topic in my Sansa Clip+ manual.

Change-Id: Ic7a104757f258a37628645389dbfa1b6c8499415
2022-01-30 12:26:36 -05:00
Solomon Peachy
e91e8439ca FS#13335: Updated Polish translation (Adam Rak)
Change-Id: I6288e6c64d82cc737c5ec1dd3651aa0793894d29
2022-01-30 12:15:51 -05:00
Solomon Peachy
6fd18ef4a5 FS#13334: Updated Italian translation (Alessio Lenzi)
Change-Id: Icfc81db225911d1b034e5c77b3d4cf0baec210c2
2022-01-30 12:15:03 -05:00
Aidan MacDonald
127bb1b6e1 FiiO M3K: remove volume setting on rec. screen
This controls the playback volume, which is not useful for
the M3K because it's impossible to play back and record at
the same time.

Change-Id: I5b0931c22b484f3ff6441d6c88079f18ec70f7f8
2022-01-29 15:13:54 -05:00
Aidan MacDonald
c1f1d91404 FiiO M3K: audio recording
Recording works now, although I'm sure there will be a few
things that need fine-tuning. A major issue is that writing
to the SD card creates noticable interference, which happens
on the original firmware too but seems worse under Rockbox.

(Since Rockbox waits until RAM fills up before writing data,
the interference will only be heard on >50 MiB recordings.)

Change-Id: I5561dd9668c3bdd34e92f34ef50848aef8c0b7eb
2022-01-29 19:28:03 +00:00
Christian Soffke
bc5a638594 Option to switch off album art or to prefer file over embedded
Large embedded album art can cause pauses during
playback or when skipping between tracks, especially
on older devices, but embedded art is currently loaded
even when separately stored smaller image files would be
available.

A workaround is to remove large album art from the
metadata of files.

This now adds a setting to either turn off loading of
album art completely, or to prefer loading the album art
from a separate image file and thus ignore the embedded
versions.

Change-Id: I22fb581abf56072e35e6c29d72e553747ec1a96a
2022-01-22 08:29:40 -05:00
Aidan MacDonald
aafe2dd2d1 tagcache: don't allow temp commit buffer to be moved
The temporary buffer used during database commit did not
have any buflib callbacks set, which allows it to be moved
by buflib at any time. The code is not prepared to deal
with this, so things break horribly if anything tries to
allocate during the commit.

The solution is to pass dummy callbacks to prevent the
buffer from being moved. I expect this may create other
issues since the commit uses up all available RAM, but
at least things won't get silently corrupted anymore.

Change-Id: I3183aaee58c94bfbaf4e24424030b8be6e341d22
2022-01-18 19:45:55 +00:00
Aidan MacDonald
525eb15864 recording: fix mono mode mixdown functions
Rewrite copy_buffer_mono_* functions for correctness.

Bad pointer arithmetic in copy_buffer_mono_l produced
wrong results, or panics on archs which can't handle
the unaligned pointer.

None of the functions handled zero size copies properly
though this probably wasn't an issue in practice.

Change-Id: I81c894e1b8a3440cb409092bec07fe3778a78959
2022-01-17 00:37:12 +00:00
Aidan MacDonald
f68c6c14d9 recscreen: clean up menu building code
Remove the use of constants and ifdefs in favor of a
single enum and build the menu with a counter. This
simplifies the source and optimizes to the same code.

Change-Id: Ib07f0634ac8f663452c3e6e3c3d92fb6da1a1b4c
2022-01-17 00:37:12 +00:00
Aidan MacDonald
acc7d16e3b Fix some hardcoded assumptions in recording.c
There were some hardcoded branches handling left/right gain for line-in
or FM radio inputs. If the target only has a microphone, these bits are
useless and cause compile errors due to missing audiohw settings, etc.
This patch #ifdef's them out.

Change-Id: If6a6918b2fabb256261c84651803bbf44deacb1a
2022-01-17 00:37:12 +00:00
Aidan MacDonald
8e65f1db55 manual: Document the DAC power mode setting
Make a note of the fact that the M3K DAC's high performance
setting is not necessarily the highest quality setting --
see forum post
https://forums.rockbox.org/index.php/topic,52917.msg249741.html#msg249741

Change-Id: If0196d2a224868aae10d61f66bac2e8c6843263f
2022-01-16 19:35:40 -05:00
Aidan MacDonald
d93e054419 fiiom3k: power down amp before switching DAC power modes
As detailed in the <Low Power Mode> section of the AK4376A
datasheet, the amp should be powered down before switching
power modes (or to a sample rate <= 12 KHz).

Change-Id: I3ab0a21c78a3ad2bb418b64c916f7dbe2a843efa
2022-01-16 19:35:40 -05:00
Aidan MacDonald
dac3175445 audiohw: avoid magic numbers for DAC power mode
Define proper symbolic constants for power mode. Also allow
targets to define the default power mode setting.

Change-Id: Ia07cf854dce47d0a6aa88e067471f1ff9fbc45fb
2022-01-16 19:35:40 -05:00
Aidan MacDonald
18b3e91707 x1000: internal codec audio driver
Change-Id: I2eb551ec6b593951c33ae6b93df2a23dc6612c43
2022-01-16 19:17:25 -05:00
Aidan MacDonald
15e3d37110 x1000: core PCM recording support
Change-Id: I71883272cc3bffadc1235b0931c3f42bb38e4c1e
2022-01-16 19:17:25 -05:00
Aidan MacDonald
0fbaeed250 Remove ACTION_SETTINGS_RESET
This action has never been used since its introduction
in 2006. There's no real need for it, as it's possible
to reset settings from the context menu.

Change-Id: I6b357ad1a2e19a9b631ee3055e158492570479e3
2022-01-16 23:58:30 +00:00
Aidan MacDonald
c62c323ebc axp-pmu: adc refactor
Remove the battery power ADC since it's not used right now,
and seems to fluctuate too rapidly to be of much use.

Change-Id: If115e4e3ce14d4c18ce899f5a889f7f99ab66489
2022-01-09 20:12:41 +00:00
Aidan MacDonald
b490f08b7c axp-pmu: remove chip ID code
It's useless except to developers, who can easily add code
somewhere to print the ID.

Change-Id: I486240f1c7b45808a1a830abdb22b9381d69cb3f
2022-01-09 19:58:35 +00:00
Aidan MacDonald
eee8243102 axp-pmu: clean up charge current setting
Change-Id: Ifac30f728887c376a83052c826b4bb6a98bbd27a
2022-01-09 19:58:35 +00:00
Aidan MacDonald
eaee5e7339 Revert "AXP PMU rewrite (again)"
This caused LCD problems on the ErosQ, where the screen would
go white until being put through a sleep/wake cycle. The exact
reason for this isn't obvious, but the problem didn't exist
prior to the AXP driver rewrite.

The two dependent changes,

42999913ba - x1000: Increase USB current limit to 500 mA at all times
90dd2f84a9 - x1000: Correctly limit USB charging current

ended up bringing the USB charging situation back to where it
was prior to the rewrite, so the cleanest option is to revert
the whole lot.

This reverts commit 42999913ba.
This reverts commit 90dd2f84a9.
This reverts commit 2d89143962.

Change-Id: I1cff2bfdd1b189df14bcf8cce42db725caa470d7
2022-01-09 19:58:34 +00:00
Christian Soffke
8f063d49c2 ImageViewer: Fix FS#13329 (GIF File handle/memory leaks)
Change-Id: Ib3ef22716c8ba35c7bb78231ca4f5c7155f16018
2022-01-09 14:36:14 +00:00
Christian Soffke
f379e1dbb3 ImageViewer: Fix GIF Decoder progress bar
Change-Id: I9db9b27f9e12f08323534038bc6f0882329a2c00
2022-01-09 14:36:14 +00:00
Christian Soffke
18358ed541 ImageViewer: Fix gifs sporadically crashing on targets
ensure 32bit alignment

Change-Id: I11e0df599403a888fa63dab8f1c5a94a5f35d9ad
2022-01-09 14:36:14 +00:00
Christian Soffke
fbdcfca085 ImageViewer: Improve smoothness of animated gif playback
Don't disable grayscale overlay, don't show "resize" messages
between frames and  and don't clear display unless actually
necessary

Change-Id: I9f501d8280ce0c8f26f4345088d805d1b84cf143
2022-01-09 14:36:14 +00:00
Christian Soffke
3adeae2026 ImageViewer: Fix crash when zooming on grayscale devices
lcd_update was called while the grayscale overlay was running

regression, apparently introduced by 0ceaff2

(only reproducible on target, not in Simulator)

Change-Id: Ife0ef359e19a03a6dc033070a11ae5843ee555e6
2022-01-09 09:11:29 -05:00
Dana Conrad
f1ddd6f014 ErosQ Native: Fix Color Chooser keymap context
Was defaulting to standard, where we don't have increment or
decrement defined.

Change-Id: Ib897cb0cfada23ff390f79b6dfa8336c67f951bc
2022-01-08 17:06:49 -06:00
Christian Soffke
131497d786 PictureFlow: Don't sync playlist after every file
Since we manually do it later, syncing after every
file is unnecessary and can make the audio
queue overflow

Change-Id: Ia7ab6ee345b25a453c56f48ed0d330b04da6da94
2022-01-05 18:28:06 +01:00
William Wilgus
ea738e03d0 Printcell.c fix list item scrolling behavior
make every item in a selection scroll when no columns are selected
otherwise title & currently selected column will be the only scrolling lines

Change-Id: I3bab480f47997b89a01563a69dc68e6633152cf5
2022-01-05 10:43:55 -05:00
Christian Soffke
122ce0089a PictureFlow: Don't insert tracks if track list not available
Change-Id: Ic6d5083bfe7daf3a8639b1405b8be9dae73eb30c
2022-01-04 18:06:42 -05:00
Christian Soffke
de8ee6c9e9 PictureFlow: Switch between albums from track view
Prev/next buttons on iPods or Fiio M3k can now
be used to select another album without having to
return to the albums view first. Scroll wheel/strip
handles scrolling up and down in the track list
as before.

Other targets probably have the necessary
buttons for this, so the keymap can be extended
in the future (same goes for alphabetic browsing)

Also prevents queue overflow and handles
failure case for track list tagcache retrieval.

Change-Id: Ic8ff4471e1583d1ab1f7d16911b15705a7f60aca
2022-01-04 18:04:53 -05:00
Christian Soffke
d183959676 PictureFlow: Show track list loading message
When tagcache or storage are busy, it can
take a few seconds for the list to appear.
Meanwhile,  the screen used to be either blank
or the cover was  left suspended in mid-animation,
if the animation was skipped.

Change-Id: I655320c4f92ff496834e252cc77ece47723a8677
2022-01-04 18:04:02 -05:00
Christian Soffke
dded97be34 PictureFlow: Fix buffer overflow
create_track_index appears to have relied on
buflib_buffer_out returning a certain amount
of space without checking that it was actually
available. In at least one test case, as little as
16 bytes were returned, leading to a buffer
overflow and later a segfault.

Change-Id: Ic0783f3cd5bf015803b7ce90537ba38ab3434bea
2022-01-04 18:02:12 -05:00
Christian Soffke
e3b8b7fa80 PictureFlow: Utilize "Current Playlist" menu (+ GS fixes)
When appending tracks, they were always inserted last.
You can now choose from the usual options offered by
the "Current Playlst" context menu to queue or to insert
tracks at the requested position.
The splash after appending that forced you to wait for
2s has been eliminated.

Also fixes crashes on targets that use the grey_core lib
if a splash showed up when playback was started,
e.g. LANG_PLAYLIST_CONTROL_ACCESS_ERROR, or
when PictureFlow quit.

Change-Id: I661c59057b5315ba793ee1674f7a2ea1ffd7968d
2022-01-04 18:00:49 -05:00
William Wilgus
bfe3dac3ba printcell_helper.c bugfix scrollbar spacing
when the scrollbar was on left and number of items was < nb_lines
the spacing between title and items was off by sb_width

selected item no longer draws separators when no colums are selected

Change-Id: If564261759721eb7bcf3b7b4ba58bf9c130771b0
2022-01-04 16:51:24 -05:00
Aidan MacDonald
cbb57fe714 rbutil: allow checking bootloader installer capabilities
Instead of checking for certain hardcoded strings, fetch
the actual capability bitmask by instantiating an installer
and querying it.

Change-Id: I7883d9c1e90da37ee7c0189732ac626685adbfa1
2022-01-02 15:50:17 -05:00
Aidan MacDonald
42999913ba x1000: Increase USB current limit to 500 mA at all times
The 100 mA USB current limit added in commit 90dd2f84a9
is a problem when booting with a completely dead battery.
Often 100 mA isn't enough to power the player, never mind
charge the battery, so revert to the old behavior of only
limiting charge current.

Given that the original firmware on these devices isn't
following the USB spec to the letter, it's probably not
worth trying to make Rockbox do so unless and until it
causes a real problem - which hasn't happened yet.

Change-Id: I179a08310c226fe01460680c62fd25fd69079256
2022-01-02 20:11:03 +00:00
Aidan MacDonald
83c2398384 x1000: Fix USB connection problems in bootloader
This problem actually had nothing to do with USB boot; it's
because the cable is plugged in when the USB mode menu item
is selected. The USB thread detected the select button press
and went into charge-only mode (as it usually does when you
hold down a key in Rockbox). This is fixed by having the USB
thread ignore most keys in the bootloader.

USB connect events are delivered via the button queue, and
there were also cases where the connection could be missed
if the event happened within another UI screen. This should
also be fixed.

Change-Id: I077d705a6ac845c8713219eee45d26aa6addfa61
2022-01-02 20:11:03 +00:00
Aidan MacDonald
af872b54ec powermgmt: Bugfixes to time estimation code
Guard against division by zero and prevent the time_now
value from going negative if the counter drops below zero.

Change-Id: Ia8cadfe76086d6d0200964c1f27bab0be708b135
2022-01-02 20:11:03 +00:00
William Wilgus
a7703e4926 gui lists add callback for owner drawn items
allow the guts of gui_sync_list to be used with owner drawn items

WIP

printcell_helper--

goal: allow data to be displayed in a spreadsheet format  with an easy to use interface

printcell_set_columns(gui_synclist, title, icon)
 sets title and calculates cell widths
 each column is identified by '$' character
 ex 3 columns title = "Col1$Col2$Col3"
also accepts $*WIDTH$
 ex 3 columns varying width title = "$*64$Col1$*128$Col2$Col3
printcell_enable(gui_synclist, enable)
 sets the printcell function enabled

After setting the columns and enabling the printcell function
 items can be added to the list like normal
 column items are supplied delimited by '$'
 ex item = "Item1$item2$item3"
 they will be placed in cells defined by set_columns and scroll if the cell is too small

--Fixed for 1 bit & 2 bit displays

Change-Id: I49bd7903005d7a54e93af4379b0cdea63c860656
2022-01-01 23:56:51 -05:00
Christian Soffke
edc68b0657 Solitaire: Fix Quit option with no saved games
Selecting "Quit" would start the game
instead of quitting if no games had
previously been saved.

Change-Id: I4874288cc1087697dfb593a371e25da473870c8e
2022-01-01 22:01:30 -05:00
Christian Soffke
14a5355278 Manual: fix FS#12603
"root menu order" item missing from "Config file options" chapter

Change-Id: If6a9adeee3734db73dbf56fa84ade0ee6df4ef9d
2022-01-01 22:01:11 -05:00
Christian Soffke
abfee36ce0 PictureFlow: enable theme in settings menus
Submenus for adjusting settings
were previously left unthemed

Change-Id: I073c7aabfdd9ce4e4c10c4c0dc689112c29b2a58
2022-01-01 22:00:09 -05:00
Aidan MacDonald
025f780685 Update .gitignore for rbutil/ -> utils/ merge
Change-Id: I79326019a2e4c82357de6ffe17e938a882009f53
2021-12-29 00:43:27 +00:00
Dominik Riebeling
bbd1056afb themeeditor: Fix dmg deploy steps.
- Fix binary name in Info.plist.
- Run dmgbuild as Python module, in some cases it isn't available directly.
- Add missing dmgbuild configuration for themeeditor.

Change-Id: I2db50959b88283f43e2203cf71b130cdb33103dd
2021-12-28 19:53:54 +01:00
Dominik Riebeling
3d983ad3a1 themeeditor: Create MacOS AppBundle / Win32 GUI application.
cmake needs to know about this, otherwise we'll only get an executable.

Change-Id: If40a2a5d021ca49df4afe6bb5bce538d2b466426
2021-12-28 18:34:08 +01:00
Dominik Riebeling
875fcc7daf themeeditor: Fix cmake Qt major version.
Use the correct variable.

Change-Id: I5c59664cb86b0e4d3731e7c9ad13a276a1720cbc
2021-12-28 18:16:28 +01:00
Dominik Riebeling
c055b5e933 rbutil: Add data tags to data driven unit tests.
Make tests implemented as data driven tests show a sensible test data
tag value, so test can get identified more easily.

Change-Id: Ifeb42ed11ce9a8efc6491b2c3b9fe31802a67d33
2021-12-28 17:57:04 +01:00
Dominik Riebeling
0c8f539182 rbutil: Auto-discover tests with cmake.
Change-Id: I2f6511ddc306ba1caecaa917667074cf51b61262
2021-12-28 17:57:04 +01:00
Dominik Riebeling
f37a917e9a cmake: Disable QtTest discovery when cross compiling.
Change-Id: I46e2ad16f592f3adc9f01347e9fcda451c0b3a26
2021-12-28 17:57:04 +01:00
Dominik Riebeling
c1ad915055 cmake: Add QtTest test discovery module.
Allow discivery of the QtTest based unit test.
Taken from https://github.com/ocroquette/cmake-qtest-discovery

Change-Id: I79a54568b2dbc216d35a463b6be36c197203c5b5
2021-12-28 17:57:04 +01:00
Dominik Riebeling
f53f1fbafa rbutil: Fix some more issues found by clazy.
Change-Id: I0a1a849ecea4b4666b08ccb050eb17918e90a258
2021-12-28 17:57:04 +01:00
Christian Soffke
7dffbd84af Playlist Viewer: Add Track Info
Adds a command for showing track info to
the Playlist Viewer's context menu, which
brings up the same screen used by the WPS
for currently playing tracks.

Change-Id: I17d99671935934dad565d290a0d6fb3b0dfd8b01
2021-12-28 11:15:57 -05:00
Christian Soffke
e8b9123205 Database: show song's album in PictureFlow
Adds a 'PictureFlow' command to database context
menus for quickly bringing up the album for a
song in PictureFlow.

Change-Id: I88cd89e93d9418558c698a15fc7fb5d9a90fb262
2021-12-28 11:06:10 -05:00
Christian Soffke
7d59bbd170 Database: Fix selection being reset
Consistent with (preferable) behavior of file browser
after selecting an item for playback

Change-Id: I45a72f6d743fd70c301f9d5de0f8a2a02157b2c6
2021-12-28 10:57:13 -05:00
Aidan MacDonald
96cfe329a6 powermgmt: Better time estimation
This method, while far from perfect, is able to make use of
real-time battery usage information and updates frequently
in fine-grained increments. This should make time estimates
a lot more useful than they previously were.

Change-Id: I66c6daba88210f60a27e239fbbcc56869be3b878
2021-12-28 10:47:40 -05:00
Aidan MacDonald
90dd2f84a9 x1000: Correctly limit USB charging current
The way this was done before was wrong - limiting the charge
current is not enough since the device will draw additional
power to run. Use the AXP192's vbus current limit control to
stay compliant with the USB specification.

Change-Id: I91b84e3480a432e49bec53cf2a17e4e3444404a4
2021-12-28 15:20:27 +00:00
Aidan MacDonald
2d89143962 AXP PMU rewrite (again)
I noticed a few mistakes in the old driver code and it was in
need of an overhaul anyway... I decided to scale things back,
simplify the code and remove most of the debug menus, netting
a nice code size savings.

One new feature is an advanced debug menu which is accessible
by recompiling the code with AXP_EXTRA_DEBUG. It adds quite a
bit of code size and isn't useful other than for development
so it must be manually enabled by editing the source.

Change-Id: I30e17c1194c14823decd726a574ed14451d4cb2d
2021-12-28 15:20:27 +00:00
Dominik Riebeling
b774699560 themeeditor: Remove qmake project files.
It is now part of building with cmake.

Change-Id: I6e6317f3070311c7921f93a3ec44eefdd4f55baf
2021-12-28 10:37:50 +01:00
Dominik Riebeling
3e2a7a56c0 rbutil: Remove qmake project files.
To build it configure with cmake from utils/ folder.

Change-Id: I43fab2df1768e1a055e46ec5712e3a45fefef5a9
2021-12-28 10:35:39 +01:00
Dominik Riebeling
1ddc5a202d themeeditor: Convert to cmake.
Change-Id: Ib46842c157121c64cd0091118aa9b7e43d83b8b3
2021-12-27 16:18:17 +01:00
Dominik Riebeling
36cb0d4050 themeeditor: Add svg application icon and desktop file.
Change-Id: I3213e60679330b5312bddd37669da2b18e7f9627
2021-12-27 16:17:30 +01:00
Dominik Riebeling
2ecbc18535 rbutil: cmake: Make linuxdeploy download a global target.
That way we won't get duplicated targets when the deploy function is
used for multiple targets.

Change-Id: Ie14fdd74fcc496647c3c041ae2fcf902a3cb15fa
2021-12-27 16:14:46 +01:00
Dominik Riebeling
67942629cf rbutil: Explicitly enable AppImage qt deploy plugin.
Change-Id: Id2cb21882b06f60541ecfe22b101d13c4f631131
2021-12-27 12:29:52 +01:00
Dominik Riebeling
88a50ab104 rbutil: Change MacOS dmgbuild to use plistlib.
We're not dealing with binary plist files, to biplist is not the one we
want. Also, plistlib is part of Python.

Change-Id: I529516da0d6b04809a7c0d38b20c6f40900560f8
2021-12-26 21:59:19 +01:00
Dominik Riebeling
5999b4f791 rbutil: Fix cmake deploy function paths.
Update scripts paths with the split-up setup.

Change-Id: I62cd66b7440faa27daead92d04f3cdae67748d60
2021-12-26 21:31:49 +01:00
Dominik Riebeling
241d478ce9 rbutil: Replace QRegExp with QRegularExpression.
More updating for Qt6 compatibility.

Change-Id: I2f5bb943acc1f6bdd7bdab0e90e3c0ede596f43a
2021-12-26 20:13:05 +01:00
Dominik Riebeling
1ad4faa334 rbutil: Modernize connect() calls.
Auto fixed by clazy.

Change-Id: Iea16d892fd81c151f0081f7476acc5eda62afc25
2021-12-26 19:50:19 +01:00
Dominik Riebeling
9f3d6e47e7 rbutil: Remove generated header from giversion interface target.
cmake on Windows doesn't like this, and it's not necessary.

Change-Id: I65b9eb989e51df388cabcb36a246068dba80630c
2021-12-26 11:14:22 +01:00
Dominik Riebeling
80c0268c7a rbutil: Make test compile with Qt6.
Change-Id: I2e6520588c7a82482b2c605d0b295f8fc7e0a03b
2021-12-26 11:06:57 +01:00
Dominik Riebeling
35bc4590ae rbutil: Remove ProgressLogger interface class.
Since we're using signals to connect to the Logger we don't need an
interface class, and the only thing still used was the log level enum.
Put those values in a dedicated header instead.

Change-Id: Ic3aee14ba13b81e283b477d11b1c15a5c26ffeab
2021-12-26 11:05:25 +01:00
Dominik Riebeling
01e245417e rbutil: Fix various issues found by clazy.
Change-Id: I91ca2baed34f0f3b561602f95f66bbd4e17e74ab
2021-12-25 19:59:57 +01:00
Dominik Riebeling
0768705545 rbutil: Fix invalid access on error in test.
Change-Id: Ie9c65041bb4a1ba4215a2d0786bf984cfa6d023b
2021-12-25 17:47:14 +01:00
Dominik Riebeling
c753d31549 rbutil: Remove unused variable from test.
Change-Id: Iea57ffa319f50df8836c0c7c608ff37a394eb68d
2021-12-25 17:47:14 +01:00
Dominik Riebeling
6ff75b475c rbutil: Modernize connect() calls.
Auto fixed by clazy.

Change-Id: Ib7cce8c0a85f8f915263980bf5d2508a4b19bbe3
2021-12-25 17:47:14 +01:00
Dominik Riebeling
dce2ccdd96 rbutil: Remove unused mspack source to fix warning.
We don't need this file, and the implementations are stubs, causing a
compile warning. Remove it from the build.

Change-Id: I4ee2594c8fbc3ecf4661cc4144f8d9072bd6d983
2021-12-25 17:47:14 +01:00
Dominik Riebeling
afe0e18113 mkamsboot: Fix a warning.
Change-Id: Ie16176226bf23a19e51abd6e9ae94244701872db
2021-12-25 17:47:14 +01:00
Dominik Riebeling
eb8dc75d38 rbutil: Create git version information at build time.
Change-Id: Iaf701f4d64d6852423f6a28a753b27abc43477e2
2021-12-25 17:47:14 +01:00
Dominik Riebeling
6783b2c8a7 rbspeex: Fix unused variable warning.
Change-Id: I24a0a9c28101f0d7f17d9e8e4a778f9566ba4701
2021-12-25 17:47:14 +01:00
Dominik Riebeling
e9ef7f0dd3 rbutil: Split out rbutilqt parts into separate cmake list.
Change-Id: I84ada20765b98620e1f06bc7116bbdaaae296fe9
2021-12-25 17:47:14 +01:00
Dominik Riebeling
c979717b80 rbutil: Fix logger segfault on application exit.
Getting the values from a QMultiMap() returns a list, but not the same
on consecutive calls. Thus calling it twice to get the iterators will
yield different lists, causing the iterator to fail.

Fixes a segfault when destructing the logger.

Change-Id: Ie8ea8d3a9acf6fbd3969fbb49cbc50a1c1fa2854
2021-12-25 17:47:14 +01:00
Dominik Riebeling
774b35cccf rbutil: Deploy support in cmake.
Add a "deploy" target that will create a distributable file.

- Linux: AppImage.
- Windows: zip file.
- MacOS: dmg.

Change-Id: Id8ae9c021bc5bbb1abf066205b57d943c3f3b327
2021-12-25 17:47:14 +01:00
Dominik Riebeling
4eb3f05042 rbutil: Increase test timeout value for HttpGet tests.
The test timeout is used to abort the tests if something goes wrong and
should not occur during normal test run. On some systems the current
value is too small, causing a timeout and thus test failure before
HttpGet responds.  Increasing the timeout fixes this.

Change-Id: Ib61dd97d9f866c03cca9d2f0d7cb151f7076410d
2021-12-25 17:47:14 +01:00
Dominik Riebeling
f2798c225a rbutil: Simplify reading rockbox-info.txt.
Simplify, and replace use of QRegExp with QRegularExpression for Qt6
compatibility.

Also fix the test running on Windows. RockboxInfo constructs the
filename from path and filename, so we cannot pass an empty path, since
that results in an invalid path. On Linux / MacOS this works only
because we use an absolute path.

Change-Id: Ieaf30a2df005291d3e997aabf42d64ee832381c2
2021-12-25 17:47:14 +01:00
Dominik Riebeling
dc677208d0 rbutil: Fix unit tests on Windows.
Change-Id: I124882eb26b01e1acfadfba55bc718ab330ab52a
2021-12-25 17:47:14 +01:00
Dominik Riebeling
3d6d186d2e rbutil: Initial cmake support.
Rewrite in cmake, and include all necessary libs. This removes calling
separate Makefiles which is rather error-prone on non-Linux systems.

Change-Id: Ic2af4a3810e4b000e3ad33304229e2349a930e16
2021-12-25 17:47:14 +01:00
Dominik Riebeling
f3a54a7c22 rbutil: Put translation qrc next to translations.
That way we don't need to put paths in the file, and will help with
cmake support later.

Change-Id: I0835674e0ea2e5ec5a1596798e26cfbfde29468d
2021-12-24 18:05:53 +01:00
Dominik Riebeling
2fdc056fee rbutil: Use https URLs in Changelog links.
Change-Id: I9a40163c9025550185104dc00356932bda16f782
2021-12-24 18:05:53 +01:00
Dominik Riebeling
9e28474e47 rbutil: Replace QRegExp with QRegularExpression.
The former is not part of Qt6 anymore, while the latter has been
introduced with Qt5. We don't support Qt4 anymore, so move to
QRegularExpression.

Change-Id: Icc15ef422790f3740660c5581294aa0536f46b1f
2021-12-24 18:05:53 +01:00
Dominik Riebeling
72071d108c rbutil: Remove unnecessary include from logger.
Change-Id: I860331880a45912ad73f02f049f869dd155eeb2d
2021-12-24 18:05:53 +01:00
Dominik Riebeling
c876d3bbef rbutil: Merge rbutil with utils folder.
rbutil uses several components from the utils folder, and can be
considered part of utils too. Having it in a separate folder is an
arbitrary split that doesn't help anymore these days, so merge them.

This also allows other utils to easily use libtools.make without the
need to navigate to a different folder.

Change-Id: I3fc2f4de19e3e776553efb5dea5f779dfec0dc21
2021-12-24 18:05:53 +01:00
Christian Soffke
6c6f0757d7 PictureFlow: Show background cache building progress
There was no easy way to see how far along PictureFlow
was in building the art cache, once background scanning
had commenced.

PF now uses the  screen area normally used by the FPS
meter to show completed percentage until building the
art cache has  finished.

Change-Id: I60fa7187b522cda219e35f5a9f630835ecac6883
2021-12-24 11:08:26 -05:00
Aidan MacDonald
f4fbc1bceb tagtree: Support user override config file
Allow users to create an alternative tagnavi config file named
"tagnavi_user.config" in the .rockbox directory. If present, it
will be used instead of the default tagnavi.config, allowing the
default menu to be completely redefined.

This makes it much easier to maintain customizations which remove
or modify parts of the default config -- since the default config
is shipped in the Rockbox zips, a customized tagnavi.config would
have to be saved with manual intervention on each & every update.

Change-Id: I509177fab0e01fc0db0bc4407a3a92bbff5fa481
2021-12-24 10:41:27 -05:00
Christian Soffke
6b5c811d1c PictureFlow: reset idle timer when art cache is being built
- creating the album index and art cache can take longer
than what the idle poweroff timer is set to, so make sure
to reset it periodically

- when finished, make sure progress is stored
to disk immediately, so it isn't lost on idle poweroff

Change-Id: Ibe88a260e4495b1bd007f37950e8c5fbc9364975
2021-12-24 10:38:37 -05:00
Christian Soffke
d04804b6ff Root menu: prevent infinite loop trying to exit plugin
Rockbox could enter into an infinite loop when last_screen
and next_screen were both GO_TO_PREVIOUS, which
happened when trying to quit PictureFlow in the following
scenario:

1) start playback from PictureFlow plugin
2) return (or be returned) to WPS directly
3) wait for playback to finish and to be returned to PF
plugin

Change-Id: I0b52d4df56d416f81cef027d9024e964a734fcdc
2021-12-24 10:38:18 -05:00
Christian Soffke
747c8d5ea4 Remove dead code/documentation/comments
Change-Id: I4928d5967ad8a1f15b8725853102b74420252cc6
2021-12-24 10:37:28 -05:00
Aidan MacDonald
22d0c4da70 Revert "powermgmt: Remove an unnecessary function"
This reverts commit 6ff1a935b9.

Reason: it created a mismatch between the displayed voltage
and percent since the voltage was unfiltered but percentage
was based off the filtered voltage.

Change-Id: I4cba099f2e1edf0ef7c4e17a32f566aa66f5b933
2021-12-23 11:40:22 +00:00
Aidan MacDonald
1a313dc9bf Report battery current on all X1000 native targets
This allows battery run time to be calculated from the
actual battery usage on the FiiO M3K and Shanling Q1.
This isn't very good for the time being and the estimate
tends to go all over the place due to small variations
in current or voltage.

The Eros Q can support this feature as well, but since
it already has fixed estimates defined and the quality
of the "real time" estimate is low I am not enabling it
there.

Change-Id: Id34a93ee4b7d66f9f7e56ef0f5149f67e8e72039
2021-12-23 11:39:58 +00:00
Aidan MacDonald
fc678bd001 battery_bench: Log battery current information
Works on targets supporting CURRENT_MEASURE.

Change-Id: I021b995c46fab923287ad54e72863695ef9ed58a
2021-12-23 11:39:58 +00:00
Aidan MacDonald
9ae983068a Display battery current in debug menu
Change-Id: I07a458c34da931125d986d20df27df38e47c8854
2021-12-23 11:39:58 +00:00
Aidan MacDonald
ad05c872fe powermgmt: Add battery current measurement
This allows targets to report the actual discharging or
charging current if they are able to.

Change-Id: I0b538e6ac94346f1434e45f83c8da8c1260a53a3
2021-12-23 11:39:58 +00:00
Aidan MacDonald
923f92cb12 Fix yellow from 4506f2b58d
Change-Id: I60bb56830ef5ba0fcde4564cdafef594af400c70
2021-12-23 11:37:15 +00:00
Aidan MacDonald
4506f2b58d powermgmt: Refactor battery measurement code
I've tried to clean up cruft and clarify what's being
done, prior to adding new features. The behavior should
be unchanged.

Change-Id: If8a68b7b48173d283df981a21cdd854b714e7695
2021-12-23 00:12:43 +00:00
Solomon Peachy
d6faef8205 FS#13330: Updated Dutch translation (Issa Beganović)
Change-Id: I5d029551154a0485d1866ee4f1c44d9662275981
2021-12-18 17:28:48 -05:00
Solomon Peachy
bdef4fc80d FS#13228: More Turkish translation updates (Selami Dinçer)
This one is focused on corrections to existing strings

Change-Id: Icf74b30429f8bfadafa8b14545e82b1b13a8bf8f
2021-12-17 19:37:49 -05:00
Solomon Peachy
ded161e81a FS#13327: Further Turkish translation updates (Selami Dinçer)
(Continuing to fix strings that were the same as English)

Change-Id: Id6a1d607019747e61740f8ef87ac5b69cfe7d4d5
2021-12-17 08:00:26 -05:00
Solomon Peachy
0300f62bf1 FS#13326: Further Turkish translation updates (Selami Dinçer)
Change-Id: I92e3477c83f48c5bab0ee96528e902bc45c8fb08
2021-12-16 11:46:30 -05:00
Solomon Peachy
6a6f5fbd6c Voices: Enable the generation of turkish voice files.
Change-Id: Iee9ee12602e0a2f6c01d4de738d16787b9f5c23e
2021-12-15 22:37:14 -05:00
Solomon Peachy
f496e1fb97 FS#13325: Further Turkish translation updates (Selami Dinçer)
Making a big dent in the "same as English" list

Change-Id: Ieeb1dc4245233012ea5a8b63599a474bad0517de
2021-12-15 22:29:50 -05:00
Solomon Peachy
b53d2bc432 languages: Fix RTL language file generation
The 'rtl' flags for Arabic and Hebrew was inadvertantly deleted
in 7ff3c94e1 (over a year ago, in November 2020!) but it's actually been
broken since the introduction of 'updatelang', in 2305966d (July 2020)

The fix here is to change the 'RTL' flag from an <options> section in
the language file to a comment in the header.  It's not as pure in a
design sense but it makes for a much cleaner implementation.

I may further revamp this by making the 'RTL' flag into an explicit
LANG_xxx string

Change-Id: I48f394adfadc0aa804fd67690c87cc28f04fccdc
2021-12-15 19:19:44 -05:00
Solomon Peachy
651853f5df FS#13324: Updated Turkish translation (Selami Dinçer)
Change-Id: I970e29318e74317e699d52a88c4d4d25067bb028
2021-12-15 11:38:13 -05:00
Solomon Peachy
f996f4ed70 FS13323: Updated Italian translation (Alessio Lenzi)
Change-Id: I3ebadcf4691483d9bd002161cc01d0bfcc3926d0
2021-12-13 21:45:32 -05:00
Aidan MacDonald
75d615e818 Fix yellow from 69d08be0
Change-Id: Id1ee471454f1d23df3322ed78ba3feb2fe443d74
2021-12-11 17:11:11 +00:00
Christian Soffke
69d08be083 Additional Single Mode options
In addition to the existing behavior of pausing
after each song, this adds options to pause
after playing current:

Album,
Album Artist,
Artist,
Composer,
Grouping / Work, or
Genre.

Allows you, for example, to only listen to the
remaining movements of a classical work
without having to purge your playlist of any
upcoming songs.

Change-Id: If18f4a5d139320026cc5fcc9adf29dd8e4e028a8
2021-12-11 11:43:39 -05:00
William Wilgus
8060c79775 allow sim to shutdown while 'charging'
Change-Id: I28a9312d1ce6bf68d8ee6fc2cca680047bfec810
2021-12-11 09:59:39 -05:00
Solomon Peachy
68ed534f83 Automated translation fixups for a couple of strings
Change-Id: Ia61512044d5c9da3b7f161097402b525719a7bb5
2021-12-11 09:48:01 -05:00
Solomon Peachy
21866949dc Update english-us "translation"
Change-Id: Icac11ade75768312db7ed4119aadda0c0dd751d7
2021-12-11 08:37:15 -05:00
Solomon Peachy
06f98fa2e7 FS#13322: Updated Polish Translation (Adam Rak)
Change-Id: I08ea5cc3c47c80e573c54c226f55c21d7fcf54dc
2021-12-11 08:35:59 -05:00
Solomon Peachy
e05db7304e Update Chinese translations
Lifted from the Rockbox-RCC github repo, plus several cleanups by myself.

Change-Id: I1f9fb7995812acd376f8783aa12a4e6717ff5c33
2021-12-11 08:14:24 -05:00
Solomon Peachy
fde78a0c8d lang: Use consistent capitalization for button names
Change-Id: I02aecb17a214f3da179177f70986bb6961670c3d
2021-12-11 08:14:23 -05:00
Aidan MacDonald
dcac2c616f Add setting for numeric list sort order
The sort order of numeric lists can now be changed with the
new "List Order" setting. It defaults to ascending for most
scrollwheel targets and descending for all others, matching
the old hardcoded behavior.

Change-Id: I4866f04ec5995158edf9e40badf7f661b3ddea81
2021-12-11 01:13:22 +00:00
Christian Soffke
a3684e090e m3k simulator: remove white border
Change-Id: I1503dadc966af568c8a4482e1d7f5641092594f0
2021-12-10 19:46:09 +01:00
Christian Soffke
f1eb0483d6 m3k simulator: add screen bezel
Change-Id: I4a34e5be7a459f909b81266b70c30f2968068696
2021-12-10 18:01:38 +01:00
Christian Soffke
f78a0e5230 Manual (HTML): fix image aspect ratio and size
Change-Id: If7c680badcb1a493e2a2059d84ea5b154382bad2
2021-12-09 21:02:10 -05:00
Christian Soffke
694f929a99 Credits plugin: use black background
Sets the lcd background color to black and foreground color
to white when displaying the 16bit logo, so that it always
blends in with the background regardless of theme colors.

Change-Id: Ia3afde178866b84d194c2dd839dac24f8c6e8d05
2021-12-09 21:01:11 -05:00
Solomon Peachy
938395be72 Update US English "translation"
Change-Id: I1750c64ab8251cbb98ac48c3d2bfbd2c1df431a1
2021-12-09 20:56:55 -05:00
Solomon Peachy
fb339a5a09 FS#13220: Updated Polish Translation (Adam Rak)
Change-Id: I51ce45b8404ed79169300fc6b7a2bccabed03af8
2021-12-09 20:53:02 -05:00
Christian Soffke
43d811073a Credits plugin: whitespace fixes
Change-Id: I21689357ad7e0ce86cc31ecfa7a94f1f8b620120
2021-12-08 22:29:35 -05:00
Christian Soffke
7e0e4fe888 Add setting to hide shutdown message
Also keeps display from lighting up before shutdown,
which reduces distractions, especially at night and
when the sleep timer is used by allowing the
screen to remain dark.

Change-Id: I1c2d1966f6fb9766532adf01e8828876a871857f
2021-12-08 22:26:38 -05:00
William Wilgus
5433ea5405 random_playlist.lua make index more sparse
The name of the game here is to load the database file without taking over the
audio buffer.

5mb database file will now successfully load

added an option to save playlist directly to disk and bypass the rb builtin function completely
however if you choose play the playlist will be loaded back from the disk into the inram dynamic playlist

Change-Id: I43e76f63379721f36ed082c0ad47a6f2539fb15f
2021-12-08 22:09:16 -05:00
William Wilgus
8c88d5c5e2 playlist.c remove panic from OOM conditions
the splash suffices as warning let the calling code decide what to do with it

everything I saw calling expected failure with a -1 return so it shouldn't
cause any issue removing the panic

Change-Id: Idc1fba91c3ab4f1fd78e1d6a07dc2e6a0bfd8970
2021-12-08 21:44:12 -05:00
William Wilgus
221e8752cc plugin.h & lua add playlist_insert_playlist
having issues running lua and loading a playlist

Change-Id: I72d32d77e6567ceed7e8e5fd492eebf0ee44561a
2021-12-05 23:10:19 -05:00
Aidan MacDonald
f02cd18ad0 powermgmt: Refactor battery current estimation
Create a new battery_current() function to report the
the battery's charging/discharging current. Move the
old runcurrent() implementation into it and clean up
some of the related defines.

Change-Id: I7dbe5b6532d291fa72add1cb23b30e3cbac8c3ca
2021-12-05 15:11:34 -05:00
William Wilgus
8a8dfa0e52 random_playlist.lua bugfix
removing trackks after create appears to cause crashes
removing the playlist appears to be sufficient to prevent
append to the currently saved random_playlist.m3u8

added yield on screent update, since we have no sleep this could be an issue

Change-Id: If04517f852e329088e30885d964f2407a2ebf318
2021-12-05 15:03:02 -05:00
Wolfram Sang
0e985a4461 settings: fix a confusing indentation and add missing whitespaces
Change-Id: I6b0eaeacc300a8db3b618363db0bfc826445217b
2021-12-05 14:21:54 -05:00
Aidan MacDonald
6ff1a935b9 powermgmt: Remove an unnecessary function
Remove battery_read_info() which is a simple wrapper
function only used by debug screens. Use the polling
functions directly to save a bit of code size.

Change-Id: I2919f78105bab186f6933dc1823f9fa67fe74f3e
2021-12-05 14:18:32 -05:00
Christian Soffke
d93a3cac50 Use LIST_WRAP_UNLESS_HELD consistently
LIST_WRAP_ON seems to only be used in 3 places
at this point.

- Keybox Plugin
- Puzzles Plugin
- (File) Properties Plugin

Switch them them over to LIST_WRAP_UNLESS_HELD
as that is used everywhere else and is arguably
preferable (the option to turn off list wrapping
completely remains, of course).

Change-Id: Id8017dcbb123a0568cb6db527a8966b63ba06d47
2021-12-05 14:17:52 -05:00
Christian Soffke
daa3967071 Properties Plugin: Fix track or disc number not appearing
Change-Id: I20e60aefd92a2d9f1a64b6197deb6950144a9781
2021-12-05 14:17:44 -05:00
Aidan MacDonald
81da5e6409 Restore Album Artist to the default database menu
Undo the removal as discussed in g#3947.

Change-Id: I5ce291daa17e8fa04cec719d1ed39bf6d08658d2
2021-12-05 13:55:50 -05:00
Aidan MacDonald
e3ee1908dd powermgmt: Small cleanups to battery capacity code
- Don't include the 'battery capacity' setting unless the
  target allows changing it.
- Clean up the preprocessor conditionals used to check for
  variable battery capacity support.
- Don't use a variable for battery capacity unless it is
  actually needed.

Change-Id: I3d8a338f107014f2c5098bc0a44ef0cfb4df9356
2021-12-05 13:37:25 -05:00
Aidan MacDonald
204be7f637 fiiom3k: Remove unneeded powermgmt-target.h
Change-Id: I6af46c860d62d9bc297467050d43e47bff2049b8
2021-12-05 13:14:47 -05:00
Aidan MacDonald
8eb685ffdf Remove a couple of #ifdefs
Give iBasso DX50/DX90 empty adc-target.h headers like all
the other hosted targets to avoid special cases.

Change-Id: Iaae15642fdec4ff18bc9ac01245753135128f676
2021-12-05 13:14:47 -05:00
Aidan MacDonald
a6e90d2355 powermgmt: Remove outdated defines
CHARGING_DEBUG_FILE is not referenced anywhere else so
just remove the #ifdef block.

Change-Id: Icf4bd4edb7d38bdc86477d7d1f4e7bf9cf697d31
2021-12-05 13:14:47 -05:00
Aidan MacDonald
34b7b715e8 lcd-16bit: rewrite mono_bitmap_part
Rewrite the loop to update the framebuffer by rows rather
than by columns. This should (a) be more efficient on the
majority of targets using horizontal stride framebuffers,
(b) skimp a bit on code size and (c) avoid AddressSanitizer
errors caused by reading past the end of the source buffer.

Change-Id: I238d191d63bfdecd25336fd8879a63d9d6ab7087
2021-12-05 13:13:36 -05:00
William Wilgus
46a8fe0b72 Add voicing to top level debug menu
Change-Id: Iffea9ee188cbe74c8c52c7d250a534ff61a17665
2021-12-04 00:08:37 -05:00
Christian Soffke
2bd0d5738f PictureFlow: Preliminary fix for infinite loop
Supposed to prevent situations where PictureFlow
enters into an infinite loop while unsuccessfully
looking for a slide cache slot.

Technically more of a bandaid than a fix at this point,
since it masks behavior that shouldn't occur in the
first place, but at least it will make the issue essentially
unnoticeable by the user for the time being.

Change-Id: I8a9b30448949dd53f624eae918484b740b4f873e
2021-12-03 23:51:12 -05:00
Christian Soffke
09e1cd489f PictureFlow: Add alphabetic browsing (iPod&fiiom3k)
Offers more efficient navigation when number of albums is large.
Scrolling with the touch wheel or touch strip works as before,
but the prev/next buttons jump between album artists by first
letter now.

- Keymap has only been adjusted for iPod and Fiio M3K at the moment.
- requires separate fix for infinite loop

Change-Id: I68da7304d2c7714a5a1aecdf83e937bc9daae3e1
2021-12-03 23:51:12 -05:00
William Wilgus
7200b738a5 lua random_playlist generator
uses the database to create random playlists of specified size

with the advanced GUI you can..
set the number of songs (up to max playlist buffer)
set the number of tracks before a repeat is allowed
play the tracks when finished

-- fix a parsing bug where first and last entry in database
   were corrupted

-- Incremental loading for very large databases, allows decent speed and lower ram usage

Change-Id: Ia95469b6a04625b621129ec61e5db4b2b00adc5e
2021-12-03 16:56:12 -05:00
Christian Soffke
c94acc771d PictureFlow: Read bitmaps in one go
As suggested by amachronic, this may significantly benefit performance.

Change-Id: I4dcf096278ab8042065cf6dce5ff886cdd27dc3d
2021-12-03 02:58:19 +01:00
Christian Soffke
101d431d79 PictureFlow: Fix playback behavior after appending
- Once items have been appended, the existing playlist can
not be reused when selecting an album for regular
playback, since the playlist will be out of sync with the
album's track list

- Don't re-shuffle playlist after appending items

Change-Id: I3b6035033ad1d59f9916c711f13737bb0987c4f6
2021-12-03 02:58:19 +01:00
Solomon Peachy
9597d7256d Fix lingering yellow from 8325b59f3b
Change-Id: I83b7fbd88b2f47c9bd31943bdc9c4cc8f2d24f4e
2021-12-02 19:52:04 -05:00
Solomon Peachy
0f12a77d60 Fix red from 8325b59f3b
Change-Id: I38f53d1cee1572ef5d82ed07bc184403fa2f7b00
2021-12-02 18:09:48 -05:00
Christian Soffke
64192cdfa8 Fix FS#13319
Change-Id: Ia995e2de51f5d8984dffa90b97d4babb98f21399
2021-12-02 17:45:49 -05:00
Christian Soffke
6325971451 Warn before replacing playlist when “Insert” hotkey is used
Makes warning  for "Insert" hotkey consistent
with that of "Insert Shuffled hotkey" (both
will result in the current playlist being erased
if playback is stopped).

Change-Id: I7c6a01438c227a963209b8689ee6941b820a004d
2021-12-02 17:38:42 -05:00
Christian Soffke
8325b59f3b PictureFlow: (grayscale) invert ‘Added to Playlist’ message
Feels less interruptive this way, since the background doesn't
suddenly switch from dark to light.

Also moved message to separate function and added missing
lcd_update() after clearing display.

Change-Id: Id196554b42fa4de16a6b23136d27358159b746b6
2021-12-02 17:37:49 -05:00
Christian Soffke
2ee4f50fa6 PictureFlow: whitespace fixes
Change-Id: I53c75c99110c2eeceed52854bc2ca0ec63770a0c
2021-12-02 17:37:49 -05:00
Christian Soffke
0da0390b85 PictureFlow: Warn Before Erasing Playlist
Respect system-wide setting, in
consistence with browser behavior

Change-Id: I7df90554a466ed5ca1b99da179cc7d95360499b6
2021-12-02 17:37:15 -05:00
Aidan MacDonald
2512ed1c56 Make inline functions in headers 'static inline'
Future-proofing against newer versions of GCC/binutils which
are stricter about the use of 'inline' functions in headers.

Change-Id: Id620812ed340f0d790ba6c5b8b5cb1d700acfbbf
2021-12-02 21:31:54 +00:00
Solomon Peachy
4162a46184 config: Get rid of an (incorrect) duplicate definition for USB_DESIGNWARE
Change-Id: I9778a1a7b5e2e15b3775dbaed719c64b4e52194b
2021-11-29 20:14:41 -05:00
Aidan MacDonald
dbb7371065 manual: fix layout of Backlight Exemptions description
Use a {description} block rather than an {itemize} since
the latter doesn't look very good here.

Change-Id: Ic1052085ff1bd523bfa7e3637aa8bf9691eb785f
2021-11-28 12:05:26 -05:00
Aidan MacDonald
1ad60c3344 x1000-installer: remove redundant overflow check
This overflow is impossible to trigger due to the simple
relationship between binary and hexadecimal numbers.

Change-Id: Ie8243129967abb935a77152a808765318052c979
2021-11-28 15:46:06 +00:00
Aidan MacDonald
c086a3386f x1000-installer: map filenames accept only valid characters
Instead of using isgraph(), check for legal FAT32 characters
excluding spaces (which are used as field separators).

Change-Id: I291f0acb5f24c558099c237d913f4f35ae06b834
2021-11-28 15:46:06 +00:00
Aidan MacDonald
31242f8570 x1000-installer: add test for xf_map_parseline
Change-Id: I35db43c83dc3964607b95f6b5c300c2fef455ac8
2021-11-28 15:46:02 +00:00
Aidan MacDonald
4879891da3 x1000-installer: xf_stream_read_lines bugfixes
- Only treat EOF as newline if the line is non-empty to
  suppress a useless empty line after the end of a file.
- Deal with 0- and 1-byte line buffers safely.
- Remove whitespace stripping and comment handling which
  was left over from refactoring. Move it to xf_map_parse()
  where it belongs.

Change-Id: I9f05f4e18ca6dd011ca4cd231f0b5ea37c784778
2021-11-28 13:55:48 +00:00
Aidan MacDonald
420d545018 x1000-installer: tests for xf_stream.c
Change-Id: Ib9d1ca0109029f09ff0f8adfc10925c7c9a0f8b9
2021-11-28 13:55:43 +00:00
Aidan MacDonald
b027063c03 x1000-installer: simple test suite runner
Change-Id: I0b9ee81cbd8dda593924b2f7c32a1d1d87ce84b0
2021-11-28 13:45:20 +00:00
Aidan MacDonald
7ca8623927 x1000-installer: add test & code coverage support to makefile
Pass COVERAGE=1 to enable clang-based code coverage and pass
SANITIZE=1 to enable sanitizers. 'make cov' will run the test
app and show a coverage summary.

Change-Id: I8a33e8b78665165d8da1818dc01f495f0c52cf06
2021-11-28 13:45:20 +00:00
Aidan MacDonald
06423cab58 x1000-installer: Initial commit of new framework
This is a new flash installer framework for the X1000 targets.

A bunch of this code is *UNTESTED* but there is an external test
harness which allows the library to be built and tested on a PC.

Once tests are written and the bugs are ironed out this framework
will replace the existing installer code.

New features:

- Update tarballs are MD5-checksummed to guarantee integrity.
- The flash map is no longer fixed -- updates are self describing and
  carry a map file which specifies the areas to update.
- Can take full or partial backups with checksums computed on the fly.
- Supports an additional verification mode which reads back data after
  writing to ensure the flash contents were not silently corrupted.

Change-Id: I29a89190c7ff566019f6a844ad0571f01fb7192f
2021-11-27 15:28:19 -05:00
Aidan MacDonald
98f1271aec x1000: Fix AIC I2S divider clamping with EXCLK source
Change-Id: I19c2d25bbd7276ac5efd6f6b3b9ee64d6801f972
2021-11-27 15:27:45 -05:00
Aidan MacDonald
f1215a338b uisimulator: remove an unused file
Appears to be a holdover from archos.

Change-Id: I93a2c04f64a3beff86281943dddc1138a893ff86
2021-11-27 15:22:31 -05:00
Aidan MacDonald
9eaa14dc02 usb-designware: fix setup packet error handling
This handles the case where the host sends a new setup packet
in the middle of an ongoing control transfer.

Change-Id: I1d2e02467e9b813c9827cc0699cb87a500515e31
2021-11-27 09:29:44 -05:00
Christian Soffke
fd50baa23f PictureFlow: Reversible and interruptible animations
Makes PF usable on older devices with few FPS,
and makes it quicker to navigate on current devices.

- PF_BACK while zooming in to zoom out again
- PF_SELECT or PF_PREV/PF_NEXT while zooming in to skip animation

- PF_BACK while zooming out to skip animation
- PF_PREV/PF_NEXT while zooming out to skip animation + scroll
- PF_SELECT while zooming out to zoom in again
- PF_CONTEXT while zooming out to skip animation and append

- PF_CONTEXT while scrolling to append
- PF_SELECT while scrolling to zoom in

Change-Id: I8d041b53f5990181059fe837a8ca121ebf37a676
2021-11-27 09:02:17 -05:00
Aidan MacDonald
e4d8431211 Update microtar users to new library API
Change-Id: I8e74efb53b8a8c9a4d69b2a20024434e2868e4e0
2021-11-27 13:13:39 +00:00
Aidan MacDonald
c1709e3194 microtar: Update to latest upstream commit
This is a major overhaul of the library with some API
changes and ease of use improvements, particularly for
creating new archives.

The updated functionality is intended to support a new
X1000 installer framework.

Change-Id: Icf192bb546831231d49303fbf529ef1c1ce8905c
2021-11-27 13:13:35 +00:00
Christian Soffke
4052a9ddcf Manual: Update Metadata limitations
Limit for devices with more than 8MB of memory had
previously been increased from 300 to 500 bytes
for individual fields, and to 1800 from 900 bytes for
buffer containing all fields.

See a8846e3

Change-Id: I63305c50f6f486ad321664babdb94052ea9209a9
2021-11-24 19:17:33 -05:00
Aidan MacDonald
871572b6c3 touchscreen: improved pixelwise scrolling in lists
Scrolling via the scrollbar is now a bit smoother -- it's
now drawn pixelwise, and dragging it will scroll the list
pixelwise instead of rigidly snapping to items.

Several other general UX issues were fixed:

- List and scrollbar now occupy the full viewport height,
  to maximize use of screen space.
- Fixed issue with last item in the list suddenly appearing
  or disappearing while scrolling.
- Prevented scrolling into blank space after the last item.

Change-Id: Ib279ac87ec2f2ffc8834c19ff0af45286e2d6d4d
2021-11-24 19:03:16 -05:00
Aidan MacDonald
44acbc6629 Shanling Q1: enable multi-touch reporting
The FT6x06 driver used for the Shanling Q1's touchscreen
has been extended to report more than one touch point. It
can also return the gesture detected by the controller,
but this doesn't seem to report anything useful on the Q1.

Multi-touch is only useful in 3x3 grid mode since the Rockbox
button API cannot report more than one touch point.

The FiiO M3K uses the same driver so it's been updated to the
multi-touch API, but functionality is unchanged.

Change-Id: I4de42f44808d6eb902e3da212d8f936b7a5042c7
2021-11-24 18:49:03 -05:00
William Wilgus
b39acee3ab rb_info plugin and button,action+context name helper
rb_info is just a test plugin

just some info from the running rockbox install

the real star here is the generator scripts to make actions_helper.c and button_helper.c

Change-Id: I23f7bbdae3f2cffca2490c4df40bb13b0b5d5064
2021-11-22 21:39:45 -05:00
Solomon Peachy
3d07ec46ee jz47x0: Minor code quality improvements in the jz47xx USB drivers
* Replace magic nubmers with #defined constant
 * Tweak some logf messages

No functional changes!

Change-Id: I6a5e4c371a471197a8edbb853967e461621d73f8
2021-11-22 08:08:12 -05:00
Christian Soffke
5bd9ed801f Fix: PictureFlow splash() crash on grayscale targets
On targets where the grayscale framework is used, splash()
won't work (and may crash) if the overlay is not
switched off first. This is not reproducible in the simulator.

Change-Id: Ia22087c4978c8fa247d6d4c64c4b600e4393eebf
2021-11-22 08:06:44 -05:00
Christian Soffke
f9ce8720c4 Fix: PictureFlow crashes
- After appending albums, when memory had been borrowed
from the buflib buffer by shifting memory up using  buflib_buffer_out()
in create_track_index(), memory was later not shifted down using
buflib_buffer_in() (the latter was only called after displaying the track list).

- The picture loading thread was able to allocate memory from the
buflib pool while the main thread was moving the buffer around.
Slide loading will now be paused before shifting operations, and
continued afterwards.

Change-Id: I1c92b6c931fd14ebb885be4bc275148039b76a9a
2021-11-22 08:06:44 -05:00
Aidan MacDonald
3f966b2aa4 touchscreen: make quickscreen easier to use
In absolute pointing mode, the quickscreen now accepts
a touch anywhere in the middle third of the screen edge
to trigger an item, and pressing anywhere else on the
'grid' will exit -- the same as how 3x3 mode works.

Previously it required a touch inside the text viewport
to trigger an item, and exited after any touch outside
the viewports. This made it very difficult to use since
the text viewports are too small to reliably touch.

Change-Id: I971eaeb4a2c67bebef3d7b070a29b897df07b8e7
2021-11-21 20:26:21 +00:00
Aidan MacDonald
bff63a4f90 touchscreen: change odd sentinel value for time of last touch
Using tick 0xffff does not make any sense, use -1 instead.

Change-Id: Id574eb35418c6713c4fc91ed539aadc42fd29aa5
2021-11-21 20:26:20 +00:00
Aidan MacDonald
7e428ad190 touchscreen: force 3x3 mode in the keyboard
In absolute pointing mode the keyboard is virtually unusable since
the keys are too tiny (just 8x6). There are other issues too: for
example putting the keys on top doesn't make sense on touchscreens
and there is a lot of empty space in between keys that serves no
real purpose.

Until these issues can be addressed properly simply force 3x3 mode
when in the keyboard.

Change-Id: I3ea95ae479372f5b5f86ffcc2dbde10a03663820
2021-11-21 20:26:20 +00:00
Aidan MacDonald
ad66c3b807 touchscreen: use repeat acceleration for button input
Touch devices have physical buttons too, and these should be
subject to repeat acceleration. That feature was disabled for
the sake of better touch event responsiveness (apparently).

So, re-enable the acceleration feature & add a special case
to exempt BUTTON_TOUCHSCREEN from acceleration.

Change-Id: I9e097e27457fbd6b824f098e8b325ff35c59dde4
2021-11-21 20:26:20 +00:00
James Smith
990c543ebc Revert "Pictureflow: Update for tag_virt_canonicalartist."
This reverts commit 60125f6bc9.

Reason for revert: See g#3947.

Change-Id: I34bae3cf5a87a5c99b9a4e5755e1a4a69961b28a
2021-11-21 12:44:57 -05:00
Aidan MacDonald
a14347a6b3 quickscreen: fix non-intuitive behavior of top/bottom items
The behavior of the top/bottom items is not intuitive when used
with settings like volume or brightness -- pressing up will
actually *decrease* the setting, and down will increase it.
This patch inverts the direction, so the top item will increase
the setting.

The reason for this is that historically, the quickscreen seems
to have had only 3 directions -- left, right, and bottom. Bottom
therefore selected the next value, and when top was introduced
it selected the previous value.

The counter-intuitive nature of this was later reported as a bug
on the Fuze V2 and got an incorrect fix (commit 2271995517) under
the assumption that ASCENDING_INT_SETTINGS was the issue.

Change-Id: I3be92534469cea4f5efd81ab024288c052367411
2021-11-20 22:07:29 -05:00
Wolfram Sang
16a71a19a8 debug_menu: add format specifier for seconds in RDS timestamp
Add the 6th format specifier for the 6th parameter and show seconds,
too. Most radio stations will update once per minute only, but still...

Change-Id: Ia878bc001c903112df3ed336df260e30eae68e3b
2021-11-20 23:06:29 +01:00
Wolfram Sang
336ea51af6 WIP: Samsung YPR0/1: switch to generic SI47xx polling
Should work(tm). But I don't have the hardware, so it needs to be
tested.

Change-Id: Ic086434f570dcddacb5b7e7a1acce4b8cafc5c03
2021-11-18 16:53:57 -05:00
Wolfram Sang
de0346065b Sansa Clip+: add RDS support
Based on a patch by Amaury Pouly which was based on a patch from Ryan
Hitchman.

I mainly moved the code for polling into the tuner driver so it can be
reused by other targets. I added the CONFIG parameter for the polling
frequency (in ticks) to save energy. Also, I did some minor cleanups.

Change-Id: I95a62e7e1e42c62dbf47ecb27a3b312a42be62aa
2021-11-18 16:44:21 -05:00
Aidan MacDonald
701d4ba77e x1000: Merge makefiles used for the bootloader
All three X1000 native targets turned out to have a very
similar boot configuration and used a nearly identical
makefile. Eliminate this duplication by moving the logic
into the main makefile.

Change-Id: I13044b9675c0abd605b8accdb2fee4f54549b020
2021-11-18 14:14:54 -05:00
Aidan MacDonald
6e61e6f0c8 usb_core: don't buffer control request unnecessarily
Due to how the old control request API worked, the request
pointer (and the pointed-to contents) passed by the driver
must remain valid for the lifetime of the request.

The buffered copy wasn't used consistently anyway, so it
should be safe to just get rid of it.

(This only affects the old API compatibility layer.)

Change-Id: I00294c718a7515a91b84f7c7cae5220c73aa5960
2021-11-14 17:58:39 +00:00
Aidan MacDonald
f8810be6de usb_core: More legacy control API fixes
In the old API, usb_core_transfer_complete() would ignore
any completions on EP0. The legacy control API will also
ignore most completions on EP0, but it only did so after
filling in the completion event.

If the driver submits a spurious completion on EP0, then
this could clobber a previously queued completion event.

Fix this by deciding whether to ignore the completion
*before* modifying the event data.

Change-Id: I68526898a96efa594ada4e94bb6851aaaf12e92a
2021-11-13 18:37:33 +00:00
Christian Soffke
a4e422db9e Stop audio before applying skin
Should prevent a delay, dropouts and memory corruption
that can occur when applying a skin while music is playing

Change-Id: Ic2c8fd788117a7d797fb315a36e366a2e34d3460
2021-11-13 08:13:04 -05:00
William Wilgus
11ddc6cf1c announce_status Fix USB fall through and usb on plugin start
When running and USB plugged announce status ack'd the USB and then un intentionally fell through to EV_EXIT
this caused the thread to exit but not the TSR hook

Now: plugin keeps track of usb status and doesn't announce till usb is unplugged again
on unplug the start-up beep is played to announce its presence

announce_status on startup blocks usb since USB handling is done in the thread that hasn't started yet
Now: don't start if USB is plugged

Plugin now beeps if it couldn't play the announcement excpept for missing voice file unfortunately

Change-Id: I69cf7e687508ce02358432e7bd1adc27c78c4072
2021-11-13 03:38:28 -05:00
Dana Conrad
59ef877c94 x1000: delay power thread until valid battery read
Appears to return 0 until the axp has (presumably) completed
its first real measurement.

Note about erosq: keep the power_inint() delay large to ensure
nothing breaks in the bootloader for the time being.

Change-Id: I444e858207cc401c42f1e6ceacf067ad543d4ff8
2021-11-12 16:31:27 -05:00
Aidan MacDonald
ee27ba416f uisimulator: add keyboard mappings for M3K scrollstrip
Change-Id: I2e6d5464fac6d9e1e292b17f5c1bbf646c1555de
2021-11-12 19:51:23 +00:00
Christian Soffke
fbf83dc4ce Add setting for disabling wrap-around lists
Allows user to decide whether scrolling lists will wrap around
to the opposite end after the first or last item has been reached.

Change-Id: I22156812cf4c857ddc4b6c48c1cef013b1985260
2021-11-11 17:31:10 -05:00
William Wilgus
30a23fdd6d folder_select.c move to plugin as db_folder_select
handles the folder selection for autoresume paths and database paths

folder_select uses the pluginbuf to build the directory tree
hopefully having it as a plugin will make it stop corrupting
TSR plugins like battery_bench and announce_status

I left the original include and source in the gui directory for now
there are currently no other users..

Change-Id: If40ccb5a2bec4286a0616c10dfa7e1479a592808
2021-11-11 00:28:59 -05:00
William Wilgus
cf009b4cbb pitchscreen make it a plugin
full commandline parsing
    -has pitch, speed, time_stretch
 /* pitch_screen
 *  accepts args -q, -g, -p=, -s=, -k=; (= sign is optional)
 * -q silences output splash
 * -g runs the gui (Runs immediately)
 * -p100 would set pitch to 100%
 * -s=90 sets speed to 90% if timestrech is enabled
 * -k=true -k1 enables time stretch -k0 -kf-kn disables
*/

Change-Id: I900c4b5d184e12ddbe47509f66fdf3e55193a520
2021-11-10 22:38:37 -05:00
Wolfram Sang
67fb558c89 as3525: debug: use 'kHz' where applicable instead of "MHz" or "KHz"
Change-Id: I84c24402d664b5a1a37c81aebfc438bd04bc8af4
2021-11-10 21:53:15 -05:00
Wolfram Sang
eb4455b00b manual: add space after \ActionFMPreset
Change-Id: I27a4bc07ead6de6c65ebd61f34d5f78a4057d738
2021-11-10 18:19:41 -05:00
Christian Soffke
e6313201c1 Playback: Skip invalid entries from playlist
Reverts to the behavior pre-commit dfff938 with the additional change
that it will not skip the last entry.

Change-Id: Ia03da03b1bdccd8a9591548cd0ca9f58f4767947
2021-11-10 16:34:27 -05:00
Christian Soffke
ce18e13504 Manual: add Single Mode to config file options
Change-Id: I37d12185d59f251100234400d59e41d0e2954b04
2021-11-10 15:58:39 -05:00
Christian Soffke
a7d09f8104 PictureFlow: remember inspected album artwork
Each time PictureFlow was launched, it would rebuild the
album artwork cache from the beginning.

Depending on the number of albums, this could take a while
and resulted in choppy scrolling.

PictureFlow will now remember how many albums have been
inspected already, and only rescan and write new artwork
when the album index cache gets updated or rebuilt.

Change-Id: Icd78106dacea44b80904ac609caa355cc9113168
2021-11-10 15:43:57 -05:00
Christian Soffke
687096e3f5 Fix: Shortcuts Menu data loss & crash
- Shortcuts Menu would delete SHORTCUT_TIME shortcuts
when deleting any other shortcut.

- Shortcuts would crash or show wrong number of items
after deleting a shortcut and then launching a shortcut
when simplelist_show_list was executed again.

Change-Id: Ia87c94a364c516fd662cb3c7d245c566a3fa91ca
2021-11-10 19:56:19 +01:00
Dana Conrad
9ee321cf90 ErosqNative: increase battery stabilization delay again
Hopefully 250 is long enough for any devices out there!

Change-Id: I80e084dceb62acd8d1f51d873b18a4be9c3447d8
2021-11-10 07:22:57 -05:00
William Wilgus
58462184d1 folder_select.c partial rewrite -- remove static, add full notification
| with some code refactoring we can eliminate the static
  char buffer in get_full_path()

  I'm guessing making the functions recursive prompted the static buffer
  I don't see any reason we can't just pass the same buffer
|
  During tested I noted failure after buffer was full
   -- splash added for buffer full notification

  added some logic to not add partial entries and try to find a
| selected item that will fit in the remaing buffer
------------------------------------------------------------------------

While looking through the source I noticed a few potential
pitfalls with the current code.

Namely the stack allocated temporary buffer
sized to setting_len.

I also noted the rigid vect[32] with the timeless --
/* 32 separate folders should be Enough For Everybody(TM) */
and decided to make it a bit more robust

The saved items are hashed with crc32 on all the paths
and a hashed_len is kept to aid in the buffer full message before the
user actually goes to save the changes
(assuming they even get the message)

In the old code, buffer might be the same since it ran out of
space and didn't get their later selections

the hashed_len could easily be turned into a way to get a needed buffer
size as well for someone in the future just pass a really large maxlen

I made get_full_path non recursive since it liked to blow the stack
while embedded in all the other recursive calls making it a pain to debug
(the real reason the buffer was static?)
traverse first from the current folder to root mutating the
parent pointers to point at the previous child
next traverse back to the folder unmutating & taking names on the way

Folder depth is now uint16 65535 levels is probably excessive
children_count is also uint16 as well
I made the first folders below root '/' stay below root
instead of shifting since the horizontal real estate is limited

slightly smaller than it began but hopefully faster & more reliable

Change-Id: I348f61baf865cccdeacddfd9d50641a882e890fc
2021-11-10 02:34:06 -05:00
Christian Soffke
b14df9077f 2048 plugin: Fix disappearing numbers (FS#13303)
Change-Id: I9df42b9ea1dbf4de0713fe1df583e4a16a4a9426
2021-11-09 10:30:28 -05:00
Aidan MacDonald
7af98ce6bb usb: Fix possible SET ADDRESS data corruption
The address from the packet needs to be saved before sending
the response -- after the response the request being pointed
to could get overwritten. This used to be done correctly but
I unintentionally broke it when updating the handler to the
new control request API.

Change-Id: I9b11548baf20dce44a82301731405dc8e8f1cef3
2021-11-09 14:45:07 +00:00
William Wilgus
9f1cab154c lcd-16bit-common move bugfix to sim only
Ive seen no ill effects having this disabled on target so
limit it to the sim to stop Address Sanitizer from dumping
on the extra byte read. the bad data is never used AFAICT
since the loop ends

Change-Id: I8cb54e9d1f8fe28747867d861a015edb3dbfa5ff
2021-11-08 17:52:09 -05:00
Aidan MacDonald
8c954c68e5 usb: Attempt to fix race condition in compatibility layer
Because usb_core_legacy_control_request() is called by an
interrupt handler the global variables used to track the
current control request at the very least need to be volatile.

It might also be necessary to disable IRQs but I'm not sure
of that.

Change-Id: I0f0bb86d0ad63734e8d3c73cb1c52fedf5a98120
2021-11-08 21:46:36 +00:00
William Wilgus
aed113042d RFC settings & nvram.bin save setting to tmp file save old
save to a .tmp file on save and rename on next load

I think this should pretty minimally invasive as the same file
still gets overwritten in subsequent attempts until it is loaded again

the save path is still static
so it won't cause issues holding up shutdown.

load might be a bit slower with the searching for tmp+current file
and renaming them

Plus there is now a backup of your last settings file

Change-Id: If95618b93a0ba7954d5d8cab1d6ea3f07e658509
2021-11-08 16:15:47 -05:00
Christian Soffke
25941d5e0c fiiom3k (keymap): Allow scrolling up/down in keyboard context
Change-Id: If04a1243120e1d579f660ab01da9126cdbeda8d2
2021-11-08 14:25:53 -05:00
William Wilgus
f07bacac9e plugin_screen don't save settings on every plugin execution
we shouldn't need to save the last_screen unless the plugin were to
bypass the normal shutdown procedure

if its a crash do we really want to resume the plugin?
its it is intentional save the settings prior.

Change-Id: I994ed256e7b9e88add0c846825a39b298e2644dd
2021-11-07 12:48:46 -05:00
William Wilgus
cfbc1cfce1 Shortcuts, allow plugins to run through inbuilt file browser
since the plugin browser now exits before running plugins
it has already loaded the dest data for the plugin
the plugin will be run from the root menu with the open_plugin run key

BUT, since the calls originated from the shortcuts menu
it overwrites the run key with its own
this patch allows the shortcuts menu to overwrite the dest
key as well so it can run the loaded plugin

Change-Id: I63912071d720df01c6fda25d92d9541818e52a43
2021-11-07 03:25:14 -04:00
William Wilgus
1d67f83c58 root_menu.c fix recent regression for shortcuts add resume for plugins
recent changes broke shortcuts when they originated from the root menu

I mistakenly thought GO_TO_ROOT only happened at start and otherwise was
GO_TO_PREVIOUS

this commit also adds a few missing features for Start In Previous
to resume the last plugin running at shutdown

Additionally GO_TO_ROOT now overwrites the global last_screen so you can
return to the main menu on next startup

Change-Id: I86bf842616e25dc3d4f684ff9d476e6a5ba96b04
2021-11-07 01:49:15 -05:00
Moshe Piekarski
13ac485625 Add single playback mode
(FS#482)

Change-Id: I8b4c3e4ffb6975122153e82f2b9848c382195163
2021-11-05 09:20:04 -04:00
Christian Soffke
22c2e0a7c2 Fix: Reset onplay-context for playlist viewer
The onplay-context was previously not reset when using the playlist
viewer, which led to a bug if onplay() was last called in the context
of the database. If you then tried to insert songs into a dynamic
playlist using the playlist viewer, a selected track from the database
would be picked, instead of one from the displayed playlist, due to
special behavior of add_to_playlist() within the database context.

Change-Id: I727d96fc1bfb2454ed3535959c1b0044ff7d6359
2021-11-03 13:28:10 -04:00
Solomon Peachy
5e663f0420 xduoox3ii: Ignore the remote events when headphones aren't plugged in
This prevents the actual insertion/removal from triggering false events

Change-Id: I54114ce903e110c31eca6b2ce258a0cf5f6b782b
2021-11-03 13:16:40 -04:00
William Wilgus
2731144094 exit file browser before running plugins
now that the plugin browser is resumable
exit it before running plugins

this causes a problem with the open plugin
shortcuts that call other plugins
but its now handled in count limited loop
so plugins can run plugins in a chain

and overall with less overhead too..

the problem remaining --
the plugin exits on USB, returns to ROOT

the browser resumes the
directory next time you select plugins
making for an unwanted auto return

Change-Id: If401f698207cbae824e95d69a378f13456a5dee4
2021-10-31 21:49:31 -04:00
William Wilgus
684565b8f3 USB fix red for device without HAVE_USB_POWER again.
Change-Id: I3122d532cbb8d5b5cb9040f08707c1514bc1b18e
2021-10-31 21:36:21 -04:00
William Wilgus
d72a0ed65d Use USB events for storing plugin_menu state
use usb connected callback to cancel menu reentry after USB plug/unplug

Change-Id: I8267deed6e8ada94ca527392f56f50ef22def1d7
2021-10-31 12:42:24 -04:00
William Wilgus
7a6737f471 USB Events fix red on devices without HAVE_USB_POWER
Change-Id: I112e6379d4bed019d7e047e5802f104e250d926e
2021-10-31 12:30:27 -04:00
William Wilgus
894a9d9063 USB add Insertion and Extraction callback events
We have this nice event library laying around probably a few more places
we could use event callbacks

Change-Id: I9180fa9d78788d161f2587110644ca3e08df6f50
2021-10-31 12:02:38 -04:00
Christian Soffke
0b1c05db40 Have ACTION_TREE_ROOT_INIT cause ACTION_STD_MENU
So that a “scroll left” button can be repurposed
for returning to the main menu when there is no
existing menu button mapping.

Change-Id: I38515943313f69cc3241b3f523c94ea012471b88
2021-10-30 01:20:35 +02:00
Christian Soffke
139d447c6a fiiom3k: Modified keymap
see https://forums.rockbox.org/index.php/topic,52917.msg249425.html#msg249425

Change-Id: I8944434c5a840d0d2e35b9591dd72334430b8b09
2021-10-30 01:07:00 +02:00
William Wilgus
dc24a18cef PLUGINBROWSER make resumable
make the plugin browser remember the last item between invocations

this has bugged me for the longest time dealing with the plugin_menu

Fix a very old bug fix for reloading lang strings in the lang menu
FS#8117, sending multiple ENTER_MENU_ITEM callbacks from different
areas of the code makes it hard to keep track of where your callback
is originating

Change-Id: Ib0a61558c11ee4c772134378a7020ac0e10fc4ee
2021-10-29 03:07:42 -04:00
William Wilgus
8ee24d8cb4 onplay calls plugins to run other plugins
Change-Id: I7c1593c93debc0ac5c0f1b2e839ec0eb1bd375b7
2021-10-27 22:44:35 -04:00
William Wilgus
f1ef5ab8a6 menu.c do_menu code cleanup
no functional changes here just removal of cruft

Change-Id: Id16c3607608d8f1ddcaf219dcd346f7a996aec5d
2021-10-27 15:44:38 -04:00
William Wilgus
1cec2c7a73 root_menu fix red for devices with RTC_ALARM but no tuner or recording
Change-Id: I36b21c3d1ef4a4ce3b275a0ee793fbf9538b69ae
2021-10-24 00:12:06 -04:00
William Wilgus
3e10ecb82a root_menu.c code clean up -- stir the ifdef mess?
Change-Id: Ia0a847b5552766e5c78dd2ab00d019e631d600aa
2021-10-23 23:30:42 -04:00
William Wilgus
36d319b084 Open Plugins Ignore hash for lang Ids
no need to look up a hash when we have another searchable field
remove some un-needed checks

Change-Id: I394e5f796a164aa4bcb68a56ca02cd6a7f18d332
2021-10-23 02:45:54 -04:00
William Wilgus
789b2e089e plugin.h change plugin_open() path and parameter to const
it doesn't modify the args..

Change-Id: Ie8e1e36a060231c0137292c770e4f77da3b8203a
2021-10-22 23:17:33 -04:00
William Wilgus
f4c7dc933d lua add ability to pass PLUGIN_ ret vals with os.exit() + add defines
Change-Id: I45998245271fbd8fee4534f8497b014025e4dcc7
2021-10-21 22:28:05 -04:00
Christian Soffke
1697b13693 whitespace fixes
Change-Id: I86880595b78e3cae62361c32ca57cf6f6a4ad963
2021-10-21 22:42:01 +02:00
William Wilgus
cf96a4d386 file tree filetype_list_viewers exit from list before execution
no need to do a callback just to exit the list right after
executing a viewer plugin

Change-Id: I4598ab189bd7d1f350156af75480cbe7103e9e4c
2021-10-21 03:16:54 -04:00
William Wilgus
af573708ed extend filetype_get_plugin() search for viewer by fileext
I noticed the way filetree switch was modified
for the lua (and then) opx and  open plugin viewers
since builtin files are assumed to be handled in the filetree switch
what if instead filetype_get_plugin() could search the available viewers

this could probably be extended further with selectable defaults

Change-Id: I40f74cd698f4b788a0adcbebf32c08a970df29a5
2021-10-21 01:45:47 -04:00
William Wilgus
9878226e4d filetree.c move static and stack allocated buffers around
it makes more sense to make the main buffer static and make the
second (infrequently needed) buffer as stack allocated

Change-Id: Ide7c1a7a312124e47a23ed0ab75a90d7b8be982e
2021-10-20 16:05:21 -04:00
William Wilgus
e1553d860d Open_Plugin add checksum on struct offsets
Adding a checksum over the struct offset will allow checking
for compatibility across machines rather than using packed structs
to ensure compability

For any file created by the user from the device  this isn't really a concern

But for files between machines, across installs (sim v device),
possibly even across compilers this at least will alert the user
rather than returning junk data

Change-Id: Id0531bbaa7013dce24dece270849f0a10ac99c20
2021-10-18 23:30:27 -04:00
Aidan MacDonald
0f68866ae5 fiiom3k: bump power on delay to 200ms
Needed due to a report that 80ms was not working.

Change-Id: I5f0f750b0530f5b84ffba58c5d7ff8b283095c4b
2021-10-18 23:03:04 +01:00
Aidan MacDonald
957add9d75 fiiom3k: adjust power on delay to 80ms
OST timer fix (7a5130a277) causes a boot failure on some units,
the battery voltage reading needs more time to stabilize.

Change-Id: Ic4a9ba90a16fab8ac6d27dbbe7af381f7c810f8f
2021-10-18 21:45:03 +01:00
Dana Conrad
6253cdebed ErosQNative: Fix mdelay calls due to g3859
The battery stabilization delay call seems to need to be
about 170 at minimum now, let's do 190 for safety (+20ms).

Change-Id: Ifd0248891abe827dfcc3e6baf48cc5bef0d0cc1c
2021-10-16 16:58:19 -04:00
Aidan MacDonald
7a5130a277 x1000: fix broken OST2 timer prescaler
It turns out the prescaler fields in OST_CTRL are 2 bits wide,
not 3. The programming manual (as usual) is ambiguous and its
diagram shows 2-bit wide fields, but the bit positions in the
text give a 3-bit wide field. Ingenic's Linux code and my own
testing shows that they are, in fact, 2 bits wide.

This caused the OST2 divisor to be 16 instead of 4; the OST1
divisor was correct. This means that all udelay/mdelay calls
took 4x longer than they should've. After this change the OST2
prescaler will be 4, as intended, and udelay/mdelay calls will
wait for the intended duration.

Change-Id: I2ac0a9190f49b59a840c649bf586131f5f9fde82
2021-10-16 16:58:19 -04:00
Christian Soffke
bf54002bc1 Fiio M3k UI Simulator: Fix upside-down mapping for volume buttons
Change-Id: I57a1ee1ac43ea0eb5587e6249ef6bb06ab7342af
2021-10-16 16:49:56 -04:00
Aidan MacDonald
d085d01f5e x1000: enable DMA for USB driver
This boosts USB transfer performance a bit, ~10% for reads and
~25% for writes, for large-ish file transfers. Rockbox is still
around 33-50% slower than the OF.

Change-Id: I236a1e5c69a290c47ed27b70cb2631111fc157ed
2021-10-16 21:14:42 +01:00
Aidan MacDonald
4fc37eb47f usb-designware: port to new USB API
List of all platforms using this driver:

- Sansa Clip+ (tested, works)
- Sansa Clip v2 (untested)
- Sansa Clip Zip (tested, works)
- Sansa Fuze v2 (untested)
- iPod 6G (untested)
- iPod Nano 2G (untested)
- FiiO M3K (tested, works)
- Shanling Q1 (tested, works)
- Eros Q (tested, works)

Change-Id: I403ec64b030ea38f22cb52b31865639a78cd11e4
2021-10-16 21:14:42 +01:00
Aidan MacDonald
24294bda15 usb: ensure RX buffers are a multiple of the packet size
When performing an OUT transfer which is not a multiple of the
max packet size, the last packet of the OUT transfer should be
a short packet. However, there's no guarantee the host sends
the expected amount of data in the final packet.

The DWC2 USB controller handles this case by accepting any size
packet and copying it out to memory. So if the packet is bigger
than expected, it'll overrun the caller's buffer and Bad Things
will happen.

The USB 2.0 spec seems to endorse this behavior. Section 8.5.1
says "an ACK handshake indicates the endpoint has space for a
wMaxPacketSize data payload." So it is possible that other USB
controllers share the DWC2's behavior.

The simplest solution is to force all USB RX buffers to be big
enough to hold the transfer size, rounded up to a multiple of
the max packet size. For example, a transfer of 700 bytes would
require a 1024-byte buffer if the MPS = 512 bytes.

Change-Id: Ibb84d2b2d53aec8800a3a7c2449f7a17480acbcf
2021-10-16 21:14:42 +01:00
Aidan MacDonald
a665c1faad usb: remove dead code in usb_storage driver
Change-Id: Id6fc3520dad1adace33fd1014288ccb4cf5818af
2021-10-16 21:14:42 +01:00
Aidan MacDonald
988f244c74 usb: port usb_storage control request handling to new API
Change-Id: I1a19e09fdc0f05473d53c39bab0761d5cb8f6ff0
2021-10-16 21:14:42 +01:00
Aidan MacDonald
1b2cc053d3 usb: port usb_hid control request handling to new API
Change-Id: I9028cf06e91c9fcbe271f6ad81d6b252cb4e7cec
2021-10-16 21:14:42 +01:00
Aidan MacDonald
3318ba4795 usb: port usb_serial control requests handling to new API
Change-Id: I1405c9279e0e8e490e2bb2d03ff192b36db2634b
2021-10-16 21:14:42 +01:00
Aidan MacDonald
77731c3579 usb: port usb_core control request handling to new API
Change-Id: I3850c9cfcb87831e56884c83e31f728590b76f83
2021-10-16 21:14:42 +01:00
Aidan MacDonald
82efb1150e usb: implement new API with legacy emulation layer
All existing USB drivers now define USB_LEGACY_CONTROL_API to
enable the emulation layer.

Control request handlers will be ported in follow-up commits.

Change-Id: I4be1ce7c372f2f6fee5978a4858c841b72e77405
2021-10-16 21:14:42 +01:00
Aidan MacDonald
dff8320a5d usb: add request data argument to all control request handlers
Change-Id: I237143fa0d95c914b8e25ed22f8acde96ec00551
2021-10-16 21:14:42 +01:00
Aidan MacDonald
b69d43c247 usb: give USB transfer completion events two data pointers
Change-Id: I036cc7f02c2f86a364d2dba59493a6aa893f2c16
2021-10-16 21:14:42 +01:00
Aidan MacDonald
ec164c389c usb: introduce new control request API
Change-Id: I6545d8985ab683c026f28f6a7c0e23b40d0a6506
2021-10-16 15:58:43 -04:00
William Wilgus
71cc1e78fd Open_plugins.c bugfix address of packed struct element
helpful gcc warning after g#3895 change to packed struct

Change-Id: I89f765da94eeee14c606ea8ebaab5e219dceb2ac
2021-10-16 11:04:17 -04:00
William Wilgus
15ee740060 Open Plugins search by langids
On language change Stored plugins may fail to run due
to hashing on lang dependent string

allows searching by langid when the supplied key is LANG_PTR

Fixes error on hash flush where previous entry was not restored

Adds routine to update file in-place (for ATA targets)
Other targets make a temp file to copy entries

breaking changes:
ROCKBOXDIR is no longer hashed since
/.rockbox directory may soon be able to be changed
packed attribute added to op data structure -- oops

Change-Id: Ieead26609559b9c5bdadc6a95227cb2bfbb9f71c
2021-10-16 10:18:44 -04:00
William Wilgus
6fb942d8ff skin engine - fail gracefully when %Sx is used on non lang id string
CheckWPS doesn't catch errors involving translated strings
Instead of breaking old themes when the langids no long exist
return "<ERR>"

Change-Id: I0d744cd48bb5a27e735fce3f6f740450d1f6a55a
2021-10-13 18:02:19 -04:00
Dana Conrad
e0468074fe ErosQNative: Remove duplicate play_last_sample() call
My brain dun goofed, oops

Change-Id: Ifd57310f3ba105cdc37c4342691cbc589a492310
2021-10-06 17:36:53 -05:00
James Buren
c0a59b9a6a usbstack: Revise usb string descriptor table to use enum values for indices
This makes it possible for macros of conditionally included string
descriptors to get a correct index no matter what other usb drivers
are enabled or disabled due to the nature behavior of enums.

Change-Id: I8ccebbd316605bed0f5d90b6b73fab4a333c02fa
2021-10-06 17:59:17 -04:00
Aidan MacDonald
4be81c2385 x1000: tweak USB fifo sizes
The old sizes limited the number of usable endpoints and were
unnecessarily large.

Change-Id: Ia17d3b62ecc40c8ca289d78f2275c7842c09deed
2021-10-06 22:40:52 +01:00
Dana Conrad
67d4da5342 ErosQNative: Initialize AIC FIFO to -1
Write -1 to AIC_DR to initialize the "last sample"
to -1 in order to prevent power-on clicks.

It appears necessary to completely fill the FIFO,
otherwise I was able to get a click out of it, however
uncommon it was.

Not only does this prevent a click when first
playing a song after power-on, but it also seems to prevent
any click at all when powering on - previously, a small
click may have been heard when first booting.

Change-Id: I2b81c2fa6af9809ef1c354d7a08ca8f9893a7690
2021-10-06 17:31:30 -04:00
Aidan MacDonald
465c216636 Fix includes in usb_class_driver.h
Change-Id: I602ec80d02b5f4f586386026a6312d048fa7dac3
2021-10-06 21:31:42 +01:00
Aidan MacDonald
3ae6fbc600 x1000: default to sending 0 samples on underflow
Previously it used the last sample, which turns out to be broken.
The AIC appears to send out a random non-zero sample continously
after boot -- probably because the last sample is uninitialized by
the hardware. Disabling playback is supposed to make it send zero
samples irregardless of the LSMP bit according to the docs, but it
doesn't seem to work this way.

- Change eliminates the white noise heard on the M3K after boot.
- Change has no adverse effects on the Q1.
- Leave Eros Q on the old setting since sending zeros exacerbates
  clicking due to DAC's automute feature.

Change-Id: I9996793fc34f4475b19700d076b11505353b3836
2021-10-05 12:46:01 +01:00
Aidan MacDonald
fd568d90a4 m3k: don't use mixer controls for volume control
According to a forum user, there's an audible click when changing
the volume between -32 and -32.5 dB with some headphones. Fix this
by not (ab)using the DAC digital mixer for volume control.

The mixer only provides an extra -6 dB of hardware volume range,
so the only side effect is that software volume will now kick in
at -32 dB instead of -38 dB.

Change-Id: If24d9bc0058eff3c1a29aefb155a2e378522623c
2021-10-05 12:46:00 +01:00
William Wilgus
0a1d25d27a Sansa E200v1 Bootloader ensure USB unplug is detected
Change-Id: Ibec5bf5e0f7a518fafc7b9fb8b95d420ef4ddfc0
2021-10-04 16:42:36 -04:00
William Wilgus
e6740ed562 Sansa E200v1 Bootloader add break statement to exit to load fw
Change-Id: I2516adc28d439dcbdb56f1ac51bd12d619a5f3d8
2021-10-04 16:02:06 -04:00
William Wilgus
7c67a48332 Sansa E200v1 Bootloader attempt at enabling USB in boot loader
there is a 1MB free region that is used to load the firmware but we
shouldn't need that till after a USB connection

so here is my 2nd try

Change-Id: I2552db3a7fba019d7e7188984432f758ddafe548
2021-10-04 10:56:33 -04:00
Aidan MacDonald
75524a7eec Shanling Q1: default to USB force charging
Force charging must be set or the Q1 will not draw 500 mA from
an AC adapter (see 0ca0940f01).

Change-Id: I4ec6dc7728a5aa4d7f07580556efb960948c24a8
2021-10-02 16:14:17 +01:00
William Wilgus
a62fdf4751 scroll engine, allow clipped text in viewport
loosen the requirements on the scroll viewport allow clipped text

Change-Id: I7099d423ccfbd7bae12e6ba43b8a6b4b864175b7
2021-10-02 10:31:04 -04:00
Aidan MacDonald
3a89fdee96 x1000: fix hang that may occur in USB mode
Upon getting a USB reset, the USB core will update charging
current by calling usb_charging_maxcurrent_change(). On all
current X1000 targets this may cause a hang, since changing
the charge current involves a blocking I2C transaction.

Eg. if the host issues a reset when we're already configured
as part of error recovery, the change from 500 mA -> 100 mA
will cause a hang.

Change-Id: I5b45272c01fa16b179ae3d16bbc50c7fab9a416b
2021-10-02 15:09:46 +01:00
Dana Conrad
d435bb77b5 Yes/No Screen Keymap: add fallbacks to targets lacking them
With the addition of ignoring unknown actions to the yes/no
screen, several (mostly older) targets won't have keys defined
to cancel out of the yes/no screen.

Adding fallbacks to standard context to correct this.

Targets:
Shanling Q1 - changed, untested (doesn't appear sim has buttons mapped)
Sansa Connect - changed, untested (can't figure out sim keys)

HM60x - changed, untested (sim won't build)
HM801 - changed, untested (sim won't build)
ihifi - changed, untested (sim won't build)
MA - changed, untested (sim won't build)

M3 - changed, tested on sim
X5 - changed, tested on sim
MPIO HD300 - changed, sim tested
MPIO HD200 - changed, sim tested (remote not tested)
Vibe 500 - changed, sim tested

Change-Id: Ib5290ada8e12bb845d3840e481e8533515b42e95
2021-10-02 10:07:02 -04:00
William Wilgus
95b10ac74e Add ability to dump cpu boost log to disk, include thread names
0.) B 0 /rockbox/apps/main.c:405
1.) B 1 /rockbox/firmware/kernel/thread.c thread[dircache]:1508
2.) B 2 /rockbox/apps/tagcache.c:4772
3.) U 3 /rockbox/apps/tagcache.c:4793

add logic to show count after log rolls over
clean-up

Change-Id: Ibda0a56e5d8d89aa8b7649f4f9fa64eb1ff0e08f
2021-09-30 21:13:22 -04:00
Solomon Peachy
5883cb4a52 languages: Prefer the translated <dest> over a <voice> that is identical to English
A lot of our translations have voice phrases that are identical
to English, even though they are translated in the display text.

In these scenarios, just use the translated text when generating
the voice files.  These will still be flagged as problems by the
translation web site!

Change-Id: I39a9888eaad650e4c847cccc60bd89cf44ae150a
2021-09-29 10:54:19 -04:00
Solomon Peachy
757766e807 languages: Prefer translated <dest> over untranslated english <voice>
When a prase is translated but the voice is not, default to using
the translated phrase over the untranslated English voice

Change-Id: Ie2cb1c6d0c370f450586b8a4653f1a073f8aec9d
2021-09-29 10:07:51 -04:00
Solomon Peachy
2ebe69b67a voice: Enable nightly Serbian & Norweigan voice generation.
The general rule is that languages with at least 90% coverage are
enabled.

Change-Id: I610b17dae95477f251067f75995502d089fc9094
2021-09-29 06:45:16 -04:00
William Wilgus
cb2ee6b6cb voice_thread.c ensure cpu gets re-boosted after Q_VOICE_STOP event
when the voice system is doing queued voice clips you can get a
voice_stop event which cancels the cpu boost
but the quiet count was not reset to 0
next clip may play unboosted causing stuttering

just boost unconditionally on Q_PLAY
it'll unboost after timeout if unneeded

Change-Id: Ib39df5d9f8a9e41299147a885048cf1361180dd6
2021-09-29 01:18:00 -04:00
William Wilgus
b662ff945a Bugfix AS3525 usb driver unboosted the cpu without first boosting it
Change-Id: Id2d45870a9128b19ace0e8d5c16d3b3fa4b923dd
2021-09-29 01:17:45 -04:00
James Smith
4f450b6e11 Revert "Playlist Viewer: Add file properties to playlist entry menu."
This reverts commit 67716c6b46.

Reason for revert: Only partially working on bare-metal ports, so revert this for now.

Change-Id: I5cea7d2b6466a43aaff4c3eb90ab5d7aee736a5b
2021-09-29 00:53:48 -04:00
James Smith
a7f2d1ffb4 Revert "Fix the build for 67716c6b."
This reverts commit 483563a1b2.

Reason for revert: Only partially works.

Change-Id: I28e412bf4eeb515cf72845f27d5772746cebc5e5
2021-09-29 00:53:29 -04:00
Solomon Peachy
eeacffbd15 voice: Allow voiced date format to be overridden
This adds LANG_VOICED_DATE_FORMAT, a format string with these tokens:

 Y  4-digit year
 A  Month name
 m  numeric month
 d  numeric day of month

The default (english) is '23 January 2013'
In comparison, english-us is 'January 23 2013'

Change-Id: I055a3287c104260dec63bba58d36fdae9df1ed16
2021-09-28 21:58:11 -04:00
Solomon Peachy
70e72e01d2 talk: Add support for languages that swap the tens position in numbers
For example, English would say "231" as "two hundred thirty one" but
many other languages would say "two hundred one and thirty"

So, if VOICE_NUMERIC_TENS_SWAP_SEPARATOR is not an empty string, swap
the tens and ones position and use that string ("and" in the above
example) as the voiced separator.

Change-Id: I69f8064d44b3995827327cabae6ad352bf257d04
2021-09-28 17:25:28 -04:00
Solomon Peachy
3cc7509e81 voice: Add default presets for Danish.
(The language remains <75% translated)

Change-Id: I7c9b7627e745aafc60a3d8965e7aceaa63c7664c
2021-09-28 17:25:28 -04:00
William Wilgus
fe5c1c8126 Revert "voice_thread.c ensure cpu gets re-boosted after Q_VOICE_STOP event"
This reverts commit 4695f80230.

Reason for revert: Something else is unboosting the thread this is a red herring

Change-Id: I0e71e0065b13129bbf59d45416c15799c446dcad
2021-09-28 01:27:52 -04:00
William Wilgus
4695f80230 voice_thread.c ensure cpu gets re-boosted after Q_VOICE_STOP event
reset quiet counter after Q_VOICE_STOP

when the voice system is doing un-queued voice clips you can get a
voice_stop event which cancels the cpu boost but the quiet count was not reset
next clip will play unboosted causing stuttering

Change-Id: Icaada443e2399bf146e30bebee599db5b379063a
2021-09-27 23:36:49 -04:00
Dana Conrad
6d98c9e6b2 ErosQ Native: Adjust battery % scale
Adjust the battery scale to be a little better. I've set
the 100% (discharge) point to be where the battery sags to
when it is done charging but still plugged in.

Not quite sure how best to set the charge scale, it's just
equal to the discharge scale for now.

Change-Id: I9a2730c0b2051300af9eeddb4f67164f38a29002
2021-09-26 18:27:53 -04:00
Solomon Peachy
38b2648f48 win32: Add a stub for os_modtime() to make sim builds happy
Change-Id: Iea90776df2a92777c8e07c5a6b6635b6734d6690
2021-09-26 09:31:58 -04:00
Solomon Peachy
412e76b487 configure: --no-ccache must disable CCACHE for $HOSTCC too!
Accomplish this by setting CCACHE_DISABLE=true

Change-Id: Ie930fc4e828ebb7a29234c1a8f371980489d5668
2021-09-20 20:14:37 -04:00
Aidan MacDonald
672bbe434b usb: rename usb_drv_recv() to usb_recv_recv_nonblocking()
IMHO the current name is somewhat misleading:

- usb_drv_send() is blocking and we have usb_drv_send_nonblocking()
  for the non-blocking case. This inconsistent naming can only
  promote confusion. (And what would we call a blocking receive?)

- Other hardware abstraction APIs in Rockbox are usually blocking:
  storage, LCD, backlight, audio... in other words, blocking is the
  default expected behavior, with non-blocking calls being a rarity.

Change-Id: I05b41088d09eab582697674f4f06fdca0c8950af
2021-09-20 22:41:29 +01:00
Aidan MacDonald
99f333c64f usb_hid: fix accidental fallthrough
Successful SET REPORT requests would spuriously fail because of the
fall through to GET REPORT.

Change-Id: I8e7d1a1120afc6975d07d47b11c12c9e9ca51dd2
2021-09-20 17:38:56 -04:00
James D. Smith
483563a1b2 Fix the build for 67716c6b.
Change-Id: I3917f64313345cf39d6105a0c0bc2f2a4617be8a
2021-09-19 21:28:10 -06:00
Dana Conrad
0ca0940f01 Make USB Charging default value configurable per device
A reasonable default assumption for a user
would be that they can plug their device into
a USB AC adapter and it will charge with as much
current as it reasonably can. With the previous
default, an AC adapter will only do 100mA, basically
a trickle charge.

Make this configurable default per-device, so as not
to break old devices without testing.

Define TARGET_USB_CHARGING_DEFAULT to USB_CHARGING_FORCE
to use the new default.

Tested on both erosQ Native and M3K.

Change-Id: I77265d356a41d67357ebc6e9f7e0c25a37b74931
2021-09-19 21:13:09 -04:00
James D. Smith
5765deb08e Add Fabrice Bellard to the CREDITS.
Change-Id: I62ec626007408d1d760b048cfd4899128c54be4a
2021-09-19 21:06:09 -04:00
James D. Smith
760277e096 Dir cache: Fix resume of relative path playlists.
Slightly modified from original patch by Fabrice Bellard.

Change-Id: I9ae04fa460f0f1b9c616e6f99505d4c5d4358f68
2021-09-19 21:05:58 -04:00
James D. Smith
67716c6b46 Playlist Viewer: Add file properties to playlist entry menu.
Change-Id: I8fb0da7d117e4a011345bae7f6137ab3253fea4f
2021-09-19 21:05:38 -04:00
Solomon Peachy
5312fe6bda FS13255: Partial update of Hungarian Translation (Gergely Békési)
(plus a lot of patch rebaseing by myself)

Change-Id: I184638147daceb5b60838763bc3d12a2959b337f
2021-09-19 00:05:48 -04:00
James D. Smith
60125f6bc9 Pictureflow: Update for tag_virt_canonicalartist.
Change-Id: Ie9fc906b6f863347174b383b01514961b307c4f1
2021-09-17 21:42:05 -04:00
James D. Smith
fb04b9b5ee Database: Merge 'Album Artist' entry with 'Artist' entry.
-Link 'Artist' entry to canonicalartist field.
-Convert all possible users of artist field to canonicalartist.
-Tweak 'Same as current -> Artist' menu to also include albumartist field matches.

Change-Id: I52e87cc0bd6ca50f1645447819ca55669df37354
2021-09-17 21:42:05 -04:00
James D. Smith
fcb9c06852 Database: Fix tag_albumartist; new tag_virt_canonicalartist.
Change-Id: I1d887f8a9d6690b8286407d2502432b0497cfeb9
2021-09-17 21:42:05 -04:00
Solomon Peachy
cb0f4599e1 FS#13304: Updated Dutch translation (Issa Beganović)
Change-Id: I8daaac6feea07eb114259b1e39338979e8a630fa
2021-09-17 21:30:22 -04:00
Solomon Peachy
7bf3b08303 FS#13309: Updated Polish Translation (Adam Rak)
Change-Id: Ie808def000b00514b2929a2aaef6082fc7daa9be
2021-09-17 21:22:23 -04:00
Solomon Peachy
52d4339c3f Synchronize english-us "translation"
Change-Id: I6cdedbced816bce223b9f7579d5fcd0af091f81a
2021-09-17 21:22:23 -04:00
James D. Smith
78f0dc8175 File properties plugin: Add bitrate.
Change-Id: I6160c50685ce1615ef295a472f25cb608b2e6feb
2021-09-16 17:52:53 -06:00
James D. Smith
a9d3e09611 File properties plugin: Add frequency.
Change-Id: I27453b39b5e4a6b4f97eff27a36c8ef2772ec092
2021-09-16 17:52:53 -06:00
James D. Smith
41e471e50e File properties plugin: Add disc number.
Change-Id: I98c9ccdffdaae8c5c9117212365ae82b9bf2147c
2021-09-16 17:52:53 -06:00
James D. Smith
5ddfd37a8c File properties plugin: Add track.
Change-Id: Id8707dc28bf3a9c029066bb55ff584662b2cee6b
2021-09-15 21:57:28 -06:00
James D. Smith
7035e2e2b9 File properties plugin: Add year.
Change-Id: I160507a67354c775ca9695c7e71303fe16beb6db
2021-09-15 21:57:21 -06:00
James D. Smith
3acbab15a1 File properties plugin: Add composer.
Change-Id: I7123ad21af15483594b9d247b89f7712c3a1a6f0
2021-09-15 21:57:13 -06:00
James D. Smith
f3874bda64 File properties plugin: Add comment.
Change-Id: If6b7650f858134098c3628f6e144e8c8d2a242ef
2021-09-15 21:57:06 -06:00
James D. Smith
f971200cee File properties plugin: Add genre.
Change-Id: Ib28e542c51f6e037a31e6d14763ce2abaca248b9
2021-09-15 21:56:58 -06:00
James D. Smith
7882e093b2 File properties plugin: Add album artist.
Change-Id: I150e11ba309953959d374898a63d4250a90651bb
2021-09-15 21:56:50 -06:00
Christian Soffke
67c4231e34 iPod mini backlight initialization
Fixes backlight not turning on after booting (tested on an iPod Mini 2G).

backlight_hw_init() copied from iPod 4G.

Change-Id: I9c32ca5ecd3dc74ea997e6cb843da79d303b0615
2021-09-12 13:35:35 -04:00
Dana Conrad
4ba3231457 Fiio M3K: Fix Yes/No Keymap
The yes/no keymap does not fall back to the Standard
keymapping, so keys other than Back and Power do not
cancel, though the prompt says "any other key".

Adding fallback to standard context as well as explicit
Left, Right, Vol+ and Vol- as they're not present in
the standard context.

Tested on physical m3k

Change-Id: I06409bad8dcde6586e1bf773309ef0ce464cc060
2021-09-05 16:22:25 +00:00
Dana Conrad
17263a813b ErosQ (both): avoid clipping due to DC offset bandaid
Set the maximum volume on both hosted and native ports
to -2 dB.

Verified behavior here on native and by borkitall on irc
for hosted.

Change-Id: I3aebc2bb4b9294a4137a33694c83139c0d76099a
2021-09-05 15:50:21 +00:00
Solomon Peachy
3e52c7c734 rockboxdev: Add 'g++' to the list of required tools for building toolchains
Change-Id: Ia7e4922476c5107e758ee37e80a4553a9441e125
2021-09-03 22:03:54 -04:00
William Wilgus
a8253c57dd lib/argparse fix red
Change-Id: I7bbac6de6319bf86189f079b7330d650ea95de3c
2021-08-31 17:23:47 -04:00
William Wilgus
c04a944c98 lib/argparse scale decimals to int for return to user
scales the fractional portion of the parsed number
by ARGPARSE_FRAC_DEC_MULTIPLIER

   Example ARGPARSE_FRAC_DEC_MULTIPLIER = 10 000
   meaning .0009 returns 9   , 9    / 10000 = .0009
           .009  returns 90
           .099  returns 990
           .09   returns 900
           .9    returns 9000
           .9999 returns 9999

Change-Id: I38573dbc1877760b0d52df8686a6647894d76196
2021-08-31 21:05:36 +00:00
Dana Conrad
d929444a41 iPod: Fix Yes/No Keymap
Add fallback to CONTEXT_STD and add explicit Play button cancel -
Play button is not present in standard context, so it won't do
anything if unknown actions are ignored.

tested on ipod simulator

Change-Id: Ic259fa97b6195ebbc66fcfae31265cc7aeefa421
2021-08-31 18:59:42 +00:00
Aidan MacDonald
c11ed99cb4 bugfix: redraw yes/no screen after a full skin update
This fixes a bug reported on IRC:

1. Set 'bookmark on stop' to 'ask'
2. Play a track from the file browser
3. Stop playback, yes/no screen briefly flashes then disappears.

The screen still handles input correctly but the prompt will not
be displayed on the LCD. Long story short, get_action() can cause
the skin engine to do a full redraw which cleared the screen and
erased the prompt.

There is a special event, GUI_EVENT_NEED_UI_UPDATE, which the list
code uses to avoid precisely this problem.

Hooking up a handler for this event and redrawing the yes/no prompt
fixes the bug.

Change-Id: If3c26655540c13b488b3a11bd46e1d60d4111469
2021-08-29 21:15:34 +01:00
Aidan MacDonald
6322e66219 Remove long-deprecated old style EQ settings
These were deprecated by 1eb17dc9f4 back in 2013 just prior to the
3.13 release. We've had 3.14 and 3.15 since then and I guess nobody
will complain if we finally remove them (fingers crossed...)

Also fix a line which got missed when converting hardcoded numbers
to EQ_NUM_BANDS in that commit.

Change-Id: I79dd71f1f2810bf19bc135999868fafc5fee6e04
2021-08-28 13:23:34 +00:00
William Wilgus
965572705b plugin lib/arg_helper parse 'command line' args
add a helper function to allow plugins to parse the parameter string
passed into plugins
support included for bool, char, string and numbers+decimals

Change-Id: I39f35c8bd3c21b83097a538c19f46d362c468fa4
2021-08-27 05:19:28 +00:00
William Wilgus
cab8cea0f0 lcd_putsxyofs 16 bit lcd_mono_bitmap_part [AS] part duex
'Bugfix' mono_bitmap_part reads ahead in the buffer,
if the height is <= char bit pixels other memory gets read
found with [Address Sanitizer]

also g#3332 since this is clearly a problem across the code
instead place the check for height < 8 in the lcd_mono_bitmap_part function

second try places the check above the negative y offset
this was causing glitches on the Q1 and likely other TS targets
since a negative y was added to height it made it < CHAR_BIT setting
stride = 0 even though the bitmap was >= CHAR_BIT high

Change-Id: I13bb8ab472c2ae61302a6de5d9e2c78243354460
2021-08-26 20:19:26 +00:00
Aidan MacDonald
30e96a3732 quickscreen: fix EQ enable not working in quickscreen
The EQ enabled setting needs to call into the DSP core when it's
changed but this was only hooked into the EQ menu. The quickscreen
uses option_select_next_val() so those DSP hooks were not getting
called because the setting did not have any callback defined.

It seems this bug was introduced by 362f7a3220 removing the blanket
call to settings_apply(). Other settings might be affected too.

Change-Id: Idcce5809c525fa619e6bdf1be50c98a5df103fec
2021-08-26 19:34:18 +00:00
Solomon Peachy
b2386405b9 xduoox3: Disable bootloader USB mode entirely
It's not yet working and because all storage is removable (and the OF
works fine) it's of limited utility aynway.

Change-Id: I8a6a59ac16503d0f4574c3934f473cac54e86858
2021-08-26 11:59:01 -04:00
Solomon Peachy
93c98606f1 xduoox3: Further bootloader improvements
* Power button is what forces entry into USB mode
   (can't use the other buttons due to the long SADC warmup)
 * Inching closer to working USB disk mode (starts then disconnects!

Change-Id: I45ff1c61f39e0e0c3615b38278f5c91b6ef2ed6c
2021-08-26 11:59:01 -04:00
William Wilgus
987d195134 Plugin Api add core bitmaps Fix Yellow
Change-Id: I4cded8733f8ae4d26b013a944ee5e884ed1363d9
2021-08-26 09:37:31 -04:00
William Wilgus
b56372bbcb Plugin Api add core bitmaps
share all the core icons with plugins
these are all small mono icons like usb plug icon or
play, fast forward, rewind icons

--include the icon_helper function

Change-Id: I385028815a4dd368515f491a9e19dee3d500252d
2021-08-26 12:55:34 +00:00
Aidan MacDonald
cbf1970b56 Shanling Q1: minor update to keymap
- Enable repeat for prev/next keys
- Provide a way to access the context menu using buttons
- Update the manual

Change-Id: I53a7474cc64f915851175aea0695229c581fd8a6
2021-08-25 23:28:59 +01:00
William Wilgus
dbd051394e Revert "lcd_putsxyofs 16 bit lcd_mono_bitmap_part [AS]"
This reverts commit 49edfc237b.

Reason for revert: font rendering bug, https://gist.github.com/amachronic/5fa75da280432127de4b44ee2d760281

Change-Id: I13b5f0eedb2926bce67051c8f0bb2ae5dea9f299
2021-08-25 13:05:02 +00:00
Solomon Peachy
97b0e5b5a1 xduoox3: More minor bootloader tweaks
Change-Id: I16b5ada06842822e14c0e4fc262f2cb8067aff72
2021-08-22 11:58:30 -04:00
Aidan MacDonald
d1653bc4d8 touchscreen: fix smooth scrolling in lists
This fixes those annoying jumps that happen when you hit the end of
a list while scrolling.

Change-Id: I2e41111f9415dce1692b52a2600e7ce77c8f0291
2021-08-22 14:57:54 +00:00
Aidan MacDonald
569b165cff touchscreen: handle scrollbar properly when UI viewport is used
Change-Id: I3b55233f4d50f5b8ae38f9f337ebdee6f93ad44e
2021-08-22 14:45:26 +00:00
Aidan MacDonald
a59a629514 filetypes: handle missing or empty viewers.config
We want to load builtin filetypes and other config files even if
there is a problem loading viewers.config. A lot of menus expect
the builtin types to be there and don't work if they're missing.

Change-Id: Ie39c8b9ef184fe0d638bacbe18e5f2d22900bd81
2021-08-22 15:24:51 +01:00
Solomon Peachy
d282424ef2 xduoox3: Allow user to gracefully exit USB disk mode by pressing power
Change-Id: Ic0382059646b7169c275aebe88867b5c0b7dd672
2021-08-22 07:57:24 -04:00
Solomon Peachy
4c745fe8ac xduoox3: A few manual improvements
* Fix a typo in a URL
 * Note how to enter the OF from the bootloader
 * Document how to perform a hard reset

Change-Id: I96d0d64cbd251573e1c5c55657ee5c5db510d9a6
2021-08-22 07:57:24 -04:00
Solomon Peachy
7059183438 bootloader: nuke a long-unused (and broken) code block
Change-Id: I8177c70ef01fd8938f3683e74adc0e008034f92d
2021-08-22 07:49:06 -04:00
Solomon Peachy
2c9e2db721 xduoox3: More bootloader updates
* Rework the LCD initialization a bit
 * Power off after 5 seconds if we hit a fatal error
 * Turn on verbose output if PLAY is held down on powerup
 * Minor code style cleanups

The goal is to not perform the LCD init unless it's needed; ie
only if we run into an error or enter USB mode.

Change-Id: I3f93e881ff55d104f453985ed452f35b433a7d99
2021-08-21 22:20:20 -04:00
Solomon Peachy
e07c460eef xduoox3: Bootloader improvements:
* Explicitly clear the caches prior to launching the binary
 * Ensure the function that launches the binary is in iram
 * Re-sequenced some of the subsystem initializations
 * Fixes for USB mode

Change-Id: Ie020b18586b2599edeb88529dd3d7337e33a5a6f
2021-08-21 21:53:03 -04:00
Dominik Riebeling
247258b9d2 manual: Don't expect first char of name in CREDITS to be ASCII.
Fixes some names not showing in the manual.

Note that there's one name left not showing due to LaTeX unicode support
missing the characters.

Change-Id: I9f1d0d3d49b485be54c83486a23cf97c82d257c8
2021-08-20 21:17:56 +02:00
Dominik Riebeling
356133d321 manual: Add workaround for older KOMAscript versions.
KOMAscript 3.28 changes \ifpdfoutput to \Ifpdfoutput. Add a check and
redefine the new command as the old one if it's missing since only the
name was changed. Not all Linux distros have a recent enough version
yet.

Change-Id: Ie709a1c85f10e1ddebb703ae50d3539f1aeee8bb
2021-08-20 21:17:50 +02:00
Ulrich Hecht
c302c157d5 peakmeter: re-enable on hosted platforms
Has been disabled since HW codec support was dropped, but works fine. Tested
on Surfans F20.

Change-Id: I97f06a009048e8135ca21118467c491e7077fa4f
2021-08-19 18:09:48 +00:00
William Wilgus
0679faf65d lib/helper add talk_val()
talk_value_decimal() replaced talk_value()

Change-Id: Ibb7c738d6f3b399fab2e771d8ab85967e3af96d1
2021-08-18 21:30:13 -04:00
William Wilgus
24e8fa317e plugins trade talk_value for talk_value_decimal
talk_value is just talk_value_decimal with 0 decimals

lets add the extended function instead

static inline int talk_val(long n, int unit, bool enqueue)
{
    #define NODECIMALS 0
    return rb->talk_value_decimal(n, unit, NODECIMALS, enqueue);
}

Change-Id: Iaba3d2f95785f2e1855e294ccf099a977bb6cb20
2021-08-19 01:17:29 +00:00
Aidan MacDonald
4cbb5b4201 x1000: trigger the virtual LED on disk activity
Change-Id: Ic129e79e0b192cb0c39e5f05ad602e0ea7a9213f
2021-08-18 23:17:07 +01:00
William Wilgus
3e37013218 misc.c strip_extension() cleanup
optimize +
add some error checking of inputO

Change-Id: I88c476f5fa66847adc0b361df1a0dd4818dbfdc6
2021-08-17 08:28:23 -04:00
Aidan MacDonald
5a4cc8da3f Drop HAVE_RTC_RAM
Only Archos players ever used this feature and it isn't implemented
on any current targets.

Change-Id: I39c8455480a3fe33cd25b667e8d4d6ff3a092d3e
2021-08-15 20:41:58 +01:00
Aidan MacDonald
de578bde1f Add advanced build option to omit building plugins
Compiling the plugins takes quite a long time and is unnecessary
if you're only working on the core code. Having an option is nicer
than having to edit the configure script by hand.

Change-Id: I401867355d897ce3fd899d9daf25ea9afcc380f0
2021-08-15 19:36:14 +00:00
Solomon Peachy
cc6b036ef5 logf: Fix an incorrect fix in 835d0c737a
Change-Id: I060033d9a7cd54bab75e4f82e3de002bdb027af2
2021-08-15 09:03:16 -04:00
William Wilgus
eafdba87f8 icon.c bug fix handle read errors
read errors are negative buf_sz was a unsignbed int

Change-Id: I45ba67e09ce54ff09411248340ba2c9c62c57583
2021-08-15 11:27:30 +00:00
William Wilgus
2ce7c716c3 apps/open_plugins cast menu id to (void*)
Change-Id: I14ece34e5ad0ffe00bbb4f7de37b1dadad3b92b4
2021-08-14 23:27:44 +00:00
Solomon Peachy
25cebf2f85 Fix red from 04fe77a4
Change-Id: I13a7b067e60eabe27be1fe983a7cced3ae8b18e3
2021-08-14 17:56:15 -04:00
Solomon Peachy
04fe77a465 Remove the (very) incomplete port for the Tatung TPJ-1102
It was barely even a stub, and hasn't seen any development since 2009

Change-Id: I0aa15d9a7b90ae8c771924d9f401380d4cc0fab9
2021-08-14 16:29:39 -04:00
Aidan MacDonald
786d06742a Remove Samsung YP-Z5 port
It has only a couple GB of onboard flash storage with no storage
driver in Rockbox. It hasn't seen any meaningful development since
its initial commit, it's not on the build farm, and the bootloader
build is broken by other refactoring.

Change-Id: Idd9e3c46fac9b96f416ce444182f97a50770e747
2021-08-14 14:13:54 +01:00
Aidan MacDonald
62260aa705 touchscreen: Fix softlock handling
Expands upon c067b344e8. The bug mentioned in that commit affects
touchscreens as well as touchpads, plus touchscreens were subject
to a few other issues because 'last->tick' was not always set.

Change-Id: I27eaa045ebf09555259fddbdf3a79828a55ae31f
2021-08-14 09:42:04 +00:00
William Wilgus
8c36d8b131 lua Fix a few potential bugs
Change-Id: I0293371c58f1ca2d148b3b1e1f780cf76f312ef9
2021-08-13 22:44:45 -04:00
William Wilgus
aad15d5cd7 code cleanup encase ;; in brackets {;;}
Change-Id: I253e19695709b4184ceb4a0748300f7c68437c1c
2021-08-13 11:51:21 +00:00
William Wilgus
da97524252 lua strftime fix out of scope buffer
sbuf goes out of scope of the case statement

Change-Id: Ice0553b496bfbfa5bc243dddf5bad90f3baaba51
2021-08-13 07:28:39 -04:00
William Wilgus
2df306923a file_internal.c guard file_cache_reset() from null pointer
I feel this is probably unlikely to be called with a NULL pointer
for cachep but being that we are already doing the check why not
guard file_cache_reset as well

Change-Id: I1a13767ef28a4129ae3513f7aa999fb6c1d6fad8
2021-08-13 06:32:44 -04:00
Dana Conrad
6de6e1459d Eros Q Hosted: Apply DC Bias to PCM Data
Similar to the native port, the hosted port benefits from
adding a -1 dc bias to the PCM data. This prevents almost
all clicking artifacts.

Change-Id: Ic6378716774b6d88df23c476e2ef54d49f33dc72
2021-08-12 10:07:49 +00:00
William Wilgus
235e41578b metadata/mp3data.c init vars & add sanity checks
Change-Id: Idface0ea73c4a6f0d46a57bddf77db9475a972f4
2021-08-11 22:40:09 -04:00
William Wilgus
30945f1180 metadata/metadata_common.c check read for proper bytes read
Change-Id: I25d7c20d449cde4d5cfd3f57e00ff45f4c14f60b
2021-08-11 22:25:20 -04:00
William Wilgus
f05a7a10a6 metadata/metadata_common.c WS changes
Change-Id: Ieef86e94676c603a21cbb5af55e63ba628a09cdf
2021-08-11 22:16:19 -04:00
William Wilgus
7aa0e0a898 metadata/asf.c ensure variable init & add sanity checks
Change-Id: If4432549b843cafb000c3fedee12184d75da595b
2021-08-11 22:06:15 -04:00
William Wilgus
d8bec3da63 enc_config.c don't overrun mp3_enc_bitr[] array
Change-Id: I1e2acceb707d85481eace3203b1d3d3ec8beb7d1
2021-08-11 11:00:03 -04:00
William Wilgus
1dd531ff03 codec_thread.c don't overrun audio_formats[] array
Change-Id: I58941cea061f41478d7677beb9ff42e28b2455a6
2021-08-11 10:56:14 -04:00
William Wilgus
e3e72d6dba metadata/mp4.c fix small oversight / bug
didn't set the genre string to null on case entry
means read failure would leave genre string indeterminate

add explicit NULL & leave genre uninitialized

Change-Id: I1452a0b57985646c982ec80755d0df9d03745f1e
2021-08-11 08:29:02 -04:00
William Wilgus
c9e9558044 metadata/mp4.c check for read errors skip buffer appropriately
WIP

Change-Id: I770f0d911f7d9826e89d886892ff3913661a8151
2021-08-11 01:36:32 +00:00
Dana Conrad
77a98ada12 Eros Q Native: Make Mute logic channel-independent
An oversight on my part meant that setting channel balance to
100% L or 100% R would mute both channels - this logic will
prevent that.

Change-Id: I912c2745784fbbbd7a773e1234179801f2ca4680
2021-08-10 18:15:53 -05:00
Aidan MacDonald
cdd1f90131 touchscreen: Respect list item selection size
Some lists have tall items that span more than one line of text,
eg. the bookmark menu or ID3 tag menu. The touchscreen code didn't
handle these menus correctly and touching on the lower part of a
list item could select "between" two items, leading to incorrect
rendering and behavior due to callers relying on the selected item
being properly aligned to the selection size. Fix this by ensuring
the touch code only generates properly aligned selections.

Change-Id: I73945bb0947590517a005754bd447639e22812e2
2021-08-10 23:33:00 +01:00
Aidan MacDonald
b103b07503 touchscreen: Fix annoying bug when switching touchscreen modes
Changing the touchscreen mode in the settings menu required a reboot
to fully apply because this code was trying to reapply old settings.
This is a hack. IMHO to fix it properly the behavior of touchscreen
mode needs to be changed so code that needs a specific mode doesn't
need to twiddle global state, but that's a bigger undertaking.

Change-Id: I55a46dbed721273ad78cb9df81fe60940665962b
2021-08-10 22:48:26 +01:00
Aidan MacDonald
69420e796c touchscreen: Use pointing mode in the yes/no screen
Seems to fix the unintuitive / inaccurate behavior of this screen.
Rejigger the generic touchscreen keymap because the 3x3 buttons are
no longer used. Also map physical keys for yes/no on the Q1.

Change-Id: I2ed633896b87030fa654d47d9d02929b849495da
2021-08-10 22:48:26 +01:00
Aidan MacDonald
a8063054f9 skin engine: handle bitmap read errors appropriately
Change-Id: Ifab0e607cb71afbe26b9e508fe1db3a8730bad4b
2021-08-10 21:47:04 +00:00
William Wilgus
614b189f7a lua rockaux.c filetol fix invalid conditional
Change-Id: Id31d3d8b571540394373a61ed213380c95a0eee2
2021-08-10 15:00:42 -04:00
William Wilgus
ee6b737b65 pcm_record.c iAudioM5 FixRed
Share a bit of code in order to free up iRam for the iAudio M5

Change-Id: Ief05d2614a203df17821ed32b04f5c75a53ca08b
2021-08-10 07:56:33 -04:00
William Wilgus
4fb5aeb096 recorder/pcm_record.c cleanup copy function
re: coverity
write_write_order: In long(*s++) + *s++,
s is written in *s++ and written in long(*s++)
but the order in which the side effects take place is undefined because
there is no intervening sequence point.

Change-Id: I2911c240f3e85fcfbf77297e8579e02e217c5af5
2021-08-10 11:22:13 +00:00
Solomon Peachy
2f0fd66e44 re-synchronize english-us "translation"
Change-Id: I21035cda0617e74283e4b30557783d297d8dfcd0
2021-08-09 22:18:43 +00:00
James Buren
e4c5b082e8 inflate: fix public function pointers
Change-Id: I7f1273b832a04a7d7c1b386c08c17438e3d93fc2
2021-08-09 16:25:43 +00:00
William Wilgus
275c762bb2 As3525 wavpack_enc document some intentional switch fall through
Change-Id: I56bf439df2c05653d65f49238e886e4ef2291176
2021-08-08 09:27:27 -04:00
William Wilgus
0a6d7abd13 metadata/asap.c consolidate read char function and check return values
and a bit of cleanup using macros to make the code easier to follow

Change-Id: I2c5953a68a9f415453e508c14a9c1a5a1e84e6b5
2021-08-07 17:13:09 -04:00
William Wilgus
da778a1783 metadata/asap.c WS cleanup
Change-Id: Id3bc053a45eeea107a54dd47640fa3ceb4b04498
2021-08-07 17:07:32 -04:00
Aidan MacDonald
5311ff0173 tagcache: Don't treat tag_virt_basename as a numeric tag
Change-Id: I88fe17466b606a1f60a4c823214edd9766deb260
2021-08-07 16:03:21 +00:00
Aidan MacDonald
cf3fa437fc Remove unhelpful unsigned casting trick
Change-Id: Ice86f060974c51bbaf051ed8c5a369ce80ecfe15
2021-08-07 15:52:18 +00:00
Solomon Peachy
39fff5cb53 move PCM_NATIVE_BITDEPTH definiton into global config code
Change-Id: I391bcffca670916c2c88426e2ba2603351326cee
2021-08-07 11:18:19 -04:00
Aidan MacDonald
eeb0aaf36f fiiom3k: Add bookmark screen keymapping
Forgot to commit this back around the time I did the manual

Change-Id: I8fafeec5105b4bee3380779f4cc86d3e73459cf2
2021-08-07 15:04:23 +00:00
Dana Conrad
a2bbd1a549 Fix warnings from 56b0dde545
Need a default bit depth in pcm-x1000.c

Change-Id: I2c6af227975d2f47609b51090638012d8406ec1e
2021-08-07 09:43:17 -05:00
Dana Conrad
56b0dde545 Higher bitdepth software volume scaling
Operates between 0 and -74 dB (mute) without issue

Change-Id: I497e002bd8db43833a09ebbc29212fbb6cc8ebfd
2021-08-07 14:21:47 +00:00
Dana Conrad
16b0098256 ErosQ Native: Add DC Offset to PCM data
A small negative offset seems to silence all
play/pause clicking on the PCM5102A.

Also adding PCM soft muting, and muting the headphone amp
when the headphones are detected as removed. This has been
tested to not cause any unintended side effects on the
line out.

Also confirmed the numerical dB values are (approx.) correct.

Change-Id: I689d68887c86add9cc5e0ccb0c7de01aaa69b4d9
2021-08-07 14:21:47 +00:00
William Wilgus
57293f1fd9 metadata/vfx.c cleanup string and character handling
Change-Id: I7550d6db05b0d31a1433d0af9b2233f9dc3f5ee2
2021-08-07 04:50:14 +00:00
James Buren
60933d98c6 inflate: import initial module for deflate decompression
This will eventually be used by the ZIP module and other things
that support DEFLATE based streams.

Change-Id: I4acc9561eb56c9c368d1defab9c14e0454d105e1
2021-08-07 03:03:27 +00:00
William Wilgus
603e749c1d metadata/smaf.c handle read errors
Change-Id: I450f1fc8e1b69ce09f9888f5384c3e23a93822a1
2021-08-07 02:53:28 +00:00
William Wilgus
8a8fd3d4a3 metadata/mp3data.c set data to 0 in case of read error
Change-Id: I15d4e3d3be4bf4531c892f4351355b0b2e8e0ca9
2021-08-06 20:55:11 -04:00
Aidan MacDonald
2008b7d1b0 Fix yellow from d541a72a
Change-Id: I9c539035544d285da1941d2c1954cf2aa4d00087
2021-08-06 19:59:33 +01:00
Aidan MacDonald
257ba1d2e0 Fix possible negative fd in playlist.c
Change-Id: I59d88609ec3f20ec9f482a777396cd72be23a35b
2021-08-06 19:38:06 +01:00
Aidan MacDonald
02b940396b Be sure to wipe id3 tag after failed parse in playback.c
Change-Id: I000c78e913ab80afa9b82cae937afb5255831b79
2021-08-06 18:34:04 +00:00
Aidan MacDonald
d541a72a0e Bugfixes in eq_menu.c
Change-Id: Ibf754554f685d13ac00a49694fcecee459ff838f
2021-08-06 18:23:57 +00:00
Aidan MacDonald
1a9a5fc279 Fix wrong printf format in system-hosted.c
Change-Id: I73722f0711a295152a98ab784cd6cf76379ef52e
2021-08-06 18:23:17 +00:00
Aidan MacDonald
b8b195a296 Fix hosted glibc backtrace
According to backtrace(3) man page, the string returned from
backtrace_symbols() contains the return address so we shouldn't
need to print it ourselves.

Change-Id: Ia779207285c9ea0052b9aee3d84ee8380bf46d82
2021-08-06 18:54:34 +01:00
Aidan MacDonald
6b1b7b6016 Fix use of uninitialized variable in mp4 metadata parser
Change-Id: Idca69e7429af13609785755d4e152d87f471c462
2021-08-06 16:10:41 +00:00
Aidan MacDonald
34fcea0b20 Fix path buffer overflow in screendump
Overflow is due to a hidden assumption in create_datetime_filename()
and create_numbered_filename() where buffer must be >= MAX_PATH bytes.

Change-Id: I9d36517d861b6925352380d551afc5439edbb340
2021-08-06 15:46:53 +00:00
Solomon Peachy
835d0c737a logf: Fix two issues with logf_panic_dump()
* It had a (read) buffer overflow when dumping the stuff on the back half of the buffer
 * a highly questionable code construct was nuked

Change-Id: I7f6f119524fc2095f788fc9b3d356459955d3ace
2021-08-06 10:08:00 -04:00
James Buren
da45b37fac tools/iriver: fix resource management in encode/decode functions
Change-Id: Ib0b38378c66d5902694d9af9fd0271d616101660
2021-08-06 03:08:10 +00:00
Solomon Peachy
a20755e9ef test_disk: Minor fix in an error path
...Log the variable containing the actual error

Change-Id: If22e6b684f2e213bc45c8ca95295936ba8e09895
2021-08-05 14:22:53 +00:00
Solomon Peachy
9f0f2c6658 metadata: Fix sign extension in get_uint64_le() routine
Change-Id: Ibd85cf72ac1babd1fa636c341b90b76bdfc0491b
2021-08-05 13:44:39 +00:00
Solomon Peachy
566d836ac6 mikmod: Uninitialized variable used in a control flow decision
Change-Id: I6df903399361f1df7ca0f766fff4062a984e2ba8
2021-08-05 13:44:33 +00:00
Solomon Peachy
f3010c6a8e hosted: Fix rtc_write_datetime() error handling
(if mktime() fails, don't attempt to write its result to the RTC)

Change-Id: Ib09b8dccafdef032119db76f10af74dfc220cc21
2021-08-05 13:44:11 +00:00
William Wilgus
cb6b0d2c0e disk.c ensure a valid volume is returned from get_free_volume()
volume is used for element math and indexing into buffers
-1  volume is bad

Change-Id: I1ec75ef3a848c154ea80905224ea9a3a14bf8151
2021-08-05 11:01:29 +00:00
William Wilgus
d57900ae12 misc.c format_sound_value guard division by zero
Change-Id: I7085cb34d2258aa5fc7e04fc0e73d6f733810038
2021-08-05 11:00:47 +00:00
William Wilgus
848633f921 lib/skin_parser check that malloc succeeded
Change-Id: I32db233a53b0f693f815cf96bcbe6711c366e5b3
2021-08-05 10:38:18 +00:00
Aidan MacDonald
03a6eb63f1 Simplify clamp_component
Surprise surprise: the compiler generates shorter, branch-free code
if we don't try to be clever with signed/unsigned casting tricks.

Change-Id: I93d2020b6127e7d43feee394b06a52aaeddf3b79
2021-08-05 10:26:50 +00:00
Aidan MacDonald
429a7e2c0a Avoid buffer overflow when generating bookmark file name
Change-Id: I14f3d83a8089d33f4e900a1d5f965e67082a07ea
2021-08-04 19:04:48 +00:00
Aidan MacDonald
bdd9c8dfc8 plugins: Fix issues in 2048
One of these was an unintentional fallthrough -- if you said no to
'quit without saving' it would save and quit.

Change-Id: I33828b58962a05adab65ac5f71dd0e2b1e07001b
2021-08-04 19:04:37 +00:00
Aidan MacDonald
005c414e5f Document intentional fallthroughs + fix harmless unintended ones
Change-Id: I1ca5b1027ec30cbf61093bab35b980196ed14e6b
2021-08-04 18:59:46 +00:00
Dominik Riebeling
ef41cc6623 Revert "rbutil: Remove done() signal from Themes Install window."
The done() signal is acutally needed to indicate the installation being
finished. Fixes installation being stuck after themes install.

This reverts commit fb6840e572.

Change-Id: I9c1791e3ecfec992da40ff72b6969d80bbb0cd7f
2021-08-04 19:10:34 +02:00
Solomon Peachy
c522917644 plugins/resistor: Fix incorrect check for a valid 4th band value
Change-Id: I499bcd6d2d6fd5dd92c184cc1ec014e62f0441fa
2021-08-04 14:56:20 +00:00
Solomon Peachy
37bfcab23f powermgmt: Clean up some convoluted #ifdefs
Makes it more explicit what code is used under which circumstances.

Change-Id: I0a482dd48e1eb4b119ca6d8dca2b8aa450445fd1
2021-08-04 09:39:37 -04:00
William Wilgus
0d0640e57a menu.c guard against NULL menu, list, setting pointers
Change-Id: Id45d9ac3b88571cb3927ca29314f997d5cbfd598
2021-08-03 11:43:53 +00:00
William Wilgus
074daea51f lua fix potential null warning
I'm not sure this would happen but I suspect its possible to get malformed
data back from lineinfo as this is how the error system tracks code flow
and this is a hacked add-on to allow RLE (run length encoding) of
said code flow data

Change-Id: I4b914c632935f8b1a9fa960212c58e810b2db738
2021-08-03 11:02:15 +00:00
William Wilgus
1fd190d02d mask_select guard against null pointers
Change-Id: I83d246c13d22c1e76a55cbfdd20dcc955eb556ec
2021-08-03 11:00:59 +00:00
William Wilgus
36e48a8bb2 icon.c guard against negative error values bytesread is copied to an unsigned int for core_shrink
Change-Id: Iff93397e7d6fae8936ef0fdbb1e71df63bcf6531
2021-08-02 23:06:40 -04:00
William Wilgus
93c9d675af folder_select prevent directory handle leak on error
Change-Id: If1617dc92683d7de3d7709b363a593e40fbc5bc8
2021-08-03 03:01:14 +00:00
William Wilgus
429eedf49e list-skinned.c check label pointer for validity
Change-Id: I993ff4a2d5d1c46bad46aae7f46fa4996e67481a
2021-08-03 02:49:17 +00:00
William Wilgus
382b52b120 filetypes.c filesize() guard against negative error values
buffer size is copied to an unsigned int for core_alloc

Change-Id: I7b9ccab79554e55b22d39501ccb779036913258a
2021-08-02 22:32:15 -04:00
William Wilgus
1fc4a17e1c language.c fix possible buffer overrun
ensure zero termination regardless of data read from lang file

Change-Id: I0da0e787ffb10c9268557812b061cc3c452fbd0a
2021-08-03 00:57:35 +00:00
William Wilgus
3b6c3d769f open_plugins bugfix failure to save
if you added a plugin through the core settings and then used the shortcut
immediately the entry would never get flushed to disk

Change-Id: I62e876bbf0a8fa96acba1cc2582e2563401547f1
2021-08-03 00:31:10 +00:00
William Wilgus
0501af8b06 metadata/flac.c fix potential buffer overrun
Change-Id: Iee12f251455c4fda9d91d10e466d17e5e02046b9
2021-08-02 03:00:01 +00:00
William Wilgus
247731fe8c id3tags.c check for buffer overrun
Change-Id: I74fde8e234fe85abfabefddcea7f10038167c715
2021-08-01 22:29:14 -04:00
William Wilgus
2346a7aa6d playlist_catalog fix strcpy overlap, potential buffer overrun
Change-Id: I7cd1302d2c905992078351a531a5d67fdb465809
2021-08-02 02:27:43 +00:00
William Wilgus
83653023d4 tagcache.c clean up
Change-Id: I658ee345461eeda77cbe856cec46c21dcce7715b
2021-08-02 00:43:52 +00:00
Dana Conrad
a2fd00cf38 Software Volume: Remove sample rounding
Change-Id: I630139333d64b4c8cae86939ecfc52c44a34ffea
2021-08-01 02:20:00 +00:00
William Wilgus
ecf0d631e7 tagcache.c Fix potential buffer overruns WIP
Needs tested

Change-Id: I373b72c72f98777dc7a2d8085e975aeac164c297
2021-07-31 10:44:02 -04:00
William Wilgus
7413442411 tagcache.c WS changes
Change-Id: Ied0fa6010e8bfa82e1c46cafcfb0dec51478d346
2021-07-31 10:26:59 -04:00
James Buren
fad4c75163 crc32/adler32: add full copyright notice to source files
Change-Id: Ifa04be9a6e419772c18b21e81fe1f246f4248af7
2021-07-31 01:30:39 +00:00
James Buren
f32fc84ef6 adler32: import adapted implementation from tinf/zlib
This adds an adapted version of the adler32 algorithm from tinf/zlib
which will be necessary to support ZLIB deflate streams in the future.

Change-Id: Ie60e15acb288acf56a2d44e3d3e912e1b3eb2216
2021-07-30 23:11:49 +00:00
William Wilgus
ee05b8574a playlist.c fix multitude of sins Invalid Control file on USB unplug?
failure to close file handles
reading memory prior to buffer on error
loop variable integer overflow on error

Change-Id: I2893c34cd041d085fd7f56a88cb4cb14131cea11
2021-07-30 00:40:43 -04:00
William Wilgus
f9c5d1fccf open_plugin.c (CORE) File input Bugfixes
Explicitly Null terminate char fields
0 is a valid file descriptor

Change-Id: I0faa9f5ec919ca913bceabf919fbaefcb38c39b9
2021-07-29 23:15:33 -04:00
William Wilgus
ea438ee132 cuesheet.c Fix potential NULL in INDEX parsing
untested

Change-Id: I6160348eeece364e3242f047437877ea34136f9c
2021-07-30 02:30:49 +00:00
Solomon Peachy
7318d393ea libc: atoi() is supposed to return 0 if handed a NULL pointer
Change-Id: I2d77532536ca83e5c9c2d7622a0e672082969f75
2021-07-30 01:41:13 +00:00
Aidan MacDonald
2e9443104f rbcodec: Fix typo in makefile
Hopefully this will fix all those random build failures.

Change-Id: I02ff625c538a21f20b33874b4ab54ed8c893a433
2021-07-25 15:55:36 +01:00
Aidan MacDonald
05d4d6a4f2 Fix remaining yellow from e532714d1f
Change-Id: If0bdd1fb3c8ee3324562638bc4c4181357a8fd53
2021-07-25 14:36:47 +00:00
Aidan MacDonald
148fac6f34 Fix yellow from e532714d1f
Change-Id: I4f49e93fc1efa78874fb76de6a436ad1fc894cc5
2021-07-25 15:22:33 +01:00
Aidan MacDonald
e532714d1f pcm: Remove unused function pcm_play_dma_get_peak_buffer()
Change-Id: Ifd20fb14a22489cdb99154c01f69809a1e70d0c5
2021-07-25 14:07:41 +00:00
Aidan MacDonald
77ec752248 shortcuts: fix file handle leak on OOM condition
Change-Id: If09db7a084d83e9bdeeafb8e8f434fcb502c45c5
2021-07-25 14:53:00 +01:00
Solomon Peachy
d0536b8b6b Fix typo in f8bbe3352c
Change-Id: I02ab35f21c2733efd81a9b97d1c88e283f6187ff
2021-07-24 16:27:49 +00:00
Solomon Peachy
f8bbe3352c rocker: First crack at manual for the AGPTek Rocker
It needs screenshots and slightly better installation instructions

Includes bits shared with other HibyOS platforms

Change-Id: I1c1974143b5badf1aca5c3281556ce553ab1b8a5
2021-07-24 11:16:57 -04:00
Solomon Peachy
a0948ddfa1 Enable building the manual for the FiiO M3K and Shanling Q1
The nightly manual builds previously only included targets that were
marked as "stable" -- The M3K and Q1 are not because they lack rbutil
integration, but we would like to provide the manual builds regardless.

Change-Id: I113e0576753ba6bb1518da2169c1b0b84aebd2f4
2021-07-24 11:16:57 -04:00
Aidan MacDonald
fde6eaa8e1 Add Fiio M3K and Shanling Q1 manuals
Includes installation instructions and a description of Rockbox's
limitations versus the original firmware. Some things are still
missing, notably screenshots for the Q1. The M3K image also needs
to be updated to include the 'select' button.

Change-Id: Ib533206df01925203edeccdd75e1bf22f407e794
2021-07-24 14:07:09 +00:00
William Wilgus
42ba117952 tree.c use strlcpy to avoid buffer ovfl
Change-Id: I6ac4ec6306c2101b11bc0495edd7bbe2717acf9c
2021-07-24 13:44:35 +00:00
William Wilgus
26fd90bb49 talk.c check for proper file load
few sanity checks on voice clip loads

Change-Id: I15fdf05d2964e9f6d00360b9730357dac6054af7
2021-07-23 22:53:25 +00:00
Solomon Peachy
cb92280eca usb_storage: Fix a memset in SCSI_INQUIRY that overflowed its buffer
The funny thing is that the memset() for the field in question was
redundant, as the overall inquiry structure was memset(0) already.

Change-Id: I8bec0c93c9317823ff39cf7133535e3bf58fb987
2021-07-23 00:26:35 +00:00
Solomon Peachy
68294da574 Document an intentional fallthrough in the volume limit menu code
Change-Id: I51d331ff788b73aa84fece63bfdca9c3e08c0384
2021-07-22 23:55:03 +00:00
William Wilgus
1fea6f4670 plugins pong, properties remove dead code
Change-Id: I6645ff850a637343dde129600f0b5eaa2e4f6d31
2021-07-22 23:24:12 +00:00
William Wilgus
363f6595b4 tlsf make ~0 explicitly unsigned ~0u
Change-Id: Ib3220df24fee470416ef813b89bdc5f27e455af7
2021-07-22 23:23:51 +00:00
Aidan MacDonald
00129ac872 Fix battery_bench bug by using a static buffer for stack
Since battery_bench is a TSR (terminate & stay resident) plugin it
cannot allocate the plugin buffer -- various parts of the Rockbox
core make use of it as temporary storage space. The buffer was used
for stack space so this generated false 'Stkov' panics when one of
those in-core users overwrote the buffer.

The default stack size of 1kb is a bit small, so use 4x the default
size to be on the safe side.

This also fixes a minor issue where trying to view OS stack usage
while battery_bench was running would cause audio dropouts, due to
scanning the possibly huge stack with IRQs disabled.

Change-Id: I2e6b76f9946db9090c1af61f7aa0a0dac0698c20
2021-07-22 13:50:26 +00:00
Solomon Peachy
f0e3a36fe4 autoresume: Properly check the path string, not the pointer.
(the pointer is _always_ valid as it's to a fixed buffer)

Change-Id: I88489012b76ed3b5b214cf01da1a6260e259fe87
2021-07-21 15:06:28 +00:00
William Wilgus
8cd4b8da84 talk.c check for 0 talk clips file descriptor leaks & announce_status fix typo
talk.c potential division by zero warrants a check

desowin pointed out multiple fd leaks

announce_status.c dumb typo

Change-Id: Iae99bd64696afdd9585952245a7a04cdc9f88ef1
2021-07-21 11:26:29 +00:00
Aidan MacDonald
48c29e3b3b Fix announce_status usage of plugin buffer
Since this is a TSR plugin, it is not safe to use the plugin buffer.
Convert to using static buffers instead.

Change-Id: Ic5b297468a99d77d56f5b75e52dafabeb80d2f78
2021-07-21 11:26:14 +00:00
William Wilgus
b91ad60d63 timefuncs.c valid_time() should return false if tm == NULL and not try to deref
luckily no one has
yet..

Change-Id: I4117db84b013fa826958aea635daa0a24ee534b6
2021-07-20 23:25:31 +00:00
Aidan MacDonald
966e210e6d Small fixes to kbd_create_layout
- Make the argument const since it's not actually mutated
- Actually return the size of the buffer used since this is what it
  was supposed to do (although no existing callers cared anyway)

Change-Id: I0802071cf63d4af419f427ff54adca50b14918ad
2021-07-20 21:30:55 +01:00
Aidan MacDonald
740a50687f jztool: add support for Shanling Q1 and Eros Q
Change-Id: I8e93162d1a9d82e9d132219f2803b1856d24ae6c
2021-07-20 14:56:58 +00:00
Aidan MacDonald
6f042e91dd FS#13302 - Updated Polish translation (Adam Rak)
Change-Id: I3dd2c75d3e51061b71f3057b1a4ed4f398127ced
2021-07-20 15:24:02 +01:00
Solomon Peachy
df37450f91 talk: Explicitly cast -1 as unsigned before a left shift.
The code is explcitly relying on twos complement numerical represntation
so this just shuts up the compiler and static analysis warnings.

Change-Id: If11cd0a3a4127e8a872a752119d347ac6e09424c
2021-07-20 00:09:33 +00:00
Aidan MacDonald
09fc9ee9a3 sim: change Eros Q native bitmap to a symlink
Change-Id: Id55ef276af0de52d7cbd8c7cdc6da46f171a01bd
2021-07-18 14:15:25 +01:00
Aidan MacDonald
07a3f6bcdb add Eros Q native simulator build
Change-Id: Ifdc882d19020da2e18234d6276409ad3e7efa138
2021-07-18 13:51:30 +01:00
Dana Conrad
3e7a09cb0d New Port: Eros Q Native
What works:
- LCD: 16-bit RGB565
- all buttons, including scrollwheel
- SD Card
- Battery level and charging/not charging status
- USB
- audio
- sample rate switching
- HP / LO detect, with "safe" fixed LO volume -
   LO volume will only be put to user-defined max volume
   if headphones are not present.
- rtc
- Plugins build, tried a couple and they seem OK
- Bootloader, installable to nand via usbboot

What doesn't work:
- Dual Boot
- power on/off has intermittent, low volume audio click
   (sometimes it's completely silent, sometimes there's
    a click)
- Audio uses 16-bit volume scaling, so clicking/popping
   is pretty bad at lower volumes - need 32 bit volume
   scaling, 24 bit I2S data
- USB HID keys not yet defined
- no jztool support

Unknowns:
- Stereo Switch pins: Direction select, AC_DC
   (probably not even hooked up)
- What is the actual purpose of the Stereo Swtich?
- How does the bluetooth module connect?

"Someday" stuff:
- get LCD working at higher bit depth
- Bluetooth

Change-Id: I70dda8fc092c6e3f4352f2245e4164193f803c33
2021-07-18 12:14:35 +00:00
James Buren
64a24591ae crc32: add fast variant of regular crc_32r function
This relies on a macro, CRC32R_FAST, to select which version to
compile with. In tests the fast version is 2x faster at the expense
of requiring 960 more bytes for the lookup table. For now the default
is the space optimized version but in the future I would like to enable
this for ports where we can afford the extra storage and/or memory
requirements.

Change-Id: I25397dadedc3187bb02b2444f8b8ded77c2509b6
2021-07-18 05:17:31 +00:00
Solomon Peachy
cd17decd5a xduoox3ii: Add "Super Slow" filter roll-off
I'm not happy with the proliferation of filter-roll-off options
but I don't have a less ugly solution.

Change-Id: I740fca006fa0c3443a467acfea55b6574d48346b
2021-07-17 08:18:31 -04:00
Solomon Peachy
ec31a2b4ad Fix builds.pm syntax error (1d72d9cf)
Change-Id: I7c7e8e7de16157ecc6535a8b461c12430bd376fb
2021-07-15 15:40:26 -04:00
Aidan MacDonald
1d72d9cf28 builds: add Shanling Q1 to unstable
Change-Id: Ic490b4d68c2faa35dd8cb6733766019aeeb192e7
2021-07-15 18:54:35 +00:00
Solomon Peachy
144d1b1e81 misc: Fix up a few warnings uncovered by LTO
* direct use of memcpy() instead of ci->memcpy() in flac and mod
 * uninitialized variable in mpegplayer

Change-Id: I2d08682d5f66c319780e69e3ff63d600c61d8f5a
2021-07-15 18:37:42 +00:00
Aidan MacDonald
4c60bc9e68 New port: Shanling Q1 native
- Audio playback works
- Touchscreen and buttons work
- Bootloader works and is capable of dual boot
- Plugins are working
- Cabbiev2 theme has been ported
- Stable for general usage

Thanks to Marc Aarts for porting Cabbiev2 and plugin bitmaps.

There's a few minor known issues:

- Bootloader must be installed manually using 'usbboot' as there is
  no support in jztool yet.

- Keymaps may be lacking, need further testing and feedback.

- Some plugins may not be fully adapted to the screen size and could
  benefit from further tweaking.

- LCD shows abnormal effects under some circumstances: for example,
  after viewing a mostly black screen an afterimage appears briefly
  when going back to a brightly-lit screen. Sudden power-off without
  proper shutdown of the backlight causes a "dissolving" effect.

- CW2015 battery reporting driver is buggy, and disabled for now.
  Battery reporting is currently voltage-based using the AXP192.

Change-Id: I635e83f02a880192c5a82cb0861ad3a61c137c3a
2021-07-13 22:01:33 +01:00
Aidan MacDonald
3abb7c5dd5 x1000: revamp MSC driver card detection logic
Debounce logic now handles both removal and insertion and verifies
the detection is stable for 100ms before taking any action.

This solves the bootloader "file not found" issue on the Shanling Q1.
It seems a false removal event was generated, causing the filesystem
to be automatically unmounted. Probably this is due to some transient
noise at boot. Delays didn't solve the problem, probably because the
bogus hotplug event was queued, and normal mdelay() would simply delay
event delivery.

Change-Id: I8b03fb3550309f5a7ab4be0be7465a3dab2d3450
2021-07-13 22:01:17 +01:00
James Buren
3c4fdf10e2 crc32: add fast variant of regular crc_32 function
This relies on a macro, CRC32_FAST, to select which version to compile
with. In tests the fast version is 2x faster at the expense of requiring
960 more bytes for the lookup table. For now the default is the speed
optimized version but in the future I would like to enable this for ports
where we can afford the extra storage and/or memory requirements.

Change-Id: I8c7fde6b6ff130f0fdc7c8e472825e25bcdba022
2021-07-13 04:41:32 +00:00
Tomasz Moń
321680973b
Sansa Connect: Display battery info in debug menu
Show battery temperature, current, discharge power and available energy
in battery debug menu.

Change-Id: I799af4e5ca7ec168d726e689264e0f092ebc2bf7
2021-07-12 14:14:59 +02:00
Aidan MacDonald
84362141a0 x1000: Unified flash bootloader installer
Change-Id: Ib1d41d4e7d663ff8a21eb08108c13568f7408533
2021-07-11 15:39:50 +01:00
Aidan MacDonald
e9d228832c x1000: Unified bootloader
Change-Id: Ib1f2ca2a376866c61dd1bd62abd6e31210d11e5c
2021-07-11 15:39:40 +01:00
James Buren
d6dcb99684 uisimulator: implement sim_modtime
Change-Id: I1094632df092ba63605631333e939cf30b585a59
2021-07-11 13:48:26 +00:00
James Buren
1298e47134 zip: include strlcpy.h
Change-Id: Ic26a95e35a005837cbd3c8d9318d2cced9b726ff
2021-07-11 13:17:54 +00:00
James Buren
fa743258ea filesystem: implement os_modtime for unix
Change-Id: If030d526f29aa786b5a37402413d804752286cf5
2021-07-11 12:40:08 +00:00
James Buren
8846e087c0 zip: implement zip extraction support
This adds code sufficient to extract files to available storage given a
suitable root directory to extract to. It works on an already open zip
handle and also supports chain-loading a secondary callback in the event
that integration into the process is desired.

Change-Id: Id200d8f20d84a0cbd22906470de8bbd21d4525ef
2021-07-11 05:14:20 +00:00
James Buren
a1bcca645b zip: rename modts field to mtime
This brings it more in line with other structs with this exact same data
type and usage.

Change-Id: I5fe8564750ef28ccd0b12efedca2e6958369f712
2021-07-10 13:44:03 +00:00
Tomasz Moń
6c084ac3ea
Sansa Connect: Ensure LCD starts before backlight
Extra delay prevents white flash after hold switch release.

Change-Id: Ib0d33937dcbb738b913388e7df92ffdf9346c9f9
2021-07-10 13:20:29 +02:00
Tomasz Moń
b4ecd612f7
Sansa Connect: Use deviceid in USB Serial Number
Atmel AT88SC6416C CryptoMemory is almost I2C compatible. The device
is connected to bitbanged I2C bus shared with compliant I2C devices.

Change-Id: Iec54702db1bdfb93c01291eef18ec60391c63b16
2021-07-10 08:56:32 +02:00
Solomon Peachy
663539619c configure: fix a typo that could break voice builds
(If you don't have espeak, festival, or flite installed)

Change-Id: I5820535c55cc02e32bf31f3e30070b2c1e68ff87
2021-07-09 15:10:50 +00:00
Tomasz Moń
8de163b8ae
Sansa Connect: Fix reported CPU frequency
Make frequency related comments accurate. Disable UART0 clock.

Change-Id: I224a3d6656ad53165dcff68ed716fa2c6863240d
2021-07-09 14:16:05 +02:00
Tomasz Moń
60e2cd6de9 DM320: Regorganize LCD and TTB memory layout
Do not introduce any change for M:Robe 500 as it uses the two LCD frames
in non-obvious way.

Sansa Connect and Creative ZVM use only single front framebuffer.
Place TTB at DRAM end to minimize memory loss due to alignment.
Reserve as little as possible memory for the LCD frames.
On Sansa Connect this change extends audio buffer by 858 KiB.

Change-Id: I21bdeec4cfba86d71803a39acd651a87e73767e6
2021-07-09 09:24:38 +00:00
Solomon Peachy
2e9b93dc5d build: Nuke the ASMFLAGS workaround for gcc 3.4.x
Change-Id: I0f21e9539d39afd54916fa8d84ce798eef474a2c
2021-07-08 20:47:30 -04:00
Solomon Peachy
2c984f3714 build: use gcc-ar / gcc-ranlib in preparation for link-time-optimization
Change-Id: If5fd9a8f15200fca9a89999605394f7527387a2b
2021-07-08 19:53:05 -04:00
Solomon Peachy
2ff3425ab1 build: Rename SHARED_LDFLAG to SHARED_LDFLAGS
Change-Id: Icb81c72fbcfcdad624112a386ba38a40a830d18f
2021-07-08 19:53:05 -04:00
James Buren
a9f36efa62 file/fat: rework utime function as modtime extension
This eliminates the dependence on a special struct since we were only
using the modtime anyway. But it no longer fits any known standard APIs
so I have converted it to our own extension instead. This can still be
adapted to existing hosted APIs if the need arises.

Change-Id: Ic8800698ddfd3a1a48b7cf921c0d0f865302d034
2021-07-08 17:47:51 +00:00
Solomon Peachy
a0f1236e88 Fix yellow in android builds.
Change-Id: Ic22908e249f2db85c029e1644c9531a12ed87993
2021-07-08 13:06:41 -04:00
Solomon Peachy
17f7dfb9d2 build: Make checkwps use global GCCOPTS
Change-Id: I6859d3611b2008bf8a6ec52887d8e278df1ebd9f
2021-07-08 12:06:57 -04:00
Aidan MacDonald
0e1a90ea1d x1000: SPL refactoring
This streamlines the boot code a bit and reduces target specific
boilerplate. The clock init hack used by the bootloader has been
"standardized" and works for the main Rockbox binary now, so you
can boot rockbox.bin over USB without special hacks.

Change-Id: I7c1fac37df5a45873583ce6818eaedb9f71a782b
2021-07-08 16:01:38 +00:00
Aidan MacDonald
65aa9ce570 x1000: more CPM register definitions
Change-Id: Ie6fa343a65a6bd19e578664b10bac771289ed0b3
2021-07-08 16:01:38 +00:00
Solomon Peachy
a952cf52d5 voice: Corrections to 24-hour time voicing:
* Voice leading "Oh" if hours is under 10.

 (ie "0900" is read as "oh nine hundred hours"

Change-Id: I09853909221e0dd6da354f7e4bb9733ff5edca90
2021-07-08 10:57:57 -04:00
Solomon Peachy
39b82afb45 Fix warnings introduced in c174d3a5 (redux)
Change-Id: Icc871bd9875aa0d092a4fba3e8a6c3a598053854
2021-07-08 14:16:25 +00:00
Solomon Peachy
78eb87f453 Revert "Hosted & tool builds need utime.h"
This reverts commit a8fd590003.

Reason for revert: Inverted polarity and it didn't work anyway.

Change-Id: Ife548ce4608405e3243c84a1d72090603fd2decc
2021-07-08 14:07:58 +00:00
Solomon Peachy
a8fd590003 Hosted & tool builds need utime.h
Should fix the warnings introduced in c174d3a5

Change-Id: Ib4bd863caef4dedf28dadab8b58b9a165ed4ef9b
2021-07-08 13:55:12 +00:00
James Buren
c174d3a544 file/fat: add utime function
This emulates the traditional utime function from UNIX clones to allow
for manual updates of the modification timestamp on files and directories.

This should only prove useful for non-native targets as those usually
have a libc version of utime.

Change-Id: Iea8a1d328e78b92c400d3354ee80689c7cf53af8
2021-07-08 13:15:30 +00:00
Solomon Peachy
e6ee3dd17c builds: Move the Sansa Connect to unstable
Change-Id: I0087cb3e7d1b412353d3a02d7dd282a27c5a69fc
2021-07-08 12:25:36 +00:00
James Buren
49ca4b3e5e timefuncs: add dostime_localtime function
This does the opposite of dostime_mktime, converting time_t back to
the two dos date time values. We use gmtime_r for native because that
is what is available and acts the same as localtime_r on other platforms
with a regular libc available.

Change-Id: If79469d0aae2d7c5dcdd905fbf04963669aa1138
2021-07-07 17:31:00 +00:00
Tomasz Moń
bce6771730
Sansa Connect: Reduce USB RX buffers from 129 to 2
Reducing number of fake RX buffers saves a bit more than 127 KiB RAM.
Fix compilation with CPPI logging enabled.

Change-Id: If1ad3a6fc251e284caaac78c2406a58f3d6547bb
2021-07-07 18:48:24 +02:00
Solomon Peachy
7f638e54ee RFC: Fix a couple more dangling stack-allocated viewports
They could end up getting referenced after the stack has been popped.

Change-Id: I12abbf3f436ecfde76a37f2623a044915800d2b2
2021-07-07 15:19:43 +00:00
Tomasz Moń
99bf506407 Sansa Connect: Prevent unresponsive interface
AVR interrupt signal can remain active if the state has changed during
state read. In such case, there won't be intterupt and the interface
would appear unresponsive until AVR thread received event (e.g. USB
connection/disconnect). Solve the issue by not waiting for event if AVR
interrupt signal is active prior to event wait.

Change-Id: I86e388c7cd6da76e3abe7bf7114940f331e4c308
2021-07-07 14:51:15 +00:00
Solomon Peachy
e9ae1e9a8b Fix red introduced in 841e704fc3
Change-Id: I5a924f77231a4764f3ad9b196875f5bf073945d6
2021-07-07 13:49:24 +00:00
Tomasz Moń
841e704fc3
Sansa Connect: Read HDQ battery data
Make it possible for target to provide voltage, percentage and time to
empty values. The voltage measurement is nice to have in debug menu even
if the actions are taken only based on percentage. Perform battery level
estimation based on voltage only if percentage is not available.

Use time to empty based on actual power consumption. This makes the
estimated runtime displayed in Rockbox Info to react to backlight
setting. The bq27000 updates time to empty estimate every 5.12 seconds
so it is possible to see the estimate with backlight off on the screen
if user enters Rockbox Info, activates hold switch, waits 11 seconds and
releases the hold switch.

Change-Id: Iafe3fa0fb334e3428e3a0ad05b2c020d208dc934
2021-07-07 08:24:01 +02:00
James Buren
b87e75f768 zip: import initial module
This provides rudimentary support for parsing the contents of a ZIP
file. For now this just supports uncompressed file entries but DEFLATE
support is planned. This also only implements a low level public API
so more work will be needed to make it usable by application code.

Change-Id: Ia68b3078e5276666a0e5023f4bc7a9f94272738a
2021-07-05 19:30:05 +00:00
Tomasz Moń
2acf8db3e1
Sansa Connect: Power off LCD to save power
Prevent startup screen flash by properly using AVR LCM functions. Power
off LCD when not needed to improve battery runtime.

Change-Id: I76e3c5c0208774f189fbc6f7d7b3c9e22c062285
2021-07-05 15:19:52 +02:00
Tomasz Moń
89d3ca77b6
Sansa Connect: Fix power off panic screen
Queue power off requests because power_off() can be called within tick
context that must not acquire mutex.

Change-Id: I6f1a8f81d15518876cd03556118fc9eb37b8175f
2021-07-04 13:08:42 +02:00
Tomasz Moń
e11fa5f74e Sansa Connect: Initial libertas WiFi driver port
Import non-free firmware image from linux-firmware package.

Firmware loading works but is disabled at compile time because just
loading firmware without configuring device results in higher power
consumption without any benefit to end user.

Change-Id: I8fd252c49385ede1ea4e0f9b1e29adeb331ab8ae
2021-07-04 07:41:44 +00:00
James Buren
c9f2308a1d fat: move fattime_mktime to timefuncs
This moves the time conversion function to timefuncs since it has
uses on ports that don't use the FAT driver. This function has no
dependency on the FAT driver as it is so this should not cause any
issues. To reflect this separation the function was renamed to
dostime_mktime since it is really for DOS timestamps. The places
where it was used have also been updated.

Change-Id: Id98b1448d5c6fcda286846e1d2c736db682bfb52
2021-07-03 00:19:58 +00:00
Franklin Wei
d1a92aafff sdl: increase default worker thread size.
This fixes a mysterious, long-standing crash that's been bothering me on
ipod6g for ages: a silent stack overflow in the sound mixing thread (which
is triggered upon loading a new sound, apparently) will thrash the memory
which is located directly before it in the address space.

In this case, it was the SDL_ButtonState variable which stores the mouse
button state that was being trashed. This was manifesting itself by making
the player always run forward, since MOUSE2 is mapped to +forward by
default.

Fix this by quadrupling the stack size of SDL-spawned threads (not the main
thread) from 1 KB to 4 KB.

Change-Id: I2d7901b7cee1e3ceb1ccdebb38d4ac5b7ea730e1
2021-06-28 02:51:48 +00:00
Aidan MacDonald
9f950d8bbf x1000: NAND rewrite
This new design saves on binary size and stack usage. The API is
also block- and page-based, requiring awareness of the chip layout
to use properly. Out-of-band areas are also exposed for reading
and writing.

The byte-oriented routines are kept for compatibility with the
existing installer and SPL.

Change-Id: Iaacc694d2f651ab74d45330e0434ee778a0d91bc
2021-06-27 19:09:03 +01:00
James Buren
9246cbc65e rbspeex: fix shared linkage on newer Linux distributions
The old linking order does not work anymore so reorder it to fix
shared linkage.

Change-Id: I438c44792b5aff20e752b093b4d81a027db952db
2021-06-27 15:16:35 +00:00
James Buren
91bae5837b mkzenboot: fix implicit function warning
strcasecmp is defined in strings.h but it is not included here.

Change-Id: I0629560b6f928f9839f01918cce5e2f1e5b4a85c
2021-06-27 15:13:59 +00:00
Tomasz Moń
3c7c71030f
Sansa Connect: Ensure adequate AVR Slave Select delay
Waiting 10 us between selecting slave and transmitting data on SPI
resolves spurious startup glitches.

Cache last read monotime value as it can differ from the first one.

Change-Id: Ia6ac5696f6ee2bc3c6a8be27e33aaddd9ff4ce2a
2021-06-27 13:32:20 +02:00
Tomasz Moń
1b81bd8a61
Sansa Connect: Discard invalid monotime reads
Read monotime twice in a row and only accept the value if it matches or
the two reads are 1 second apart.

Change-Id: Ibd289103a20404dd1b2bbd131fdfa8905852c788
2021-06-27 13:14:11 +02:00
Tomasz Moń
a4ab636423
Sansa Connect: More reliable AVR communication
AVR requires bigger delays between retries. Read state instead of
version for synchronization purposes as it shifts more bytes.

Change-Id: Ib7fa980496d3bc7744a086b45e1865861ef58b88
2021-06-27 12:20:56 +02:00
Tomasz Moń
ead4bc0769
Sansa Connect: Retry AVR commands only 3 times
If the commands repeatedly fail it is likely that the AVR is not
programmed. In such case simply continue normal operation. This is
especially important in bootloader as it makes it possible to load new
rockbox build using bootloader USB mode. Otherwise, the only recovery
option would be to use I2C serial.

Change-Id: I4b0999833e9a906ec6353bdfdd5b68211f07ac81
2021-06-25 18:30:11 +02:00
Tomasz Moń
3738510953
Sansa Connect: Implement RTC functionality
Use 32-bit monotime AVR counter for time tracking. Set the time by
adding fixed offset to the counter value. Store the offset in rockbox
directory to make it persistent between reboots.

Do not implement alarm functionality as wakeup is only possible from
sleep and not from complete power off.

Change-Id: I615c7eb4df8ab0619dcbfcff107bc7051a15aace
2021-06-25 16:12:06 +02:00
Tomasz Moń
635ec5bbbd Sansa Connect: Manually drive SPI Slave Select
Keep Slave Select active during command transmission. This relaxes
timing requirements on the AVR side.

Change-Id: Ia1a6cf45aba3c11f6aeaa7441c6793807ca827f0
2021-06-25 14:10:15 +00:00
Solomon Peachy
b972fe4cdf misc: Add a .gitreview file for better gerrit integration
Change-Id: I8ca4afacb54f7b88b984b16249d65ee97c05eb6e
2021-06-24 07:22:19 -04:00
Aidan MacDonald
6da490099b Touchscreen: absolute point mode scrolling bugfix
Due to this inadequate bounds check, it was possible under certain
conditions to cause a crash by touching & scrolling in the empty
space "after" the last item of a list.

Change-Id: Ic6c30214d887e1c7ccb212de272248ca24f60856
2021-06-22 21:42:02 +01:00
Aidan MacDonald
76e07a7fd2 Touchscreen: adjust how bar padding is handled
The old way of padding out bars was to just create a bigger touch
region, the intent being to make it easier to touch the end of a
bar. Unfortunately, this didn't even accomplish that, and caused
an annoying offset between the bar graphics and the touch point.

New method is to account for padding explicitly and clamp touches
in the padding region so they are within the proper touch region.

Change-Id: Id39e571fc1b033a4da94f0eb1143a2fc276bab03
2021-06-22 21:37:02 +01:00
Aidan MacDonald
02860d67c3 Touchscreen: adjust calculation of bar touch position
Increased the precision of the bar from 100 steps to 1000 steps so
it is possible to make finer adjustments, and made it possible to
pick the maximum value in a bar rather than just the maximum - 1.

Change-Id: I2e694d3e86e4a151e014da1bd15ab3ade4c4b95e
2021-06-22 21:37:02 +01:00
Aidan MacDonald
8a6b2f3abc Touchscreen: make volume bars respect volume step increment
Change-Id: I449b305ec4070e61f3619f8b7ac01a74c3ac59a6
2021-06-22 21:37:02 +01:00
Tomasz Moń
b5c40d9991
Sansa Connect: Refactor AVR command handling
Add defines for all commands handled by AVR, including the unknown
opcodes (0xC5, 0xD3, 0xD4, 0xD5, 0xD6).

Properly synchronize with AVR and keep repeating command until it looks
like AVR has accepted it.

Change-Id: I3d42e973f135e33092c71c9887421906a900ab58
2021-06-22 19:18:17 +02:00
James Buren
581081a3df mi4: replace chksum_crc32 with crc_32r
This uses an equivalent algorithm but with a different initial value
than we normally use (all bits off vs all bits on). Use the new crc_32r
to replace the original MI4 crc32 implementation.

This frees up some extra space on mi4 targets which gives us more
room on a few very space constrained targets (sansa c200/e200, etc).

Change-Id: Iaaac3ae353b30566156b1404cbf31ca32926203d
2021-06-21 09:36:54 +00:00
James Buren
fc92081080 rockbox: add a crc32 reverse polynomial function
This uses the reverse of the polynomial used by the current crc_32
function. The code for this was derived from the implementation used
by tinf. This version is space optimized and should be a good way to
reduce code duplication in other parts of rockbox that use the same
crc32 algorithm. This is mainly of use in areas where DEFLATE is in
use.

Change-Id: I918da5b4ea4dc441c0e7e6b5007abcc2da463bcb
2021-06-21 03:37:17 +00:00
Tomasz Moń
2ca5774cf9 Sansa Connect: Indicate charging status
Consider battery level down to 0 as safe as OF continues to operate
normally even when at level 0.

Change-Id: Ie3889e5662b9fa6588e20ad02d8953f29e28800c
2021-06-20 10:33:46 +00:00
Solomon Peachy
0faf978c3d build: Add an 'xz' target to generate a .tar.xz image
Improve the tarball generation a bit too

Change-Id: Ie68bea4e876bad5cd101dd396ec2247127b1b390
2021-06-17 11:56:59 -04:00
James Buren
3831051c47 mknkboot: optimize verifyfirm
The checksum only needs to be calculated once. A small oversight on
my initial implementation.

Change-Id: Ie23faf36f5add7ed7f146769b604dbd8204c2605
2021-06-17 15:30:51 +00:00
Solomon Peachy
2ed4bf8a43 FS#13299: Handle MP3 files with more than 128K of headers before audio data
Encountered a file with ~600K of ID3v1 headers.

Optimize the potential overhead by minimizing reverse seeks.

Change-Id: I972dbf1af1c36659f19c7ab4eed0b9149c642880
2021-06-16 17:37:29 -04:00
Solomon Peachy
fa9ddd5af9 Revert "FS#13299: Simplify VBR frame parsing in the metadata decoder."
This reverts commit 756c0d2ac8.

Change-Id: I5f98972f69e7645239fd9218c9d4eeb9bd2ec7a5
2021-06-16 16:58:47 -04:00
Aidan MacDonald
7aade87863 Fix yellow from 9ccae042
Change-Id: Iad4eaab8b766d1d0aad051971fd49a64126ca4be
2021-06-16 21:22:49 +01:00
Moshe Piekarski
9ccae0421a Implement x^y in calculator
Change-Id: I868b703131675876bd91198b8a53a921152aecba
2021-06-16 19:50:14 +00:00
Aidan MacDonald
a3f2b64a46 Enable float formatting in printf
Needed for g#3415, and if the comment is to be believed, this needed
updating for recent MIPS targets anyway.

Just blanket enable everything for all targets with >= 8 MiB of RAM.
The only targets with less than this are the Sansa Clip, c200v2, and
m200v4, which all have 2 MB of RAM.

The added code size is around 4 KiB to 7 KiB, depending on the target.

Change-Id: I5773482a13543dabb1f93f713a21f1382a9c5a22
2021-06-16 19:49:55 +00:00
Tomasz Moń
f6c7407cc3 DM320: Use SD/MMC data done interrupt
Wait on semaphore until DMA finishes instead of busy waiting. This
allows the CPU to be used by other tasks during transfers.

Increase peripheral clock frequency, divide AHB by 2 instead of 3.
Function clock frequency is AHB divided by MMC divider + 1.

Change-Id: Ic890634da7e3541962ea3501eae8fa2ca2db606a
2021-06-15 07:31:29 +00:00
Aidan MacDonald
95408f2117 FiiO M3K: Add dual boot support
Change-Id: Ic34d50855b317b5f4073b232dbf458edf82f55e1
2021-06-14 20:45:14 +01:00
Aidan MacDonald
89f4064743 x1000: Extend CPM registers for dual boot
Change-Id: I283834a653506fd95ff8b56897e5f3afaf375cf5
2021-06-14 20:45:14 +01:00
Aidan MacDonald
2d6ddd0c5b x1000: NAND driver bugfixes
- Missing mutex unlock in nand_open()
- SET_FEATURE command incorrectly issued as a read operation
- Inverted protection bits, not sure how that happened...
- Block erase skipped ahead by a wrong amount, causing erases
  spanning multiple blocks to erase the wrong blocks

This code was buggy as hell... it's in need of a major overhaul.
It's not very flexible or reliable, and access to the flash is
useful during development of a new port, even if not useful once
the port is complete.

Change-Id: Ib85ee7453beab9657e3d19798ebaa09174b3649e
2021-06-14 20:45:14 +01:00
Tomasz Moń
02c4ec294c Sansa Connect: Properly setup internal speaker
Switch to internal speaker when headphones are disconnected.

Change-Id: I7c04ac139ad540d85f960e9dadc2faaf4f856055
2021-06-14 12:48:16 +00:00
Solomon Peachy
756c0d2ac8 FS#13299: Simplify VBR frame parsing in the metadata decoder.
The old code would seek forward by the frame length, expecting to see a
frame header there, perform a validity check, and then seek back to the
current header.

Unfortunately this doesn't handle situations where there is extra padding
between the frames, leading us to potentially read garbage, causing the
validity tests to fail and rejecting the file outright.

Instead, keep track of the previous valid header/position, and if we find
"valid" headers in a row return the first after seeking back to it.

This change allows the file referenced in FS13299 to be properly parsed, but
further work is needed to get the file to be playable.  (file reports itself
as layer 1, variable bit rate, variable sample rate!)

Change-Id: I85f61a6360cc041a172db4b7a6b5516e5b60ceee
2021-06-13 12:13:03 -04:00
Dana Conrad
c067b344e8 FS#13297: M3K Autolock allows one action before disabling touchpad
Intercept buttonpress and action, and nullify both if the button
is part of the touchpad. Only affects autolock functionality.

Adding removal of note about autolock in the manual - the lock
button no longer needs to be pressed at least once to prime
the autolock, if enabled, since commit 14f7a95

Change-Id: Ic3582764df490d96abc2d78116f23cbe0fdd6173
2021-06-12 21:11:28 +00:00
Tomasz Moń
f3f9d1fb95 USB Serial: Implement Abstract Control Management
On devices that can assign interrupt IN, bulk IN and bulk OUT endpoints
this change results in the serial interface working out of the box on
Linux and Windows. On Linux it is registered as ttyACM device and on
Windows it is assigned a COM port number.

On devices that cannot assign the interrupt IN this change won't have
any effect.

Implement minimum required interface control requests. Respond with
whatever line coding was set to make terminal programs happy.

Change-Id: Id7d3899d8546e45d7cb4ecc3fe464908cb59e810
2021-06-12 14:47:15 +00:00
Tomasz Moń
663d846cf3 Sansa Connect: Disable endpoint double buffering
Disabling double buffering results in expected CPPI TX behaviour. With
the double buffering enabled, sending single ZLP resulted in two ZLPs
being available. The two ZLPs is problematic because this causes Windows
to reset USB device after failed SCSI command.

The problematic sequence on Windows 10 was as follows:
  * Host sends SCSI Mode Sense(6) Informational Exceptions Control(0x1C)
  * Device sends ZLP
  * Device sends command failed response

With endpoint double buffering enabled the ZLP was read twice by host.
As host was expecting command response on the second read (and got ZLP
instead), host attempts recovery by resetting USB device and retrying.

Change-Id: I64e95998f429ffb7b14143d956b1f29d20218d14
2021-06-12 13:54:54 +00:00
James Buren
a90ef8195b mknkboot/beastpatcher: implement basic firmware validation
This imports the MD5 code used by other utilities and creates
a function for checking the provided NK.bin against known original
firmware checksums. Integration into mknkboot and beastpatcher is
also added.

For the sake of consistency with beastpatcher, mknkboot had its
printf statements rewrote to print to stderr like beastpatcher
does.

Change-Id: I0e52271d8d627a5b02302ab5cd1da2815b7cec1e
2021-06-12 06:32:08 +00:00
James Buren
fe9bcd0468 beastpatcher: fix some minor issues
This mainly fixes some compiler warnings and makes it
work with mingw64.

Change-Id: Iabd13b5bed3427869ae78ceeb7e2255e68a6f7bd
2021-06-11 19:32:55 +00:00
James Buren
ab0f23c4b1 sendfirm: fix some minor issues
This patches some compile warnings and also makes it work correctly
with modern mingw64.

Change-Id: I8cd292bc989ae04bbaa1d7149d58d6d833a51c0a
2021-06-11 19:32:35 +00:00
Aidan MacDonald
d01f3192f2 Spin off common ft6x06 code to a driver
Allows for the i2c boilerplate to be shared between the M3K and
Shanling Q1 ports. M3K-specific quirks remain in button-fiiom3k.

Change-Id: I8879b603cefc16416bb200f1c484ca916d935c6a
2021-06-11 20:09:38 +01:00
Tomasz Moń
551c74da55
Sansa Connect: Remove fake battery voltage scale
Use battery percentage as reported by AVR.

Change-Id: Id697d460b240798eb0b103f9e1f419906b87e9ca
2021-06-10 08:43:32 +02:00
Tomasz Moń
f26499bd67
Sansa Connect: Add missing include
Include usb.h to have usb_acknowledge() prototype.

Change-Id: I2dd951315a93e7c1c456358d715f9ec44bf9e5af
2021-06-10 08:02:23 +02:00
Tomasz Moń
163e3507f8
Sansa Connect: Working USB Mass Storage
Acknowledge SYS_USB_CONNECTED in all queues so USB task can gain
exclusive access to the storage.

Reduce CPPI requeue timeout to speed up disk access.

Change-Id: I322aae4cac679696bb8186ccacf838a18f0715e9
2021-06-09 20:52:36 +02:00
Tomasz Moń
a11c88e0df
Sansa Connect: Fix sending ZLP on non-zero endpoint
This fixes panic when mass storage driver sends failed result.

Change-Id: I14ae975b1f23aee7bc2f7bad6ed68dde29cf5e36
2021-06-09 19:13:49 +02:00
Tomasz Moń
efa173a923 Sansa Connect: Fix bulk transfers greater than 64 bytes
Correctly set endpoint maximum packet size so host will not consider
end of transfer after receiving first packet when transfer is larger
than 64 bytes (at High Speed the endpoint max packet size was set to
64 but according to descriptor it is 512).

Split DMA transfers up to CPPI_MAX_FRAG so we get single interrupt
after each call to tnetv_cppi_send().

Change-Id: I385b66bc5d71975a4e3e9167efac0b1334bd3ffc
2021-06-09 10:21:06 +00:00
Tomasz Moń
7f3d0ce814 DM320: Fix SDHC response format 2 handling
Return complete R2 response to caller. Due to incorrect bitfield
handling only bits [127-96] were ever returned to caller.

Change-Id: I83726af35fb24a8051fcca8b8d019ad89d17500e
2021-06-09 10:09:50 +00:00
Dana Conrad
41ced369f6 ErosQ Simulator: fix keymap
The eros q simulator keys have been weird for a while, found out why.

Change-Id: Icb4209774448bc3c0d67dd87f802661cf12874b2
2021-06-07 22:01:47 +00:00
Aidan MacDonald
55c95a9cf5 FiiO M3K: filter touchpad input when it's disabled
I had hoped this would fix FS#13297, but no luck. Might as well
do this change anyway, because it's the "right" thing to do.

Change-Id: I55819c881d2141dd565e1c1f21460578c9114ff6
2021-06-07 22:28:58 +01:00
Dana Conrad
4c94c17913 ErosQ: undo ACTION_YESNO_ACCEPT button release
I accidentally left this in commit 8056b7f, and I think I'm giving
up on this for now - it just gets too complicated in the usb use
case. Revert to BUTTON_PLAY.

Change-Id: I9e392a3d7f2c18f34de54ecbafdb27cdf863b28c
2021-06-06 21:44:24 +00:00
Aidan MacDonald
2b23d3ecaf x1000: Allow setting IRQ handlers dynamically
Avoids having to #define the names of GPIO pin interrupt handlers,
as they can now be set at runtime instead.

Change-Id: Ib5da1bdb475ff7b64280fe7cdd00adab63389152
2021-06-06 11:06:43 +00:00
Aidan MacDonald
e85bc74b30 x1000: GPIO refactor
The GPIO API was pretty clunky and pin settings were decentralized,
making it hard to see what was happening and making GPIO stuff look
like a mess, frankly.

Instead of passing clunky (port, pin) pairs everywhere, GPIOs are now
identified with a single int. The extra overhead should be minimal as
GPIO configuration is generally not on a performance-critical path.

Pin assignments are now mostly consolidated in gpio-target.h and put
in various tables so gpio_init() can assign most pins at boot time.

Most drivers no longer need to touch GPIOs and basic pin I/O stuff
can happen without config since pins are put into the right state.
IRQ pins still need to be configured manually before use.

Change-Id: Ic5326284b0b2a2f613e9e76a41cb50e24af3aa47
2021-06-06 11:06:14 +00:00
Aidan MacDonald
695d1701cd jztool: add correct compiler flags for building on Mac
Change-Id: Ic89b5a2e65754891fedd63fec1e7235ed424e5f9
2021-06-06 11:52:23 +01:00
Tomasz Moń
474293a12b Sansa Connect: Initial TNETV105 driver port
Port USB driver from Sansa Connect Linux kernel sources. The device
successfully enumerates and responds to SCSI commands but actual disk
access does not work. The SCSI response sent to host mentions that both
internal storage and microsd card are not present.

Change-Id: Ic6c07da12382c15c0b069f23a75f7df9765b7525
2021-06-06 07:57:38 +00:00
Tomasz Moń
77603c344d DM320: Fix buffer overrun in sdmmc driver
Modify count, buffer and start address only after successful transfer.
This makes the retry operation to use the same address and buffer as the
just failed transfer.

Change-Id: I4f49bbdc861d634e33ea5e939a9693474411d24d
2021-06-05 18:41:02 +00:00
Solomon Peachy
62098a0cc9 toolchain: To build GCC for hosted targets, we need -std=gnu++11 for stage2.
But for stage1 (and non-hosted targets) we can stick with -std=gnu++03.

This keeps everyone happy with no apparent regerssions on older
host compilers.

Change-Id: I1300574557bc8d4d13e5cf07d4ae85645998f071
2021-06-04 10:05:05 -04:00
Aidan MacDonald
49dfc8be27 rockboxdev.sh fixes for hosted MIPS toolchain
Add --with-sysroot= to the configure args of glib and dbus because
otherwise they get confused and try to use host system dependencies.

Also fix the broken restart logic so you can actually restart a build.

Change-Id: Ib456c04845d80cc923dcc6b83e57f67a0868104b
2021-06-04 13:06:57 +00:00
Solomon Peachy
18288fcce6 toolchains: Fix gcc 4,9.4 compilation using GCC11.
Basically it defaults to using C++17, which breaks the GCC compilation.
Instead, explicitly specify -std=c++03, which should work everywhere.

Change-Id: I821591dbbac4fab4b1d930702ed66c7c767b5c92
2021-06-04 08:38:35 -04:00
Solomon Peachy
ce5fe4d108 ata: fix a typo in a definition that's thankfully not used.
Change-Id: I6f2d4d05249dc01b48caa1507ee0e71496c67ba6
2021-06-03 21:04:29 -04:00
Solomon Peachy
00440f2137 ipod6g:: Get rid of magic command numbers in ata driver
Use CMD_* macros instead.  Makes the code a bit easier to follow.

No functional change.

Change-Id: Ieb3d8f6fcca503421d3067aafbd0011a908368e0
2021-06-04 01:03:51 +00:00
Dana Conrad
14f7a958af Softlock Improvements
Add a check to see if the keys are currently locked and allow
them to be unlocked to ensure we don't get stuck when the current
playlist ends while the WPS is locked.
(Original by Aidan MacDonald)

Adding initialization for unlock_combo and to arm the autolock
(if enabled) without the user needing to press the lock button
at least once every boot (which is the prior behavior).

Removing screen_has_lock check from is_keys_locked()

Change-Id: I0fbf9b9746b011a7086ec8505a7ecc4b84f2d332
2021-06-04 00:00:57 +00:00
Aidan MacDonald
cec6422ace x1000: LCD driver minor fixes & improvements
- Use unsigned bitfields in 'lcd_tgt_config'
- Set DTIMES when using an 8-bit bus width
- Allow using DMA big-endian mode
- Provide an #ifdef to avoid stopping DMA in the middle of a frame
- Correctly #ifdef LCD sleep code when target does not implement it

Change-Id: I327c6b05223638b876d5ab62cb6e48f82e6d5fa5
2021-06-03 22:54:59 +00:00
Aidan MacDonald
a6b5de6a89 x1000: minor adjustments to PWM code
- Change busy loop to wait on the timer flag instead of hoping to
  catch the timer at exactly the right moment... unsurprisingly,
  that did not work well with higher frequency PWM outputs.
- Put GPIO data into a dedicated const array.

Change-Id: I2a920ed265c192da197a18c7242f3205d11636d3
2021-06-02 23:52:53 +01:00
Aidan MacDonald
0187fca640 axp173 driver: rename to "axp-pmu" + other changes
The old name was a bit misleading. AXP173 is sort of the lowest common
denominator of a series of related chips. The M3K uses an AXP192 which
has a few extra features vs. the AXP173.

New voltage regulator stuff was added for the sake of the Shanling Q1
native port (that player also uses an AXP192).

Change-Id: Id0c162c23094bb03d13fae2d6c332e3047968d6e
2021-06-01 19:57:41 +00:00
Aidan MacDonald
2066465b78 FiiO M3K: minor fixes
- Drop obsolete NAND patch script (it's simpler to use 'dd' directly)
- Remove an outdated comment
- Fix missing 'void' in a function definition
- Reset the poweroff timer when we poke the backlight

Change-Id: I752624386f30ac95f41a731d2b6be837e12275a9
2021-06-01 00:26:20 +01:00
Aidan MacDonald
663c5268ac AK4376 driver: refactoring
Some audiohw API calls are shared between playback and recording,
eg. frequency settings. Implementing these in the DAC driver won't
work for the M3K, as it uses a separate codec for microphone input.

Change-Id: Ieb0a267f8a81b9e2bbf0bbca951c5778f8dcd203
2021-05-31 23:00:14 +01:00
Aidan MacDonald
f63edb52ef x1000: refactor AIC initialization
Have pcm-x1000 handle most work, so target's audiohw code touches
only the relevant settings.

Change-Id: Icf3d1b7ca428ac50a5a16ecec39ed8186ac5ae13
2021-05-30 19:17:50 +00:00
Aidan MacDonald
c78ba1aa68 MIPS: add another mipsr2 endian function
Used by WAV and AIFF encoders for recording.

Change-Id: If1bf05583c6b5c123c91eb9c4dfe0e11efd3a0f7
2021-05-29 15:35:50 +00:00
Aidan MacDonald
f64e8dc33c x1000: Complete the register definitions
I think this covers everything now, although some fields are missing
enum values. Those can be added in if and when they are needed.

Change-Id: Ib1a94ba9c9a5949b6a038f8c1a49786823fae58f
2021-05-29 16:34:32 +01:00
Dana Conrad
8056b7fd1a Yes/No Screen: Allow accept to be button release
Allows the ACTION_YESNO_ACCEPT action to be set
to a button release by ignoring certain system events.

Moving USB init in main.c to the last thing to prevent
getting stuck in the USB prompt, if enabled.
Also changing ACTION_YESNO_ACCEPT to button release on erosq

Change-Id: I5e7498521a13cb4e840223dd0b9c8633e99093bc
2021-05-27 19:58:09 -05:00
Dana Conrad
10d199f9d5 Allow Softlock to happen in most contexts
All this tested on erosq, I'm not sure if this will break on other targets or if there is a reason this shouldn't be done.

apps/menu.c:

Added CONTEXT_MAINMENU|ALLOW_SOFTLOCK in do_menu(), this allows the user to lock the keys in most places within the main menu tree.

apps/tree.c:

Added CONTEXT_TREE|ALLOW_SOFTLOCK in dirbrowse(), this allows locking the keys in most other contexts not covered by the above.

Notable exceptions I've found that still cannot be locked: View Playlist, any settings change screen (ex. Shuffle No/Yes, Volume Select dB)

Adding fix for Advanced Key Lock feature brought to light by this change in apps/action.c.

Expected behavior for Advanced keylock is now (according to my testing here):
        Volume:	Can be exempted	from keylock anywhere
        Skip/Scrollwheel: Can only be exempted in WPS
        Seek: Can only be exempted in WPS
        Play: Can only be exempted in WPS

Backlight exemption is same except the Volume exemption doesn't work outside the WPS, but I don't believe that is due to this change.

Change-Id: Ifa3d1a03cf4884520a37dd91ed53a825cdb66778
2021-05-24 02:30:09 +00:00
Solomon Peachy
b66990cf77 manual: Migrate the manual from freenode to libera
Change-Id: I6a9ae1661b69dcaaddee75f3739f9c8dc8a940df
2021-05-23 08:32:32 -04:00
Aidan MacDonald
5cbeb88541 FiiO M3K: keymap improvements & fixes
- Add support for skip and seek while the player is locked.
  (Thanks to @bahus for the suggestion)
- Fix touch zones because the down button zone ended up being
  a lot smaller than expected due to the touchpad's wonkiness.
  Also added a visual display of the touchpad to its debug menu.
- Fixes the pictureflow keymap because it was mostly unusable.

Change-Id: Ic0da4f8df3613ff7828ce1cb940ed9e77ada3281
2021-05-22 12:20:44 +00:00
Aidan MacDonald
a2bac25a63 Allow alternative keymap when keys are locked
To enable support targets must define HAVE_LOCKED_ACTIONS and then
handle the CONTEXT_LOCKED flag from get_context_mapping().

Change-Id: I92703b534e4a45b4ebbf9bf98af42df9b8ac3b1a
2021-05-22 12:20:23 +00:00
Tomasz Moń
00b4626790 Sansa Connect: Clear recoverzap parameter
Clearing recoverzap parameter exists the Recovery Mode. This makes it
possible to run Rockbox on Sansa Connect without relying on original
Linux firmware.

Enable write-through cache on flash memory as write-back complicates
handling without any real benefits. The flash memory accepts commands
as series of writes at predefined addresses, so it is important that
the cache does not interfere with the writes.

Change-Id: I219f962f20953d84df43012cf16bbb16d673add8
2021-05-21 18:55:14 +00:00
James D. Smith
5388607968 [Cabbiev2] If the 'Artist' tag is empty read the 'Album Artist' tag.
Change-Id: Ic8b90cd2c833a08b57ed0157f960c9471cc5a51b
2021-05-20 18:52:48 -06:00
William Wilgus
e910f63bba lua add a way to filter settings on read
rather than dumping all the settings allow a filter function
to choose desired settings

in menucoresettings you can see an how to do exact text matches
or wilcard matches you can even use luas version of regex

Change-Id: I4c7f7592498ea194e06e9a556b77ffd57f5d4223
2021-05-19 23:29:10 -04:00
William Wilgus
dcff9b85a3 lua latebound function update
return the nextfunction and nil instead of pairs it allows a faster
return to lua rather than calling the lua function
pcall(fnpairs) from c and returning the result back
into lua to kick off the search
yeah, no clue why I didn't realize that before..

testing in x86 and ARM..
its more RAM efficient to do the initial creation
of the stack in lua code for the __pairs functon
its not faster but being that its a one time hit per
iter creation the reduced churn alone should be worth it
along with a reduced peak RAM usage

fix bug where a failed module can not be reloaded

optimize filetol

fix potential bug in splash scroller when no break character is found
Change-Id: I42c922e07039a19138b97c0d0e80cf3cf2426471
2021-05-19 23:28:35 +00:00
Solomon Peachy
0c62177575 FS12845: Fix uninitialized read
Change-Id: If0e5b65a70e10b624416e2a15e0b3df29c2b4591
2021-05-19 17:09:48 -04:00
Solomon Peachy
3ed035769c FS#9093: Database initialization hangs if there's no music file on the player
Original patch by William Poetra Yoga Hadisoeseno

Change-Id: I198a4d1b2899bd9200a35dbefd034a2e9857fa19
2021-05-19 16:30:32 -04:00
Solomon Peachy
0c4c1e6042 rbspeex: Fix build when using system speex libraries
Change-Id: If6dd5d89ff1e7d668ca975a89b9091a86cbca42c
2021-05-18 08:43:47 -04:00
Solomon Peachy
64bed8361d FS#13289: Updated Polish translation (Adam Rak)
Change-Id: I6680eac724a480006126d9128f8cc852f6221095
2021-05-15 11:18:59 -04:00
Aidan MacDonald
ad64293ae6 X1000: fix SD driver issues
- Added panic check for unaligned addresses
- Properly set 50 MHz high-speed mode timings

Change-Id: Ia0b3e5a6612c2053a28c2c3125de8ea92100912e
2021-05-14 10:30:58 +00:00
Aidan MacDonald
eb0336eded FAT: align writes when bounce buffering is enabled
Motivation: turns out the DMA in the M3K's MSC controller is buggy,
and can't handle unaligned addresses properly despite the HW docs
claiming otherwise.

Extending the FAT driver bounce buffering code is the easiest way
to work around the problem (but probably not the most efficient).

Change-Id: I1b59b0eb4bbc881d317ff10c64ecadb1f9041236
2021-05-14 10:30:41 +00:00
Solomon Peachy
ff28d238b8 ibasso: DX50/DX90 support 192KHz audio
Also bump max battery capacity to 7300mAh, to accomodate
oversized aftermarket units that require case mods.

Change-Id: I743e550b0c0843ab17529e70b5d592ea0e9a79d8
2021-05-13 21:40:22 -04:00
Aidan MacDonald
237919f1c3 Fix invalid use of bool in doom
Settings code tries to cast the bool pointer to an int pointer
and then write through it, which makes AddressSanitizer whine.

Change-Id: I1d6162fc98144cd6b40444016b3b48ef02967324
2021-05-13 18:33:27 +01:00
Solomon Peachy
942b1dd072 FS13094: Fix a divide-by-zero crash parsing zero-length WMA/ASF files
Change-Id: I2e90692327c69c4467a586b23b877c596b8d2c40
2021-05-12 18:22:06 -04:00
Dana Conrad
84a3cbe24d ErosQ: Small keymap changes
- Move WPS Stop to Power (Hold)
- Add WPS Hotkey to Wheel scroll Fwd/Back
- Add WPS Quickscreen to Play (Hold)
- Add Tree Hotkey to Play (Hold)

Change-Id: Id74622138353521f736c0de1009a354307b108eb
2021-05-12 11:01:27 +00:00
Moshe Piekarski
b895fb6643 Add tm->yday to RTC ports missing it
Change-Id: I86882262bafb8d06f925aabb87ebd1b5dcb0cd53
2021-05-12 10:52:03 +00:00
Aidan MacDonald
3f26fcf340 FiiO M3K: New bootloader
SPL and UCL-compressed bootloader are now packed into one output,
bootloader.m3k, eliminating the separate SPL build phase.

The Rockbox bootloader now has a recovery menu, accessible by
holding VOL+ when booting, that lets you back up, restore, and
update the bootloader from the device.

Change-Id: I642c6e5fb83587a013ab2fbfd1adab439561ced2
2021-05-12 10:35:20 +00:00
Aidan MacDonald
cc22df198d jztool: Support new M3K bootloader
Change-Id: Ia2d96893a9a5c77deb71c1fe32ae5a0585093f5b
2021-05-12 10:35:20 +00:00
Aidan MacDonald
3748117ee3 Add standalone UCL decompressor
Change-Id: Ibdb128ad66a7dcdd617dc83dfd294c0b24d4901d
2021-05-12 10:35:20 +00:00
Aidan MacDonald
9a19360398 Add microtar library (for use by M3K bootloader)
This is an MIT-licensed library for reading and writing v7 format
tar files. The version here is my fork, which fixes security issues
in the original code (it hasn't been updated in 4 years, probably
abandoned by the author).

Change-Id: I86d41423dacc46e9fa0514b4fc7386a96c216e86
2021-05-12 11:30:13 +01:00
William Wilgus
adff45ca21 lua -- temp loader
fix a few bugs, improve memory usage

Change-Id: I6ceefd033000a6178eab0dd513679b5d72cec81c
2021-05-06 21:36:55 -04:00
Aidan MacDonald
15ad1c42db X1000: simplify NAND driver
- Removed unnecessary layers of generic code
- Software ECC is gone since we don't need it now (and maybe not ever)
- Removed bounce buffering, so callers must now align buffers

Change-Id: I33fbac9d9d12a4657980b8618c7d62bfa91e2ea0
2021-05-06 08:37:26 +01:00
Solomon Peachy
244aad750c Update the english-us "translation"
Change-Id: Ife8dc52dd60fa10e8713f85969cebb6a865fd624
2021-05-04 21:56:41 -04:00
William Wilgus
9b2f23319c lua fix yellow and add temploader
temp loader allows some lua requires to be loaded and
later garbage collected unfortunately the module needs to be formatted
in such a way to pass back a call table in order to keep the functions
within from being garbage collected too early

BE AWARE this bypasses the module loader which would allow code reuse
so if you aren't careful this memory saving tool could spell disaster
for free RAM if you load the same code multiple times

Change-Id: I0b6f81e481b8c779edbd620c8403794f8353926f
2021-05-03 23:13:25 -04:00
William Wilgus
489a5f3ff7 lua add ability to use custom kbd layouts
bring custom keyboard layouts to lua
conversion to the proper format requires create_kbd_layout.lua
just pass a lua string with your desired layout

Change-Id: I14a392410846311a4f3cf8dda0e88d39834d0418
2021-05-04 01:52:08 +00:00
Dana Conrad
4f83e66cd4 FS#13287 - Load a newly saved playlist and resume where it was
Works from any playlist saving operation accessed from the
While Playing Screen, all other playlist saving operations
are unchanged.

Now a user-selectable setting! Located in
General Settings -> Playlists -> Current Playlist ->
Reload After Saving (Yes/No)

Change-Id: I5085c3f4c56c518a812d5ee015d15cc4dca19a28
2021-05-03 20:10:27 +00:00
William Wilgus
49edfc237b lcd_putsxyofs 16 bit lcd_mono_bitmap_part [AS]
'Bugfix' mono_bitmap_part reads ahead in the buffer,
if the height is <= char bit pixels other memory gets read
found with [Address Sanitizer]

also g#3332 since this is clearly a problem across the code
instead place the check for height < 8 in the lcd_mono_bitmap_part function

Change-Id: I917cbbd568fd5474b76a98c8919467e2538e0f0c
2021-04-30 21:26:06 -04:00
William Wilgus
20cd89908d lua submenus add a way to dynamically add items
updated example script and renamed some functions as well

fixed bug in printtable cursor position if greater than maxlines for the
screen would reset to item 1

now we move the list start and select it
(and try to center it on the screen)

fixed a few bugs in the add_menu code

Change-Id: I01dead0481ef2e925af8b4cc6c14e36c2859dbba
2021-04-30 13:38:54 +00:00
Aidan MacDonald
48b77898dc jztool: portability fixes for Mac
Change-Id: Id01ee4ff0222ebcd56764c90c9a211792aa0f69f
2021-04-29 20:31:32 +01:00
Aidan MacDonald
16a1993cad x1000: Remove some #ifdef SPL in the sfc/nand code
Change-Id: I554d590bfa700e521a74b5216e09f9673902d676
2021-04-28 20:04:10 +01:00
Aidan MacDonald
423fcf951a x1000: Rewrite clk_get code so it's more data driven
This is not pretty, but at least it should be usable by the SPL.

Change-Id: I1c0cdb910109c882160e3effd7c778e4d961842c
2021-04-28 20:04:10 +01:00
Aidan MacDonald
20fc928221 x1000: Centralize common definitions, memory layout
Change-Id: I8daad058ae55d4b750b1ae407153e4917de5d095
2021-04-28 20:04:10 +01:00
Aidan MacDonald
ed8c977e2f x1000: Fix stupid bug in the SPL
This overwrote the first 2 instructions of crt0 in the bootloader!
I'm really not sure how this *didn't* cause a fatal exception.

This address isn't special as far as I know, so just move it to the
TCSM by making it a static variable.

Change-Id: I58e1486804aeb2b68325e8de2aa1874c97abef19
2021-04-28 20:04:10 +01:00
William Wilgus
63b6281505 lua add submenu module + cleanup
allows menus + submenus + context menus all with simple tables
menu_t which is a table of strings
func_t which are the corresponding functions to go with those strings

see lua_scripts/submenu_demo.lua

Change-Id: I907b74b4abef0ecbe49f181d0ced6e6d20e94de5
2021-04-28 04:37:16 +00:00
Aidan MacDonald
d5695822a7 MIPS: remove .MIPS.abiflags section
The abiflags data is only used to communicate ABI information to a
program loader -- you can see what info is stored with readelf -A.
Dropping it shaves 24 bytes off of every binary (including plugins).

Change-Id: Iae78eeffe5c840ff67717707fb94821d24aac8ec
2021-04-26 12:41:06 +00:00
Solomon Peachy
7d0d32dbc6 Nuke the never-functional iriver ifp-7xx port
It never worked, and hasn't compiled in something like a decade, Given
the HW capabilities (limited onboard flash, no expandability) there's
really no point in trying to fix/complete it.

Change-Id: I7d175089840396f8891645bd10010d730dd5bfdc
2021-04-26 07:42:58 -04:00
Solomon Peachy
3ba2f6e5c7 Nuke all TCC77x targets: iAudio 7, Sansa C100, M200(v1-3), Logik DAX
They were never finished, never saw any release ever, and haven't
compiled for the better part of a decade.  Given their HW capabilities [1],
they are not worth trying to fix.

[1] 1-2MB RAM, ~256MB onboard flash, no expandability

Change-Id: I7b2a5806d687114c22156bb0458d4a10a9734190
2021-04-26 07:41:51 -04:00
Aidan MacDonald
77188e41f5 X1000: remove bogus GPIO Z mutex
There's absolutely no way for gpio_config() to get called from two
different threads due to the co-operative threading model, and it
is unsafe to call from IRQ context no matter what we do.

Change-Id: I58f7d1f68c7a414610bb020e26b774cb1015a3b0
2021-04-25 14:27:35 +00:00
Aidan MacDonald
a2dfafb2b2 X1000: disable SFC DMA
Change-Id: Ia33896b4a19da6eaaf3e5c057891ab10d75f31e1
2021-04-25 14:16:12 +00:00
Aidan MacDonald
d6220f618b MIPS: emulate -ffunction-sections with macros in mmu-mips
Using a macro to put each function in its own .icode-based section
allows us to put the functions in IRAM _and_ have linker GC. This
removes a troublesome #ifdef BOOTLOADER_SPL on the X1000 target.

Change-Id: Ia7b59778f5c36b7970dee4280547e434a1f4fc5a
2021-04-25 14:04:38 +00:00
Aidan MacDonald
c37555d30d FiiO M3K: remove the bootloader install debug menu
This menu serves no useful purpose anymore. I plan on adding an
improved version of this functionality to the bootloader instead.

Change-Id: I6a93625789f7192031eb6cee6708f9a867318622
2021-04-25 14:42:53 +01:00
William Wilgus
557ff6a981 lua print_button script
also allow splash_scroller to be used as static text display

Change-Id: Idc8c9e60ada920e2d1abd5301b59bd235e21a1c2
2021-04-24 00:00:44 -04:00
William Wilgus
14c6bb798d Sync opus codec to upstream git
Change-Id: I0cfcc0005c4ad7bfbb1aaf454188ce70fb043dc1
2021-04-23 14:23:04 +00:00
Solomon Peachy
75d9393796 rockboy: Properly fix the GCC11 code style warnings.
Change-Id: I69c77717604051052288a2d0f3aab068516d18ef
2021-04-23 09:25:47 -04:00
Solomon Peachy
aab72f969f ata: Rework power management behavior a bit
After continued reports of corruption using iFlash adapters, I went
digging for more clues, and this combination of changes seemed to
solve data corruption with the iFlash adapters on the ipod video:

 1) Instead of SLEEP, use STANDBY_IMMEDIATE when we detect drive
    as an SSD or CFA-compliant device.  The latter is technically higher
    power than the former, but what this means in practice is unclear.
 2) Don't check ATA powermanagement flag prior to issuing powermgmt
    commands. This reverts the previous "workaround" for the FC1307A --
    and PM is a mandatory part of the ATA spec for any CFA device.
 3) Prior to issuing SLEEP/STANDBY_IMMEDIATE, issue FLUSH CACHE.  The
    ATA spec says this is redundant for the latter, but says nothing
    about the former.  Either way it is always safe to call first.
 4) Delete all other FC1307A_WORKAROUND code related to powermgmt flags.

Change-Id: I492d06664c097d9bbd5cccfb9f5b516da165b1ee
2021-04-23 13:07:45 +00:00
Solomon Peachy
0271c0ed36 rockboy: Upstream code style trips GCC11 warnings.
Code in cpu.h is correct, so just disable -Wmisleading-indentation for
the specific sections that matter.

Change-Id: I378f3a6fef117ac73edb0d8ce998ef3a818be22e
2021-04-23 08:45:33 -04:00
Solomon Peachy
ebb9090004 xzbox: Fix misleading indentation that triggered GCC11 warnings
Change-Id: Ice462ef188dba3bc8ffc46c32142fc29d70e1a68
2021-04-23 08:42:10 -04:00
Solomon Peachy
03695429cf blackjack: Fix warning triggered by GCC 11
Change-Id: Ifcba0caf059bfa9f833893a1dbf0dc7a1c9b3e61
2021-04-23 08:40:57 -04:00
Solomon Peachy
39939a164b Promote FiiO M3K (native) to "unstable"
Now nightly and voice builds will show up.

Change-Id: Ibeddb08535ecc5ce913de2cb4d42ae458e88964d
2021-04-23 08:01:31 -04:00
James Buren
f968d6032a ipodpatcher: fix warning for apple stop sign constant
Convert both instances of the apple stop sign constant
to char array instances. This ensures sizeof will work
as expected when applied to the constant.

Change-Id: I8599f7b0a00031e944e654b12a0bc59309926807
2021-04-23 01:01:31 +00:00
Aidan MacDonald
79d1b68fe2 FiiO M3K: disable USB DMA
Although data transfer is reliable with DMA, it seems to cause hangs
and lockups during the early stages of connection and it's not clear
what the cause might be.

Change-Id: I9a83089c31d28309f0534dcdedf3c8c8348e6e3d
2021-04-23 00:30:52 +01:00
Aidan MacDonald
a544c8467d FiiO M3K: increase bootloader font size
The default font was very small and hard to read.

Change-Id: Id6d8ec49a700dcad65903b92c09ec42840c1f6e5
2021-04-21 18:32:10 +00:00
Aidan MacDonald
75cb8ba8a4 FiiO M3K/X1000: add USB support
This only required a minor patch to the usb-designware driver due
to DMA requiring physical addresses -- on the X1000, these differ
from virtual addresses so we have to do the usual conversion.

Both the mass storage and HID drivers work, but there are a few
issues so this can't be considered 100% stable yet.

- Mass storage might not be detected properly on insertion,
  and USB has to be replugged before it shows up
- HID driver may occasionally panic or hang the machine

Change-Id: Ia3ce7591d5928ec7cbca7953abfef01bdbd873ef
2021-04-21 18:31:55 +00:00
Aidan MacDonald
088ebb5fac Minor enhancements to axp173 driver
- Added register names to reduce usage of magic numbers
- Added function to control max charging current, needed for USB
- Corrected comment about axp173, since FiiO M3K has an axp192

Change-Id: I6604ce8d44e5a2ee84061cf042d17ccc4734ac57
2021-04-21 18:31:55 +00:00
Aidan MacDonald
f6d3680cb8 Make sure battery menu is shown if it contains settings
The #if statement didn't reflect all menu items in the battery
menu, so if the USB charging enable setting was the only one
present, the entire menu would be hidden.

Change-Id: I17a4ed626debf1f61ca140d67d477bdbd52ca180
2021-04-21 18:28:09 +00:00
Aidan MacDonald
9313274302 FiiO M3K: fix LCD weirdness when booting via RoLo
Change-Id: I2234a0d1b3095adbcca0bbd060fd5a7e13a895c1
2021-04-21 19:10:34 +01:00
Solomon Peachy
27b44bca73 configure: Get rid of the unused NOISEFLOOR option in voicefile generation
Change-Id: Id3b281e62487858120aae97cd5ee0ef888cf89a0
2021-04-20 08:50:06 -04:00
William Wilgus
acda37edd1 lua print table put_line a do_menu alternative
add stylized lines to lua

the exported do_menu has a severe limitation of 64 items
it also requires double the memory

put_line is the way rockbox builds menus

update printtable

user config from core -- done
code cleanup
fixed for 1-bit screens
changed button behavior
fixed for 2-bit screens

Change-Id: I4de55e42685aa1d2f53a33bc8e980827864e810b
2021-04-20 03:30:41 +00:00
Aidan MacDonald
c71a47f649 Move usb-designware out of ARM target tree
Change-Id: Ic981737976655596ea622b7b4d15a2d841bd993d
2021-04-18 18:45:28 +01:00
Aidan MacDonald
92140752d7 FiiO M3K: disable CPU frequency switching
After conducting some simplistic tests, I found that the power usage
did not appear to be affected by the CPU frequency.

I tested by playing back a 44.1 KHz FLAC file on single track repeat,
and measured current with the AXP173's battery discharge current ADC.
The button and LCD backlights were set to always on. Headphones were
unplugged and the volume was muted to eliminate any influence from
the headphone amp.

On average the current usage was between 78-81 mA at 1008 MHz, 252 MHz,
and 112 MHz. If anything, 1008 MHz drew _less_ current than the lower
frequencies, by about 1-3 mA.

A possible explanation for this, assuming it's not just a bias of the
test, is that the CPU idle state saves so much power that it's better
to maximize the real time that the CPU spends idling. More systematic
testing is needed to confirm this.

Change-Id: I527473e8c4c12bc1e94f8d4e849fecc108022abe
2021-04-17 20:24:36 +00:00
Aidan MacDonald
fceffb7d4a x1000: disable CPU idle stats by default
There's no point including this in normal builds: the stats are not
used for anything, they are not really of interest to anyone except
developers, and add a small overhead to the kernel tick.

Change-Id: I1b4f67cc62d11d634a8cec279dca513dd10eea96
2021-04-17 20:24:21 +00:00
Aidan MacDonald
01d1eb4258 FiiO M3K/X1000: Do system clock initialization in the SPL
Initializing the clocks in the SPL brings Rockbox in line with
how the FiiO M3K's original SPL works. It's likely other X1000
devices do this too.

There was a logic error in the previous setup: the code falsely
assumed that DDR memory would always be running from MPLL, but
it would be switched to APLL by the bootloader. Rockbox would
then try to re-init APLL, albeit with the same parameters. Maybe
this was the cause of the boot hang on some units.

Change-Id: I64064585e491bbdf1e95fe9428c91a9314f2a917
2021-04-17 20:24:07 +00:00
Aidan MacDonald
e123c5d2f2 x1000: don't reset all GPIOs at boot
What we really want is to avoid any interrupts being generated
before the drivers which handle them are properly initialized.
Intead of trashing all GPIOs, search for the problem pins and
fix them, leaving the others alone.

This fixes the M3K's button light flickering on boot and should
stop the M3K from entering a potentially confusing "dead" state
where all the lights are off but the CPU is still on.

Change-Id: I13a6da0f0950190396bff5d6e8c343c668e8fea1
2021-04-17 20:23:47 +00:00
Aidan MacDonald
b41d53792c jztool: New utility for installing a bootloader on FiiO M3K
At present, this is just a command line tool for Linux only.

Integrating this with the Rockbox utility and porting to other
platforms should be straightforward; the README contains more
information.

Change-Id: Ie66fc837a02ab13c878925360cabc9805597548a
2021-04-17 20:23:19 +00:00
Aidan MacDonald
1b8542490d x1000: Redesign SPL, and allow it to flash the bootloader
SPL is now designed so core X1000 code is in control of the boot,
under the reasonable assumption that the device boots from flash.
It should not be too hard to adapt to other X1000 ports.

The biggest functional change is that the SPL can now read/write
the flash, under the control of a host computer. The SPL relies
on the boot ROM for USB communication, so the host has to execute
the SPL multiple times following a protocol.

Change-Id: I3ffaa00e4bf191e043c9df0e2e64d15193ff42c9
2021-04-17 20:22:49 +00:00
William Wilgus
85fbbd9c7f 16 bit lcd_mono_bitmap
'Bugfix' mono_bitmap_part reads ahead in the buffer,
if the height is <= char bit pixels other memory gets read

Change-Id: I6e0d7a9017e1f9c371ffbd56af149ac20cb82341
2021-04-17 15:33:58 +00:00
Aidan MacDonald
afe80742a5 Fix Pictureflow bugs
It turns out that aa_cache.buf, used to store decoded album art during
background scanning, was not correctly allocated and overlapped with
memory allocated for buflib. This was what caused all the segfaults.

Also fixed a logic error in read_pfraw(), which returns a buflib handle
on success, but also returned 0 on failure -- since 0 is a valid buflib
handle, it should return -1 on failure instead.

Change-Id: Ifaa1c02ec19b0859e43c40c0462ed7738d07fec3
2021-04-17 13:06:29 +00:00
Dana Conrad
4dc602dd7f erosq: Tweak volume scale to be approximately correct
Tested on eros q, everything measured from line out,
open circuit.

- volume steps were approximately double the dB they
  were labelled as, so "-2 dB" would result in a change
  of about -4 dB from maximum (0, +6.2dBV)
- maximum volume defining the line out volume only
  changed every 10 values, and then was not close
  to correct- "-10 dB" resulted in -2.5 dB from maximum

This gets the volume dB approximately correct, and
maximum volume correctly sets the line out volume.
I was unable to get odd values in the max volume
to work, so set the step size to 2 instead of one.

For "consumer level" (-10dBV), set to -16.
For "Pro level" (+4dBu -> ~1.8dBV), set to -4.

Change-Id: I898b85d768153579a893b23551019af88f865d21
2021-04-17 12:09:19 +00:00
William Wilgus
a9d3e9a13d The Matrix plugin -- Bugfix
Off by one errorS in the matrix plugin

might even say its the matrix plugin re-loaded

Change-Id: I2bc7487615a9e28fcd1d170961fb0b5ee6da6af7
2021-04-16 10:10:15 -04:00
Solomon Peachy
42dba708e3 hosted: Don't open alsa control device directly
It was just being used as a proxy "yeah, we called hw_init()" so
just use a flag for that directly.

affects rocker, erosq, xduoo x3ii/x20, and fiiom3klinux

Change-Id: I14bd9f8d91f1d6cc8de0982a7426e2a103c6bfce
2021-04-14 01:39:57 +00:00
Solomon Peachy
ec4b5c794e ibasso: Found a reliable way to determine if SD card is present at startup
Change-Id: If02788a50e141cc2e5b1a6cde2df2a5ef5713e30
2021-04-13 14:28:30 +00:00
Solomon Peachy
c0a49d9bdf ibasso: Default to assuming the external SD card is inserted
Detection at startup is proving to be unreliable.  Even if card is not
present at startup, upon insertion it will sort itself out properly.

Change-Id: I9ee90b724c90c530a39264f698c200a48aa72b1d
2021-04-12 21:54:59 +00:00
Solomon Peachy
b6fce99046 ibasso: Implement proper PIVOT_ROOT filesystem access
Including direct use of the external SD card mount

Known issue:  If SD card is inserted at startup, it must be
              ejected and reinserted to be registered.

Change-Id: I5f420160bda32135cbb088c1e8b04b6e3a73018e
2021-04-12 18:19:06 +00:00
Solomon Peachy
e4345f2db8 build: Make the lang.h and genlang.h depend on the genlang tool
(So if genlang is updated, regenerate the language headers)

Change-Id: I1de94eff609b27788db4f08e2d99992b8f360849
2021-04-10 22:59:28 -04:00
Solomon Peachy
6ae2b7140c Fix red in bc416ff590
Most of it was due to checkwps breaking, the rest was m68k with radios.

Change-Id: I8a00e094e4006a132932f05e6c4ff7db63dfbfc8
2021-04-10 21:06:41 -04:00
Solomon Peachy
bc416ff590 misc: Only include rbpaths.h and string-extra.h in places that need it
(Don't include rbpaths.h in settings.h, or string-extra.h in rbpaths.h)

Build-tested on rocker, erosq, mini2g, nano2g,
                xduoox3, clipzip, dx50, and uisim

Change-Id: If32e9c9910f5c8247a655cb64522b84d6d7ccbb5
2021-04-10 12:08:12 -04:00
Solomon Peachy
1303be3437 ibasso: Get rid of #include "settings.h" in the button code
(It mucks with paths causing the input device open to fail)

Change-Id: I1e8a63d09c229ed9bacbd599a7869e875df21fd2
2021-04-10 10:25:20 -04:00
James Buren
448f98d9c0 pp: fix adc mistake where base 10 was used instead of base 16
Change-Id: I8562af8a11a22cd9edec149b2519ac0205d2b2dc
2021-04-10 01:13:09 +00:00
Solomon Peachy
13dbcab6c0 erosq: When mucking with the clickwheel, ensure we keep the screen awake!
Change-Id: I49d39f301f4b44c2477a657e2af964b97d73cf6b
2021-04-09 19:21:02 -04:00
Solomon Peachy
cd64aa2b10 xduoox3: Global volume_limit now applies to the line output as well
The X3's line out is a bit hot, at ~4.3Vpp, so allow it to be backed off.

(On my X3, backing it off to -6dB brings Vpp down to ~3.4V)

Change-Id: Iea38ef1c6a1b183d0f8fb4eaf2bf9ed6b350a532
2021-04-09 15:54:04 -04:00
Aidan MacDonald
10facef17b Skin engine: respect volume decimalization
This is basically the same problem as FS#13272, except it happens
on certain themes, eg. rayboradio. The issue only affects targets
with decimal volume levels.

Tested the fix using the rayboradio theme on the FiiO M3K and the
Fuze+ simulator. Volume was displayed correctly on both.

Change-Id: I9e035f7a3c04c85c9b3b01243c7f0a5f8f0ccf9f
2021-04-09 10:53:44 +00:00
Aidan MacDonald
9847f9c85e x1000: don't add pointless '1' after SPL signature
I added this because it is present on the FiiO M3K's SPL, but nothing
in Ingenic docs suggest this means anything.

Just get rid of it; the M3K boots fine without it.

Change-Id: I2e480b8c0ada386b0e772db49c0a7ebd32ffc7ea
2021-04-09 10:53:36 +00:00
Aidan MacDonald
c0a823e2ab x1000: Trim unused cache functions from the SPL build
Change-Id: Ib645d8ff10cfc672de8ac2debaa17d7dd50dfafb
2021-04-09 10:53:36 +00:00
Aidan MacDonald
54b8e9131c Revert "sound: add sound_numdecimals() to round out the sound setting query API"
There is already a sound_numdecimals() function, according to Git
it's been around since 2005. No need to add another one :).

This reverts commit 92a0ab8789.

Change-Id: I533ebf1763dd7a27346842982493d4550f05ad7c
2021-04-09 10:52:02 +00:00
Solomon Peachy
1e2a9a651c erosq: Switch to 32-bit PCM output, and do volume scaling in driver
Should improve audio output quality, especially at lower volumes.

Change-Id: I31c38f05fe4b554b092511f0fe7aaad9f346f6c5
2021-04-08 23:58:49 -04:00
Solomon Peachy
e86d90905b alsa: Fix an #ifdef typo in 54fcb907c1
HAE_ALSA_32BIT -> HAVE_ALSA_32BIT

Change-Id: Icf375d42f6b20e8393b6ffe6d23b3ac96abb571b
2021-04-08 23:10:41 -04:00
Solomon Peachy
54fcb907c1 alsa: instead of per-target tests, use HAVE_ALSA_32BIT
Affects all Sony NWZ (linux) and the fiio m3k linux targets.

Change-Id: I2fcf121bd026103d2b72332a5a52cc2b5e93949f
2021-04-08 23:02:15 -04:00
Solomon Peachy
e17337c9aa ErosQ: fix panic on startup caused by ad55da5f
It turns out #include "settings.h" pulls in rbpaths.h which ends up
remapping open() to the path-mangling rockbox open().

By defining RB_FILESYSTEM_OS we prevent the remap.  My mistake for not
testing this before committing!

Change-Id: I2978eb7b413693c4cb887b7ac7b2457780db7d25
2021-04-08 21:58:08 -04:00
Dana Conrad
ad55da5f87 ErosQ: Set Line Level Output volume
With a full-scale 440Hz tone, the line out voltage
measured approx. 5.8Vpp at the 0 setting. WAY too hot!
(9 dBV, in fact)

For 0.894Vpp (-10 dBV - consumer devices), -18 appears to be
about right for line level signals, but for "pro" equipment
a different level may be desired.

Therefore, the user to cap the line out level by re-using the global
volume limit setting.

Change-Id: I0d1d6482ea95537e9a2d00884eaee2713771c614
2021-04-08 14:37:14 -04:00
William Wilgus
c77cd7027f lua print_table add ability to draw a line separator
allows you to draw a line between items

Change-Id: I7e6e2f56738e12ff06d06a24f0f9d0769932a7b1
2021-04-08 04:15:40 +00:00
Solomon Peachy
f8ce18c286 Update the english-us "translation"
Change-Id: I306fe06628ceee4efb6913cf0d4744a7fc8e814f
2021-04-07 21:50:28 -04:00
Solomon Peachy
d2f694696f configure: Enable easy use of AddressSanitizer with sim builds
Change-Id: I6df7e63b1820296a280faa0925ad4781637b879b
2021-04-07 21:48:58 -04:00
Christian Soffke
1b82ebc6e4 Fix: Directory stream not closed in Shortcuts menu
Change-Id: Ie653682f35945f334e1658804500467f76495fcc
2021-04-07 23:02:34 +02:00
Aidan MacDonald
4b26372591 MIPS: make sure to fill 'jr' branch delay slot with 'nop'
Inline assembly in RoLO and the FiiO M3K bootloader used 'jr' to
jump to a newly loaded Rockbox binary, but incorrectly left the
branch delay slot open. That gives GCC an opening to place illegal
instrutions, etc, which might cause an unhandled exception.

Change-Id: Ia7a561fe530e94a41189d25f18a767c448177960
2021-04-07 19:59:57 +01:00
Solomon Peachy
213d372c92 FS#13272: Fix up volume_limit to respect decimilaztion.
Change-Id: Ib0e5ddcd660115f156ddb545e45bbe7da42f9709
2021-04-07 14:38:54 -04:00
William Wilgus
c5cf15ed02 menu.c submenu items should be limited to MAX_MENU_SUBITEMS
maybe someone is checking somewhere but pretty sure the error message is a
buffer overflow

Change-Id: I3b95db12bbbd4631223bbbbe540beb2d0dd984c6
2021-04-07 16:22:09 +00:00
Solomon Peachy
da542020c4 FS#13285: Updated Italian Translation (Alessio Lenzi)
Change-Id: I248d92121fb76056add2b533681aff27a6c58dd7
2021-04-07 14:42:29 +00:00
Solomon Peachy
8b56476a2c list: After drawing scrollbars, explcitly switch back to old viewport.
The viewport used for the scrollbar is allocated on the stack, and falls
out of scope before the next call to set_viewport(), which sets a flag
in the now-out-of-scope "last" viewport.

Change-Id: I2c8bfcff500d189fa3857411aadc2e16aa545d2c
2021-04-07 11:02:00 +00:00
amachronic
28c89386af x1000: Improve NAND driver API
- Proper error codes are now returned from all functions. These codes will
  be used by a host-side flash tool for error reporting.

- nand_erase_block() was replaced by nand_erase_bytes(). The caller can't
  know how big an eraseblock is with the current API, so next best thing
  is to verify the correct alignment inside the call and reject the erase
  if it isn't properly aligned.

- Fixed typo in nandcmd_block_erase() which would cause an SFC error to be
  interpreted as success. Yikes.

Change-Id: Id4ac9b44fa7fc2fcb81ff19ba730df78457c0383
2021-04-06 17:27:12 +01:00
amachronic
b5558c1cf9 x1000: place SPL's NAND bounce buffers in DRAM
This frees up 2 KiB in the SPL's memory map, leaving more room for code.

Change-Id: I01bbe2ab2905b2773a8b76d8c53e9f3d55bd040f
2021-04-06 17:27:09 +01:00
amachronic
1b314502c8 Remove a duplicate const
Change-Id: I0e6f4d609eb03155de4cd16aa98cab25f54a6681
2021-04-06 17:27:08 +01:00
amachronic
0fb333c85e rbcodec: Fix typo in include guard
Change-Id: I503ace58fb46e803c66b92113d2be7daebeb8b71
2021-04-06 17:27:06 +01:00
Solomon Peachy
74ae18cc8a fiiom3k_linux: Enable HAVE_TOUCHPAD and add in missing bits
Change-Id: I78fa5fdb3648adfaa40f6d5f3c255666a85e2761
2021-04-05 13:57:01 +00:00
Dana Conrad
1aed109fa8 Add ability to always have autolock on
Tested on ErosQ

Added a setting in the Advanced Softlock menu to always
have autolock on, rather than having to "arm" it with the
softlock button. Lock/Unlock still works the same with
this on, but when the screen turns off, the device always
ends up in the locked state. Requires Autolock On to be
set as well, and the normal Autolock functionality is
unchanged with this off.

Caveat: the power/softlock button must be pressed
at least once after powering on the device or enabling the
feature. After that, it should consistently always "arm"
the autolock.

Added feature to manual in
manual/configure_rockbox/system_options.tex. Also updated
some labels I had changed in the Advanced Key Lock menu
and added information for Disable All Lock Notifications
in a previous commit. Shared items also updated in
manual/configure_rockbox/display_options.tex for selective
backlight.

Change-Id: I09dc6814bee803e40c7088157e1fe9d01d5f3474
2021-04-05 11:09:32 +00:00
James Buren
962d412917 hdd1630/hdd6330: update battery capacities
Ensure the default setting reflects what the service manual says the
official battery capacity is. Change the ranges to reflect what
replacement batteries are actually available.

This range is actually much shorter in reality due to these units
requiring the rarer 3 pin battery type that uses a thermistor. As such
there's only one real replacement battery for each.

So the HDD1630 caps out around 700 mah while the HDD6330 caps out around
680 mah.

Change-Id: I2dbbba83ad2cd6e1d84e3481c4af84a06c45e16b
2021-04-04 13:27:00 +00:00
Christian Soffke
4bc7bafc68 Enable QuickScreen in filtered dir modes & playlist viewer
Will allow the QuickScreen to be accessed in the playlist catalogue
and when editing a playlist using the playlist viewer.

Change-Id: I4b7108db6384eb2077ffdccb2992f2e51a39f42f
2021-04-04 11:14:18 +02:00
Christian Soffke
4f374b3862 QuickScreen: Update status bar after changing volume
So that (e.g.) a skin's custom volume bar doesn't appear choppy during
volume adjustments

Change-Id: I65b9c46ccbdea3f2cb84c418d5d2e33e0121acc9
2021-04-04 00:14:37 +02:00
Aidan MacDonald
e09df1ce5b Fix accidental fallthrough in FiiO M3K simulator keymap
Change-Id: I4959d44998c44b5458721ba5f76ab5bc761e9f83
2021-04-03 00:28:31 +00:00
Solomon Peachy
5d292d9283 README: Update cross-toolchain info
Change-Id: I23adcc2f08c8a6465b17fe7c755ab68ad0a4d2c4
2021-04-02 11:29:02 -04:00
Solomon Peachy
2ebfbd3b7c docs: Add myself to revelant parts of the MAINTAINERS file.
Change-Id: I1a5a38eb98527334d98cf115d133b27d3d134a52
2021-04-02 11:25:02 -04:00
Solomon Peachy
39db911164 h300: Fix html manual generation
Change-Id: Ie2ba93e9b6fef1ca8d724982a0e555a502ebd43d
2021-04-02 11:16:49 -04:00
Solomon Peachy
afec380a0d gigabeats: Fix hang on startup caused by a stack overflow
headphone ADC thread stack was slightly too small.  Bump it up a bit.

(it was _perfectly_ sized for the prior older toolchain+optimization flags...)

Change-Id: I2ca67c2b85c54f879892a31e281d7696f893389c
2021-04-01 20:24:59 -04:00
Solomon Peachy
9e15c19891 build: Make it easier to disable plugins
Instead of 'ifdef ENABLEPLUGINS' (which always gets set) use
'ifeq(yes,$(ENABLEPLUGINS))' which means any value other than 'yes' is
treated as a negative.

Change-Id: I6c92eef5565328f1bb9f64a4d379dec697354224
2021-04-01 15:45:38 -04:00
Solomon Peachy
2f785c7797 PP: More cache invalidation fixes
Take into account the size of the pointer in the loop termination
condition.

Change-Id: Ib4f7625ef143149a0d691a2109bad67aece6241c
2021-04-01 10:57:29 -04:00
Solomon Peachy
9f7f1a841a PP: Use CURRENT_CORE instead of IF_COP_CORE(CPU)
Use of IF_COP_CORE was mistakenly introduced as part of 89acde6af2,
effectively short-circuiting multiple tests resulting in the code
paths always being executed, on both cores.

Use the correct macro, so per-CPU paths are handled properly.

Change-Id: Id346cf759fc1b06b7d56694d7af1f469caf785a4
2021-04-01 08:45:43 -04:00
Solomon Peachy
0b20038d87 FiiO M3K: Hopefully fix the sim build
Change-Id: If5a58a4b3913645068cee95d4553f285eb55d182
2021-04-01 10:54:36 +00:00
Christian Soffke
674c07d654 (Fix FS#13281) Revert "Restore playlist state as necessary before checking whether current playlist has been modified"
This reverts commit 46085c8978.

Change-Id: Id8540bb44b64546389d06593d8ff46588b634b53
2021-04-01 07:57:12 +02:00
William Wilgus
89acde6af2 H10 PP Crash -- Fixed
This appears to finally fix the issue
turns out the status register we were writing was only for the CPU
COP cache flush wiped out the CPU cache
--

Added some defines to cut down on the magic numbers
Added some comments explaining such

Set the address to full 20 bit address
0x1FFFFF which is then left shifted 11 internally --  somewhere around 4GB?

Link explains the cache status bits
https://daniel.haxx.se/sansa/memory_controller.txt

Change-Id: I57b7187c2f71a5b54ce145bf3a21ed492a8993cb
2021-04-01 00:52:57 -04:00
Solomon Peachy
058a9ec945 Add M3K native to the simulator
Change-Id: If3e877d2df189e44076631fd571cf6aa70ce6ca8
2021-03-28 12:08:31 -04:00
Solomon Peachy
afd8361d08 Add native FiiO M3K to builds.pm
Note:  It's marked as 'unusable' right now, so it won't show up
       on build.rockbox.org, nor will daily & voice files be
       created.

Change-Id: I5ea133477a6b4c0296c46757d0375994ad812cc5
2021-03-28 10:46:43 -04:00
Aidan MacDonald
3ec66893e3 New port: FiiO M3K on bare metal
Change-Id: I7517e7d5459e129dcfc9465c6fbd708619888fbe
2021-03-28 00:01:37 +00:00
Solomon Peachy
83fcbedc65 rk27xx: Take advantage of STORAGE_NEEDS_BOUNCE_BUFFER
(And get rid of its custom realignment code)

Change-Id: Iff27d717b870d3db239310421776744ea6863373
2021-03-27 17:18:21 -04:00
Solomon Peachy
961ffa61dd Use STORAGE_NEEDS_BOUNCE_BUFFER instead of STORAGE_NEEDS_ALIGN
Enable its use in the jz47xx MIPS targets.

(accidently committed g#3249 before making these changes)

Change-Id: I1791946f632901f0c7a94b04b009671aa0d71717
2021-03-27 15:02:18 -04:00
Solomon Peachy
c96dc1c886 xduoox3ii: Wrap the remote key detection in USE_REMOTE
Makes it straightforward to disable for debugging or defective hardware

Change-Id: Ie72786f6e9eabf396a05ef8a02e422c34c97691a
2021-03-27 14:43:17 -04:00
Aidan MacDonald
ea1aef9b82 Have FAT filesystem respect storage buffer alignment on reads
This is just a minor cleanup of Solomon Peachy's code, and using
per-filesystem buffers instead of a single static buffer.

Tested and working on the FiiO M3K.

Change-Id: I3c19e8cc24e2f8aa07668c9d1c6d63364815050a
2021-03-27 14:43:17 -04:00
Dana Conrad
f00eea4434 ErosQ: Fix text entry keymap
Text entry keymap was almost completely	backwards, and it was
impossible to submit without adding one last character.

Change-Id: I40a224fe20e228c5e4670dd6583318918c59c827
2021-03-25 20:58:13 -05:00
James Buren
018372bf39 usb: implement macro for initializing USB strings
This uses the new unicode string literal feature that is available
now to greatly simplify the initialization of these special string
types. This makes them much more readable at a quick glance.

Change-Id: Iad8b49aa763486608e3bb7e83fb8abfb48ce0a7b
2021-03-25 13:26:03 -05:00
Solomon Peachy
7652e6f8df rk27xx: Get rid of duplicate STORAGE_WANTS_ALIGN
Change-Id: I278d42858cc33da3710c8ca8f42d14c6d57509ca
2021-03-25 12:23:06 -04:00
Solomon Peachy
d5cc74ebd8 build: Get rid of suplerflous '-Os' references in linker calls
We should be using global optimization flags, and -Os is already our
default.

Change-Id: Iaba511b2b4fa2ee0f1eb1ad28024be954f4c5f03
2021-03-25 12:20:15 -04:00
Solomon Peachy
d121aa3fe8 build: We don't need sh-specific flags in the pictureflow build.
Change-Id: I1e9ab4332cbeb5aabc01edf825eace6152347e0a
2021-03-25 12:20:15 -04:00
William Wilgus
3d9d2de34d Revert "lcd framebuffer - Bugfix #2 ensure proper alignment"
This reverts commit 3a5c5edbf6.

Reason for revert:pulling in system.h breaks SDL

:(

Change-Id: Ied5e08de4770aa0da87c14b304480448db349423
2021-03-25 06:34:58 +00:00
William Wilgus
3a5c5edbf6 lcd framebuffer - Bugfix #2 ensure proper alignment
-- apparenty 0x4 aligned doesn't work properly

requires 0x8 alignment at least for the h10 20gb
but enabled for all processors that define MEM_ALIGN_ATTR

Change-Id: I11edaab183b91a6d158f1f439f173b9b699dc914
2021-03-25 00:32:26 -04:00
Solomon Peachy
a53864ed4a build: Don't overwrite autoconf.h unless it has actually changed
This way we only rebuild the world if something relevant changed.

Change-Id: Ia7d104cadec185a3227acbf330bb3b359296f0fb
2021-03-24 18:50:58 +00:00
William Wilgus
ed99b305a9 Revert "lcd framebuffer - Bugfix ensure proper alignment"
This reverts commit ffee661ab7.

Reason for revert: <INSERT REASONING HERE>
iAudio M5  `IRAM' overflowed by 48 bytes

Change-Id: Id808a72c6eacabc562d53eac8acd36b45f678a97
2021-03-24 18:44:35 +00:00
William Wilgus
ffee661ab7 lcd framebuffer - Bugfix ensure proper alignment
-- apparenty 0x4 aligned doesn't work properly

requires 0x8 alignment at least for the h10 20gb
but enabled for all arm processors

assign the default framebuffer to the default_vp as well

Change-Id: I0b76c30f2ddb5d6d2f7c6a132e4081aee58da17b
2021-03-24 18:22:01 +00:00
Aidan MacDonald
94b40ed314 Add asynchronous I2C bus API
The driver core is based off of the i.MX233 I2C implementation and
should work on any platform.

Change-Id: I3b9c15e12a689ef02a51c285be08d29d35e323dc
2021-03-23 15:42:54 +00:00
Solomon Peachy
eedc8934a9 FS13279: Update Polish Translation (Adam Rak)
Change-Id: Ib05bc51e3fa082a20862929f318bfd2e50d0dd66
2021-03-23 09:01:41 -04:00
Solomon Peachy
9a8ec7e0df Update english-us "translation"
Change-Id: I757e6b96473f714497bab45d17e754b5e344a5c4
2021-03-23 09:01:41 -04:00
Christian Soffke
e862816773 Fix FS#13278: error message when playing a song with Rockbox for the very first time
The function to check whether a playlist has been modified
will now only try to resume a playlist, if the global resume index
is not -1.

This also means that replacing a finished (modified) playlist will not
produce a warning anymore if Rockbox has been restarted in
between. In that respect, the behavior is identical to
what it was *before* 46085c8978.

Change-Id: Ib95f89043274f1c72c75023d1506fc093aaf4cf9
2021-03-23 05:17:56 +01:00
Solomon Peachy
3682891772 FS13277: Updated Polish translation (Adam Rak)
Change-Id: Iae27b78c66ebd0d9d185efaeef9131b86505bf9f
2021-03-22 23:09:21 -04:00
Aidan MacDonald
4d83f7a192 Call powermgmt_init_target() before polling the battery
In the old position of the call, the first battery reading would
be made before initializing the target's power management code.

If the target needs to initialize before giving a battery reading,
then the first reading would be wrong and the power thread might
inappropriately shut down based on a false zero reading.

The new position avoids forcing special-case logic onto the target
power management code.

Change-Id: I483cfabe30c6881d80a1094fd526fa0065523d19
2021-03-23 03:03:57 +00:00
Dana Conrad
1c54c5227b Add disable setting for al