summaryrefslogtreecommitdiff
path: root/src/drivers/include
AgeCommit message (Collapse)Author
2025-02-11TTS: Implement and wire up a TTS toggle in Display Settings (#251)Tursiae
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>
2025-02-07Add centre button haptic feedback on touch, and setting to disable/lessen ↵ailurux
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>
2025-02-02Add optional support for changing volume while lockedTess Eisenberger
This adds a new Controls setting for adjusting the behavior when locked, and an option for allowing volume control.
2025-02-02Add a new setting for input controls when lockedTess Eisenberger
This is just the plumbing of the new setting. The input methods will come in subsequent patches.
2025-01-13Merge pull request 'Update licensing info' (#174) from ↵cooljqln
tjk/tangara-fw:update-reuse into main Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/174 Reviewed-by: cooljqln <cooljqln@noreply.codeberg.org>
2025-01-10Isolate the SD card from the SPI bus when talking to the display (#176)jacqueline
This should help significantly with https://codeberg.org/cool-tech-zone/tangara-fw/issues/121, which seems to be caused by some SD cards being very picky about being the only SPI device on their bus. Co-authored-by: ailurux <ailuruxx@gmail.com> Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/176 Co-authored-by: jacqueline <me@jacqueline.id.au> Co-committed-by: jacqueline <me@jacqueline.id.au>
2025-01-08Add missing copyright/license headersTom Kirchner
2024-12-19Queue repeat modes (#126)ailurux
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>
2024-10-01Support a minor version in the SAMD firmwarejacqueline
2024-09-12Pause and unpause the current audio output in response to TTSjacqueline
2024-09-09Merge branch 'main' into jqln/ttsjacqueline
2024-08-28Timeout when writing output samples throughout the audio pipelinejacqueline
This allows the audio pipeline to remain responsive even when the drain buffer has completely filled. This in turn means that you now see the track info in the 'now playing' screen change if the current track changes whilst you are paused. Since I was fucking around a lot in the audio processor anyway, I also added mono->stereo expansion so that playing mono tracks on Bluetooth no longer destroys your ears.
2024-08-12daniel/theme-setting (#87)ailurux
- 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>
2024-08-07Recalibrate the touchwheel after unlockingjacqueline
Also power it down whilst we're locked. This saves about half a milliamp.
2024-07-24Add a settings screen with power+battery infojacqueline
Mostly for debugging, but also u can toggle fast charging off and on now
2024-07-12Give Bluetooth settings a bit of a refreshjacqueline
It's now a bit more responsive to stuff happening, gives you more information, and remembers your previously paired devices for faster switching between them.
2024-07-11WIP improve bluetooth api and settings screenjacqueline
2024-07-09Give PcmBuffer pairs a name, and wire them up in the audio stackjacqueline
2024-07-05WIP start on accepting two streams in out audio outputjacqueline
2024-06-25Add a basic overview of writing and running testsjacqueline
2024-06-14Improve DAC power+mute management to reduce clicks and popsjacqueline
2024-06-12WIP fix issues introduced by lvgl version bumpjacqueline
2024-06-06daniel/bluetooth-avrc (#80)ailurux
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>
2024-06-04no more acquire_spi :)jacqueline
2024-06-03Remove spi locking hack + increase max sd frequencyjacqueline
These two changes (mostly the former) dramatically increase responsiveness when doing database updates; previously we were suffering from some nasty priority inversion. afaict the underlying need to acquire_spi seems to be fixed? i.e. spi bus acquisition is working properly. fingers heavily heavily crossed.
2024-06-03move a bunch of bt callbacks to background tasksjacqueline
we should avoid doing bt state machine stuff from these callbacks, since espressif calls us whilst holding a lock. ideally we should move all of them to background threads, but we need to do a deep copy to safely move a few of them
2024-05-31Introduce a PcmBuffer abstraction for handling source drainingjacqueline
2024-05-15Support setting the samd charge ratejacqueline
We default to the fast one, and do not try setting the charge rate bit on older samd versions
2024-05-14save lra calibration data to nvsjacqueline
2024-05-14Use LRA motors in an auto-calibrated closed-loop modejacqueline
2024-05-08Count samples going in and out of the drain bufferjacqueline
This is a more accurate way of knowing which track is playing when, and also simplifies a lot of fragile logic in audio_fsm
2024-05-02move driver includes into a subdir as welljacqueline
2024-05-02WIP merge cyclically dependent components into one big componentjacqueline
2024-05-02Replace cpp::span shim with std::spanjacqueline
2024-04-22Improve handling of the displayjacqueline
- Blank the display when locking to prevent burn-in - Delay turning the display on until *exactly* after the first lvgl flush - Init the display in the ui task to avoid blocking the rest of boot
2024-04-19Adds LRA haptic support (open-loop only for now).Robin Howard
2024-04-19Fix DRV2065L register usage: we were accidentally setting control2 when we ↵Robin Howard
meant control3.
2024-04-12switch to software volume scaling (it's bad tho i need daniel to do maths ↵jacqueline
for me please)
2024-04-11Migrate all existing control schemes to the cool new worldjacqueline
2024-04-10WIP decompose our giant LVGL driver into smaller classesjacqueline
2024-04-08Warn and block MSC disable if the sd card is busyjacqueline
2024-04-02Support disabling automatic database updatesjacqueline
2024-03-28bump esp-idf to 5.2.1jacqueline
2024-03-20Start using the lock switch polarity bit in nvsjacqueline
2024-03-20Add exact display size to nvs, since it can varyjacqueline
2024-02-13Updated sensitivity nvs storeailurux
2024-02-13Merge branch 'main' into scroll-sensitivityailurux
2024-02-13Sensitivity value now between 0 and 255ailurux
2024-02-13Cache pending nvs writes in memoryjacqueline
Includes refactoring nvs settings to be a bit less duplicated
2024-02-12Scroll sensitivity configurable, but invertedailurux