Commit graph

54 commits

Author SHA1 Message Date
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
David Volovskiy f7d1b8f9f3 Delay for starting the debounce no loonger happens 2024-07-29 23:53:25 -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 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
madhogs 524098b925 add the ability to set location and birthdate in movement config 2024-03-31 13:27:54 +01:00
Wesley Aptekar-Cassels d7369cd00d
Merge branch 'main' into theAlexes/cleanup 2024-01-21 01:31:58 -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
Alex Maestas 06d546f179 make it clear that the movement_state contains indexes 2023-12-16 22:08:10 +00: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 0ef80b62da add movement_default_loop_handler, test with default watch faces 2023-01-14 14:21:04 -05:00
TheOnePerson d0a3fd2377
Add stock stopwatch face (#140)
* buzzer sequences: first draft, does not work on hardware yet (but in simulator)

* buzzer sequences: add changes to movement.c

* buzzer sequences: add demo face to Makefile

* buzzer sequences: fix problem of interrupted sounds. Add logic for repeating sub sequences. Tidy up (move logic to watch_buzzer files, remove buzzer_demo_face)

* buzzer sequences: tidy up even more

* buzzer sequences: disable registering a 32 Hz tick callback for watch faces, so it will be used exclusively by the buzzer sequences functionality

* buzzer sequences: add callback slot functionality to watch_rtc and make watch_buzzer use it. Switch internal buzzer sequences tick frequency to 64 Hz. Revert changes to movement.c

* buzzer sequences: fix parameter sanity check in watch_rtc code

* stock stopwatch: first fully functional implementation

* stock stopwatch: fix typo in comment

* stock stopwatch: handle resuming from deep sleep mode properly

* buzzer sequences/watch_rtc: optimize calling tick callbacks in RTC_Handler

* buzzer sequences/watch_rtc: fix error in calling callback functions

* stock stopwatch: implement workaround for sleep mode

* stock stopwatch: merge current main into stock-stopwatch

* stock stopwatch: use TC counters as source for callbacks

* stock-stopwatch: revert unnecessary changes to watch_buzzer

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-01-10 16:31:32 -05:00
TheOnePerson cb678d735a
Merge branch 'main' into auto-fire-long-press 2022-10-26 06:43:47 +02:00
TheOnePerson cb69a2c181
Add an Alarm face to movement (#96)
* Add movement_play_alarm_beeps() to movement.c and make alarm sounds customizable. Add alarm indicator to simple watch face.

* Add alarm face

* alarm_face: fix problem with disabling alarms for 00:00.

* Fix typos in comments and get rid of of unused variable warning

* remove unnecessary constant

* simple_clock_face: fix disappearing chime indicator after face switch, enable alarm indicator updates in app loop (for one-time alarms).
movement: handle situations where watch is in sleep mode and chimes fire off at the same time as alarms properly.

* alarm_face: tweak process of displaying things on the lcd. Add extra long and extra short alarms. Increase number of alarm slots to 16.

* alarm face: fix alarms playing one beeping round more than set.

* alarm face: add proper quick cycling of hour and minute setting

* alarm-face: correct am/pm indication and some minor tweaks. Reset movement_config.h to current main branch. simple-watch-face: Remove unnecessary check and swap indicators (alarm / hourly chime)

* alarm-face: reverse commit parts from another branch (accidentially commited logic depending on movement firmware auto firing the long press event)

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2022-10-25 21:57:53 -05:00
TheOnePerson 17cd90e72f movement: update comments regarding button events 2022-10-25 21:42:29 +02:00
TheOnePerson 1a80003775 Movement: implement auto firing of long press events and introduce long up event. (Also re-implement alarm_enabled and alarm_note) 2022-10-23 13:07:32 +02:00
joeycastillo b56c60868e allow watch faces to schedule tasks from background 2022-10-22 13:16:46 -05:00
joeycastillo f89cecc56a document return value of watch_face_loop 2022-10-11 23:53:02 -05:00
Jack Bond-Preston b07b548681 movement: fix movement_request_wake() prototype
This function has `void` args, currently it can throw a compiler warning
2022-07-25 15:17:02 +01:00
Joey Castillo b234db74fe movement: wake programmatically from background and play alarm 2022-07-17 00:23:38 -05:00
Joey Castillo 96017d6ec1 movement: add mechanism for watch faces to use backup registers 2022-02-13 11:25:28 -05:00
Joey Castillo b8cb6f3bcf movement: prevent invalid tick frequency from breaking scheduled tasks 2022-02-12 22:19:01 -05:00
Joey Castillo 99c518e421 movement: long press on MODE always dismisses the active face 2022-01-19 14:32:33 -05:00
Joey Castillo 5fccc24c98 Merge branch 'main' of github.com:joeycastillo/Sensor-Watch into main 2022-01-15 19:27:24 -05:00
Joey Castillo 41eaa9c1c0 add MIT license text to movement files 2022-01-15 14:53:56 -05:00
Wesley Ellis 37ff7b9c26 Add movement_cancel_background_task
Provide a way for a scheduled background task to be cancelled
2022-01-01 14:13:04 -05:00
Joey Castillo 1a4612f259 add documentation for watch face index 2021-12-21 08:20:08 -06:00
Joey Castillo 60fe969191 Movement: give watch faces their index at setup time 2021-12-20 17:02:17 -06:00
Joey Castillo 03e107b81a Movement: allow scheduling precisely timed background tasks (resolves #28) 2021-12-20 12:37:11 -06:00
Joey Castillo 762af872d2 fix missing prototype warnings 2021-12-10 12:00:26 -05:00
Joey Castillo 25d54101b1 movement: update comment; we store this data now 2021-12-02 15:11:18 -05:00
Joey Castillo 77d3e5640f movement: add option to always snap back to first watch face 2021-12-02 15:10:49 -05:00
Joey Castillo 0fb8afda81 movement: add alarm and signal functions 2021-11-29 14:54:13 -05:00
Joey Castillo 03fb09f5b4 movement: more granular button and LED timing via fast tick 2021-11-29 10:33:42 -05:00
Joey Castillo 63448e1028 background tasks have been implemented 2021-11-27 17:00:16 -05:00
Joey Castillo 002d368a25 movement: add world clock face 2021-11-26 13:43:47 -05:00
Joey Castillo b94c0ba65f movement: store settings in BKUP to persist across resets 2021-11-25 10:39:09 -05:00
Joey Castillo 5c3967aea2 movement: implement time zone setting 2021-11-25 10:36:01 -05:00
Joey Castillo 61f479db5a movement: preferences refactor, two new types 2021-11-08 09:25:06 -06:00
Joey Castillo 8475ffcd7a movement: first crack at background tasks API 2021-10-23 17:55:19 -04:00
Joey Castillo b88cd0cd7e movement: add thermistor readout face 2021-10-21 13:13:46 -04:00
Joey Castillo 75be621914 movement settings: add timeout and LED duration 2021-10-19 13:46:25 -04:00
Joey Castillo 93624f0b69 add timeout event to give faces a chance to resign 2021-10-18 13:55:22 -04:00
Joey Castillo 0cfb37c671 early work on background tasks, documentation 2021-10-16 16:03:52 -04:00
Joey Castillo 458ebf6987 remove unimplemented settings for now 2021-10-16 13:48:16 -04:00
Joey Castillo 3e539a9e63 screensaver mode is now low energy mode 2021-10-16 13:40:17 -04:00