Commit Graph
100 Commits
Author SHA1 Message Date
jacqueline b3b512f10e Don't start readahead until parsing the stream's header is finished
...but also disable readahead for now anyway, since it's unstable
2023-11-20 11:04:20 +11:00
jacqueline d36f314a57 ignore generated lua docs 2023-11-15 20:35:36 +11:00
jacqueline fa57d8ed34 fix incorrect docstring 2023-11-15 20:35:02 +11:00
jacqueline 51d1cee3d7 Set up ldoc and lua-language-server, write some module stubs 2023-11-15 10:22:01 +11:00
jacqueline 0cae95a71e lua statusbar styling tweaks 2023-11-14 14:25:42 +11:00
jacqueline 71ed09a6f7 Add two-way databinding for lua, and flesh out the lua statusbar 2023-11-14 13:20:04 +11:00
jacqueline 8a0a167adb Convert the main menu screen to lua lol 2023-11-12 19:14:09 +11:00
jacqueline 8471046a95 one weird trick to reduce boot time 2023-11-10 14:18:05 +11:00
jacqueline 270bce7212 Fix display off on boot with new lock switch direction 2023-11-10 14:17:32 +11:00
jacqueline 0419def89b Change lock switch direction to match r7 standby 2023-11-10 08:19:27 +11:00
jacqueline c1db38ba42 Increase the size of the system fsm QueueSet
I added the samd to it but forgot to increase the set size.
2023-11-08 16:59:02 +11:00
jacqueline 0e661409b1 Fix missing licenses
Includes removing unused shared_string

This helps with #6, but there's still more work to do
2023-11-07 16:58:08 +11:00
jacqueline 3abf599c4f Improve memory usage of mad codec
- fix leaks
 - ensure the synth data is always in internal ram
2023-11-07 15:57:56 +11:00
jacqueline b463ceaef4 use std::list instead of std::deque for events
std::deque loves to allocate 512 bytes in internal memory just for fun
2023-11-07 14:53:47 +11:00
jacqueline 2b19e57034 Ensure the GPIO ISR is in IRAM
The shared interrupt is flagged as IRAM-capable, so this handler should
be too.
2023-11-07 14:46:32 +11:00
jacqueline 19f0675b44 Make readahead a bit more robust for codecs with different io speeds 2023-11-07 13:38:18 +11:00
jacqueline 9dc8f5646c Make foxenflac a little less memory hungry
We should really just use the xiph library :/
2023-11-07 13:37:58 +11:00
jacqueline 9b52fad86e Merge branch 'main' of codeberg.org:cool-tech-zone/tangara-fw 2023-11-07 10:40:18 +11:00
jacqueline 75a8f836d5 Wait for background readahead to finish before deleting its buffer 2023-11-07 10:39:43 +11:00
jacqueline 1f031f565a Rename the db background task to be more generic 2023-11-07 10:37:12 +11:00
jacqueline 499d5a942f Add a wrapper codec source that does readahead 2023-11-07 10:32:07 +11:00
jacqueline d36fe9be6b Use atomics for new file notification instead of a semaphore 2023-11-07 08:30:26 +11:00
jacqueline 05ce360c99 Flag off a few unused features 2023-11-06 17:11:52 +11:00
jacqueline f9f8e141c2 Fix weird strncpy usage 2023-11-06 17:11:42 +11:00
jacqueline 8309e67a86 Read in larger chunks from SD at a time
This helps a little with the stuttering. Some kind of readahead is
probably the ideal tho.
2023-11-06 17:10:52 +11:00
jacqueline c6f2b52331 Improve bt scanning responsiveness 2023-11-06 08:19:28 +11:00
jacqueline 2dd72320dd Don't try to treat whe whole LC_COLLATE as one big string
it would be a bad idea
2023-10-31 14:54:30 +11:00
jacqueline 2ef022a2f9 Remove loading spinner for 'Coming up'
it's really slow!
2023-10-31 14:28:41 +11:00
jacqueline 81855a78f4 Revert "Improve representation of track numbers in indexes"
This reverts commit a3da259a37.
2023-10-31 10:33:42 +11:00
jacqueline a3da259a37 Improve representation of track numbers in indexes 2023-10-31 09:45:29 +11:00
jacqueline 4cc5fa4c9c Store the current collator in the database 2023-10-31 09:01:34 +11:00
jacqueline b58c081508 add locale-aware colation to db indexes 2023-10-30 15:52:26 +11:00
jacqueline 6ef0fa2b1b improve on clangd setup instructions 2023-10-28 09:23:12 +11:00
jacqueline 4e0aaa825b Free up some IRAM 2023-10-26 16:56:22 +11:00
jacqueline 97d63c5553 Add a target that yells at you if your sdkconfig is out of date 2023-10-26 12:50:02 +11:00
jacqueline 2086ab09b8 Implement incremental updates of database indexes
This makes rescanning the library *so* much faster. Yay!
2023-10-24 16:29:46 +11:00
jacqueline 4f8c127da9 Use an mutable struct + const instead of an immutable class 2023-10-24 12:50:03 +11:00
jacqueline 5b5b792467 Skip old tracks when scanning the sd card 2023-10-24 11:50:06 +11:00
jacqueline ddf0128496 Do not deafen people 2023-10-21 10:48:32 +11:00
jacqueline a8b866aafe Don't crash if the current track source encounters a record with no id
This *shouldn't* normally happen, but it's not worth crashing over.
2023-10-20 12:44:52 +11:00
jacqueline c27880282a Bump esp-idf to v5.1.1 2023-10-20 10:23:32 +11:00
jacqueline 912f9c0757 Free the i2s dma channel when it's not in use
It turns out this is why bluetooth playback keeps running out of memory
/facepalm
2023-10-19 13:01:28 +11:00
jacqueline 782e8dc8c2 Add better controls for queue manipulation 2023-10-18 14:35:28 +11:00
jacqueline 2eb7eaa2a6 Go straight to the playback screen after 'play now' 2023-10-18 09:41:01 +11:00
jacqueline bb91724b94 Codec memory tweaks
- Ensure mad and ogg structs are allocated internally
 - Free old codec before making a new one
