Commit graph

38461 commits

Author SHA1 Message Date
Solomon Peachy
22d72bf369 rbutilqt: Add missing 'Q_OBJECT' macros to three classes
Change-Id: I0999c286facc06039a456243f6f0525f939e97d6
2025-05-09 07:51:16 -04:00
Solomon Peachy
35ca67534c lang: More title case corrections to English
* 'As' -> 'as'
 * 'In' -> 'in'
 * 'On' -> 'on'
 * 'Of' -> 'of'
 * 'And' -> 'and'

Change-Id: Ia5c57463441b183228b4872c658897f3199a76f9
2025-05-08 21:19:41 -04:00
Solomon Peachy
70b6a08be5 lang: Update the documentation in the "master" english.lang
Also improve the documentation in voice-corrections.txt

Change-Id: I81cdd8b3aac71d849e8ce54211ee1fdff1d19f5b
2025-05-08 21:19:34 -04:00
Solomon Peachy
c63b82a895 debug: Report if double-buffered fb is enabled
(Only applies to hosted targets if FB_DOUBLEBUF is enabled)

Change-Id: I6ef3ead5f6ef12b26e3dd0d07ac582cff98deaed
2025-05-08 12:35:03 -04:00
Solomon Peachy
89ea2eafb5 surfansf28: Get rid of the redundant debug code.
Change-Id: Iabfea333fc8598e3b7518bd2502759864b1982e8
2025-05-08 12:27:48 -04:00
Solomon Peachy
9502d8879e FS#13619: Updated Polish translation (Adam Rak)
Just one minor correction

Change-Id: I1e21a3c312320df59966f8385018b2c44aa705a2
2025-05-07 22:05:17 -04:00
Solomon Peachy
08eb6179a6 lang: Fix incorrect capitalization of some English strings:
* Automatic resume -> Automatic Resume
 * Set Wps Context Plugin -> Set WPS Context Plugin
 * Voice prompt volume -> Voice Prompt/Volume

Additionally, 'Wps' is corrected to 'WPS' in all translations.

Change-Id: I0305c6ab2ef09c11cd2ab26d6fde266c8a9c44a3
2025-05-07 21:53:28 -04:00
Solomon Peachy
950909fd5a build: Further simplification of checkwps build.
Change-Id: Ic6436ba744457d92606eaf24d6449f8c7009ba0f
2025-05-06 14:27:04 -04:00
Solomon Peachy
862243df21 checkwps: Fix failure to build due to genlang changes
Change-Id: I69ecce18f199822bf076075a1963960b9dd89ef7
2025-05-06 14:23:57 -04:00
Solomon Peachy
cd3207064e lang: Remove all deprecated strings from master language file
Previous fixes to genlang resulted in language files no longer being
backwards compatibile with 4.0 binaries.  So let's take advantage of
this break and get rid of all no-longer-used strings

Change-Id: I6a7a90dd7a20322f59fe0f3b40bc9a55b5954c8d
2025-05-06 13:56:06 -04:00
Solomon Peachy
5d5698a616 genlang: Fix inconsistent rules when enumerating strings
* sort contents of generated apps/lang/english.list
 * Ignore all entries with a source of 'none'
 * Filter out all destination strings not present in master english list
 * Always require '-e' argument

Change-Id: Ic86c0cb6c44139465cba6b6ce840131efe217c4d
2025-05-06 13:53:20 -04:00
Solomon Peachy
0ebfab36ba surfansf28: More fixes:
* Use 16-bit audio output
 * More audio tweaks (mute on startup, working volume control)
 * Treat the rotary input as a scroll wheel (works now)

To-dos:

 * Better global keymap (incorporate touchscreen)
 * Turn on plugins and define the approximately eight bajillion keymaps
 * Still have some audible pops when we turn on, need to figure out why
 * Default Cabbiev2 comes off as rather crappy on this device

...I don't know how much work I will do on this thing, as the limited
number of physical controls (and a lack of a line-out) mean I'd never
want to use this thing myself.

Change-Id: I37229d92766495219ee989d9ae48b5ed79bd45f5
2025-05-06 09:56:03 -04:00
Solomon Peachy
9b39c96ac7 input: Correct screen swapping input remapping with touchscreens
The virtual keypad uses BUTTON_MIDLEFT/MIDRIGHT not LEFT/RIGHT

Change-Id: I5f02c1e5b8c22403d3ff243568e562de834cd0a9
2025-05-06 09:30:51 -04:00
Solomon Peachy
5e8a73a817 surfansf28: Fix the default cabbiev2 WPS
Change-Id: I9231b85a127885402d1884375ab08db72ee266f8
2025-05-05 20:51:55 -04:00
Solomon Peachy
95f970076e surfansf28: Major improvements:
* Add a crude keymap
 * Use native "hardware mute" for audiohw_mute()
 * Properly handle touchscreen inputs
 * Can now play back music, with some warts..

