* Put something on screen * Use the 32bit watch_date_time repr to pass from JS * Implement periodic callbacks * Clear display on enabling * Hook up watch_set_led_color() to SVG (green-only) * Make debug output full-width * Remove default Emscripten canvas * Implement sleep and button clicks * Fix time zone conversion bug in beats-time app * Clean up warnings * Fix pin levels * Set time zone to browser value (if available) * Add basic backup data saving * Silence format specifier warnings in both targets * Remove unnecessary, copied files * Use RTC pointer to clear callbacks (if available) * Use preprocessor define to avoid hardcoding MOVEMENT_NUM_FACES * Change each face to const preprocessor definition * Remove Intl.DateTimeFormat usage * Update shell.html title, header * Add touch start/end event handlers on SVG buttons * Update shell.html * Update folder structure (shared, simulator, hardware under watch-library) * Tease out shared components from watch_slcd * Clean up simulator watch_slcd.c inline JS calls * Fix missing newlines at end of file * Add simulator warnings (except format, unused-paremter) * Implement remaining watch_rtc functions * Fix button bug on mouse down then drag out * Implement remaining watch_slcd functions * Link keyboard events to buttons (for keys A, L, M) * Rewrite event handling (mouse, touch, keyboard) in C * Set explicit text UTF-8 charset in shell.html * Address PR comments * Remove unused directories from include paths
27 lines
680 B
C
27 lines
680 B
C
#ifndef TOTP_FACE_H_
|
|
#define TOTP_FACE_H_
|
|
|
|
#include "movement.h"
|
|
|
|
typedef struct {
|
|
uint32_t timestamp;
|
|
uint8_t steps;
|
|
uint32_t current_code;
|
|
|
|
} totp_state_t;
|
|
|
|
void totp_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
|
|
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 totp_face_resign(movement_settings_t *settings, void *context);
|
|
|
|
#define totp_face ((const watch_face_t){ \
|
|
totp_face_setup, \
|
|
totp_face_activate, \
|
|
totp_face_loop, \
|
|
totp_face_resign, \
|
|
NULL, \
|
|
})
|
|
|
|
#endif // TOTP_FACE_H_
|