<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tangara-fw/src/tangara/system_fsm, branch main</title>
<subtitle>Tangara firmware</subtitle>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/'/>
<entry>
<title>Migrate to the new esp-idf I2C driver</title>
<updated>2025-08-08T06:14:41+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2025-08-08T06:14:41+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=73baf2f88f61e307afd6cd17f6727da4e446b64c'/>
<id>73baf2f88f61e307afd6cd17f6727da4e446b64c</id>
<content type='text'>
It's a better, less verbose driver, and also this fixes an occasional
crash on boot.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's a better, less verbose driver, and also this fixes an occasional
crash on boot.
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow manually unmounting the SD card</title>
<updated>2025-03-05T07:57:46+00:00</updated>
<author>
<name>ayumi</name>
<email>ayumi@noreply.codeberg.org</email>
</author>
<published>2025-02-15T01:25:27+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=9fdf94e9cee5a5180ffefc2b8314f7a9879ebbc6'/>
<id>9fdf94e9cee5a5180ffefc2b8314f7a9879ebbc6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump storage unmount timer to 2 minutes to match idle timer</title>
<updated>2025-02-14T03:42:45+00:00</updated>
<author>
<name>Riley Inman</name>
<email>rileyminman@gmail.com</email>
</author>
<published>2025-02-14T03:42:45+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=280ce7c1dfab79708a72beb5b28dfcaca2657775'/>
<id>280ce7c1dfab79708a72beb5b28dfcaca2657775</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TTS: Implement and wire up a TTS toggle in Display Settings (#251)</title>
<updated>2025-02-11T00:23:35+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-11T00:23:35+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=569ed6c0cc440572b37a06200b6706badcdf8e45'/>
<id>569ed6c0cc440572b37a06200b6706badcdf8e45</id>
<content type='text'>
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 &lt;git@tursiae.org&gt;
Co-committed-by: Tursiae &lt;git@tursiae.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;git@tursiae.org&gt;
Co-committed-by: Tursiae &lt;git@tursiae.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Isolate the SD card from the SPI bus when talking to the display (#176)</title>
<updated>2025-01-10T02:17:11+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2025-01-10T02:17:11+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=94c30b759192231b8172bbb7d81125c8181261a1'/>
<id>94c30b759192231b8172bbb7d81125c8181261a1</id>
<content type='text'>
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 &lt;ailuruxx@gmail.com&gt;
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/176
Co-authored-by: jacqueline &lt;me@jacqueline.id.au&gt;
Co-committed-by: jacqueline &lt;me@jacqueline.id.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;ailuruxx@gmail.com&gt;
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/176
Co-authored-by: jacqueline &lt;me@jacqueline.id.au&gt;
Co-committed-by: jacqueline &lt;me@jacqueline.id.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Extend idle -&gt; sleep time to 2 minutes</title>
<updated>2025-01-10T00:05:59+00:00</updated>
<author>
<name>Tom Kirchner</name>
<email>git@halffull.org</email>
</author>
<published>2025-01-10T00:05:59+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=2a92bb1869ae9db69c0353805f1e8c43288b28af'/>
<id>2a92bb1869ae9db69c0353805f1e8c43288b28af</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Queue repeat modes (#126)</title>
<updated>2024-12-19T04:29:23+00:00</updated>
<author>
<name>ailurux</name>
<email>ailuruxx@gmail.com</email>
</author>
<published>2024-12-19T04:29:23+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=5cdc1141ee5f5c7b19809940457b4c4c21db9ae6'/>
<id>5cdc1141ee5f5c7b19809940457b4c4c21db9ae6</id>
<content type='text'>
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 &lt;ailuruxx@gmail.com&gt;
Co-committed-by: ailurux &lt;ailuruxx@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;ailuruxx@gmail.com&gt;
Co-committed-by: ailurux &lt;ailuruxx@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Explicitly close the playlist files in the queue on storage unmount</title>
<updated>2024-10-04T04:41:05+00:00</updated>
<author>
<name>ailurux</name>
<email>ailuruxx@gmail.com</email>
</author>
<published>2024-10-04T04:41:05+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=7cc6f198cf437ae60185b65bfa556341be8ec63f'/>
<id>7cc6f198cf437ae60185b65bfa556341be8ec63f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Retry SD card mounting a few times when talking to the card fails</title>
<updated>2024-09-24T03:28:42+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2024-09-24T03:28:42+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=94ccd405e37bd1cfc74b9f173bdd31c6f16ef890'/>
<id>94ccd405e37bd1cfc74b9f173bdd31c6f16ef890</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Mount the SD card asynchronously when it becomes available</title>
<updated>2024-09-13T00:12:40+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2024-09-13T00:12:40+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=a174d76aa16e09ddfc2ce67393c92ed947a817a5'/>
<id>a174d76aa16e09ddfc2ce67393c92ed947a817a5</id>
<content type='text'>
Previously we were doing it synchronously, which led to some odd looking
livelock stacktraces... we still don't have a consistent repro, but this
at least makes the stack when we mount a lot more predictable
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously we were doing it synchronously, which led to some odd looking
livelock stacktraces... we still don't have a consistent repro, but this
at least makes the stack when we mount a lot more predictable
</pre>
</div>
</content>
</entry>
</feed>
