Commit graph

38807 commits

Author SHA1 Message Date
William Wilgus
1194a968bd [BUGFIX] pluginlib kbd_helper.c buffer ovfl
sizeof is in bytes len counts as a ucschar
should also be added to total_len

yep buffer ovfl

Change-Id: Ibebb8574e6dbab0ca78d1cdfeb04cbbda38f05e9
2026-01-23 21:58:32 -05:00
William Wilgus
163c3723bc announce_status re-fix splashf voice prompts, add missing lang entry
%s thru an ID2P() won't be voiced

Change-Id: Ibce1e818a6ae35c388f75182c3a8226371b420b3
2026-01-23 21:05:44 -05:00
Aidan MacDonald
d7a2aa7208 arm: add more Cortex-M SCB registers
Fix a typo in the CCR register while here.

Change-Id: I9b41ca48f466557683c4b678831f3e5eccec5587
2026-01-23 23:29:47 +00:00
Aidan MacDonald
72dd8bc4d0 sdmmc_host: implement sd_enable()
This is mainly useful for bootloaders that want to safely
disable the SD/MMC controller before booting. Disabling a
controller will reset and power down the bus; all attempts
to read or write to a disabled controller will fail.

Change-Id: I4a7ec4287f2b8510a35d964cc806c74be8c86406
2026-01-23 17:48:08 -05:00
Aidan MacDonald
80fec463df stm32h7: panic on sdmmc FIFO or DMA errors
FIFO errors shouldn't be possible with hardware flow
control enabled. DMA errors shouldn't occur unless a
bad memory address was passed.

Don't bother checking for ITCM/DTCM in the transfer
setup and instead just wait for the IDMATE error; if
the RM0433 reference manual is to be believed then
SDMMC1 _only_ has access to AXI bus memories, and
checking for all invalid destinations would be very
verbose.

Change-Id: I2b22b56009933e16c5adde4d36b7a906cee57791
2026-01-23 17:47:46 -05:00
Aidan MacDonald
a74ee4c04f sdm32h7: enable sdmmc hardware flow control
Hardware flow control prevents FIFO underruns/overruns
by stopping the bus clock if one would occur. This can
slow down transfers, but that's better than having data
transfer fail due to AXI/AHB bus contention.

Change-Id: I8696d3aff78c17dbbe85907160fa37fd4ee11e85
2026-01-23 17:47:27 -05:00
Aidan MacDonald
5442622d88 arm: fix Cortex-M IRQ masking
The following inline assembly in set_irq_level() turned out
to have incorrect constraints:

    int newvalue = /* input parameter */;
    int oldvalue;

    asm volatile ("mrs %0, primask\n"
                  "msr primask, %1\n"
                  : "=r"(oldvalue) : "r"(newvalue));

leading to incorrect code generation for common cases like
disable_irq_save(), which compiles to:

    mov r5, #1
    mrs r5, primask
    msr primask, r5

...which doesn't disable IRQs at all, since both of the
operands got assigned to the same register; the write of
'oldvalue' clobbers the 'newvalue' input before it's used.

Apparently GCC assumes that input operands are read before
output operands are written. One way to fix this is adding
the '&' constraint: "=&r"(oldvalue), but it's better to
break things down into separate, simpler asm statements
which GCC can figure out itself.

Also add compiler memory barriers where primask is modified
to ensure loads/stores aren't incorrectly moved outside of
critical sections.

While here, optimize disable_irq_save() a bit by using the
cpsid instruction, which avoids the extra "mov" and register
allocation needed by "msr primask".

Change-Id: Iac94a76db5bac399a1cf028da4241a0473259a46
2026-01-23 16:47:46 -05:00
Aidan MacDonald
0474dca7c3 x1000: add XT26G01CWSIGA flash chip
Recently seen in Hifi Walker H2 units. Links:

- https://datasheet.lcsc.com/lcsc/2108141930_XTX-XT26G01CWSIGA_C2833378.pdf
- https://www.xtxtech.com/en/Products/info.aspx?productModel=XT26G01CWSIGA

