| Age | Commit message (Collapse) | Author |
|
|
|
This allows you to use the touch wheel for quick playback control:
- bottom quadrant for play/pause
- left and right quadrant for track skip back / forward
- top quadrant to seek back 25 seconds (handy when listening
to a podcast)
|
|
Splits the control scheme into separate schemes for the side buttons and touchwheel, allowing them to be configured independently of each other. At least one input must be used for navigation, and there are guards to prevent locking oneself out of any input. If the input scheme is invalid, a pop up will show alerting the user.
Different behaviours can be bound to the side buttons for when the device is locked or unlocked. This PR also adds a mode for these buttons that controls media playback (prev/next on up/down, pressing both buttons toggles play/pause).
There are some changes to the way inputs handle locking. Rather than the input devices tracking the current locked mode, different input devices are created on lock depending on the mode that is configured.
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/264
Co-authored-by: ailurux <ailurux@noreply.codeberg.org>
Co-committed-by: ailurux <ailurux@noreply.codeberg.org>
|
|
columns' (#302) from display_padding into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/302
|
|
|
|
Prior to this change, the UI thread was consuming approx. 10-14% CPU
in the idle state, and appeared to be running in an endless loop.
After this change, the UI thread is measured at about 0.1% CPU. I'm
not sure what the current consumption impact is, but it's gotta be
a power saving, even if slim?
Following manual testing with the device after flashing this change,
the UI responsiveness and music playback does not appear to be
negatively affected. The UI actions that were tested were:
- Scrolling through items on the root menu
- Scrolling through settings
- Scrolling through All Tracks with long-press on the bottom of
the scroll wheel (Page Down) on a device with ~20k songs
- Repeatedly hitting 'next track'
- Forcing a DB update, and scrolling through All Tracks while
updating the database.
The device was configured with the following settings when tested:
- TTS enabled
- Wired headphones
- Bluetooth enabled but not connected
- No DB auto-update
- Playing music
Prior to this change, the UI thread was consuming approx. 10-14% CPU
in the idle state, and appeared to be running in an endless loop.
On a stock (v1.2.2) build, `tasks` reported:
```
→ tasks
name core free stack run time
IDLE1 1 1.0 KiB 99.6%
IDLE0 0 1.1 KiB 86.5%
ui any 10.1 KiB 13.7%
console_repl 1 5.6 KiB 0.5%
Tmr Svc any 1.4 KiB 0.0%
audio_dec any 19.4 KiB 0.0%
main 0 2.0 KiB 0.0%
lvglDraw any 2.9 KiB 0.0%
btController 0 2.1 KiB 0.0%
esp_timer 0 3.4 KiB 0.0%
BTC_TASK 1 2.6 KiB 0.0%
worker_1 any 30.1 KiB 0.0%
worker_3 any 5.7 KiB 0.0%
worker_2 any 29.5 KiB 0.0%
worker_0 any 25.7 KiB 0.0%
BTU_TASK 1 3.2 KiB 0.0%
hciT 1 1.5 KiB 0.0%
ipc0 0 1.0 KiB 0.0%
ipc1 1 1.0 KiB 0.0%
audio_conv any 3.4 KiB 0.0%
```
Following this change, the UI thread decreased from 13% in idle to
0.1% usage, as reported by `tasks`:
```
→ tasks
name core free stack run time
IDLE1 1 1.0 KiB 99.8%
IDLE0 0 1.1 KiB 99.4%
console_repl any 6.4 KiB 0.5%
ui any 10.1 KiB 0.1%
btController 0 2.1 KiB 0.0%
Tmr Svc any 1.4 KiB 0.0%
esp_timer 0 3.4 KiB 0.0%
audio_dec any 19.4 KiB 0.0%
ipc1 1 1.0 KiB 0.0%
ipc0 0 1.0 KiB 0.0%
hciT 1 1.5 KiB 0.0%
BTU_TASK 1 3.2 KiB 0.0%
worker_3 any 20.7 KiB 0.0%
worker_2 any 29.4 KiB 0.0%
BTC_TASK 1 2.5 KiB 0.0%
worker_1 any 30.1 KiB 0.0%
worker_0 any 5.7 KiB 0.0%
lvglDraw any 2.9 KiB 0.0%
main 0 2.0 KiB 0.0%
audio_conv any 3.4 KiB 0.0%
```
|
|
|
|
This change introduces the ability to enable or disable the spoken interface/TTS from the on-device settings, either via the UI or the Lua console. This closes out the implementation of issue #245.
The TTS setting is only visible in Display settings if voice samples are present in `/.tangara-tts/` on the SD card.
Playback of new TTS voice samples is inhibited when TTS is disabled. By default, the setting is enabled, as the device will only play back TTS voices if samples are present on disk.
If you need samples to test TTS on your device, feel free to grab the voice samples I have at https://codeberg.org/tursiae/tangara-tts-samples. There's about 80-85% coverage of the UI, with the remainder to be added soonish.
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/251
Co-authored-by: Tursiae <git@tursiae.org>
Co-committed-by: Tursiae <git@tursiae.org>
|
|
haptics (#246)
This adds a way for feedback devices to respond to events from outside of LVGL's event system, being passed from input device to feedback device through a vector. This was done so that touch events and long-press triggers can now give feedback through haptics.
This PR also adds haptic modes, saved in nvs similarly to input and locked input modes, to disable or change the haptic effect behaviour based on which mode is selected.
Finally, this also fixes a bug in which some click events would not trigger haptics, at the expense of re-introducing the (undesired?) behaviour of clicking a button that transitions to a new screen causing a double click.
Relevant issues this should close: #195, #233, and (partially?) #120
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/246
Co-authored-by: ailurux <ailuruxx@gmail.com>
Co-committed-by: ailurux <ailuruxx@gmail.com>
|
|
This adds a new Controls setting for adjusting the behavior
when locked, and an option for allowing volume control.
|
|
|
|
Queue now has a separate 'ready' property to indicate it's ready to be used, which is independent from whether it's still loading tracks in. This also improves the response time for shuffling all tracks (we will initially pick a random track in the first 100 tracks whilst the rest of the tracks are loading). This should also fix issues where one song will start playing and then repeat itself when the queue finishes loading, and hopefully solve #160 as well (though I couldn't actually repro this myself).
Co-authored-by: jacqueline <me@jacqueline.id.au>
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/170
Reviewed-by: cooljqln <cooljqln@noreply.codeberg.org>
Co-authored-by: ailurux <ailuruxx@gmail.com>
Co-committed-by: ailurux <ailuruxx@gmail.com>
|
|
This replaces the previous system of a separate track and queue repeat, with a RepeatMode type with the following options and behaviours:
- OFF: No repeat, queue or track. When the current queue finishes, shuffled or otherwise, playback will stop.
- REPEAT_TRACK: The current track will loop indefinitely, unless next is explicitly called through some user action (ie using the next button in the now playing screen)
- REPEAT_QUEUE: The entire queue will repeat indefinitely. When shuffled is enabled this will repeat the queue with new combinations each cycle.
The repeat mode is persisted in non-volatile storage, so the behaviour will be consistent throughout restarts and queue replacements, and so the "queue repeat by default" use case can be met in this way.
In addition, I've made it work a little nicer when the queue runs out in the now playing screen, keeping the previously played track shown and playback can be continued by using the play button or by going to a previous song in the queue.
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/126
Co-authored-by: ailurux <ailuruxx@gmail.com>
Co-committed-by: ailurux <ailuruxx@gmail.com>
|
|
it's cleaner
|
|
|
|
Co-authored-by: jacqueline <me@jacqueline.id.au>
|
|
Includes adding a `playback.is_playable` for working out whether or not
a particular file is able to be played
|
|
|
|
1) Update the queue length periodically so that the user can see we're
working
2) Clear any previous track and display "loading..." instead
|
|
|
|
- Themes can be loaded from disk and built-in
- Themes can be selected in a new themes menu of the settings screen
- Some touch-ups to existing themes
- The saved theme is persisted in nvs
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/87
Reviewed-by: cooljqln <cooljqln@noreply.codeberg.org>
Co-authored-by: ailurux <ailuruxx@gmail.com>
Co-committed-by: ailurux <ailuruxx@gmail.com>
|
|
Mostly for debugging, but also u can toggle fast charging off and on now
|
|
|
|
|
|
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/83
Reviewed-by: cooljqln <cooljqln@noreply.codeberg.org>
Co-authored-by: ailurux <ailuruxx@gmail.com>
Co-committed-by: ailurux <ailuruxx@gmail.com>
|
|
|
|
- fix a use-after-free involving the alerts container that was
happening when showing the first screen
- fix some issues where the splash screen wouldn't come up as early as
it needs to when another bootup task was making heavy use of the spi
bus
|
|
|
|
|
|
|
|
|
|
|
|
Have a squizzy and lemme know if any issues @cooljqln 🐝
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/80
Co-authored-by: ailurux <ailuruxx@gmail.com>
Co-committed-by: ailurux <ailuruxx@gmail.com>
|
|
Includes some misc cleanup of haptic double-triggering (or
non-triggering), since those cases all end up being TTS event
double-reporting, which to me crosses the threshold from "annoying" to
"usability issue"
|
|
Includes no longer blocking the main menu on an sd card being inserted!!
|
|
silences some compiler warnings from using c++ flags with c
|
|
|
|
|
|
|