2023-10-16 16:15:48 +11:00
jacqueline 7523772886 Decouple play/pause from output on/off
I think this was the cause of toggling play/pause making audio go away.
Or at least I can't repro that bug anymore, anyway.
2023-10-16 13:52:43 +11:00
jacqueline 96ea6cef88 Fix incorrect track lengths 2023-10-16 13:07:52 +11:00
jacqueline f03093e5c2 Remove early-exit when there's no battery
SAMD is currently returning incorrect states, so this is the cause of
the battery meter often reading 0 when not plugged in
2023-10-16 08:50:50 +11:00
jacqueline f27670a112 acquire spi lock in the opus tag parser 2023-10-14 11:59:34 +11:00
jacqueline ac320e376e Merge branch 'main' of git.sr.ht:~jacqueline/tangara-fw 2023-10-14 11:47:00 +11:00
jacqueline c2dddba30a Add very basic db versioning 2023-10-14 11:46:42 +11:00
jacqueline 542e6f5d90 The tweaking of max internal alloc size will continue until performance improves 2023-10-14 11:30:34 +11:00
jacqueline 5a459ac6e9 Remove accidental debug thing 2023-10-13 20:41:31 +11:00
jacqueline ceba508593 Add modified time to TrackData 2023-10-13 15:29:06 +11:00
jacqueline afbf3c31f4 Use libcppbor for much much nicer db encoding 2023-10-13 15:05:49 +11:00
jacqueline 20d1c280a7 Remove templating of Continuation 2023-10-13 11:13:20 +11:00
jacqueline 53cf476876 Remove mV from top bar, now that we know it's not the issue 2023-10-12 11:51:14 +11:00
jacqueline 936e327974 Claw back a little more memory 2023-10-12 11:20:59 +11:00
jacqueline f0d3a27dd9 Ensure StaticTask_t allocs are internal 2023-10-12 09:02:19 +11:00
jacqueline ddcaa967fd Update battery mV even with the samd doesn't respond 2023-10-12 08:42:51 +11:00
jacqueline b0d85fc0d6 Skip ID3 tags in the mad decoder; mad itself sometimes chokes on them 2023-10-10 13:13:41 +11:00
jacqueline 6c20eafd05 First pass at having some kind of design and theming 2023-10-05 14:24:00 +11:00
jacqueline bf1fc5a2a0 Guard audio pipeline file accesses 2023-10-05 14:23:48 +11:00
jacqueline ee8e523456 Add a basic database reindex screen 2023-10-04 15:38:18 +11:00
jacqueline 28633e857f Implement UI for enqueuing instead of replacing the current track 2023-10-04 14:47:30 +11:00
jacqueline 7a7fafdd92 Guard leveldb file access with the SPI lock too
Same freeze as was previously ocurring, only this one was a fair bit
rarer.
2023-10-04 13:43:43 +11:00
jacqueline 5c04e2ad8d Neaten up the various kinds of inputs, and move volumes to The New Way 2023-10-04 10:18:31 +11:00
jacqueline c851b789fa Write up the new input modes to NVS and settings 2023-10-03 15:00:28 +11:00
jacqueline 09f129662e Add scroll velocity + more input methods 2023-10-03 14:33:36 +11:00
jacqueline 7d5536e2ab Generalise the lvgl input driver in preparation for more input methods 2023-10-03 10:37:29 +11:00
jacqueline f2bad894cd Show battery voltage in top bar 2023-10-03 09:52:30 +11:00
jacqueline 3df4cc9e3d Make accessors in RelativeWheel const 2023-10-03 09:36:28 +11:00
jacqueline 95618239e6 Fix tasks config flag guarding 2023-09-29 15:35:00 +10:00
jacqueline ba940baa0a Add a lock around the SPI bus
This seems to have been the cause of recurring deadlocks that have been
difficult to repo.
2023-09-29 15:17:32 +10:00
jacqueline c53802f308 Add a core dump command 2023-09-29 12:34:27 +10:00
jacqueline c876c00654 add a fun and cute little loading state :) 2023-09-29 10:40:16 +10:00
jacqueline 6a47edcd35 Use databinding for the top bar. It's so nice now! 2023-09-28 10:43:48 +10:00
jacqueline f09ba5ffd5 Use bindey for databinding instead of hand rolling ui updates 2023-09-28 08:29:55 +10:00
jacqueline f168bfab76 Don't post events from ISRs 2023-09-27 14:39:19 +10:00
jacqueline ce57b236c4 Move every alloc over 256 bytes into PSRAM 2023-09-26 21:46:05 +10:00
jacqueline 252f685ef1 Make NVS access synchronous again
Everything relevant is back in internal ram, and likely to stay there.
2023-09-26 21:07:44 +10:00
jacqueline 96252973d9 Make task tracing tools conditionally compiled 2023-09-26 20:47:07 +10:00
jacqueline c36bbe4e7d Claw back some more IRAM from unused components 2023-09-26 20:36:17 +10:00
jacqueline abc626c1da Place a2dp stream callback into IRAM 2023-09-26 20:36:05 +10:00
jacqueline 8608f9367f Tune buffer sizes and locations for I2S 2023-09-26 17:23:34 +10:00
jacqueline 4d99d22e10 std::string -> std::pmr::string in psram 2023-09-26 13:36:07 +10:00
jacqueline f6d0642109 Prepare for PMR with a memory_resource that understands heap_caps_malloc 2023-09-26 11:23:53 +10:00
jacqueline 2849399d54 Force large c++ arrays into PSRAM
This is mostly targetted at leveldb_ which is rude and does not support
custom allocators
2023-09-26 10:18:33 +10:00
jacqueline a87790a424 Add basic leak detection tooling 2023-09-26 10:14:07 +10:00
jacqueline a2eb0e8961 Fix incorrect default theme 2023-09-25 22:37:46 +10:00
jacqueline 5a20b0bc1a Move UI task back to internal stack
It really is *so* fast
2023-09-25 22:34:30 +10:00
jacqueline dd13a234d2 Place LVGL's memory pool into PSRAM 2023-09-25 15:26:05 +10:00
jacqueline 0802b4e528 Unpin decoder task 2023-09-25 15:25:32 +10:00
jacqueline cd44e0daa1 Move a few task stacks into internal ram for better speed 2023-09-25 15:23:58 +10:00
jacqueline c00e7e37d9 Fix incorrect palette introduced by hardware screen rotation 2023-09-25 15:23:06 +10:00
jacqueline 7ffeea4009 Don't acquire the spi bus in the display driver
Interrupt-based transactions don't need it, and it causes issues.
2023-09-25 15:22:37 +10:00
jacqueline 41c4dce79a Split heap stats and task stats into different functions 2023-09-25 15:22:05 +10:00
jacqueline 2f626f6224 Bump up nvs writer task size for safety 2023-09-25 09:47:01 +10:00
jacqueline f57a9688c9 Allocate display spi buffers statically
It works okay now :)
2023-09-22 21:19:19 +10:00
jacqueline 96944f088f Reclaim some internal ram 2023-09-22 21:19:19 +10:00