57 Commits

Author SHA1 Message Date
Matheus Afonso Martins Moreira
ac5bf8cfce Merge PR #470 - implement automatic DST toggling
Implements logic to automatically offset daylight saving time settings
when calculating timezone offsets. This should make the DST functions
work automatically with no need for user input in most cases.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/470
2024-09-08 13:41:52 -03:00
Matheus Afonso Martins Moreira
a2e5417de9 Merge PR #461 - improve t/y special case docs
Fix a typo and make the documentation clearer.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/461
2024-09-03 00:28:25 -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
David Volovskiy
fe259ee526 Comment change 2024-08-26 21:40:56 -04:00
David Volovskiy
9640f452cd Made the T and Y characters look more unique on the 4 and 6 position 2024-08-22 20:46:47 -04:00
David Volovskiy
09576807eb Made the days_in_month its own function 2024-08-10 07:40:52 -04:00
David Volovskiy
2824a62908 Bugfix on not registering the top of an hour 2024-08-04 09:53:04 -04:00
David Volovskiy
e50390b673 DST roll is now a global variable in watch_rtc 2024-08-03 10:07:57 -04:00
David Volovskiy
74421c7e65 Day roll back repeat fix 2024-08-03 09:39:02 -04:00
David Volovskiy
fa2907e098 Some more cleanup 2024-08-03 09:38:00 -04:00
David Volovskiy
149911e4ad Time now auto-updates with DST 2024-08-02 01:23:21 -04:00
joeycastillo
5ec3dca9e4 documentation fix 2024-07-10 06:56:49 -04:00
joeycastillo
ac5fb40730 remove dead code 2024-07-10 06:49:56 -04:00
Jose Castillo
d98d14d236
Add support for Sensor Watch Pro (#412)
* Sensor Watch Pro board definition

* Disable hot-plugging on SWCLK

* Add rainbow test

* Move interrupt mapping to board config

* New color definition for Pro boards in makefile
2024-07-06 11:07:02 -04:00
joeycastillo
89a2af92ef silence warnings 2024-07-06 08:52:41 -04:00
Matheus Afonso Martins Moreira
35c0a4be87 Merge branch 'usb-improvements' into advanced
- Change newline prints to also send carriage return
 - Introduce shell module for serial shell with argument parsing
 - Introduce shell command list for compile time command registration
 - Refactor file system commands for shell subsystem
 - Introduce new shell commands:
   - 'help' command
   - 'flash' command to reset into bootloader
   - 'stress' tests CDC serial writes of various lengths
     - optional delay parameter
 - Harden USB handling
   - Hangs less
   - Drops fewer inputs
 - Circular buffers for both reads and writes

Reported-by: Edward Shin <contact@edwardsh.in>
Tested-by: Edward Shin <contact@edwardsh.in>
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>
Reviewed-by: James Haggerty <james@gruemail.com>
Reviewed-by: Wesley Aptekar-Cassels <me@wesleyac.com>
Reviewed-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/344
2024-03-08 06:51:34 -03:00
Matheus Afonso Martins Moreira
592e18bf0e Merge branch 'silicon-errata' into advanced
Implements the recommended workarounds for numerous silicon errata,
reducing power consumption and preventing freezes and hard faults.

Tested-by: Alex Maestas <git@se30.xyz>
Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: Alex Maestas <git@se30.xyz>
Tested-on-hardware-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Reviewed-by: Wesley Aptekar-Cassels <me@wesleyac.com>
Reviewed-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/340
GitHub-Related-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/361
GitHub-Related-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/359
Reference: https://ww1.microchip.com/downloads/aemDocuments/documents/MCU32/ProductDocuments/Errata/SAM-L22-Family-Silicon-Errata-and-Data-Sheet-Clarification-DS80000782.pdf
2024-03-08 06:50:16 -03:00
Alex Maestas
83a0e4e992 annotate TRNG erratum, address review comment 2024-01-22 00:39:18 +00:00
Wesley Aptekar-Cassels
50dccd07d3 buzzer: fix simulator build, refactor sequence_length. 2024-01-09 16:22:21 -05:00
Wesley Aptekar-Cassels
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
Edward Shin
5b762d0168 USB Improvements
* Introduce shell module for basic serial shell with argument parsing
* Introduce shell_cmd_list module for basic compile-time command
  registration
* Harden USB handling to hang less and drop fewer inputs
  - Service tud_task() with periodic TC0 timer interrupt
  - Service cdc_task() with periodic TC1 timer interrupt
  - Handle shell servicing in main app loop
  - Add a circular buffering layer for reads/writes
* Change newline prints to also send carriage return
* Refactor filesystem commands for shell subsystem
* Introduce new shell commands:
  - 'help' command
  - 'flash' command to reset into bootloader
  - 'stress' command to stress CDC writes

Testing:
* Shell validated on Sensor Watch Blue w/ Linux host
* Shell validated in emscripten emulator
* Tuned by spamming inputs during `stress` cmd until stack didn't crash
2024-01-07 00:20:20 -05:00
Alex Maestas
93d7f38d67 fix simulator build by declaring Trng type as a void pointer 2023-12-17 22:40:04 +00:00
Alex Maestas
89e86fe629 work around silicon erratum in TRNG 2023-12-17 17:39:59 +00:00
Wesley Aptekar-Cassels
76b580a5be
Merge pull request #262 from rieck/timestamp-fix
Fix for incorrect conversion from `watch_date_time` to Unix time.
2023-11-19 00:10:19 -05:00
Hugo Chargois
ebfeb1f21a Turn on the funky segment of pos 0 for char '@' 2023-09-09 02:22:08 +02:00
Konrad Rieck
0f9bb0bd37 Fixed incorrect conversion from UNIX timestamp to watch_date_time. 2023-08-11 22:26:34 +02:00
Ronny Lam
eca75cfb23 Added option to use_iso_8601_weeknumber 2023-02-10 15:18:39 -06:00
TheOnePerson
47812f462d
Play sound sequences asynchronously (#122)
* 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

* buzzer sequences/watch_rtc: optimize calling tick callbacks in RTC_Handler

* buzzer sequences/watch_rtc: fix error in calling callback functions

* buzzer sequences: revert changes to watch_rtc logic. Instead, use TC3 as the source for timing the sound sequences.

* buzzer sequences: fix frequency of callback

* buzzer sequences: integrate changes from PR #162 (set both CCBUF and PERFBUF for correct buzzer tone)
2023-01-11 15:26:33 -05:00
Mikhail Svarichevsky
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
Slim
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
joeycastillo
b399f4ca45 only include watch_main_loop.h in simulator builds 2022-10-11 22:06:02 -05:00
Joey Castillo
7fc4395298 add watch_reset_to_bootloader function (resolves #81) 2022-08-14 15:23:32 -05:00
Joey Castillo
22b1ac0283 simulator: add USB serial input field 2022-05-09 13:00:15 -04:00
Joey Castillo
661e2b6a73 add ability to read from USB serial 2022-05-08 20:19:20 -04:00
Joey Castillo
d4ebe64af0 add support for a small filesystem on the watch 2022-05-06 17:12:14 -04:00
Joey Castillo
6bdaff5d2a remove all deprecated functions 2022-04-10 15:56:45 -04:00
Joey Castillo
d502a030e1 charset tweaks: no need to run deeper checks 2022-04-10 14:38:15 -04:00
Joey Castillo
5f0ebd8c66 character map tweaks: add some ligatures and symbols 2022-04-06 15:51:06 -04:00
Wesley Ellis
1ec1f2e420
Add tomato face: a pomodoro style timer (#61) 2022-04-06 14:33:24 -04:00
joeycastillo
ccdf08da87
Movement: Astronomy and Orrery watch faces (#55) 2022-03-04 14:52:49 -06:00
David Keck
b8e191b615
Updated function brief 2022-02-22 21:37:16 -06:00
Joey Castillo
15cbe09410 move pins.h include to watch.h 2022-02-17 11:59:19 -05:00
Joey Castillo
203850104d remove obsolete low battery check 2022-02-13 14:01:21 -05:00
Joey Castillo
df3db08021 sleep / deepsleep: update low power numbers 2022-02-13 11:25:28 -05:00
Joey Castillo
aae9160422 utility: add function for formatting a duration in days + HMS 2022-02-06 15:00:58 -05:00
Joey Castillo
a3085cb136 Merge branch 'main' of github.com:joeycastillo/Sensor-Watch 2022-02-01 00:24:20 -05:00
Joey Castillo
518a9aa919 add function for converting to 12 hour time 2022-01-31 21:17:10 -08:00
Alexsander Akers
a4cb3c8594 Adjust function semantics by "flipping" bit order 2022-01-27 12:06:06 -05:00
Alexsander Akers
a559d089f1 Add new function to disable certain RTC periodic callbacks 2022-01-27 12:06:06 -05:00
Alexsander Akers
a0f8e9c8bc Implement buzzer methods with AudioContext API 2022-01-27 11:12:01 -05:00