Commit Graph
100 Commits
Author SHA1 Message Date
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
jacqueline ca75507146 Make esp-idf bluetooth logging less chatty 2023-09-22 21:19:19 +10:00
jacqueline 972edd7468 Rotate the display in hardware instead of software 2023-09-22 21:19:19 +10:00
jacqueline b192975cb1 make bluetooth pairing ui functional 2023-09-22 21:19:19 +10:00
jacqueline cbd99b2134 Increase sample buffer sizes 2023-09-22 21:19:19 +10:00
jacqueline 022c222e85 Add heap stats to the task stats output 2023-09-22 21:19:19 +10:00
jacqueline 59e0de1fe2 Add super basic readme for the sourcehut project 2023-09-20 15:16:26 +10:00
jacqueline 4a686fee7e README.md -> BUILDING.md 2023-09-20 15:07:58 +10:00
jacqueline 13047fe22d actually keep the build instructions as README bc idk what to write lol 2023-09-20 14:34:10 +10:00
jacqueline 7827873e16 Freshed up building instructions, move to a better-named file. 2023-09-20 14:28:06 +10:00
jacqueline 0ea358ab81 Make the onboarding flow basically work. Much still to do! 2023-09-13 10:09:04 +10:00
jacqueline b0aa9ab391 Fix ui nits for playback screen
The top bar now updates properly when starting playback, and the
upcoming list items no longer marquee.
2023-09-12 14:43:28 +10:00
jacqueline ad74a45921 Use only one buffer for lvgl's display driver
We weren't actually making use of the double buffering, and it's a pain
to implement properly.
2023-09-12 14:30:28 +10:00
jacqueline 86296c187f Use interrupt-based spi for the display
This solves our "audio stutters while scrolling" problem better! Turns
out the real root cause was the polling SPI driver blocking a whole CPU
during playback.
2023-09-12 14:18:04 +10:00
jacqueline b0d745d02d Flesh out onboarding a little, and add a way to get into it 2023-09-08 16:58:30 +10:00
jacqueline 64d9cec8b0 fix some leveldb errors on transition to standby
turns out you gotta free the iterators. wow!!
2023-09-08 15:19:13 +10:00
jacqueline e8a972cc7f Just wait for touchwheel reboot instead of being clever 2023-09-08 15:15:10 +10:00
jacqueline 6b9fb9edac Support retries for samd and touchwheel i2c 2023-09-08 13:45:05 +10:00
jacqueline 493a70b07c Adjust partition table for 4MiB app size + fill the rest of the space 2023-09-08 13:22:41 +10:00
jacqueline 4b627acee6 Reset the touchwheel during boot 2023-09-08 10:24:18 +10:00
jacqueline 63215ccf16 Fix missing track number issues 2023-09-06 12:38:40 +10:00
jacqueline dad14baa73 Add an opus-specific tag parser 2023-09-06 10:14:48 +10:00
jacqueline a9008884c9 Improve dac startup sequencing to reduce the clicky poppy 2023-09-05 16:01:05 +10:00
jacqueline 020d42d431 Be tolerant of SAMD timeouts 2023-09-05 15:37:22 +10:00
jacqueline f0d82cfb09 Fix display buffers not actually being in DMA ram 2023-09-05 15:36:33 +10:00
jacqueline b413b2f264 Add all albums index, do some locales prep 2023-09-05 14:36:28 +10:00
jacqueline 02c1eb4be3 Tweak display DMA buffer size 2023-09-05 10:12:15 +10:00
jacqueline 0032896251 Move UI task to priority 0 during playback
Also other misc task cleanup
2023-09-05 09:51:10 +10:00
jacqueline 382d82a14b Fix bad merge 2023-09-04 16:34:58 +10:00
jacqueline 3180edb7b4 Merge branch 'main' of git.sr.ht:~jacqueline/tangara-fw 2023-09-04 16:18:11 +10:00
jacqueline d5d6e3993c Support changing max volume, persisted to nvs 2023-09-04 16:17:55 +10:00
jacqueline 6d831fa7a8 Don't reuse iterators across page fetches
This was done for performance reasons, but performance seems okay
without it, and it introduces a bunch of memory management headaches.
2023-09-04 11:19:34 +10:00
jacqueline 697d231484 Fix incorrect settings submenu 2023-09-04 10:00:09 +10:00
jacqueline b90c08b536 enable the qr code lib for onboarding 2023-09-04 09:51:52 +10:00
jacqueline 25c2df57dd Fix some release build warnings 2023-09-04 09:51:38 +10:00
jacqueline cccee29c3a Turn the touchwheel back on after sleep 2023-09-04 09:47:22 +10:00
jacqueline 320fdeb9d8 Use a service locator instead of passing around subsets of drivers between FSMs 2023-08-30 16:48:10 +10:00