Commit graph

70 commits

Author SHA1 Message Date
David Volovskiy 09576807eb Made the days_in_month its own function 2024-08-10 07:40:52 -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
Christian Chapman 462f24b313
Aperture priority light meter face (#230)
* initial commit, added opt3001 light meter test app

* tested working light meter board, i2c communication still has issues

* fixed i2c; rudimentary lightmeter works!

* added aperture priority ui

* added aperture priority ui

* added README

* adjusted cal

* fixed bugs (HI shutter speed, lux mode toggle)

* made it possible to advance to the next face

* initialized lux variable

* lowered tolerance for HI and LO

* Changed EV display from always showing EV100 to showing EV[iso setting]

* dont display old ev when ISO changes

* changed mode and light behavior

* updated readme

* fixed indentation

* made lightmeter display logic more consistent

* made lightmeter display logic more consistent

* reverted rules.mk (for merge into upstream)

* reverted rules.mk (for merge into upstream)

* removed OPT3001 PCB model

* made lux mode default, corrected timeout behavior

---------

Co-authored-by: Christian Chapman <user@debian>
2023-04-16 10:05:55 -04: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 cd40573535 Merge branch 'main' of github.com:joeycastillo/Sensor-Watch into motion-express 2022-05-02 18:39:45 -05:00
Joey Castillo 6e9e264c65 rewrite lis2dh logger for lis2dw 2022-04-10 18:13:22 -04:00
Joey Castillo d91274e782 remove old lis2dh driver 2022-04-10 18:10:49 -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 54f1873785 documentation and such 2022-02-19 14:22:23 -05:00
Joey Castillo 09f79f782f lis2dw: reasonable defaults when initializing 2022-02-19 14:05:38 -05:00
Joey Castillo ee60d97d25 fixup 2022-02-19 13:42:55 -05:00
Joey Castillo 9f0f72eb20 lis2dw: add support for temperature sensing 2022-02-19 13:12:04 -05:00
Joey Castillo 3392f73d36 lis2dw: add support for high performance mode 2022-02-19 13:11:47 -05:00
Joey Castillo b1bec8f187 lis2dw: add support for bandwidth filtering 2022-02-19 12:53:42 -05:00
Joey Castillo efde4190f1 movement: WIP app for capturing accelerometer data 2022-02-18 16:34:52 -05:00
Joey Castillo 8e1c7f0631 lis2dw: bugfix, only read once 2022-02-18 09:23:58 -05:00
Joey Castillo df2cc7e94f WIP accelerometer logging to flash 2022-02-18 00:05:57 -05:00
Joey Castillo 0c59c972e7 lis2dw: add FIFO support 2022-02-17 16:36:21 -05:00
Joey Castillo 4f29cf24f3 movement: move thermistor to 'sensor' watch faces 2022-02-17 14:47:47 -05: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 5dac14974c osc32kctrl: implement CONF_SLCDCTRL_SRC setting 2022-02-11 12:22:11 -05:00