328 Commits

Author SHA1 Message Date
David Volovskiy
cef0d8836a Don't allow readding already guessed items 2024-09-03 16:08:12 -04:00
David Volovskiy
8ea779874f Face compares the values correctly now and does a dict lookup first 2024-09-03 16:08:12 -04:00
David Volovskiy
0c86be4a40 Swapped button mapping and removed fast iteration 2024-09-03 16:08:12 -04:00
David Volovskiy
676f50d194 Added fast cycle 2024-09-03 16:08:12 -04:00
David Volovskiy
3a24ede3de day streak and further wordle dev 2024-09-03 16:08:12 -04:00
David Volovskiy
ee53e83ae7 Changed dict to a smaller and simpler one 2024-09-03 16:08:12 -04:00
David Volovskiy
6bf22edbdc Continued Wordle dev 2024-09-03 16:08:12 -04:00
David Volovskiy
2e878e146c Start of Wordle 2024-09-03 16:08:12 -04:00
mcguirepr89
b774900ae6 finally squashed the bug 2024-09-02 13:10:26 -04:00
mcguirepr89
12b1432aae mode long press = reset_all() 2024-09-01 10:10:59 -04:00
mcguirepr89
20946e88f4 Merge remote-tracking branch 'fork/add_simple_calculator_face' into add_simple_calculator_face 2024-08-31 17:51:01 -04:00
mcguirepr89
70426751f8 negative toggle was only for first_num -- fixed 2024-08-31 17:47:15 -04:00
mcguirepr89
c75a21196f commented out debugging printf() statements 2024-08-31 14:46:23 -04:00
mcguirepr89
b607b6f7a9 removed note about mode long press 2024-08-31 12:44:29 -04:00
mcguirepr89
e13d42b5b5 mode=movement_move_to_next_face & longmode = face0 2024-08-31 12:41:57 -04:00
mcguirepr89
28db77f90c forgot to mention long press MODE for next face 2024-08-31 08:36:02 -04:00
mcguirepr89
18154deef4 Adds a simple calculator face 2024-08-31 08:31:26 -04:00
Matheus Afonso Martins Moreira
dea05663b0 Merge PR #428 - fix issues in sunrise/sunset
Takes zero into account, allowing the sunrise/sunset watch face
to work with no presets defined.

Also resolves a warning during compilation of the sunrise/sunset face.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/428
2024-08-30 16:47:47 -03:00
Matheus Afonso Martins Moreira
663cd725f8 Merge PR #434 - fix leap years
Improves handling of months in the Sensor Watch
by computing whether the given year is a leap year.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/434
2024-08-30 16:47:38 -03:00
Matheus Afonso Martins Moreira
657ff724d0 Merge PR #440 - fix countdown face issues
Avoid potential underflow when evaluating x - y with y > x.
Evaluate it only when y <= x instead.

