]> git.earman.xyz Git - sensor-watch.git/commitdiff
faces/totp: allow moving backwards through codes
authorMax Zettlmeißl <max@zettlmeissl.de>
Sat, 20 Jan 2024 23:15:01 +0000 (00:15 +0100)
committerMatheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tue, 5 Mar 2024 06:58:09 +0000 (03:58 -0300)
Adds the ability to cycle back to the previous credential with LIGHT.
Long pressing LIGHT activates the LED.

Co-authored-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
movement/watch_faces/complication/totp_face.c
movement/watch_faces/complication/totp_face.h
movement/watch_faces/complication/totp_face_lfs.c
movement/watch_faces/complication/totp_face_lfs.h

index 35e435c6dbf29a75d9b4f51a2b82bb58d63a0728..b0a4f5c598043860cb3b02559a57967a33757c0d 100644 (file)
@@ -130,6 +130,7 @@ void totp_face_activate(movement_settings_t *settings, void *context) {
 bool totp_face_loop(movement_event_t event, movement_settings_t *settings, void *context) {
     (void) settings;
     totp_state_t *totp_state = (totp_state_t *)context;
+    totp_t *totp;
 
     switch (event.event_type) {
         case EVENT_TICK:
@@ -148,12 +149,27 @@ bool totp_face_loop(movement_event_t event, movement_settings_t *settings, void
                 // wrap around to first key
                 totp_state->current_index = 0;
             }
-            totp_t *totp = totp_current(totp_state);
+            totp = totp_current(totp_state);
+            TOTP(totp->key, totp->key_length, totp->period, totp->algorithm);
+            totp_display(totp_state);
+            break;
+        case EVENT_LIGHT_BUTTON_UP:
+            if (totp_state->current_index == 0) {
+                // Wrap around to the last credential.
+                totp_state->current_index = totp_total() - 1;
+            } else {
+                totp_state->current_index--;
+            }
+            totp = totp_current(totp_state);
             TOTP(totp->key, totp->key_length, totp->period, totp->algorithm);
             totp_display(totp_state);
             break;
         case EVENT_ALARM_BUTTON_DOWN:
         case EVENT_ALARM_LONG_PRESS:
+        case EVENT_LIGHT_BUTTON_DOWN:
+            break;
+        case EVENT_LIGHT_LONG_PRESS:
+            movement_illuminate_led();
             break;
         default:
             movement_default_loop_handler(event, settings);
index 9332435c66807172dfaf6e20f1899783a1c98f2a..8bde47139732a929317a4126366b82b523cc9539 100644 (file)
@@ -58,6 +58,8 @@
  *      o Once finished, remove the two provided examples.
  *
  * If you have more than one secret key, press ALARM to cycle through them.
+ * Press LIGHT to cycle in the other direction or keep it pressed longer to
+ * activate the light.
  */
 
 #include "movement.h"
index 4066ac48f366ffe6d465fbd5a4abc142d20f6430..820ad52ef05faa2a973557045b14c1c3518b26a4 100644 (file)
@@ -163,7 +163,7 @@ static void totp_face_lfs_read_file(char *filename) {
             continue;
         }
 
-        // If we found a probably valid TOTP record, keep it. 
+        // If we found a probably valid TOTP record, keep it.
         if (totp_records[num_totp_records].secret_size) {
             num_totp_records += 1;
         } else {
@@ -255,8 +255,21 @@ bool totp_face_lfs_loop(movement_event_t event, movement_settings_t *settings, v
             totp_face_set_record(totp_state, (totp_state->current_index + 1) % num_totp_records);
             totp_face_display(totp_state);
             break;
+        case EVENT_LIGHT_BUTTON_UP:
+            if (totp_state->current_index - 1 >= 0) {
+                totp_face_set_record(totp_state, totp_state->current_index - 1);
+            } else {
+                // Wrap around to the last record.
+                totp_face_set_record(totp_state, num_totp_records - 1);
+            }
+            totp_face_display(totp_state);
+            break;
         case EVENT_ALARM_BUTTON_DOWN:
         case EVENT_ALARM_LONG_PRESS:
+        case EVENT_LIGHT_BUTTON_DOWN:
+            break;
+        case EVENT_LIGHT_LONG_PRESS:
+            movement_illuminate_led();
             break;
         default:
             movement_default_loop_handler(event, settings);
index 64c6ce1545ae21c1b902feb59482e32283152982..72ae24607958efd17f55e9bea63d4439ce32f4dd 100644 (file)
@@ -47,6 +47,8 @@
  * to modify the URI.
  *
  * If you have more than one secret key, press ALARM to cycle through them.
+ * Press LIGHT to cycle in the other direction or keep it pressed longer to
+ * activate the light.
  */
 
 #include "movement.h"