Change-Id: Ieef9974d2b13723047b020ff0ab2498bf18ca00d
2026-01-23 16:26:28 -05:00
Aidan MacDonald
17faa6abc7 stm32h743: fix 'make zip' error caused by config header
Change-Id: I12521cbfdab3c768015f4eafdfe95adf81ba520a
2026-01-23 16:21:57 +00:00
William Wilgus
c80723b539 announce_status plugin command line arguments + force_enque_next
I had commented out 'talk_force_enqueue_next()' in the voice prompts
pretty sure it was because really long prompts just keep droning on
problem being as soon as the plugin returns in some cases the prompt
gets cut off by the parent calling shutup on us

so it is now a setting (on by default)

Now allows command line arguments
so you can announce whatever prompt you want whenever / wherever you want
(checkout open plugins for a way to create a plugin with command line arguments)
you can then add this .opx shortcut to your shortcuts or quick screen

and as before you can use a hotkey which also will allow command line args..

Change-Id: Id8883c0a4e85e1cb813959ab72e89817f388a397
2026-01-23 11:02:36 -05:00
William Wilgus
3c6b9bb458 FS#13748 - The imageviewer plugin decodes the file infinitely when opening a empty JPEG file.
Couldn't reproduce this on most of my devices or the sims
turns out the bug depends on uninitialized memory being FF
and the file empty

Uninitialized memory fixed what I saw at least..

Change-Id: Ie267af0a20685003ee28ff42d008dd7942a7c6fc
2026-01-22 23:59:00 -05:00
William Wilgus
1c3e9c181e [Fix Red] openplugins -- import and export thru settings save / restore settings
Change-Id: Ief990b282459637a2f5974b46a6250a52b444cc0
2026-01-22 11:19:44 -05:00
William Wilgus
045d148697 openplugins -- import and export thru settings save / restore settings
saves openplugin entries to the config file for later import to the database

lang_english_to_id() allows entries to be transfered between builds

Change-Id: I47e01c5f75f8b0e69c203828e21759ef24bf125d
2026-01-22 10:41:50 -05:00
William Wilgus
e75ffe5f72 lua add rb_poly.lua vector drawing and memoization demo
just playing around with using lots of ram (and processing power)
in lua threw this together vector draws Rb logo and flips rotates and zoom

Change-Id: Ie1fe16a9a50271657f2ab7b9a39bf71e6db90d2c
2026-01-21 08:54:16 -05:00
William Wilgus
530cad0c7a FS#13718 - The image_save library (rocklua) can't correctly save an image with an odd resolution.
the image save script apparently does not like odd numbers for width

local bytesleft = linebytes - (bytesperpixel * w )

this should actually be pxleft since the image loop below returns pixels not bytes

tested on 1 bit 2 bit, 16 bit and 32 bit images in sim

Change-Id: Ic186c095c29d318dcfb7d76b83e07c75f1460584
2026-01-21 08:15:56 -05:00
Roman Artiukhin
86f35f1b53 hiby: r1_patcher: use generic bootloader name
Rename bootloader.r1 to bootloader.rb for use across multiple devices (Hiby R1, HiBy R3 Pro II and others).

Change-Id: Ib509d37d605391012a792a69b11a557b0319d2ce
2026-01-21 08:41:08 +02:00
Roman Artiukhin
da5d6f8bf3 hiby: r1_patcher: add hotplug support
Change-Id: I8b82842f26ac6444b32e166308b7c5deb17fab7a
2026-01-20 09:27:03 +02:00
Roman Artiukhin
b25f59a98a hiby: r1_patcher: fix possible boot hang and flash failures
- Sort image parts for deterministic results.
- Ensure bootloader.r1 is correctly named and has +x permissions.

