Commit Graph

83 Commits

Author SHA1 Message Date
955ac94de3 faces: restore simple_clock_face
Restore the original simple clock face as requested.
2024-03-16 20:04:08 -03:00
4a66035f77 faces/clock: add 24h only feature
The clock watch face can now be configured at build time
to only display the time in 24h mode. Also enabled in forced 24h mode.

This should result in smaller code size due to dead code elimination.
2024-03-05 00:46:27 -03:00
4cca3a0fac faces/clock: update copyrights and credits
Update the copyrights to include full name attribution to all
who contributed to the clock watch face, including myself.

Also add an SPDX license identifier header comment to the files.
2024-03-05 00:46:27 -03:00
69639a5736 faces/clock: indicate low power only when needed
There is no need to set the indicator on every clock tick.
Indicate only when the battery is checked.
2024-02-25 15:24:15 -03:00
5c376d9b9a faces/clock: indicate alarm only when necessary
The alarm state is not modified within the clock face.
Therefore, it only needs to be set when the face is activated.
2024-02-25 15:24:15 -03:00
2df6b2879a faces/clock: refactor time signal toggling code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:15 -03:00
1e2c23cf13 faces/clock: refactor clock display code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:15 -03:00
830200f9c3 faces/clock: reorder periodic battery check
Check the battery after the time has been updated.
Place all the indication code next to each other.
2024-02-25 15:24:14 -03:00
bf4d7a3f2b faces/clock: refactor partial time display code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:14 -03:00
8f07192053 faces/clock: refactor full time display code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:14 -03:00
76add5a2da faces/clock: refactor tick tock animation code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:14 -03:00
1d79930ab7 faces/clock: refactor low power tick function
Simplifies the code by defining dedicated functions
and separating the case from the main ones.

Also use the snprintf function since the buffer size is known.
2024-02-25 15:24:14 -03:00
e7052fe4e2 faces/clock: simplify LAP indication function
Simplifies the code by adding a dedicated function for this.
Also documents the meaning of the LAP indicator: Low Available Power.
2024-02-25 15:24:14 -03:00
0773439a49 faces/clock: refactor daily battery check
Move the code in question to a dedicated function. Better organized.
Add overridable preprocessor definition for the low battery threshold.
2024-02-25 15:24:14 -03:00
91713392a5 faces/clock: simplify PM indication function
Simplifies the code by adding dedicated functions for this.
2024-02-25 15:24:14 -03:00
113b4bba9c faces/clock: simplify 24h indication function
Simplifies the code by adding a dedicated function for this.
2024-02-25 15:24:14 -03:00
2132320d5c faces/clock: simplify signal indication function
Simplifies the code and makes it use the correct indicator.
For some reason it had been switched with the alarm indicator.

    WATCH_INDICATOR_BELL
        The small bell indicating that an alarm is set.

    WATCH_INDICATOR_SIGNAL
        The hourly signal indicator.
        Also useful for indicating that sensors are on.
2024-02-25 15:24:14 -03:00
e2cba9f2f2 faces/clock: simplify alarm indication function
Deduplicates state in the clock state and movement settings.
Makes the code simpler.

Also makes it use the correct indicator.
For some reason it had been switched
with the hourly chime indicator.

    WATCH_INDICATOR_BELL
        The small bell indicating that an alarm is set.

    WATCH_INDICATOR_SIGNAL
        The hourly signal indicator.
        Also useful for indicating that sensors are on.
2024-02-25 15:24:14 -03:00
e6d8b6aaff faces/clock: define general indication function
Sets or clears the specified indicator based on some boolean value.
2024-02-25 15:24:14 -03:00
01312c2deb faces/clock: move structure definition
Instances of the clock state structure
are only passed to the clock face itself
and only via the opaque context pointer.
No other code uses it.

