Commit graph

33757 commits

Author SHA1 Message Date
William Wilgus
ef210b5fe4 Revert "Rocklua -- Extend / Fix rliImage"
This reverts commit 2daec3d3c3.

Change-Id: I53ea1f491e3c6d6fb759f426f203f927bd26b1e9
2018-07-22 18:43:04 +02:00
William Wilgus
2daec3d3c3 Rocklua -- Extend / Fix rliImage
Some devices(1-bit / 2-bit displays) have packed bit formats that
 need to be unpacked in order to work on them at a pixel level.

This caused a few issues on 1 & 2-bit devices:
 Greatly Oversized data arrays for bitmaps
 Improper handling of native image data
 Framebuffer data was near unusable without jumping through hoops

Conversion between native addressing and per pixel addressing
 incurs extra overhead but it is much faster to do it
 on the 'C' side rather than in lua.

Not to mention the advantage of a unified interface for the end programer

-------------------------------------------------------------------
Adds a sane way to access each pixel of image data
Adds:
--------------------------------------------------------------------
img:clear([color],[x1],[y1],[x2],[y2])
 (set whole image or a portion to a particular value)
--------------------------------------------------------------------
img:invert([x1],[y1],[x2],[y2])
 (inverts whole image or a portion)
--------------------------------------------------------------------
img:marshal([x1],[y1],[x2],[y2],[funct])
 (calls funct for each point defined by rect of x1,y1 x2,y2
  returns value and allows setting value of each point return
  nil to terminate early)
--------------------------------------------------------------------
img:points([x1],[y1],[x2],[y2],[dx],[dy])
 (returns iterator function that steps delta-x and delta-y pixels each call
  returns value of pixel each call but doesn't allow setting to a new value
  compare to lua pairs method)
--------------------------------------------------------------------
img:copy(src,[x1],[y1],[x2],[y2],[w],[h],[clip][operation][clr/funct])
 (copies all or part of an image -- straight copy or special ops
  optionally calls funct for each point defined by rect of
  x1, y1, w, h and  x2, y2, w, h for dest and src images
  returns value of dst and src and allows setting value of
  each point return nil to terminate early)