Change-Id: I391c935d75e5079010fc91d3614d9221d34e4c6b
2026-01-20 09:27:02 +02:00
Roman Artiukhin
7bc856046b hiby: backlight: use framebuffer blanking instead of PWM on hosted targets
This enables deeper sleep. On touchscreen devices (HiBy R1) it shuts down both screen and touch (touchscreen needs few seconds before it's actually disabled)

Change-Id: I5e8a7dae840227ddf4433daa461cc7124db7676a
2026-01-19 14:23:07 -05:00
Solomon Peachy
476d23ac3a Fix red in 7e31f2a6d5
While the binary firmware build succeeded, the 'make zip' process failed
because the script that put the default wps image together runs the
device config header through CPP while only looking into the
configuration header directory.

So move the imx233-config.h header out of the target/arm/imx233 and into
export/config where everything is copacetic.

Change-Id: I9914558a892f8ff7ad839818f0a5ef687cc7b997
2026-01-19 13:49:51 -05:00
Aidan MacDonald
7e31f2a6d5 imx233: move SoC-specific config symbols to separate header
Change-Id: Id044c59045712f1b96b93b5a93b07ddaa46bab7c
2026-01-19 12:47:57 -05:00
Marc Aarts
ef31aae6f4 Remove wrong define for HiBy R3 Pro II BATTERY_DEV_NAME resulting in the device shutting down almost instantly.
Battery device name is 'battery' which is defaulted in hibylinux.h.

Should fix FS#13760.

Change-Id: I0aa3dc2c025fad94d70b37603ea42f93b442866e
2026-01-19 16:58:02 +01:00
Solomon Peachy
e13619b888 usb_audio: Fix compile failure with a (debug && !logf) build
Change-Id: Ie571020b0187c791d02b00c82af2d0dbc2237227
2026-01-19 09:24:41 -05:00
Solomon Peachy
8d15aff38a devinput: Fix regression on Hiby R1
3a4da9381e change an underdocumented definition that turns
out to be important, yet not documented in the linux uapi definitions.

Revert that change, and document the magic values so this doesn't happen again.

Change-Id: I0fac4a9d68170920bb5db1018d765e8a2994a95f
2026-01-18 07:45:39 -05:00
Solomon Peachy
b9ce049876 debug: show touchscreen info in the hw debug screen on hibylinux targets
Also add this debug screen to the hiby r1 / r3proii targets.

Change-Id: Ia255571838baef9900f6b6a3c395c10b872f5f5a
2026-01-17 22:48:29 -05:00
Solomon Peachy
a9e4c80878 hibylinux: Button code should be displayed in hex.
Change-Id: I3581098f632ba8fe0146b677f575ec6159c7c2db
2026-01-17 20:10:51 -05:00
Solomon Peachy
3a4da9381e surfansf28: Correct touchscreen operation
Based on what's committed I don't see how it could have ever worked.

Change-Id: I3c28e2c8791e75c494474183d1347426de9804fc
2026-01-17 19:58:21 -05:00
Christian Soffke
f0d99391de plugins: random folder advance: misc improvements
fixes:
- traverse_dir was called recursively using two
  MAX_PATH local buffers => possible stack overflow
- The import function inserted additional, incorrect,
  entries when the whole line buffer was filled
- "Dirs not found" message overlapped number
  of folders when generating folder list
- Final number of scanned folders wasn't displayed
- Wouldn't stop inserting when maximum number
  of files in playlist was already reached
- Prevent buffer overflow when importing
- Don't write to fd after opening failed
- Use whole buffer with read_line, instead
  of subtracting 1. Remove hard coded sizes
- CRs don't need to be removed in import function
  (already handled by read_line)

features:
- Use insert context for *much* faster insertion
  of large # of folders, and nicer progress display
- Use UI viewport
- Add progress indicator when saving or loading
- Display number of folders in edit list title
- Go back to plugin's main menu from edit list
- Only ask to save changes if list is dirty
- Warn before erasing modified playlist
- Flag successfully created playlist as modified
- Make folder scan wait for dircache
- Shorten menu item names
- Put "Play Shuffled" menu item first
- Remember selection when returning from submenus
- Go to WPS after ACTION_TREE_WPS
- Exit menu when pressing Back
- Perform an initial scan, if no data file exists
  yet, when "Play Shuffled" or "Edit" is selected

Change-Id: I7df76f8fb8387888ce491d8b74b01b481e9997d3
2026-01-16 16:49:38 +01:00
Solomon Peachy
fcb2289274 voice: when building from vstrings targetid needs to come from within
Change-Id: I2a1c6a249523ec7a1d339e7b08f1686dad1d0270
2026-01-15 09:20:06 -05:00
Solomon Peachy
dd0d9549ab Fix red in 75edff7880 due to various bootloaders
Bootloaders don't have support for queue_peek or other advanced
queue functionality, so USB-enabled bootloaders can't play these games.

Change-Id: Ib807b57b84433e7a2ad019648a6c588ab424c6cd
2026-01-14 16:56:51 -05:00
mojyack
75edff7880 usb: fix random "null ctrl req" panic when switching usb config
Change-Id: I7839edb99461abfbff03460d63343691085ef34f
2026-01-14 16:23:07 -05:00
Christian Soffke
d395520cd0 fix yellow 2e9c2da
Eliminate static pointer

Change-Id: Id26363771439dbd1f08c661ae2ff4277e0e8f288
2026-01-14 17:49:42 +01:00
Christian Soffke
2e9c2dafb2 fix use of out-of-scope stack memory in 18dfd8f691
when calling do_menu recursively

Change-Id: I949cf1cedd80746a7e29b67804470365987046f3
2026-01-14 17:11:50 +01:00
Christian Soffke
c296c2781a fix regression 18dfd8f691
The WPS, or certain screens accessed directly from it,
may have displayed a title when they shouldn't have.

Change-Id: I655f58aa7c4ff3ff996d9798fdbe06c14f09c27b
2026-01-14 15:33:56 +01:00
Christian Soffke
4541c94292 metadata: vorbis: fix warning when building sim on aarch64 linux
b64_codes is unsigned on some systems unless explicitly
declared as signed.

"b64_codes[index] < 0 comparison is always false due
to limited range of data type [-Werror=type-limits]"

Introduced in 849e8ab

Change-Id: I6a86e898c2ed8995f7346060f9b9b58ea6ab1e95
2026-01-14 15:11:34 +01:00
Christian Soffke
58616e685d gui: yesno: don't force redraw when leaving screen
Change-Id: Ic37ee29318535952e9420c2f58e24bbb27183120
2026-01-13 20:07:03 -05:00
Christian Soffke
18dfd8f691 Reduce list title glitches when switching between menus
Each time viewportmanager_theme_enable (or _undo) is called,
the SBS title is reset, even if the theme remains enabled.
Thus switching from one menu to another, if do_menu is called
again, briefly results in an empty title before the correct
one is displayed. Even unchanged titles will unnecessarily
flash for a moment. Other theme elements that are drawn using
conditions based on the title, may also appear glitchy.

This patch adds a way to make the status bar title persist by
copying it to a static buffer. Persistent titles are not reset
by toggle_theme (although scrolling will be stopped in
viewportmanager_theme_undo), so that the theme can immediately
display the appropriate title in do_menu, simplelist_show_list,
the yesno screen, or plugins that want to keep the theme enabled.

Change-Id: I1ec8f233b730321793eb7d3cad51496ee1b35440
2026-01-13 20:06:33 -05:00
Christian Soffke
399230e9ec Use SBS title in delete confirmation screens
When deleting files or directories, you will now see
the path's basename in the previously empty title of
an SBS, making it a bit easier to immediately know
whether you've selected the correct item.

Matching titles were also added everywhere else that
confirm_delete_yesno is used.

The full path of the item is still displayed below,
and continues to scroll, so that themes without a
title, such as the default cabbiev2, will look the
same.

Change-Id: I32422cfbbf6e680f58456237380176617789cac3
2026-01-13 20:05:43 -05:00
Solomon Peachy
d1c3e3b08b Partial revert of 04c45933e
mmc_sleepnow() was accidentally removed from the imx233 sdmmc code,
causing the sansa fuze+ build to fail.

Change-Id: I935f7f4fe99e7353a84dc26e81d85ee55afa0de3
2026-01-13 19:42:34 -05:00
Solomon Peachy
7518b8c309 debug: only show usb_charging_maxcurrent() if HAVE_USBSTACK is defined.
HAVE_USB_CHARGING_ENABLE isn't enough, as the ihp3xx targets have an odd
combination of USB charging but rely on an external ATA bridge.

Change-Id: I2cba5f218971ac23cde8dca34faa06bbb44a2448
2026-01-13 19:28:54 -05:00
Solomon Peachy
4850684149 Fix red introduced in 41d5ca3c48
Later GCC versions are apparently more permissive than older versions
when it comes to variable declarations not part of a block (ie {} that
immediately follows a case statement.

This resulted in every non-simulator device target failing to build,
along with sim build on older compilers.  I should have caught this in
the review; mea culpa.

Change-Id: Id32e085e34601cca7be273ed45711a4b8ee182a0
2026-01-13 17:28:36 -05:00
Aidan MacDonald
bc32d43c17 echoplayer: add charger detection and USB current limit setting
Note that USB current limiting is more or less wishful
thinking; only the charge current is limited, but the
system could easily draw more than 100 mA by itself.

Change-Id: I1083b015f0abea5a39a602ca8d7b142d3613b46b
2026-01-13 17:00:12 -05:00
Aidan MacDonald
cd20bc7d16 debug_menu: show USB charging current limit on battery screen
Change-Id: I5cbcdba5724616e85cde1cf9e422c8ccdb34592b
2026-01-13 17:00:00 -05:00
Aidan MacDonald
350e2b9b02 firmware: add missing 'void' in usb_charging_maxcurrent() definition
Change-Id: I5d1dbb9176160ae98a8ab20ac3436610cf8b805d
2026-01-13 16:59:49 -05:00
Aidan MacDonald
04c45933e8 firmware: get rid of unused "xxx_sleep()" storage driver function
storage_sleepnow() is the one that is actually implemented
by storage drivers. storage_sleep() sends a Q_STORAGE_SLEEP
event to the storage thread, which will normally end up
calling the driver's sleepnow() function.

Change-Id: Ib6523073348431dcc75c0f10ef99060c6960efd8
2026-01-13 16:59:39 -05:00
Arin Kim
41d5ca3c48 skin: add new %pP tag (playlist progress as percentage)
This new tag returns the position in the playlist as a percent. The main usecase for this is to use it as a bar tag, allowing themes to visually present playlist progress.

Change-Id: I0eb001e7458d97b8a0db39f3980d9c283bc8806b
2026-01-13 16:59:00 -05:00
Solomon Peachy
1c429e2209 settings: double internal size of "path list" from 80 to 160 bytes
* Autoresume path list
 * Database scan path list

Gives us a bit more headroom

Change-Id: Icb78d6f46dd39658334ddc3d8dc44863b0e138b4
2026-01-13 15:07:22 -05:00
Aidan MacDonald
450687bc3d stm32h743: fix incorrectly defined SRAM3 size
Change-Id: Ia31e22fb2c6e7becf380abf440b03a73ec383582
2026-01-13 13:42:51 -05:00
Aidan MacDonald
adb5e2e44f arm: handle unaligned addresses in Cortex-M cache ops
For commit-type operations it's useful to be able to pass
unaligned addresses, so round the address/size to ensure
all cache lines in the address range are hit.

Change-Id: Ibb23050ecf11b6ef6ab1dd517990a68ef62ecfa9
2026-01-13 16:20:45 +00:00
Solomon Peachy
74d86ab965 manual: Document the 'database scan paths' setting
Change-Id: I3a6505655461c13fac4f2246277b811757bdd180
2026-01-13 07:55:04 -05:00