Commit Graph

60 Commits

Author SHA1 Message Date
81dc49adf4 Fix simulator LCD handling 2025-03-09 08:29:05 +01:00
83c7f18dd0 use char instead of uint8_t to match gossamer API 2024-10-27 14:27:55 -04:00
94d8a581d9 Made the simulator properly set itself with the UTC time on startup (#7) 2024-10-27 14:08:05 -04:00
2ea18e0f73 fix broken simulator build 2024-10-14 12:51:17 -04:00
cdcb612432 refactor watch UART for gossamer 2024-10-08 22:38:11 -04:00
ab861d81d1 fix time zones in simulator 2024-10-07 08:36:23 -04:00
a988733bb6 bump gossamer commit 2024-10-07 08:00:32 -04:00
63c34005ee initial pass at simulator support 2024-10-06 17:14:46 -04:00
0a9d71e2d4 use consistent naming style for typedefs 2024-10-05 10:36:58 -04:00
e5b458fe3b blink colon when clock is in sleep mode (custom LCD only) 2024-09-29 15:49:51 -04:00
4b8b092594 tick_animation is now sleep_animation (which just displays an indicator on new LCD) 2024-09-29 15:24:43 -04:00
e8cedeac6c rename enum, rearrange watch_tcc.h 2024-09-22 14:26:49 -04:00
2e738db673 add buzzer volume control 2024-09-22 13:34:46 -04:00
0585a1d0d8 consolidate buzzer and LED into TCC file 2024-09-18 14:53:46 -04:00
29f020e207 port buzzer and LED functions to gossamer framework 2024-09-18 14:47:53 -04:00
02f7469400 remove ASF code, config 2024-09-18 13:56:49 -04:00
a9d503b807 Revert PR #470 - implement automatic DST toggling
The DST code has not yet been fully tested, the upcoming movement
refactor is upon us and it will integrate with the micro timezone
library anyway. Revert it so that next can be merged into main.

This reverts commit ac5bf8cfce, reversing
changes made to 5a8a49a8c7.
2024-09-17 17:28:32 -03:00
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
99586f8442 Merge PR #394 - keep LED lit while buttons held
Keeps the LED turned on while the user is interacting with the watch.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/394
2024-09-07 20:31:46 -03:00
e50390b673 DST roll is now a global variable in watch_rtc 2024-08-03 10:07:57 -04:00
ccf99a9727 add temp input to simulator 2024-08-02 18:20:44 -05:00
5f1a651732 Keep light on if interacting
This makes it possible to do a bunch of things without
having to keep touching the light button.

I don't really see any downside with this. If you want
the light to go off, just stop touching buttons.
2024-07-21 08:25:54 +10:00
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
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
83a0e4e992 annotate TRNG erratum, address review comment 2024-01-22 00:39:18 +00:00
50dccd07d3 buzzer: fix simulator build, refactor sequence_length. 2024-01-09 16:22:21 -05:00
93d7f38d67 fix simulator build by declaring Trng type as a void pointer 2023-12-17 22:40:04 +00:00
8206f37fcf fix undefined behavior found by clang's sanitize 2023-12-07 02:24:26 +00:00
b82d728937 Simulator: Add keyboard arrows as buttons shortcuts 2023-11-19 19:50:39 +01:00
bd9d792230 Simulator: Allow sending debug command with Enter 2023-11-19 19:50:39 +01:00
2534dc7a65 Simulator: Allow typing a, l & m in console input
These keys are the shortcuts to "press" the alarm, light and mode
buttons. However, they prevent these letters from being input in the
debug console to send filesystem commands. Strangely, there was already
some code to allow typing these letters in the console output, but not
in the input.
2023-11-19 19:45:51 +01:00
c4a5cb463e Merge pull request #276 from hchargois/simulator-volume-slider
Simulator volume slider
2023-11-18 23:17:56 -05:00
5b212a4423 Fix simulator and hardware divergence in callback handling (#252)
When using the simulator, I encountered cases where the light would become stuck on, and the watch
would be unresponsive. In particular, this would occur when pressing the light button on the
sunrise sunset watch face.

I appears that this is caused by a divergence in out the callback mask is interpreted by the
hardware interface, and in the simulator in the following function.

void watch_rtc_disable_matching_periodic_callbacks(uint8_t mask)

In particular, a mask of 0xFE is intended to disable all except the 128hz callback at index 0,
but instead disables all except the 1hz callback at index 7 in the simulator.
2023-11-18 23:10:45 -05:00
2e9ea8c36f Improve simulator page design 2023-11-19 01:24:57 +01:00
baadb0b43f Save the selected skin of the simulator in local storage 2023-09-16 02:39:39 +02:00
2e364f4ef9 Add a volume slider in the simulator 2023-09-16 02:39:39 +02:00
739d719e7c simulator: add tiny element in the lower left corner for the first display position. 2023-02-25 15:24:32 +01:00
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
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
4bbb34992a Adds watch skin toggle to for model A158WEA-9 should one be feeling classy 2022-11-24 18:37:19 -04:00
3377b489c7 remove errant console.log 2022-11-22 14:39:46 +01:00
0b3a1ed244 WIP: Add support for bicolor led in the simulator
I noticed that the bicolor led isn't supported in the simulator. Here is a quick mockup of how I would add support for it.

I added an SVG filter to the #light rectangle in the SVG which lets us multiply the colours by a matrix in code. I then insert values so that the original green colour gets mixed into the combination of red and green requested by `watch_set_led_color`

# Testing
So far I've only tested this with the standard firmware build but it seems to work.

# Possible issues
I wasn't 100% sure what to do when red + green > 255, current behaviour is that it gets clamped to 255 in the simulator.
2022-11-22 14:30:24 +01:00
f79741a85f add delay_ms function for simulator 2022-10-11 22:11:58 -05:00
7fc4395298 add watch_reset_to_bootloader function (resolves #81) 2022-08-14 15:23:32 -05:00
e71a70d231 add file browser to movement, remove old app 2022-05-09 13:05:37 -04:00
22b1ac0283 simulator: add USB serial input field 2022-05-09 13:00:15 -04:00
0c87114ee1 simulator: fix _read function signature 2022-05-09 10:55:28 -04:00
d4ebe64af0 add support for a small filesystem on the watch 2022-05-06 17:12:14 -04:00
6bdaff5d2a remove all deprecated functions 2022-04-10 15:56:45 -04:00
51e357d822 movement: final list of watch faces for stock firmware 2022-04-02 10:07:18 -04:00