* set time face: add quick cycling through hours, minutes, etc. and handle February 29th properly
* set time face: add failsafe for "hanging" quick cycle mode
* set time face: get rid of compiler warning
* set time face: Fix typo and indentation errors
* Add tally face
* Fix copyright block to reflect real author
* Fix indentation
* More style editing, edited comments
* silence warning in tally_face
Co-authored-by: Andrew Mike <andrew@7thmagic.net>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
* 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>
* Create template for tachymeter
* Basic working tachymeter
* Improve UI for running and results
* Allow editing distance
* Alarm long-press to enter and exit editing mode
* Improve light button behaviour
* Set distance digit wise.
* Use 250ms resolution for total time
* Improve comments
* Bugfix: Show distance when running and face becomes active
* Update `%d` to `%lu` in `sprintf` call for `uint32_t`
* Ignore Alarm button (Up and Long-press) when showing results
* Improve GUI when running and face gets activated
* Change speed indicator from `/H` to `/h`
* silence warnings in tachymeter face
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
* 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>
* Calculator face with guess a number
* Add more functions, cleanup, and blinking
* Display operations better in the first location
* Clean up stack behaviour
Add empty stack behaviour, check stack bounds, add stack operations.
Also, make 'mode' always work to switch through faces on entering calculator
(i.e. by defaulting to OPERATION rather than NUMBER).
Some edge cases.
* Tweak negative rounding behaviour; add basic doco
* Add copyright name.
* Flip ordering of binary operations
* Fix compiler warnings
* Remove watch_private_display hackery and give face a better name
Also, slightly clearer documentation and a dupe function.
If you moved away and back to these faces, you'd lose the indicator. Not that the indicator here
seems very valuable, since it's not displayed on simple_clock_face, but at least
this makes things more consistent.
- switch indicators: use signal indicator instead of bell indicator
- make indicator show up only when there is an active alarm in the next 24 h
- Implement "hidden" UI tweak: extra long press of the alarm button in normal mode jumps back to alarm no. 1
- update comments to reflect latest changes
* Make countdown face reset to 0
It was annoying to have countdowns less than DEFAULT_MINUTES.
Admittedly, this does make DEFAULT_MINUTES fairly useless, since
we only ever see it the first time...
* Undo accidental change to movement_config.h
* 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>
* Initial work on probability watch face
* Complete probability watch face
* Restore default movement_config
* PR feedback: PR watch face title, use arc4random, clean up warnings
* Use rand instead of arc4random when building on emulator
* Accidentally overwrote movement_config
changed `--author_name` to `--author-name` to match typical style of command line arguments
changed some function names and implementations to improve readability
changed to `sys.exit` instead of exit as `sys.exit` is recommended for use in programs and `exit` is intended for use in the interactive shell (this can cause issues for some terminal emulators)
* 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
Added option to reset to the default timer value when in waiting mode and on long press of alarm. This was useful to me as I sometimes accidentally increase the timer value and then would need to loop around to get back to the default value.
A simple countdown face using movement_schedule_background_task
so that it rings, even if the another face is active
Limited to 99 minutes and 59 seconds so that the watch isn't staying
out of deep sleep for too long
Vendor code from https://github.com/Netthaw/TOTP-MCU to do the
heavy lifting of computing SHA-1 and HMAC and the rest of TOTP
Also implement a date_time to unix timestamp method