Skip to content

Tags: toverainc/willow

Tags

0.3.1

Toggle 0.3.1's commit message
was: enable WebSocket destroy on exit in was_init

The WAS WebSocket client sometimes fails to reconnect after receiving a
WEBSOCKET_EVENT_CLOSED event due to it not being able to create the
WebSocket client task:

  I (13:15:28.958) WILLOW/WAS: WebSocket closed
  I (13:15:28.959) WILLOW/WAS: initializing WebSocket client (ws:https://was.dev.willow:8502/ws)
  E (13:15:28.961) websocket_client: Error create websocket task
  E (13:15:28.967) WILLOW/WAS: failed to start WebSocket client: ESP_FAIL

When this happens, Willow stops trying to reconnect to WAS, and the user
has to reset or power-cycle their device. As this is terrible UX, this
should be avoided.

The root cause is not freeing resources of the WebSocket client before
we reinitialize it in init_was. This eventually causes us to run out of
IRAM, causing the WebSocket client task creation to fail.

To fix this, enable WebSocket destroy on exit in was_init, rather than
in was_deinit, so it is always enabled. This is needed to avoid leaking
resources due to not calling esp_websocket_client_destroy before calling
esp_websocket_client_init. We don't want to call
esp_websocket_client_destroy, as that has proven to be very prone to
crashes in the past.

Similarly, we don't want to call esp_websocket_client_start when the WAS
WebSocket client receives a WEBSOCKET_EVENT_CLOSED event. This would
avoid the resource leak, but testing has shown this is also very prone
to crashes.

See the following commits for extra information:
985375c ("was: drop esp_websocket_client_destroy()")
1f3d298 ("was: drop esp_websocket_client_destroy() completely")

0.3.0

Toggle 0.3.0's commit message
audio: only install I2S driver once

This requires an ESP-ADF bump.

Closes: #125
Closes: #354

0.2.3

Toggle 0.2.3's commit message
was: reset display timer on WAS command endpoint result

With WAS Command Endpoint enabled, if a command endpoint takes long to
respond, the display timer might expire before the response arrives.
Reset the display timer when a response arrives.

Fixes #349.

(cherry picked from commit b5a48f5)

0.3.0-rc.2

Toggle 0.3.0-rc.2's commit message
CI: mark release candidates as pre-release

0.3.0-rc.1

Toggle 0.3.0-rc.1's commit message
LCD text and logging copy update

0.2.2

Toggle 0.2.2's commit message
audio: fix session timer

In commit 349a8e4 ("treewide: define display timeout in seconds"),
we changed reset_timer to convert the timeout to microseconds inside the
function, but we forgot to change the reset_timer call for the session
timer. As a result, the session timer was waiting for millions of
seconds rather than just the number of seconds in the config.

Fixes: 349a8e4 ("treewide: define display timeout in seconds")
(cherry picked from commit dd2815b)

0.2.1

Toggle 0.2.1's commit message
treewide: support GT911 touch controller in final Box-3

The pre-production units of the ESP32-S3-Box-3 uses a different touch
controller than the final model. Detect the model to make sure the touch
controller works on both versions.

This requires a change to ESP-ADF to allow probing the I2C address on
the I2C bus.

0.2.0

Toggle 0.2.0's commit message
speech_commands: update WAS multinet API URL

0.2.0-rc.1

Toggle 0.2.0-rc.1's commit message
speech_commands: update WAS multinet API URL

0.1.1

Toggle 0.1.1's commit message
main: init SNTP before starting network

If we want to use an NTP server provided by DHCP, sntp_servermode_dhcp()
should be called before the DHCP client requests an IP.