Avoid clearing indicators in background task
since another watch face is likely active.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/440
2024-08-30 16:46:22 -03:00
Nicholas Rodrigues Lordello
a4fc048f94
Update TOTP Face Documentation
The TOTP face header file documentation contained outdated instructions
for configuring the complication with TOTP credentials. This PR updates
the documentation to match what is expected in `totp_face.c`.
2024-08-22 14:53:17 +02:00
Joseph Bryant
e2c5babb2c don't change the bell indicator from within background task 2024-08-18 22:09:37 +01:00
Joseph Bryant
dcd4d12c0a avoid delta overflow in countdown draw 2024-08-18 22:09:17 +01:00
David Volovskiy
09576807eb Made the days_in_month its own function 2024-08-10 07:40:52 -04:00
David Volovskiy
51176344dc Made it so the code works with a completely empty preset list 2024-08-03 11:42:42 -04:00
David Volovskiy
84f0db0654 Fix to remove compiler complaint 2024-08-03 11:38:45 -04:00
David Volovskiy
6ae5dfef70 Leap Years Now Handled Dynamically 2024-08-03 11:20:25 -04:00
Christian Buschau
db165bec30
Fix all days in a month 2024-08-03 12:22:15 +02:00
David Volovskiy
bae8c65825 Made the faces I care about not need to continuously re-find the timezone 2024-08-02 07:37:30 -04:00
David Volovskiy
4c546b14dc The timezone now auto-corrects with DST (but still displays the same offset in the settings screen to the user) 2024-08-02 01:25:01 -04:00
PrimmR
a9e6b82f00 Update timeout & low energy behaviour 2024-07-25 15:31:25 +01:00
voloved
6e26c01de0
Holding light button on a non-element screen will turn on the light (#2)
* Holding light button on a non-element screen will turn on the light.

* The alarm and led button press moves back to the currently-selected element symbol page rather than the next and previous one

* Usage update
2024-07-25 14:18:56 +01:00
PrimmR
cb90a1980f Added LED button combo 2024-07-24 11:18:24 +01:00
atax1a
42c14c2e5b
Merge pull request #420 from voloved/sunrise_sunset_presets
Added ability to add presets to the sunrise and sunset face
2024-07-24 04:49:03 +00:00
voloved
c8702d346e
Added subscreens to periodic table face; added title and faster scrolling (#1)
* Added subscreens to periodic table face; added title and faster scrolling

* Resized buf for element display

* Fixed scrolling to work on actual hardware

* Added delay before _loop_text at title and bugfix on elements shorter than 6 char

* Title screen displays when le_mode starts

* Added documentation on usage and removed unneeded variable
2024-07-23 10:35:38 +01:00
James Haggerty
222c60b072 Fix TOTP LFS printf string 2024-07-21 09:10:28 +10:00
David Volovskiy
a13c8c35b8 Code review commit 2024-07-20 15:59:42 -04:00
David Volovskiy
9ee319c888 Typo in comment 2024-07-20 14:48:32 -04:00
David Volovskiy
a3d23ab45e Long press of Alarm goes back to default 2024-07-20 14:46:42 -04:00
David Volovskiy
a7c0fb7dfd Added ability to add presets to the sunrise and sunset face 2024-07-20 14:35:37 -04:00
atax1a
5f5d86353f
Merge pull request #397 from madhogs/wyrun-totp-lfs-fix
Reduce totp_face_lfs memory usage
2024-07-08 21:10:46 +00:00
voloved
3eaf807590
Added Timeout; Ability to turn off LED and Sound; Added doublespeed mode. (#1)
* Check that color is valid

Instead of merely checking that COLOR is set, check that it is one of
RED, BLUE or GREEN

* Added ability to turn off sound and timer with modes

* Added enum for mode

---------

Co-authored-by: Wesley Ellis <tahnok@gmail.com>
2024-07-07 19:23:31 -04:00
joeycastillo
89a2af92ef silence warnings 2024-07-06 08:52:41 -04:00
Matt Greer
9794f86430 simon_face: Simon game complication 2024-05-05 13:43:33 -04:00
James Haggerty
77ea1b8965 Reduce totp_face_lfs memory usage 2024-04-26 16:05:35 +01:00
Matheus Afonso Martins Moreira
10701f3d50 faces/totp: avoid displaying when key is invalid
Fixes a division by zero bug caused by calling getCodeFromTimestamp
without having initialized the TOTP library with a secret first.
This was happening because the face calls totp_display on activation,
meaning the validity of the secret was not checked since this is
done in the generate function.

Now the validity of the key is determined solely by the size
of the current decoded key. A general display function checks it
and decides whether to display the code or just the error message.

The size of the current decoded key is initialized to zero
on watch face activation, ensuring fail safe operation.

Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/385
2024-03-20 12:54:20 -03:00
Matheus Afonso Martins Moreira
7e5c34773a faces/totp: fix error message not displayed bug
Forgot to call watch_display_string on the error message.
Of course the message isn't going to be displayed.

Also, increase the buffer size to 10 characters
and output a space to the last position.
This ensures the segments are cleared.

Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/385
2024-03-20 12:54:10 -03:00
Matheus Afonso Martins Moreira
3f850d79c8 faces/totp: remove dynamic memory allocation
Allocate an unlimited extent 128 byte buffer once during setup
instead of allocating and deallocating repeatedly. A static buffer
was not used because it fails to be reentrant and prevents multiple
instances of the watch face to be compiled by the user.

The advantage is the complete prevention of memory management errors,
improving the reliability of the watch. It also eliminates the overhead
of the memory allocator itself since malloc is not free.
The disadvantage is a worst case default size of 128 bytes was required,
meaning about 90 bytes will be wasted in the common case since most keys
are not that big. This can be overridden by the user via preprocessor.

The key lengths are checked on TOTP watch face initialization
and if any key is found to be too large to fit the buffer
it is turned off and the label and ERROR is displayed instead.

The base32 encoded secrets are decoded dynamically to the buffer
at the following times:

 - Face enters the foreground
 - User switches TOTP code

Therefore, there is still some extra runtime overhead
that can still be eliminated by code generation.
This will be addressed in future commits.

Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/385
2024-03-18 11:40:55 -03:00
Matheus Afonso Martins Moreira
df38c262b8 faces/totp: improve memory usage
The TOTP face is working in the simulator but fails on the real hardware
when loaded with lots of codes, just like the LFS version.
This is likely caused by the recent refactoring of the TOTP face
which introduced a declarative credential interface for ease of use.
That's accomplished by decoding the secrets at runtime which increases
the RAM requirements. Users are likely hitting memory limits.

In order to mitigate this, the algorithm is changed from decoding
all of the secrets only once during initialization to on the fly
decoding of the secret for the current TOTP credential only.
This converts this face's dynamic memory usage from O(N) to O(1)
at the cost of memory management when switching faces and credentials
which could impact power consumption. Issue is confirmed fixed by
author of issue who has tested it on real hardware. Fixes #384.

Due to variable key sizes, the memory cannot be statically allocated.
Perhaps there's a maximum key size that can serve as worst case?

Also took this opportunity to restructure the code a bit.
Also added code to check for memory allocation failure.

Reported-by: madhogs <59648482+madhogs@users.noreply.github.com>
Fixed-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: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/384
2024-03-17 20:48:54 -03:00
Matheus Afonso Martins Moreira
ca40d101d3 Merge branch 'structured-totp+maxz' into advanced
Aggregates the TOTP credentials into a data structure,
making it easier to define and use the credentials.
Also incorporate backwards movement code from another branch.

Co-authored-by: Max Zettlmeißl <max@zettlmeissl.de>
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/369
GitHub-Related-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/356
2024-03-08 06:56:31 -03:00