Commit Graph
100 Commits
Author SHA1 Message Date
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
jacqueline 4247c9fe7d store the screen brightness in nvs 2023-08-29 16:07:56 +10:00
jacqueline 773f285767 Don't fade for brightness slider changes 2023-08-29 12:18:15 +10:00
jacqueline f2bb2e2528 Add a brightness slider to settings 2023-08-29 12:10:27 +10:00
jacqueline 8ee5e781e7 Use gamma correction for display brightness 2023-08-29 12:09:58 +10:00
jacqueline 1200479045 one weird trick to avoid 5khz tone 2023-08-28 20:54:02 +10:00