summaryrefslogtreecommitdiffstats
path: root/watch-library
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'usb-improvements' into advancedMatheus Afonso Martins Moreira2024-03-086-69/+293
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
| * USB ImprovementsEdward Shin2024-01-076-70/+294
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* | Merge branch 'silicon-errata' into advancedMatheus Afonso Martins Moreira2024-03-088-5/+60
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | annotate SLEEPCFG-register detailAlex Maestas2024-01-221-1/+7
| | |
| * | annotate voltage regulation erratumAlex Maestas2024-01-221-1/+3
| | |
| * | annotate SysTick erratumAlex Maestas2024-01-221-1/+2
| | |
| * | annotate TRNG erratum, address review commentAlex Maestas2024-01-223-14/+10
| | |
| * | make any unknown interrupts/faults reset the microcontrollerAlex Maestas2023-12-181-2/+1
| | |
| * | make the HAL sleep function obey the chip documentationAlex Maestas2023-12-183-0/+21
| | | | | | | | | | | | the sleep mode doesn't get set immediately, and needs to be waited upon.
| * | address SysTick erratum, which can hard-fault the chipAlex Maestas2023-12-181-1/+8
| | |
| * | fix simulator build by declaring Trng type as a void pointerAlex Maestas2023-12-172-0/+6
| | |
| * | work around silicon erratum in SUPC/VREGAlex Maestas2023-12-171-0/+4
| | |
| * | work around silicon erratum in TRNGAlex Maestas2023-12-172-2/+15
| |/
* | buzzer: fix simulator build, refactor sequence_length.Wesley Aptekar-Cassels2024-01-094-12/+45
| |
* | Enable custom signal tones in LE mode.Wesley Aptekar-Cassels2024-01-092-0/+11
|/ | | | | | | | | | 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.
* fix undefined behavior found by clang's sanitizeAlex Maestas2023-12-072-4/+4
|
* Simulator: Add keyboard arrows as buttons shortcutsHugo Chargois2023-11-191-18/+40
|
* Simulator: Allow sending debug command with EnterHugo Chargois2023-11-191-3/+3
|
* Simulator: Allow typing a, l & m in console inputHugo Chargois2023-11-191-3/+7
| | | | | | | | 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.
* Merge pull request #262 from rieck/timestamp-fixWesley Aptekar-Cassels2023-11-191-5/+73
|\ | | | | Fix for incorrect conversion from `watch_date_time` to Unix time.
| * Fixed incorrect conversion from UNIX timestamp to watch_date_time.Konrad Rieck2023-08-111-5/+73
| |
* | Merge pull request #276 from hchargois/simulator-volume-sliderWesley Aptekar-Cassels2023-11-182-27/+85
|\ \ | | | | | | Simulator volume slider
| * | Improve simulator page designHugo Chargois2023-11-191-26/+40
| | |
| * | Save the selected skin of the simulator in local storageHugo Chargois2023-09-161-14/+18
| | |
| * | Add a volume slider in the simulatorHugo Chargois2023-09-162-5/+45
| | |
* | | Fix simulator and hardware divergence in callback handling (#252)Victor Graf2023-11-181-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Turn on the funky segment of pos 0 for char '@'Hugo Chargois2023-09-091-1/+1
|/ /
* / default year to 2023joeycastillo2023-08-271-2/+2
|/
* Aperture priority light meter face (#230)Christian Chapman2023-04-162-0/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* simulator: add tiny element in the lower left corner for the first display ↵TheOnePerson2023-02-251-0/+1
| | | | position.
* Added option to use_iso_8601_weeknumberRonny Lam2023-02-102-1/+10
|
* Revert "never disable buzzer output"joeycastillo2023-01-171-3/+1
| | | | This reverts commit 851d047c818dacc30c86f4d87f33247dcfb0095c.
* Play sound sequences asynchronously (#122)TheOnePerson2023-01-113-1/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | * 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)
* Precision watch update (#152)Mikhail Svarichevsky2023-01-105-3/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* fixes 161: sets both CCBUF and PERFBUF for correct buzzer tone (#162)gugray2023-01-101-2/+2
|
* never disable buzzer outputjoeycastillo2023-01-031-1/+3
|
* Merge pull request #149 from slim/mainjoeycastillo2022-12-142-10/+84
|\ | | | | Week number watch face
| * Weeknumber watch faceSlim2022-12-022-10/+84
| | | | | | | | Same as simple clock, but has iso 8601 week number instead of seconds counter
* | Adds watch skin toggle to for model A158WEA-9 should one be feeling classyKyle Boyle2022-11-241-10/+584
|/
* remove errant console.logTom Hodson2022-11-221-1/+0
|
* WIP: Add support for bicolor led in the simulatorTom Hodson2022-11-222-2/+19
| | | | | | | | | | | | 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.
* add delay_ms function for simulatorjoeycastillo2022-10-112-0/+6
|
* only include watch_main_loop.h in simulator buildsjoeycastillo2022-10-111-0/+4
|
* add watch_reset_to_bootloader function (resolves #81)Joey Castillo2022-08-143-0/+14
|
* Merge branch 'main' of github.com:joeycastillo/Sensor-Watch into lfsJoey Castillo2022-08-021-1/+1
|\
| * reduce flicker of LED by defaultJoey Castillo2022-07-041-1/+1
| |
* | fix spaces / tabsJoey Castillo2022-05-101-12/+12
| |
* | add file browser to movement, remove old appJoey Castillo2022-05-091-2/+0
| |
* | simulator: add USB serial input fieldJoey Castillo2022-05-094-0/+21
| |
* | usb serial: clear whole length of bufferJoey Castillo2022-05-091-2/+1
| |