Commit Graph

131 Commits

Author SHA1 Message Date
Alessandro Genova 994c12cc30 add REALLY_LONG_PRESS event after a button is held down for 1.5s 2026-01-02 20:07:56 -05:00
David Volovskiy 8d551d26af Revert "Added print for LIS2DW interrupt"
This reverts commit 0105fee2f176b38e51cd1da8118481b82bdb35ed.
2026-01-02 20:07:56 -05:00
David Volovskiy 372992e259 Added print for LIS2DW interrupt 2026-01-02 20:07:56 -05:00
David Volovskiy 359bf0df69 Saw double-taps getting missed with latched LIR so moving back to pulsed 2026-01-02 20:07:56 -05:00
David Volovskiy dd054efe8d Added LIR latching on LIS2DW 2026-01-02 20:07:56 -05:00
David Volovskiy c5fe350fa1 Explicitly set interrupt type to latched 2026-01-02 20:07:56 -05:00
Alessandro Genova 7526b30b3d talk to accelerometer in the app loop rather than interrupt routine 2026-01-02 20:07:56 -05:00
Alessandro Genova 24400c53bb fix slow default alarm tune 2026-01-02 20:07:56 -05:00
Alessandro Genova d9b65ed5c8 ensure a button up event is always emitted 2026-01-02 20:07:56 -05:00
Alessandro Genova 02faae3d25 Events that follow a down event on the previous face should not be forwarded to the new face 2026-01-02 20:07:56 -05:00
Alessandro Genova 13a5166097 use __builtin_ctz when processing pending events 2026-01-02 20:07:56 -05:00
Alessandro Genova e5ddbe3c10 immediately process events when coming out of deep sleep 2026-01-02 20:07:56 -05:00
Alessandro Genova 961db3cc71 fix instant light not turning off after a long press 2026-01-02 20:07:56 -05:00
Alessandro Genova 3ea2f9c58a Allow users to set independent buzzer volume for signal/alarm 2026-01-02 20:07:56 -05:00
Alessandro Genova 450100b90a make movement_set_local_date_time slightly more efficient 2026-01-02 20:07:56 -05:00
Alessandro Genova 996d5d6679 Convert from timestamp to date_time once per second at most 2026-01-02 20:07:56 -05:00
Alessandro Genova f534e7c202 Fix bug that was causing notes in a sequence to play too long 2026-01-02 20:07:56 -05:00
Alessandro Genova 6fe1b236a4 Minor improvement to movement_force_led_on logic 2026-01-02 20:07:56 -05:00
Alessandro Genova 9d91ff3090 Add an optional implementation of button debounce 2026-01-02 20:07:56 -05:00
Alessandro Genova a71967a015 Perform as little work as possible in the interrupt callbacks 2026-01-02 20:02:36 -05:00
Alessandro Genova 9770ad4fe9 Fix more corner case that could cause the top of minute alarm to stop firing 2026-01-02 20:02:36 -05:00
Alessandro Genova 7acc9cc414 Align the top of the second with the 1Hz periodic interrupt 2026-01-02 20:02:36 -05:00
Alessandro Genova e2d13e076e Optimize finetune and nanosec faces to work with rtc-counter32 2026-01-02 20:02:36 -05:00
Alessandro Genova 6e23421df4 Fix a bug that was causing 10x power usage from boot until the first sound played 2026-01-02 20:02:36 -05:00
Alessandro Genova eb9ec8659c Initial seemingly stable version of movement using the RTC COUNTER32 mode 2026-01-02 20:02:36 -05:00
David Volovskiy 23038c3f74 Reapply "Added double-tap capabilities to LIS2DW"
This reverts commit 3bd1254b5f.
2025-12-01 20:14:54 -05:00
David Volovskiy eb3f02419e Merge branch 'main' into double-tap 2025-12-01 20:14:02 -05:00
David Volovskiy a907760cc1 We forgot to enable the actual double tap 2025-12-01 20:11:40 -05:00
voloved 3bd1254b5f Revert "Added double-tap capabilities to LIS2DW" 2025-12-01 20:09:34 -05:00
David Volovskiy e7225e1d5c Merge branch 'main' into double-tap 2025-11-22 08:50:44 -05:00
David Volovskiy 5b6b415b86 Removed 6D interrupt 2025-11-22 08:49:54 -05:00
voloved 77ced0e666 Merge pull request #98 from voloved/default_temp_in_simulator
Added default temp of 25C in simulator
2025-11-21 08:49:38 -05:00
voloved 6f60806168 Merge pull request #105 from voloved/remove-duplicate-includes
Removed duplicate includes
2025-11-20 18:28:24 -05:00
David Volovskiy eaae42cca9 Added double-tap capabilities to LIS2DW 2025-11-15 14:49:56 -05:00
David Volovskiy 6609b3f79a LIS2DW tap mode uses low-power mode 2025-11-15 14:13:22 -05:00
David Volovskiy 6374045c69 Removed duplicate include 2025-08-27 07:44:59 -04:00
David Volovskiy d5eb32bc74 Removed duplicate includes 2025-08-27 07:42:54 -04:00
David Volovskiy 018c94f23d movement_get_temperature no longer returns early in case logic after reading will ever be needed 2025-08-24 08:58:49 -04:00
Joey Castillo 5ecc3d6384 increase delay before checking VBUS_DET 2025-08-24 08:28:50 -04:00
David Volovskiy 877d972190 Temperature now can be set by simulator 2025-08-23 11:45:53 -04:00
David Volovskiy fb6978fde8 Added default temp of 25C in simulator 2025-08-19 08:41:18 -04:00
Alessandro Genova d903a827e9 Fix simulator deep sleep mode 2025-08-03 13:20:53 -04:00
James Haggerty 78eb0c0c97 Fix command line in simulator
In the original movement, the 'usb enabled' check was overridden
to true for the simulator such that shell_task() would always
be executed. In the new 'dummy' device in gossamer used by the
simulator, this usb check returns false.