Thus there is no need to expose it in a header file.
So make it an implementation detail of the watch face
by localizing it inside the translation unit.
2024-02-25 15:24:14 -03:00
8f040252fd faces: rename simple_clock_face to clock_face
It's not actually so simple and will only gain features from now on.
Just "clock face" also feels more canonical.
2024-02-24 18:53:07 -03:00
3703d565ed Merge pull request #337 from theAlexes/theAlexes/wyoscan-zero
make the zero in wyoscan a little more visually appealing
2024-01-21 02:35:32 -05:00
fe48776dae Merge branch 'main' into watch-face-day-night-percentage 2024-01-21 02:04:20 -05:00
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
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
dd9ca10122 make the zero in wyoscan a little more visually appealing 2023-12-08 22:11:56 +00:00
7802994854 Fix missing documentation for many clock faces:
* Move from .c to .h as needed for consistency.
* When missing from both, copy from pull request or wiki.
* When missing entirely, infer functionality from source code.
2023-11-27 23:06:19 -05:00
691f2fe506 day_night_percentage_face: Clear seconds digits when entering LE mode. 2023-11-09 20:31:56 -05:00
26f63dcaeb day_night_percentage_face: Use PM indicator instead of DA/NI.
This allows for use of the weekday digits for displaying the weekday.
2023-11-09 17:35:58 -05:00
2e8ee9965e day_night_percentage_face: Calculate rise/set/daylen only once per day. 2023-11-09 17:21:35 -05:00
f1d4d4ce89 Add day_night_percentage_face. 2023-11-09 02:34:36 -05:00
9c895817a0 Add minute repeater decimal face 2023-10-24 18:20:54 -04:00
b162dc0663 use movement_play_signal for default tune (fixes background signal) 2023-09-24 12:41:18 -04:00
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
bfde84f01d fix signal tunes not firing in background, and split out foreground/background chime functions 2023-09-22 07:29:04 -04:00
15eeca6b59 Decimal time face (#260)
* Update movement_faces.h

adding decimal_time_face.h to build

* Decimal Time, a new clock face

This face presents the current time as hours and hundredths of an hour.

* add decimal time to Makefile
2023-07-29 08:10:28 -04:00
923112172d Wyoscan .5 hz watchface (#256)
* initial wyoscan commit

* initial attempt at animation

* kinda working

* visually working but running out of memory

* slower

* little fixes

* add hardware watch blink function

* refine number animation

* remove movement from config for merging

* silence warnings

---------

Co-authored-by: Willy Hardy <whardy@redhat.com>
2023-07-29 07:22:42 -04:00
8f7452fd99 simple watch bin led: add functionality of representing the current time as binary code LED flashing. 2023-05-21 08:34:02 +02:00
84b947766e Alternative implementation of world clock (#216)
* Implementation of alternative world clock.

* Fixed two minor bugs
- Only start in settings mode on first activation
- Fixed typo in time zone names

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-03-11 16:37:40 -05:00
36ff634ced New face - Repetition Minute, fork of simple clock with an accessibility feature added : time reading via beeps 2023-02-02 23:07:24 +01:00
a18c285e58 restore old light button behavior
watch faces that handle EVENT_LIGHT_BUTTON_UP but not EVENT_LIGHT_BUTTON_DOWN
probably don't want the default EVENT_LIGHT_BUTTON_DOWN LED activation behavior
2023-01-27 09:43:03 -06:00
2b22ecc8e4 add default loop handler to all current watch faces 2023-01-25 09:23:50 -06:00
3142fccea3 Merge branch 'main' into default-handler 2023-01-17 10:52:42 -06:00
5163cf1fe1 Revert "never disable buzzer output"
This reverts commit 851d047c81.
2023-01-17 08:52:01 -06:00
0ef80b62da add movement_default_loop_handler, test with default watch faces 2023-01-14 14:21:04 -05:00
8331a54896 Remove more unnecessary conditionals 2023-01-10 21:02:47 -05:00
6b71711079 Precision watch update (#152)
* Intermediate changes

* Databank working

* Main commit for precision timing

First version where all functions are supposed to be working

* Fix math error in nanosec. File storage for location.

* Remove obsolete comments

* Missing page name on pages rotation - thanks to jeremy

* Delete file.diff

* Cleanup+tempchart

1) finetune must always reset last calibration time when doing non-0 time correction, even when you are not applying ppm correction.
2) Dithers over 31 periods not 10, more resolution with still no risk of overflow
3) Minute-boundery finetune fix. I also just got this 1-minute error after finetune...
4) Write frequency calibration value in 1 operation rather than 2. All RTC writes must be single operations to avoid partially correct data.
5) Some code cleanup
6) Tempchart face is added for temperature statistics

* Update set_time_hackwatch_face.c

* Math error in display code of finetune, allow to update correction time even without correction - by long alarm press

* Increase reliability of stopping & starting RTC timer

As it's quite dangerous operation

* hackwatch - days adjust down fix by long alarm

* unify style

* More comments & last style change

* Simulator support

RTC operations (watch_rtc_enable and watch_rtc_freqcorr_write) are in common libs.

* Unicode fix

* Crystal aging is now adjustable (AA page in nanosec - annual aging, ppm/year)

Aging is baked into fixed offset every time finetune is performed, as it relies on last adjustment time.

* Blink on non-0 page every minute in finetune to measure clock error

* Rolling back private changes

* Cleanup

* Cleanup

* Quality of life changes in nanosec

1. Does not calculate & apply ppm correction if less than 6 hours passed since previous adjustment (as it gives very high correction values which are unrealistic and unhelpful)
2. Idle timeout resets to face 0 only if no correction was made

* unify style

* Fix low-power errors in nanosec infrastructure, faster display in finetune

* Merge fix

* unify style

Co-authored-by: Jeremy O'Brien <neutral@fastmail.com>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-01-10 16:56:26 -05:00
3c576a83cf remove unnecessary conditional in simple clock face 2023-01-05 06:50:29 -05:00
851d047c81 never disable buzzer output 2023-01-03 21:24:14 -06:00
a69547805b Weeknumber watch face
Same as simple clock, but has iso 8601 week number instead of seconds counter
2022-12-02 19:45:53 +01:00