Broken:

 * rotary wheel still doesn't work
 * audio garbled/distorted a bit
 * no volume control

Change-Id: I040217035a7bf3983b0e269fca3408eedd972cd0
2025-05-05 20:38:18 -04:00
Solomon Peachy
3a0d490713 hosted: improvements in devinput touchscreen handling
Some screens (eg Surfans F28) only report absolute positioning
via "EV_ABS" events, and the actual "touch on, touch off" happens
via a separate "EV_KEY" event.  So handle this.

This also fixes a nasty bug introduced in 3270daf2c4.

Change-Id: If73d390679ba6ffe37541442f631c03b73774fbb
2025-05-05 20:34:28 -04:00
Solomon Peachy
18f93ec46a FS#13621: Updated Romanian and Moldavian translations (Mihai Alexandru Vasiliu)
Change-Id: I6ce1f7987818c67e9cb4fd992f60938d295af677
2025-05-05 09:20:51 -04:00
Solomon Peachy
7feae37344 FS#13620: Updated Serbian translation (Ivan Pešić)
Change-Id: I3a68bafaf1edc047681304e30dcc1e8e2796ba9d
2025-05-05 09:19:47 -04:00
Solomon Peachy
51d8d452cb erosq: Don't require a long-press to cancel in time setting context
Change-Id: I108a7d795d03f44907f334fc12d38d11476e4b6f
2025-05-05 09:16:01 -04:00
Solomon Peachy
859984bd8c Fix red in 82f3d0c18f, accidentaly commited it.
Change-Id: Ie801992589ea278e3c2864d9bb335aeff549debc
2025-05-04 18:57:31 -04:00
Solomon Peachy
82f3d0c18f WIP hosted port to the Surfans F28
* Only bootloader builds
 * Plugins disabled
 * No keymaps to anything else
 * No simulator
 * Touchscreen not wired up yet
 * Audio still untested

Bugs:

 * rotary encoder does nothing in bootloader
   (might be bootloader bug, might be something else)

Other stuff pulled in:

 * Unify all of the (identical!) hibyos makefiles
 * Rename the "bootloader" to more generic name

Change-Id: I6d8a3b58de726db8e89cf193c90960a070a575c2
2025-05-04 18:34:22 -04:00
Solomon Peachy
3270daf2c4 hosted: Have common /dev/input code handle touchscreens.
With this we should be able to consolidate some of the hosted
variations.

Change-Id: Ie03631b4e700e3a0adcdc1b8476237384f0ace1a
2025-05-04 18:34:22 -04:00
Solomon Peachy
f38109f8ed lang: Better handle duplicate translation target matches
For example, LANG_TIME_SET_BUTTON has these:

    *: none
    aigoerosq,erosqnative,gogearsa9200,samsungyh*: "PLAY = Set"
    gigabeat*,iaudiom5,iaudiox5,ipod*,iriverh10,iriverh10_5gb,mrobe100,sansac200*,sansaclip*,sansaconnect,sansae200*,sansafuze*: "SELECT = Set"
    iriverh100,iriverh120,iriverh300: "NAVI = Set"
    mpiohd300: "ENTER = Set"
    mrobe500: "HEART = Set"
    rtc: "ON = Set"
    vibe500: "OK = Set"

But all of these players will match their name _and_ the generic 'rtc'
feature that enables use of this phrase.  The language tooling
always used the final match in the list, so this resulted in
most devices showing the generic (and incorrect) 'ON = Set" instead
of the device-specific strings.

This patch changes the behavior so that only a match with the device
model itself can override the previously used string.

Change-Id: I93ee11b1e4925c39edaecdcbc13ccc51ed176a45
2025-05-04 18:34:22 -04:00
Solomon Peachy
c08bbaac49 Revert "lang: Complain if there are multiple target matches for a given string"
This reverts commit a88ef80560.
2025-05-04 09:21:18 -04:00
Solomon Peachy
a88ef80560 lang: Complain if there are multiple target matches for a given string
The tooling will always use the *final* match, which may or may not be
what is desired.  Treat this as a bug, and complain appropriately.

However, there is a special case.  The RTC set screen uses strings that
include the device button names. There should be an entry for the
specific device, but if not, we wanted to fall back to the string
specified by the 'rtc' feature flag as opposed to falling back to the
default, empty string.

To still support this, add a special "FALLBACK" value; If we end up
using this for a device, the tooling will treat this as a bug, and
complain accordingly.

This should fix FS#13615 and FS13616, and may introduce build failures
on targets that are missing appropriate entries.  We'll see.