Seemed like a slightly cleaner thing to do was to call
shell_task() regardless rather than to incorrectly
pretend that USB was connected.
2025-07-28 09:23:54 -04:00
Joey Castillo 39d605204f mark movement_state as volatile 2025-07-27 12:39:31 -04:00
Joey Castillo 991a4a1dc5 add delay before sampling VBUS_DET 2025-07-27 11:30:49 -04:00
voloved 154bd54510 Set time on make (#35)
* Time can get set from makefile

* Added setting make time into simulator

* Added  Hash in settings

* Added default location

* Cuts the Githash to 6 characters in the settings in case the makefile didn't do that already

* bump gossamer commit

* remove automatic timezone setting

* automatic time set: rename MAKEFILE_ to BUILD_ to match gossamer

* Revert "Added default location"

This reverts commit c24f69450fd40472c4f6cebb790a56c3f0d69cb6.

* silence warning

* watch_get_init_date_time: explicitly initialize all fields to 0

---------

Co-authored-by: Joey Castillo <joeycastillo@utexas.edu>
2025-07-06 10:56:27 -04:00
Joey Castillo 37a8a92f58 bugfix: maintain accelerometer background sampling rate after wake from sleep 2025-07-03 17:14:08 -04:00
Joey Castillo b1c67bea94 accelerometer: keep threshold across sleeps by tracking it in movement 2025-06-25 17:22:17 -04:00
Daniel Bergman 7f9a00ef35 fix(lis2dw): Re-initialize accelerometer after waking from sleep (#16)
* fix(lis2dw): Re-initialize accelerometer after waking from sleep

The LIS2DW accelerometer was not being re-initialized correctly after the device woke from sleep mode. When entering sleep, `watch_enter_sleep_mode` disables peripherals and pins, including those for I²C, to conserve power.

Upon waking, the `app_setup` function was designed to re-initialize the hardware. However, the logic only performed the I²C device check once on the initial boot. On subsequent wakes, the `movement_state.has_lis2dw` flag would prevent the I²C bus and the LIS2DW driver from being set up again. This caused any watch face functionality that relied on the accelerometer, such as the countdown face's tap detection, to fail after a sleep/wake cycle.

This commit refactors the initialization logic within `app_setup`. It now uses a static boolean `lis2dw_initialized` to ensure the sensor is detected only once at boot time. On subsequent wakes, if the sensor was originally found to be present, the I²C bus is explicitly re-enabled and the driver is re-initialized with `lis2dw_begin()` before its configuration is reapplied. This ensures the accelerometer is reliably available after every wake-up.

* fix(lis2dw): only check for accelerometer presence once per boot

Previously, devices without the LIS2DW sensor would re-enable I2C and attempt to detect the sensor on every wake from sleep, wasting power and CPU cycles. This change introduces a static `lis2dw_checked` flag that is set after the first detection attempt, regardless of whether the sensor is found. Now, the presence check and I2C enable/disable only occur once per boot, ensuring that devices without the sensor do not repeatedly attempt detection, improving efficiency and battery life.
2025-06-25 09:18:33 -04:00
Joey Castillo 1a5ccd34a0 accelerometer: don't initialize on wake if already set up 2025-06-11 23:25:08 -04:00