A thread polls the appropriate GPIO pin for sd card presence and mounts
using the mount system call.
Change-Id: I31ab41c4120f4af64eb6998b7e7b6f9051585efb
The external storage will be created during make install, as simext folder in
the build directory. Upon pressing the e key the sim will mount (virtually
) this into the root directory. It can be accessed in the same way as an
sd/mmc card on real targets. This requires quite some path trickery in io.c.
Change-Id: I2fa9070a3146101ec5655b5b4115ca349d1d4bf4
Part of this change is to align sdlapp builds to other application targets
in that the sim_* wrappers are not used anymore (except for sim_read/write).
Path mangling is now done in rbpaths.c as well.
Change-Id: I9726da73b50a83d9e1a1840288de16ec01ea029d
The virtual external storage can be inserted/extracted with the e key. This
has little effect because there is no way to access the storage (yet, a later
commit will change this). Except on ondio where the mmc needs to be
extracted before entering USB (like on real target).
Change-Id: I523402832f3b4ae71e0603b281aba4fb8592a897
CONFIG_STORAGE & STORAGE_HOSTFS allows to use parts of the storage_* API to be
compiled for application targets without compiling storage.c or performing
actually raw storage access. This is primarily to enable application targets to
implement HAVE_MULTIVOMULE/HAVE_HOTSWAP (in a later commit).
SIMULATOR uses the same mechanism without explicitely defining STORAGE_HOSTFS
(how to add a bit to an existing preprocessor token?).
Change-Id: Ib3f8ee0d5231e2ed21ff00842d51e32bc4fc7292
On the ZEN, the LCD is fed continuously by the DMA and this refresh needs to
be stop when the bootloader gives control to the firmware, otherwise the DMA
will source data from invalid region and it might even lock-up if the new
code touches the memory setup. Work around this by properly stopping the LCD
driver: the bootloader assumes that if the target defines HAVE_LCD_ENABLE
in bootloader build (which is unusual) then it needs to stop the LCD. Since
stopping the LCD could produce funny screens, power down backlight
which is expected to power down the LCD too, giving a nice black screen
instead of some random pixels.
Change-Id: I7ce5ba9bfd08e596907c4ff8f80feb189f0576ce
zenxfi2: add support for internal storage on the SD version
The code can now skip devices marked as PROBE if they fail to init, thus
making it possible to handle various kinds of internal storages. The current
code probably doesn't interplay nicely since it acquires pins and never
release them so it will probably break NAND code when it's ready but NAND code
is not ready yet anyway.
Change-Id: I4cb962de4215661e521743a3f511445dbbf28673
This is the basic port to the new target Samsung
YP-R1, which runs on a similar platform as YP-R0.
Port is usable, although there are still
some optimizations that have to be done.
Change-Id: If83a8e386369e413581753780c159026d9e41f04
The builtin sysfont does not have an associated buflib_alloc_data
(because it's builtin right?). font_get_{width,bits} accessed a field of
it for all fonts which crashed on some systems but not on mine.
Solution: Move this field to struct font directly.
The cache size calculated was also busted.
Fixes FS#12944 and most likely FS#12938.
Change-Id: I32303c4335a12a6c421fdca34f7ece851aac12ca
This reclaims ~6kB of ram.
Change-Id: Iafdc661b1cf4445669c08c79205043792b8d14c3
Reviewed-on: http://gerrit.rockbox.org/718
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
The font engine can now perform cache lookups even if the font file is
closed, if the font was disabled with the new font_disable_all() function.
It is highly probable that the lookup succeeds but in the cache-miss case
a blank, full-width glyph will be returned.
Change-Id: I3c97e747d2a0ba30c7b495c6118c9f029d265b56
With the new lcd_putsxy_scroll_func() code can register custom scroll functions
(put_line() makes use of that). In order for the custom scroller to be able
to properly manage its userdata pointer (set via struct scrollinfo::userdata)
the scroll engine must inform the scroller about start and stop of scrolling.
To inform about start the lcd_scroll_* functions now return true when
the line will scroll. To inform about stop the scroll engine calls into the
scroller one last time, with the text set to NULL.
put_line() can use this to release the userdata registered per scrolling line
so that it can be recycled.
This fixes that some scrolling lines became glitchy after some time because
the userdata was recycled too early.
Change-Id: Iff0a6ce2a4f9ae2bada1b8e62f4f5950224942a9
This is used by lcd_puts_scroll_worker() to render the line immediately
instead of waiting for the next scroll tick when only the text was updated.
Previously lcd_puts_scroll_worker() did not render anything in this case
which could lead to visible blinking.
This fixes blinking scrolling lines with dynamic text in the skin engine.
Change-Id: I475bde8c8eb7c92f505e3c5ecf4d32bb90690536
If logf is enabled, panic() will print the last lines. On small
screens this is more or less useless, but on large screens it
can be very useful for debugging.
Change-Id: I26dfc76e9ac4a2ddc2def8db1616a04f943dbba3
Reviewed-on: http://gerrit.rockbox.org/709
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
Tested: Frank Gevaerts <frank@gevaerts.be>
Greylib performed a horrible hack and stored fg and bg patterns in other
struct viewport fields. One of them was just removed. So instead of
this hack simply enable the *_pattern fields for mono targets as well,
so that greylib can use them normally.
Change-Id: Ib0842ebcc97f5bf9d9382b4471903afa2f96f39f
These where used for line styling during scrolling, which is now done in apps/,
The viewport struct doesn't need to record these anymore.
Change-Id: I810d9dcb2644b00a798c6e75acab69c74a78e77f
This logic is moved into apps (put_line()) which can better handle line
decorations with respect to scrolling, mulitline and other complications.
Firmware doesn't need this. The remaining drawing function know only one style,
that is foreground on background/backdrop (changing drawmode is still supported).
Change-Id: I707060edc388a7d723a7d09b0cf5cbda6ec56708
Since scrolling is now pixel-based this is not necessary anymore. custom line
height is handled by put_line() but can also possible to implement with
lcd_puts_scroll_func().
Change-Id: Iee9b12bf99afac93d95d2a1a6f5d5b4db237b21c
With this functions removed there is no exported function in firmware left
that draws line decorations. Also no function supports specifying an y-offset
anymore (was used for pixel accurate positioning of otherwise strictly line-based
API calls).
Both should be handled in apps/ now.
Change-Id: Iba4b28ccc6e686c7db63e34b51ad4badae983fce
It is similar to lcd_gradient_fillrect(), except that it only draws a part
of the complete gradient. This can be used to draw only the bottom half
of a full gradient.
Change-Id: Ib47cc5237f6966e35ba07988bddbb00fd97adf96
This function supports installing a custom scroll callback. This will be
called when the scrollengine redraws the line. It allows to draw extended
styles (or anything your can possible imagine) along with the text.
It is also strictly pixel-based, the first pixel-based function that supports
scrolling.
Change-Id: I57f81ac7b3d08b877aea4cb8afa882f175ebcdfc
Some seldomly used drawmode combinations did not work in conjunction with
alpha bitmaps and backdrops. Now all should work (see comment added) by using
more bits.
Change-Id: I2bc96ecf471fa8c1a608a321a235b9c8527b3dc5
This fixes the radioart crash that was the result of buffering.c working
on a freed buffer at the same time as buflib (radioart uses buffering.c for the
images). With this change the buffer is owned by buflib exclusively so this
cannot happen.
As a result, audio_get_buffer() doesn't exist anymore. Callers should call
core_alloc_maximum() directly. This buffer needs to be protected as usual
against movement if necessary (previously it was not protected at all which
cased the radioart crash), To get most of it they can adjust the willingness of
the talk engine to give its buffer away (at the expense of disabling voice
interface) with the new talk_buffer_set_policy() function.
Change-Id: I52123012208d04967876a304451d634e2bef3a33
Much of the scrolling work is moved from lcd-bitmap-common to lcd-scroll.c,
a small scroll callback routine remains. This callback can potentially be
overridden by more extensive scrollers.
The callback also gets fed with pixel-based scrolling information, which
finally removes the strict line-based nature of the scroll engine. Along with
this is the change from scroll_stop_viewport_line() to scroll_stop_viewport_rect()
which works on a pixel-based rectangle instead of lines.
The ultimate goal is to move most of the scroll work to apps, which can
much better decide which line decorations to apply etc. This work is laying
the ground work.
Change-Id: I3b2885cf7d8696ddd9253d5a9a73318d3d42831a
This allows to draw lines without destroying styles that were drawn manually
(e.g. from apps/) beforehand.
Change-Id: I0de290c9343061efb115e1b76da5b76395c2b2af