Change-Id: Ie78bb247f968e19d450a0fbf6e1177b6d01126a1
2025-05-04 08:53:22 -04:00
Solomon Peachy
336d42c72b FS#13618: Updated German translation (Yannic Schmidt)
Change-Id: Ic3585574ebfd4a5757c326da174ca6376d8b0e30
2025-05-04 07:14:05 -04:00
Solomon Peachy
82f602ae1d FS#13617: Updated German translation (Yannic Schmidt)
Change-Id: I64af8075cddc15df05cf8ee794467b71fec25ef3
2025-05-03 23:03:49 -04:00
Solomon Peachy
7c813a79d0 builds: Use consistent formatting for language codes in voice list.
...strictly speaking, what we use isn't correct (eg we should use es_MX
instead of es-mx) but the latter is clearer on the download page.

Change-Id: Ia1a21c4259826ca2a0f6755df1cb3db94e4a50b3
2025-05-03 11:15:12 -04:00
Solomon Peachy
61dc053ce1 voice: Enable Moldavian voice in the nightlies
Change-Id: I253434727af43645f7076be5c377ae0b5154bc56
2025-05-02 20:33:58 -04:00
Solomon Peachy
3ac252b840 FS#13614: Add Moldavian (ro_MD) language (Mihai Alexandru Vasiliu)
TTS is set up to use ro_RO, but is not enabled yet.

Change-Id: Id71e1453e58b03e0a4205f459de87a79ff11a10e
2025-05-02 16:51:23 -04:00
Solomon Peachy
6acbf74d7f Add support for double buffering to hosted framebuffer code
Requires kernel-level support to work.  No in-tree users yet

Change-Id: Iec7e22971aa24fc7a26996a3d507143955c0ab5c
2025-05-02 13:48:31 -04:00
Solomon Peachy
1f43b14127 linux-fbdev: Don't overrun the framebuffer when it's larger than expected
We expect a fixed FRAMEBUFFER_SIZE that's width*height*bitdepth, and we
mmap()ed that in.  However, when doing the initial fb clear, we
were using the hardware-provided 'finfo.smem_len' which could be
larger than FRAMEBUFFER_SIZE.  This overran our mmap and triggered
a segfault.

Correct this by mmaping (and clearing) the entire smem_len.  As a safety
measure, panic if smem_len is smaller than our expected FRAMEBUFFER_SIZE

Change-Id: I3222139c7aed6e8e8ee232b1730edd5cd70065ff
2025-05-02 11:42:31 -04:00
Solomon Peachy
5f48d44acf FS#13613: Updated Romanian translation (Mihai Alexandru Vasiliu)
Should bring us to 100% coverage!

Change-Id: I5e74d59112e47e48da29e37f9a80ca471d2cd6be
2025-05-02 09:02:37 -04:00
Solomon Peachy
400ae7cb22 disk: GPT lookup code now supports virtual logical sector sizes
GPT superblocks are located at sector 1 and max_sector-1. If the system
uses a "virtual" sector that's larger than the drive's logical sector,
we need to map those virtual sector numbers to the drive's logical
sector.

If DEFAULT_VIRT_SECTOR_SIZE is defined, try that multiplier as well
as the standard multiplier of 1.

It's not practical to try every intermediate value so instead, if
DEFAULT_VIRT_SECTOR_SIZE is defined, try that as well as the standard
multiplier of 1.

This still leaves a handful of targets that don't set DEFAULT_VIRT
but do set MAX_VIRT.

Change-Id: I3accffcb97436b043836e072bfc620318a9b1230
2025-04-30 22:02:48 -04:00
Solomon Peachy
64de7aa8d2 disk: If primary GPT header is missing, try secondary one
Basically the GPT is supposed to live at sector 1, but a backup copy is
stored on the final sector.

This gives us a little bit of extra flexibility on systems that might
require sector 1 for other things, but in any case it's a more robust
arrangement.

Change-Id: I8925ffc743629cf2eba51861042492e35b41664b
2025-04-30 19:21:54 -04:00
Solomon Peachy
6a8f1a7e84 pp5002: Fix warning in the USB detection code
A function that returned bool was an alias for a function that returned
an int. While that original function was limited to returning either 0
or 1, this aliasing is technially a no-no.  So create a small shim to
make the warning go away.

Change-Id: I4d7807730234928bd59d75f13a4e4adeabbf655e
2025-04-30 07:22:38 -04:00
Solomon Peachy
69c0c3f207 languages: Correct Latvian time reporting
12b9419006 stripped out leading/trailing whitespace, but the Latvian
translation used a blank string for VOICE_OH which got wiped out.

This string is only used when voicing the time, eg: 12:05 is spoken in
English as "twelve oh five".  Doing a little digging into Latvian, it
seems that for 24 hour clocks it would be voiced as "<twelve> nulle <five>"
instead, so I changed VOICE_OH to that.

