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
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
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
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
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
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
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
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
Don't disable grayscale overlay, don't show "resize" messages
between frames and and don't clear display unless actually
necessary
Change-Id: I9f501d8280ce0c8f26f4345088d805d1b84cf143
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
Since we manually do it later, syncing after every
file is unnecessary and can make the audio
queue overflow
Change-Id: Ia7ab6ee345b25a453c56f48ed0d330b04da6da94
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
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
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
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
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
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
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
Adds a 'PictureFlow' command to database context
menus for quickly bringing up the album for a
song in PictureFlow.
Change-Id: I88cd89e93d9418558c698a15fc7fb5d9a90fb262
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
- 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
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
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
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
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
- 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
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
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
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
- 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
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
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
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
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
- 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
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
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
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
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
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
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
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
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
One of these was an unintentional fallthrough -- if you said no to
'quit without saving' it would save and quit.
Change-Id: I33828b58962a05adab65ac5f71dd0e2b1e07001b
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
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
Since this is a TSR plugin, it is not safe to use the plugin buffer.
Convert to using static buffers instead.
Change-Id: Ic5b297468a99d77d56f5b75e52dafabeb80d2f78
- 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
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
* direct use of memcpy() instead of ci->memcpy() in flac and mod
* uninitialized variable in mpegplayer
Change-Id: I2d08682d5f66c319780e69e3ff63d600c61d8f5a
- 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
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
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
- 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
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
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
Settings code tries to cast the bool pointer to an int pointer
and then write through it, which makes AddressSanitizer whine.
Change-Id: I1d6162fc98144cd6b40444016b3b48ef02967324
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
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
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
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
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
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
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
Code in cpu.h is correct, so just disable -Wmisleading-indentation for
the specific sections that matter.
Change-Id: I378f3a6fef117ac73edb0d8ce998ef3a818be22e
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
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
Image viewer compiles decoders as a plugin and removes CRT0
A resuklt static vars do not get initialized in decoders
Change-Id: I72da326967c7b404b297897000f82852661a7ebb
Added an entry 'Add' to the main screen to lessen confusion
side note:
its actually a shortcut back to this plugin with flag '-add'
passed as a parameter
Change-Id: Ifeb0a1e5be99764b1d25d5a3b0e00f1449ec3d78
Open plugin needs the context menu to allow the user to add an item
on the first run there are no items and therefore nothing to pop the
context menu from
Change-Id: I7a78454ff29b20c7b60db44349dd23d500ed887c
This adds a resync.sh script that handles most of the resyncing process:
copying new sources, regenerating help, and staging for commit. I also took
this opportunity to make the process more efficient and consistent by only
selecting the types of files that we care about and ignoring any
autogenerated temporary files that may be in the upstream tree.
Change-Id: Ib0803462684b8ae3b40eec3742944e5bdb28508e
This updates the upstream sources to include a modified get_cursor_location
patch that I anticipate Simon will merge shortly. Also, I've streamlined
the resync process to only copy the exact files we need to reduce clutter.
Change-Id: I6a5ac60821fce346c500b101c363ae0c63c2ee95
Before this was just implemented inline wherever it was needed. Now
it is provided as 2 inline functions in a header called checksum.h.
There should be no differences in actual behavior.
Change-Id: I5d756cc01dc6225f5cc8b6af90911a3fc7b57cd5
This removes all the pre-release bootloader of version 7 and
replaces them with production releases of version 8. The
pre-releases have their own problems and should be left
behind as they were never officially released.
Change-Id: If96531ba63cf4401d04133bda94735fe94ae4de1