Matheus Afonso Martins Moreira
879c48ce4d
Merge PR #417 - improve 24h only mode
...
Enhances 24 hour only mode by setting defaults properly
and skipping past the 12/24 hour settings page in the
preferences watch face.
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com >
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/417
2024-08-30 16:47:47 -03:00
Matheus Afonso Martins Moreira
a715265af6
Merge PR #437 - debouncing logic
...
Mechanical switches exhibit temporary voltage fluctuations
when electrical contact is made, which manifest as "bouncing"
between the logical high and low states. Sampling the switch's
state during this period of stability produces invalid results.
The switch must be debounced by ignoring the generated interrupts
until the switch's state has stabilized. This is implemented by delaying
the input events until an empirically determined time has elapsed.
As such this pull request introduces customizable high resolution timers
for debouncing button down and up events.
This software debouncing unfortunately increases the sensor watch's
input latency. This is an acceptable tradeoff due to better usability:
watch faces which require holding down buttons such as the pulsometer
should work much more reliably after this patch.
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com >
Tested-on-hardware-by: Krzysztof Gałka <@kshysztof@Discord>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/437
References: https://en.wikipedia.org/wiki/Switch#Contact_bounce
2024-08-30 16:44:38 -03:00
Matheus Moreira
9c093f9540
Merge PR #387 - configurable default birthdate/location
...
Adds the ability to configure at compilation time
the movement's default birth date and location.
Tested-by: madhogs <madhogs@protonmail.com >
Tested-by: Niehztog <niehztog@gmail.com >
Tested-on-hardware-by: madhogs <madhogs@protonmail.com >
Tested-on-hardware-by: Niehztog <niehztog@gmail.com >
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com >
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/387
2024-08-30 16:44:38 -03:00
David Volovskiy
d5a8c57c82
Additional code review change
2024-08-23 22:25:02 -04:00
David Volovskiy
c6f2bff75e
Code review edits
2024-08-23 17:35:16 -04:00
Joseph Bryant
20b4a32835
make sure we don't miss our scheduled tasks
2024-08-18 20:09:06 +01:00
David Volovskiy
e9837ff0cb
Stops Running cb_fast_tick when the watch debounce timer is defined as 0
2024-08-17 02:52:30 -04:00
David Volovskiy
2cdfa2d3b3
Set the debounce tick variables to 0 to make the face work the same as stock.
2024-08-17 02:45:22 -04:00
David Volovskiy
9861da84c3
Changed debounce to ignore button presses after a press down or up rathe rthan dact after a set amount of time due to an issue of delay_ms allowing a shoft-bricking
2024-08-11 11:00:08 -04:00
David Volovskiy
7bbac4cd80
Brought debounce time to 8ms rather than 15
2024-07-31 07:33:25 -04:00
David Volovskiy
027e42dc58
Moved a few lines around to match main
2024-07-31 07:25:09 -04:00
David Volovskiy
e297b3013e
Using debounce that triggers when there's no change for Xms rather than just ignoring new presses after Xms
2024-07-31 07:22:33 -04:00
David Volovskiy
607946ed2e
A little bit of clean-up
2024-07-30 07:27:47 -04:00
David Volovskiy
f7d1b8f9f3
Delay for starting the debounce no loonger happens
2024-07-29 23:53:25 -04:00
David Volovskiy
7f2ac61375
Fixed stuck fast_tick
2024-07-29 21:43:32 -04:00
David Volovskiy
73c3ba3ae7
Cleaned up code
2024-07-29 21:05:19 -04:00
David Volovskiy
36117ca207
using cb_fast_tick again
2024-07-29 20:48:17 -04:00
David Volovskiy
9727dac3c3
Revert "Leaving sleep with alarm button up doesn't trigger alarm button"
...
This reverts commit 7d5aaf60ca .
2024-07-29 20:28:10 -04:00
David Volovskiy
947e299494
Made the debounce register rising edges rather than falling edges
2024-07-29 20:13:54 -04:00
David Volovskiy
4a4fce428e
Removed some dead code
2024-07-29 18:24:58 -04:00
David Volovskiy
df2dac5a07
debouince now uses cb_fast_tick and holding the button now also gets debounced
2024-07-29 18:12:46 -04:00
David Volovskiy
7d5aaf60ca
Leaving sleep with alarm button up doesn't trigger alarm button
2024-07-29 07:44:31 -04:00
David Volovskiy
4375ca37e0
Added debouncing
2024-07-29 07:39:51 -04:00
David Volovskiy
2afc2c6721
isolating this bit of complexity in movement function; Add ifdefs in clock faces for DCE
2024-07-10 07:22:55 -04:00
David Volovskiy
b923d50652
CLOCK_FACE_24H_ONLY hides the preference to change the setting and defaults the mode to 24Hr mode
2024-07-08 18:32:41 -04:00
madhogs
524098b925
add the ability to set location and birthdate in movement config
2024-03-31 13:27:54 +01:00
TheOnePerson
c22123961f
Fix compile errors and warnings in movement.c and shell.c
2024-03-29 11:49:48 +01:00
Matheus Afonso Martins Moreira
8bf652f213
Merge branch 'timeout-event-and-sleep-logic'
...
Currently, movement drops timeout events in case the previous loop
indicates that sleep is not possible. This is due to unintended
short circuiting behavior of && and is fixed with a temporary variable.
The static qualifier of can_sleep is also removed.
Helped-by: Alex Maestas <git@se30.xyz >
Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Tested-on-hardware-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/376
2024-03-08 06:56:55 -03:00
Matheus Afonso Martins Moreira
f35cb849de
Merge branch 'compile-time-preferences'
...
Adds overridable C preprocessor definitions for every user preference.
Enables the user to set defaults and omit the preferences face.
The default behavior of the watch is preserved.
Suggested-by: Wesley Aptekar-Cassels <me@wesleyac.com >
Implemented-by: madhogs <x3dh4vhf@duck.com >
Reviewed-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Tested-on-hardware-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/295
GitHub-Related-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/291
2024-03-08 06:52:22 -03:00
Matheus Afonso Martins Moreira
35c0a4be87
Merge branch 'usb-improvements' into advanced
...
- Change newline prints to also send carriage return
- Introduce shell module for serial shell with argument parsing
- Introduce shell command list for compile time command registration
- Refactor file system commands for shell subsystem
- Introduce new shell commands:
- 'help' command
- 'flash' command to reset into bootloader
- 'stress' tests CDC serial writes of various lengths
- optional delay parameter
- Harden USB handling
- Hangs less
- Drops fewer inputs
- Circular buffers for both reads and writes
Reported-by: Edward Shin <contact@edwardsh.in >
Tested-by: Edward Shin <contact@edwardsh.in >
Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Tested-on-hardware-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Reviewed-by: James Haggerty <james@gruemail.com >
Reviewed-by: Wesley Aptekar-Cassels <me@wesleyac.com >
Reviewed-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com >
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/344
2024-03-08 06:51:34 -03:00
Matheus Afonso Martins Moreira
b1adbd548e
movement: fix unintended timeout short circuiting
...
Currently, movement drops time out events in case the previous loop
indicates that sleep is not possible due to short circuiting behavior
of logical and in C: if the left-hand side is false, the right hand
side is not evaluated at all, which means the loop is not called.
This was not intended to happen.
Fix it by storing the result in a second boolean variable
and working out the logic after the fact.
2024-03-05 21:49:32 -03:00
Matheus Afonso Martins Moreira
6ca553e648
movement: convert can_sleep an automatic variable
...
It is a simple boolean value and its scope is limited to the function.
There is no reason that I can think of for it to be a static variable.
2024-03-05 21:08:10 -03:00
madhogs
3c6affb419
Merge branch 'main' into preferences_in_config
2024-02-14 17:17:10 +00:00
Max Zettlmeißl
af18673e1a
Change inactivity deadlines: add 10 minutes and remove 2 days. ( #365 )
...
I like to use the ten minute timeout on my watch and there are other
people who have similar interests in a lower deadline. The two day
deadline had to go to still accommodate the change within the three
bit index.
The default setting is still the one hour timeout.
2024-02-07 14:02:41 -05:00
Christian Buschau
898b159a90
Revert "make the watch-face a global in movement.c, actually"
...
This reverts commit 0e801ed505 .
2024-01-21 20:31:37 +01:00
Wesley Aptekar-Cassels
d7369cd00d
Merge branch 'main' into theAlexes/cleanup
2024-01-21 01:31:58 -05:00
Alex Maestas
aa3a1eeeef
movement: Use LE mode code to keep buzzer awake, instead of sleeping.
2024-01-09 16:24:11 -05:00
Wesley Aptekar-Cassels
e9fe4aeefe
Enable custom signal tones in LE mode.
...
This makes movement_play_signal synchronous when in LE mode, despite
using the underlying asynchronous API. It's a bit of a hack, but it
should work well enough for now.
This also moves the enabling/disabling of the buzzer into the
movement_play_signal function, so that watch faces no longer have to do
it.
2024-01-09 16:22:21 -05:00
Wesley Aptekar-Cassels
3ee32c6e57
Use legacy buzzer functions when playing default tune.
...
This allows the default tune to be played in LE mode.
Fixes : #275
2024-01-09 16:22:21 -05:00
Wesley Aptekar-Cassels
6f4917a0d5
Revert "Merge pull request #283 from neutralinsomniac/fix_hourly_chime_background"
...
This reverts commit 5c94111ea2 , reversing
changes made to bc9b4ce700 .
2024-01-09 16:22:21 -05:00
Edward Shin
5b762d0168
USB Improvements
...
* Introduce shell module for basic serial shell with argument parsing
* Introduce shell_cmd_list module for basic compile-time command
registration
* Harden USB handling to hang less and drop fewer inputs
- Service tud_task() with periodic TC0 timer interrupt
- Service cdc_task() with periodic TC1 timer interrupt
- Handle shell servicing in main app loop
- Add a circular buffering layer for reads/writes
* Change newline prints to also send carriage return
* Refactor filesystem commands for shell subsystem
* Introduce new shell commands:
- 'help' command
- 'flash' command to reset into bootloader
- 'stress' command to stress CDC writes
Testing:
* Shell validated on Sensor Watch Blue w/ Linux host
* Shell validated in emscripten emulator
* Tuned by spamming inputs during `stress` cmd until stack didn't crash
2024-01-07 00:20:20 -05:00
Alex Maestas
0e801ed505
make the watch-face a global in movement.c, actually
2023-12-17 03:23:26 +00:00
Alex Maestas
8eae6eabd6
clean up trailing whitespace in movement.c
2023-12-16 22:23:32 +00:00
Alex Maestas
0ffe19da5b
use a pointer to the watch face in the app loop instead of indirecting through the index each time, and also recalculate can_sleep based on the timeout loop call.
2023-12-16 22:23:19 +00:00
Alex Maestas
06d546f179
make it clear that the movement_state contains indexes
2023-12-16 22:08:10 +00:00
madhogs
868fecd248
add compile-time options for all preferences to movement_config
2023-10-02 17:23:11 +01:00
Jeremy O'Brien
45f402b4ec
move buzzer enabled detection logic into movement for movement_play_signal/tune
...
this way watch faces don't have to disable/enable the buzzer themselves
before calling movement_play_signal() and movement_play_tune()
2023-09-23 10:56:12 -04:00
Jeremy O'Brien
bfde84f01d
fix signal tunes not firing in background, and split out foreground/background chime functions
2023-09-22 07:29:04 -04:00
joeycastillo
bc9b4ce700
update alternate firmware for new board color
2023-09-13 14:08:52 -04:00
joeycastillo
fd2c8c2065
add sensor watch lite
2023-08-17 14:35:51 -04:00