Now for 12-hour clocks, it seems Latvian would voice "12:05" as "<five
past twelve>" but we don't currently have the ability to voice things
in this manner.  Will be addressed in a future patch.

Change-Id: I2c1bcd2e9caff508de3199da29c2e994e9d00c3c
2025-04-29 21:42:54 -04:00
Solomon Peachy
efdf78e976 rk27xx: fix red in bootloaders, introduced in c31518201c
Change-Id: I1396e16161df80757d9de6aee6cce6be9ba80c67
2025-04-29 20:56:19 -04:00
Solomon Peachy
e4a16c23ee misc: Fix two more -Wunused-const-variable warnings
Only exposed in bootloader builds

Change-Id: Iee277112c027b28eccd0432c8b231a4084450dbe
2025-04-29 20:56:19 -04:00
Solomon Peachy
6ae4933d6e gitignore: Add the output directory of the release scripts
Change-Id: Ifd43889c442b97814f77412b42ce56e7fe570168
2025-04-29 20:20:16 -04:00
Solomon Peachy
c31518201c disk: In "superfloppy" mode, create a fake partition entry
We normally create a table of the partition sizes/types present
on a drive.  Howeever, if the drive is set up as a "superfloppy",
where there is no partition table and a single filesystem starting
at sector 0, this "pinfo" table is not populated.

So now, populate the pinfo table with a single entry that matches
the filesystem type, start, and size.

Change-Id: Ifa8760909109d67ff96481b1fc7f26c64280a00a
2025-04-29 20:20:16 -04:00
Solomon Peachy
12b9419006 Some fixes for language and voice scripts:
Languages:
  * Get rid of leading space on LANG_ID3_VBR [ " (VBR)" ]
  * Fix up sole user to insert the space programmically
 updatelang:
  * strip leading and trailing spaces on all phrases except VOICE_PAUSE
 voice.pl
  * Debug logging with UTF-8 output
  * Explicitly delete tab character from voiced strings

Change-Id: Ie466793479ce15ce7a9553770583a070530e7afd
2025-04-29 20:03:11 -04:00
Solomon Peachy
0ea02f0268 translations: Delete trailing spaces and tabs in Ukranian translation
Change-Id: If9a7ed7e002cef9012d5849e1ea972d5939e2040
2025-04-29 20:03:10 -04:00
Solomon Peachy
a3dfdb32f6 Revert "Toolchains: Update to GCC 9.5.0"
This reverts commit d87e9b99a6.

Reason for revert: Accidentally merged

Change-Id: Ib69e88cc93faa7d1a08c137977600d0659944128
2025-04-29 15:09:46 -04:00
Solomon Peachy
bbca8e3bd9 Another Ukrainian translation update (Pavlo Rudy)
This should bring coverage to a full 100%

Change-Id: Ief051d6e774e94b3dde5b07203a18e7a5ae97b21
2025-04-29 15:08:32 -04:00
Solomon Peachy
d87e9b99a6 Toolchains: Update to GCC 9.5.0
All toolchain dependencies are circa the GCC 9.5.0 release:

  GCC 9.5.0, binutils 2.38, gmp 6.2.1, mpfr 4.1.1, mpc 1.2.1, isl 0.18

Native:

 * arm - mini2g, nano2g seems to work
       - ipod6g boot hang on 9.5.0 (possibly leading to disk corruption)
 * mips - xduoox3 seems stable so far
 * m68k - binaries untested

Hosted:

 * arm - binaries untested
 * mips - erosq seems stable so far
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: I4ca00edd49e1936b32f68f1e7b34df38e1d1d76e
2025-04-29 14:56:12 -04:00
Solomon Peachy
e72c42df20 voice: Add the bits needed to voice Ukrainian, and enable it by default
Change-Id: I002fd5022539db6f8e4270c24e0112e151f7e516
2025-04-29 14:33:35 -04:00
Solomon Peachy
232e5b4daf FS#13611: Major update to Ukranian translation (Pavlo Rudy)
Change-Id: I8aca68a151451f710a0069d8a5e1325a21ce901d
2025-04-29 14:26:34 -04:00
Solomon Peachy
6b063acaae toolchains: Ensure toolchain builds with C23 compilers
* binutils (mips) uses its own 'static_assert'
 * linux (mips) uses constexpr when generating headers

With these patches, all toolchains build successfully under GCC15

(These patches are still needed with the pending GCC9.5 bump)

Change-Id: Id2f8cca414d2907b6aa29612ae4fb0e8b5f79f79
2025-04-28 15:17:30 -04:00
Solomon Peachy
9159fc0159 builds: Enable nightly Romanian voice generation.
Change-Id: I1bb84d1c9e68158ea240be37f65721857e5181c2
2025-04-28 10:52:11 -04:00