--------------------------------------------------------------------
img:line(x1, y1, x2, y2, color)
--------------------------------------------------------------------
img:ellipse(x1, y1, x2, y2, color, [fillcolor]
--------------------------------------------------------------------
Fixed handling of 2-bit vertical integrated screens

Added direct element access for saving / restoring native image etc.

Added more data to tostring() handler and a way to access individual items

Added equals method to see if two variables reference the same image address
(doesn't check if two separate images contain the same 'picture')

Optimized get and set routines

Fixed out of bound x coord access shifting to next line

Added lua include files to expose new functionality

Finished image saving routine

Static allocation of set_viewport struct faster + saves ram over dynamic

Cleaned up code

Fixed pixel get/set for 1/2 bit devices
-------------------------------------------------------------------------
Example lua script to follow on forums
-------------------------------------------------------------------------

Change-Id: I7b9c1fd699442fb683760f781021091786c18509
2018-07-22 18:05:02 +02:00
Michael Sevakis
19b2964d78 AMS v1/v2: Remove sd_enabled as an externally-visible variable.
Also removes the sd_enable() function call. It was only used in
the debug screen on AMSv1 and not used at all on AMS v2.

For v1,obtain debug info in a struture passed to a dedicated
debug info function so that enabling and disabling the controller
isn't racy.

Change-Id: I7c44693bc2df5a1f16168b05b3abfe622f9584ce
2018-07-04 15:20:47 +02:00
Moshe Piekarski
ab1b67f37b Textviewer night mode
Add a night mode to textviewer.

Change-Id: I6ddcd9c3c87473cbbffaeacf63a21ef11c0e5f44
2018-07-04 06:25:45 +02:00
Marcin Bukat
8742f6f0e2 Agptek: Fix headphones detection
Change-Id: Id43bfee7357eef8dda6a617c1207b930f3ea90a0
2018-06-28 09:52:59 +02:00
Marcin Bukat
971001d141 Agptek: Fix support for empty strings in sysfs helper functions
Change-Id: Id5573059da2b454f5336b3cebce7c09a83a7826f
2018-06-28 09:52:59 +02:00
Franklin Wei
d64ff86fb6 puzzles: resync with upstream
This brings the source to upstream commit 506b073 (though I have made some
extra commits on top of that). Notably this includes a fix for a double-free
bug that I myself introduced upstream.

Change-Id: I02671586bbc34d63e05398ee971271fed42538cf
2018-06-20 19:13:03 -04:00
Marcin Bukat
708a54d3de Fix yellow for LCD_DEPTH == 32
Change-Id: I59e9ec8720555c17e882a3a8c7ed0ba281b8d7c7
2018-06-20 21:57:34 +02:00
Marcin Bukat
28cfeed4c1 Agptek Rocker: Add missing lcd_set_active(true) in lcd_init_device()
This should fix problem introduced in 5c015ad resulting
in not updating screen properly in wps.

Change-Id: Ie36b6edfcfc7d425c84381402adae79d77fcc92f
2018-06-20 21:17:08 +02:00
Marcin Bukat
706e31b415 Volume adjustment in WPS ignored AUDIOHW_SETTING values
AUDIOHW_SETTING() defines number of decimals and step size.
This is taken into account in sound menu but ignored in WPS.
This was not a problem so far since all drivers used 0 decimal
places and step size equal 1.

Change-Id: I3466d6651c46a24cb5114eae1e1747293a76a1a6
2018-06-20 12:19:33 +02:00
Marcin Bukat
20bdfa8209 Agptek Rocker: Add to builds.pm
Change-Id: I512dc1d5419d4e59a3dd2503ce9da0a826975af1
2018-06-14 11:29:02 +02:00
Marcin Bukat
203e4adb1e Agptek Rocker: Slightly tweak build procedure
In bootloader build create stripped binary bootloader.rocker

Change-Id: Id67bebe82251fac22ad905ad3d49525691816746
2018-06-14 11:02:18 +02:00
Marcin Bukat
5c015ada90 Agptek Rocker: Implement lcd_enable()
In theory this should slightly improve battery life.

Change-Id: Iaf55beb7dbc20e7562017958aeb0386459d49a31
2018-06-14 10:03:07 +02:00
Marcin Bukat
755b824596 Agptek Rocker: Fix mpegplayer keymap
Change-Id: Iba438b49b66dc3bb3fbfc24b74ced9eaab993886
2018-06-14 09:09:24 +02:00
Marcin Bukat
419219e06d Agptek Rocker: Update tools to alter .upt update images
Change all references to official rockbox repository

Change-Id: I22d305bc6c6f89b8737b2bc15378bfd7fe10621e
2018-06-13 13:30:34 +02:00
Franklin Wei
f727b0787a puzzles: minor nitpicks to fbb6a2f
Just some whitespace changes to maintain stylistic consistency.

Change-Id: I50b5d52db2795cfcb4155bdffbfb80c1c3773112
2018-06-12 12:11:06 -04:00
Franklin Wei
c2d5ac1762 puzzles: fix typo introduced by fbb6a2f
When zoomed in, the original commit made a mono bitmap (a.k.a. text) always
have the red component set to 255. This would cause drawn text to always be
red. Fixed.

Change-Id: Iec06256a3a783948c60c70557de042b375224448
2018-06-12 12:09:44 -04:00
Marcin Bukat
f2075a5709 Add XRGB8888 native format
This got lost somehow during Agptek port merge

Change-Id: Ie84463ba523d2307466b49354867117e7393a440
2018-06-12 13:25:12 +02:00
Marcin Bukat
0e48cb7768 Silence warnings
Change-Id: Ied5ad7d3c193427892b681f95b44fcac5af0e16e
2018-06-12 13:09:31 +02:00
Marcin Bukat
32e8028a04 Cleanup comment
Change-Id: If39a5d2f64a9453a9b9b0cf0a2e3ad36027978ff
2018-06-12 13:02:47 +02:00
Marcin Bukat
f4390794ef bmp2rb: Add XRGB 32bit native format
Change-Id: Ic4af5a7c53c032e58dc252d1f69001d7aafd7f26
2018-06-12 12:55:56 +02:00
Marcin Bukat
307ea8382e Fix merge errors which broke sony linux targets
Change-Id: Ic0c618c6e2034609d1964bb3e9ff96c7a7cf1d40
2018-06-12 12:50:09 +02:00
Marcin Bukat
71dc1a789a Fix MIPS threading code to compile with older compiler
Official rockbox mips gcc is old and doesn't support
symbolic register names in inline assembly

Change-Id: If67230d06e28ccf31b0f8f8e1b622275fed3f6ff
2018-06-12 12:41:03 +02:00
Marcin Bukat
9be14c014f Fix merge error
Change-Id: If1b5258bb86e477ac4cb1adb95f6c887a2ef8810
2018-06-12 11:44:01 +02:00
Marcin Bukat
7f4d183f17 Fix ipod classic build
Change-Id: I55a2849bd1a22b40c0f75dcaeac481866f7dbf61
2018-06-12 11:19:24 +02:00
Marcin Bukat
c0bdbb43ea Agptek Rocker: Callibrate power discharge/charge curve
Thanks 'elakir' and 'pechenyh' rockbox forum users for performing
battery bench.

Change-Id: I25d350deaa805a9ecdc236f81f0ad127a169de52
2018-06-12 10:31:16 +02:00
Marcin Bukat
0952f59b92 Agptek Rocker: Fix keymap in time/date screen
Change-Id: Ic852d856bd1687cc277ccae8246963d15b6c0c75
2018-06-12 10:31:16 +02:00
Marcin Bukat
a81391b623 Agptek Rocker: Fix saving time in hwclock
Rocker is configured with CST (China Standard Time) timezone
which is UTC+8. Time in RTC is stored in UTC.

Change-Id: Ib9c03e0f0a1d3ea3a69f238cb083809ea9386e2a
2018-06-12 10:31:16 +02:00
Marcin Bukat
1af78b99d9 Agptek Rocker: fix rockboy pallete
Contributed by Aapo Tahkola.

Change-Id: Ibee14d4f307b2198c5c47f9593734bd5d31d379b
2018-06-12 10:31:15 +02:00
Marcin Bukat
fbaa97496f Agptek Rocker: Implement RTC support
Add define in config file to enable RTC support in rockbox,
Fix time_menu.c to include radio.h only when tuner is present
Implement time setting function on linux (was empty stub)

Not tested.

Change-Id: I40e6c4a6c1b66ada9cf4e698e502e221d0fc44df
2018-06-12 10:31:15 +02:00
Marcin Bukat
937589ca3a Agptek Rocker: Add bass, treble and balance controls
Change-Id: Ib84620850bbdc81afbdfff1610a0be7eab4f0ac0
2018-06-12 10:31:15 +02:00
Marcin Bukat
7692558674 Agptek Rocker: Implement USB mass storage driver
Agptek uses composite android driver.

Change-Id: Iece188ad640f3dfd24c171946c14da4c3516b6d5
2018-06-12 10:31:15 +02:00
Marcin Bukat
d5889b3d94 Agptek Rocker: Make simulator compile and run
There are some things to fix left but at least it starts
and you can navigate.

Change-Id: I76084bfc50334deeb55f46a10e97b5d6639815ac
2018-06-12 10:31:15 +02:00
Marcin Bukat
fbb6a2ff6d Agptek Rocker: Build plugins
Patch provided by Aapo Tahkola.

Change-Id: I37a42a950d78d6b8aa3927ec7aeb30030f7be7a5
2018-06-12 10:31:15 +02:00
Marcin Bukat
0538ba3d59 Agptek Rocker: Restrict root directory to SD only
Actual / of underlying linux OS should not be available to user.
I am still not sure if implementation is correct. It doesn't
perform any relative path sandboxing for example.

Change-Id: Ic577a10f3947f6e950e2c4d03173f9f207395eb7
2018-06-12 10:31:15 +02:00
Marcin Bukat
09fde79ec8 Agptek Rocker: Add tools to work with OF update images
Original firmware update is provided as .upt file. This file
is actually ISO9660 image containing uBoot, kernel image and
UBIFS rootfs and additional control files. Installing
bootloader means patching UBIFS rootfs image.

Change-Id: Ica86d1189dc1d5f3131d2035d8b87c8d08ec36b5
2018-06-12 10:31:14 +02:00
Marcin Bukat
d55680993d Agptek Rocker: Initial commit
Change-Id: I26b51106c7b1c36a603fba6d521e917d79b5a95b
2018-06-12 10:31:14 +02:00
Marcin Bukat
beef52c5f0 mipsel-rockbox-linux toolchain build fix
If we use mips-rockbox-linux target resulting toolchain is
big endian. If we use mipsel-rockbox-linux build fail since
linux doesn't have separate archs for BE and LE mips. So we
tweak arch passed to linux-headers stage to fix this.

Change-Id: Iccae529998d1cd8f3429fa3b2ca4f030122f23bb
2018-06-12 10:31:03 +02:00
Amaury Pouly
1b2faea677 Add generic linux MIPS toolchain
Change-Id: I9f8927e348421bd8592d62eb61f6acf324d5f3a4
2018-06-12 10:31:03 +02:00
William Wilgus
9a9c7f2b7c Fix lua failure to catch divide by zero and NaN exceptions
I can only assume in the course of the original conversion to fixed point
math in RbLua the fact that division by zero and NaN handling was to be
caught as a graceful exception by the floating point handler was overlooked.

As a result lua doesn't handle these exceptions and instead results in a
panic on the device.

This patch fixes this handling in the lexer for compile time Inf and Nan
results and in the luavm for runtime division by zero (Inf)

I missed the runtime exception of n%0 added checks for that as well..

Change-Id: I7746c087ea93678e5875f15ec6fe3f29f26bdb31
2018-06-05 18:47:57 +02:00
William Wilgus
80bb6ccdc4 Make short press of SELECT in FMS return ACTION_NONE on Sansa Fuze
Fixes action fall through of select|release on fuze during FMS screen
allowing detection of unmapped button

Change-Id: I53945766263d8710f31621a4c9ad50cec7be2b0d
2018-06-05 18:11:43 +02:00
William Wilgus
8db6d2004a Fix FMS Volume-long press Up and Down button actions for SANSA CLIP derivatives
When long pressing PLAY/PAUSE and FM_MODE on devices that use the clip keymap
 the volume changes in addition to toggling PLAY/PAUSE and SCAN/SEEK,this patch
 removes the volume functionality as these devices provide dedicated volume
 buttons

Change-Id: I3ab5af6da07900417c31c7a1036343b32b950e4e
2018-06-05 18:07:18 +02:00
William Wilgus
0c06e5fe90 Add file view menu to file browser
Allows changing file sort options directly through context menu in the file browser
rather than having to exit the browser and go through General Settings>File_View

Change-Id: Iec124d512dcb934bd261b2144a699c23f536c165
2018-06-05 16:35:17 +02:00
William Wilgus
641e033e33 Revert "rocklib -- Fix Red"
This reverts commit 37a20dffb6.

Change-Id: Ibf3a56f2b84e0e4af4c2ed890bc22b3555ab24ae
2018-05-31 14:31:24 +02:00
William Wilgus
4508ee9dbb Revert "Rocklua -- Clean-up source"
This reverts commit 0565f67118.
Removing Typedef from rliimage

Change-Id: Ib14241785c73de8ba6dc18ac76bec35eaed4661d
2018-05-31 14:15:28 +02:00
William Wilgus
37a20dffb6 rocklib -- Fix Red
Change-Id: I83b967a266837ebdf887e0f2c2d169a69af9e287
2018-05-28 17:52:32 +02:00
William Wilgus
0565f67118 Rocklua -- Clean-up source
Change-Id: I11dad15320f209655fd72c2365fe29afd65057d3
2018-05-28 17:07:19 +02:00
William Wilgus
07a0f206fe Lua liolib
Add Whitespace to EOF

Change-Id: Iac253e7905c59518040d39bb5033e35f0deea948
2018-05-28 02:36:23 +02:00
William Wilgus
0d41e13cf4 Fix lua lseek command / io lib
lua would not return or set arbitrary file positions
file:seek("set", 0) worked file:seek("cur") worked
but setting an offset or file:seek("end") failed

I tracked this down to a bug checking the return of rb->lseek

on error lseek returns a negative number and returns the file
position otherwise, the function was checking for if(N) instead of
if(N < 0)

Fixed - limited size of lseek to size of signed LuaNumber

Fixed - io:lines() stopped after first line containing only a newline
        instead of returning a blank line and continuing till EOF
        this fixes file:read("*l") as well

Fixed - ssize_t for read() with error checking

Change-Id: Ie859b288fb8f6814f1b3ae30992ecf78f2669de7
2018-05-27 17:55:10 +02:00
William Wilgus
1f63604e2c Fuze PLUS Fix lcd_update_rect()
Lcd_update rect was hanging during horizontal screen update x = 238 and width = 2
which was within the bounds of the screen, this seems to be a weird corner case
but more testing needs done.

Update_rect now properly bounded between 0 - screen w/h
--Cleaned up code

Pixels in x are now multiples of 4.

Datasheet states:
-------------------------------------------------------------------------------------------
WORD_LENGTH=0 implies the input frame buffer is RGB 16 bits per pixel.
DATA_FORMAT_16_BIT field indicates if the pixels are in RGB 555 or RGB 565 format.
Limitations:
— BYTE_PACKING_FORMAT [3:0] should be 0x3 or 0xC if there is only one pixel per word.
— If there are two pixels per word, BYTE_PACKING_FORMAT [3:0] should be 0xF and
H_COUNT will be restricted to be a multiple of 2 pixels.

and

WORD_LENGTH=3 indicates that the input frame-buffer is RGB 24 bits per pixel (RGB 888). If
BYTE_PACKING_FORMAT [3:0] is 0x7, it indicates that there is only one pixel per 32-bit word
and there is no restriction on H_COUNT.
Limitations:
— If BYTE_PACKING_FORMAT [3:0] is 0xF, it indicates that the pixels are packed, i.e. there
are 4 pixels in 3 words or 12 bytes. In that case, H_COUNT must be a multiple of 4 pixels.
-------------------------------------------------------------------------------------------

We are using 16 bits per pixel and byte_packing = 0xF but device crashes with multiple of 2 pixels

Behaviour can be verified with plugin - oscilloscope, Horizontal mode device hangs as indicator
reaches right of screen

Change-Id: I1445f5334f4e7fe59304c65c76b47d0daa0614b2
2018-05-25 22:48:01 +02:00