Compare commits

..

685 Commits

Author SHA1 Message Date
hueso
49181dadde Moonrise face
Some checks failed
Build / build (push) Has been cancelled
Build / build-simulator (push) Has been cancelled
2025-05-16 19:02:44 -03:00
hueso
8abf6f4f5b Fixed buffer overflows in sunrise_sunset_face
Some checks failed
Build / build (push) Has been cancelled
Build / build-simulator (push) Has been cancelled
GitHub Pages / gh-pages (push) Has been cancelled
2025-05-15 11:59:21 -03:00
Joey Castillo
8c39d42824 Merge branch 'main' of github.com:joeycastillo/Sensor-Watch 2025-05-06 23:57:45 -04:00
Joey Castillo
56f2c93783 sensor watch pro test procedure 2025-05-06 23:56:19 -04:00
Wesley Ellis
14e64caac9
Merge pull request #512 from tahnok/schematic-readme
Add schematic info to README
2025-04-03 08:58:30 -04:00
Wesley Ellis
cc6a0c363e Add links to schematics and gerbers for different models 2025-04-01 09:55:41 -04:00
Wesley Ellis
845caa30fb Add link to schematics and gerbers to README 2025-04-01 09:55:41 -04:00
Joey Castillo
0ef5e5700e Sensor Watch Pro 2025-03-08 17:42:54 -05:00
Jeremy O'Brien
e8f31beb70
Smallchess face (#272)
* smallchess face

* use correct game-state modifying board move function

* make show last work after undo

* use SCL_Game->ply instead of board[ply_byte]

* beep when cpu is done computing a move

* increase engine strength to ply 3

* match ply type and use the local variable where available

* fix warnings

* add doc to smallchess face

* smallchess: fix compile warnings

* smallchess: move smallchesslib.h to movement/lib
2024-09-17 22:36:34 -04:00
joeycastillo
c2103d9eaa silence warnings in butterfly_game_face 2024-09-17 22:27:43 -04:00
joeycastillo
88338dc0ba silence warnings in wareki_face 2024-09-17 22:19:22 -04:00
Hugo Chargois
e8ba597131
Add Butterfly game face (#338) 2024-09-17 22:04:00 -04:00
kbc-yam
52c3d5b796
add wareki_face for japanese user (#351) 2024-09-17 22:00:44 -04:00
MarkBlyth
7af5626147
Add min/max temperature watch face (#335) 2024-09-17 21:54:33 -04:00
Austoria
b2d313e0e7
Metronome Complication (#303)
* Metronome Complication

A simple metronome complication that allows user to set BPM, toggle sound, and set counts per measure.

* silence warnings in metronome_face

* avoid mode button in metronome settings, other tweaks

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2024-09-17 21:46:20 -04:00
jokomo24
0f5defe789
Face for tracking the menstrual cycle (#250)
Authored-by: jokomo <jokomo@parallels-ubuntu18.04>
2024-09-17 20:55:50 -04:00
joeycastillo
3634460a02 silence warning in beeps_face 2024-09-17 20:46:00 -04:00
Jose Castillo
fc2f9c5130
add accelerometer interrupt counter (#452) 2024-09-17 20:38:09 -04:00
Matheus Afonso Martins Moreira
bf4d461d8c Merge branch 'next' - new faces before the freeze
Merge the next branch containing numerous new sensor watch faces
as well as some new features. Not all of them made it in the end
and we even had to revert improvements merged in last next due to
issues that weren't found during testing. Still, I am very proud
to be merging in and closing over 20 pull requests.

I believe the project is in the best possible shape it can be
before the movement 2.0 refactor.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: David Volovskiy <devolov@gmail.com>
Tested-on-hardware-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/469
2024-09-17 17:36:40 -03:00
Matheus Afonso Martins Moreira
fe9a0a693d Revert PR #268 - add daylight savings time toggle
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 5a8a49a8c77d6d5ba0f46f0e5b51dec2daba46db, reversing
changes made to bfadb81e82dfe47c4445ce7978d9dbc3b4706808.
2024-09-17 17:28:41 -03:00
Matheus Afonso Martins Moreira
30267dfc0c Revert PR #470 - fixes world_clock2 face
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 3c86a42aa83356735be2bd84b7027b156e8d3a2c, reversing
changes made to be969c4deb144280b59d0293cc45dc3443b096cf.
2024-09-17 17:28:41 -03:00
Matheus Afonso Martins Moreira
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 ac5bf8cfce67cdb5662aeea618c2eb9511f0d190, reversing
changes made to 5a8a49a8c77d6d5ba0f46f0e5b51dec2daba46db.
2024-09-17 17:28:32 -03:00
Matheus Afonso Martins Moreira
683032219e Revert PR #471 - add DST to sunrise/sunset
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 0cc28b9811e76de3dc2cc2919d5309cfa48edfeb, reversing
changes made to 337864eb543c9b5cd83667ab0eafb476f63af54c.
2024-09-17 17:02:16 -03:00
Matheus Afonso Martins Moreira
ea5efb4d82 faces/clock: clear segments if not in 024h mode
There was an issue where the clock's display would remain in 024h mode
even after switching back to 12h/24h mode because it only took into
account the leading zero bit, whose value is meaningless unless the
24h mode bit is also set.

The issue is fixed by taking both bits into account.

Closes #476.

Reported-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/476
2024-09-16 15:54:09 -03:00
Matheus Afonso Martins Moreira
f2479bee4f faces/simple_clock: clear segments if not in 024h
There was an issue where the simple clock's display would remain in
024h mode even after switching back to 12h/24h mode because it only
took into account the leading zero bit, whose value is meaningless
unless the 24h mode bit is also set.

The issue is fixed by taking both bits into account.

Closes #476.

Reported-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/476
2024-09-16 15:53:48 -03:00
Matheus Afonso Martins Moreira
831aadddea faces/alarm: use snprintf formats for 24h and 024h
This ensures that the display is always in a consistent state.

Reported-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/476
2024-09-16 15:19:08 -03:00
Matheus Afonso Martins Moreira
5926e81d25 faces/alarm: fix 24h indication in 024h mode
The watch was not indicating to the user that it was in 24h mode
when set to the leading zero 024h time format. This could lead
to ambiguity and confusion, so make sure to indicate 24h mode.

Closes #476.

Reported-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/476
2024-09-16 14:42:43 -03:00
Matheus Afonso Martins Moreira
035fff52da Revert merge of PR #437 - debouncing logic
This reverts commit a715265af61ecab41eaefe0c5a7e7c806d0db41b, reversing
changes made to 9c093f954084e61614cba1c259e4581a87420813.

Insidious issues were found in the course of long term testing
by the community, and further reviews of the code were not enough
to pinpoint the issue and fix it. So for now the appropriate action
is to revert these changes while development continues, and possibly
merge them back in once they have been stabilized.

Tested-on-hardware-by: David Volovskiy <devolov@gmail.com>
Tested-on-hardware-by: CarpeNoctem <cryptomax@pm.me>
Tested-on-hardware-by: Krzysztof Gałka <@kshysztof@Discord>
2024-09-15 21:10:10 -03:00
Matheus Afonso Martins Moreira
c9cbb82163 Revert merge of PR #437 - debouncing logic
This reverts commit a715265af61ecab41eaefe0c5a7e7c806d0db41b, reversing
changes made to 9c093f954084e61614cba1c259e4581a87420813.

Insidious issues were found in the course of long term testing
by the community, and further reviews of the code were not enough
to pinpoint the issue and fix it. So for now the appropriate action
is to revert these changes while development continues, and possibly
merge them back in once they have been stabilized.

Tested-on-hardware-by: David Volovskiy <devolov@gmail.com>
Tested-on-hardware-by: CarpeNoctem <cryptomax@pm.me>
Tested-on-hardware-by: Krzysztof Gałka <@kshysztof@Discord>
2024-09-15 21:00:22 -03:00
Matheus Afonso Martins Moreira
3c86a42aa8 Merge PR #470 - fixes world_clock2 face
The new DST changes caused problems in one specific face - world_clock2.
An incorrect variable was used due to a confusing name.
It has been revised to fix the problems that were caused.

Closes #475.

Reported-by: CarpeNoctem <cryptomax@pm.me>
Fixed-by: David Volovskiy <devolov@gmail.com>
Tested-by: CarpeNoctem <cryptomax@pm.me>
Tested-on-hardware-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/470
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/475
2024-09-15 20:45:33 -03:00
David Volovskiy
1462d18376 Fixed the tz that the world clock references 2024-09-15 19:13:38 -04:00
Matheus Afonso Martins Moreira
be969c4deb Revert PR #387 - fixes LE state restoration
This commit caused state restored from backup registers
to be overwritten. It is thereby reverted until a better
solution is found or movement is refactored.

This reverts commit 524098b9258232964d7756d4d44f16b006d340bf.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
References: https://github.com/joeycastillo/Sensor-Watch/pull/474
2024-09-10 12:10:48 -03:00
Matheus Afonso Martins Moreira
673f90b724 make: add beeps face to build
PR #386 did not add the C file to the makefile,
causing the build to fail at the link stage
due to the missing object file and the symbols
that were supposed to be provided by it.

Adding the file to the build fixes #472.

Reported-by: CarpeNoctem <cryptomax@pm.me>
Fixed-by: CarpeNoctem <cryptomax@pm.me>
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/472
2024-09-10 00:05:54 -03:00
Matheus Afonso Martins Moreira
44b543421d Merge PR #430 - improve tally face
Adds the ability to tally negative counts, tally quickly by holding down
the buttons as well as the ability to enable and cycle through multiple
preset initial values for numerous contexts such as card games.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/430
2024-09-08 21:20:25 -03:00
Matheus Afonso Martins Moreira
0cc28b9811 Merge PR #471 - add DST to sunrise/sunset presets
Implements automatic DST data to the sunrise/sunset presets,
making the whole system more automatic and therefore more reliable.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/471
2024-09-08 21:12:24 -03:00
David Volovskiy
9d1410780c sunrise sunset fix during DST 2024-09-08 18:18:00 -04:00
David Volovskiy
0d16329574 Sunrise sunset face now warns about using DST 2024-09-08 18:13:17 -04:00
David Volovskiy
f6f427ca7d Daylight offsets now references the timezone of the destination; but it does cause an issue due to DST 2024-09-08 18:13:17 -04:00
David Volovskiy
22c25f5c23 Added commented-out defines for MTG and Yugioh 2024-09-08 18:09:38 -04:00
David Volovskiy
a539bd7da7 Don't try to cycle through presets if the preset count is one 2024-09-08 18:03:16 -04:00
Matheus Afonso Martins Moreira
7a4424b2d4 faces/tally: convert size into compile time const
Creates a macro that returns the size of the presets array,
converting it into a compile time constant value that occupies
no memory and that compilers can constant fold into other expressions
potentially leading to dead code elimination.
2024-09-08 18:53:42 -03:00
Matheus Afonso Martins Moreira
e4e0b611f3 faces/tally: avoid resetting counters
Don't reset the counters unless there are multiple presets.
Move back to the first face directly if there are no presets
to cycle through.
2024-09-08 18:49:09 -03:00
Matheus Afonso Martins Moreira
6b7ea8bbaa faces/tally: add yugioh life point presets
Add common Yu-Gi-Oh card game life point preset values
for the tally face, opt in by defining a preprocessor macro.
2024-09-08 18:39:55 -03:00
Matheus Afonso Martins Moreira
531bcfd285 faces/tally: make mtg presets optin via macros
Use preprocessor macros to conditionally compile in Magic the Gathering
initial value presets for the tally mark, thereby making them opt in.
2024-09-08 18:38:53 -03:00
David Volovskiy
137906e14a Added more presets to the tally face 2024-09-08 17:23:53 -04:00
Matheus Afonso Martins Moreira
337864eb54 Merge PR #454 - fix activation event
Fix issue where the calculator face's user interface display
was delayed about a quarter second due to the activation event
being a no-op.

Tested-by: David Volovskiy <devolov@gmail.com>
Reported-by: David Volovskiy <devolov@gmail.com>
Fixed-by: David Volovskiy <devolov@gmail.com>
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/454
2024-09-08 15:33:35 -03:00
Matheus Afonso Martins Moreira
0f6f79a85a Merge PR #468 - fix github ci
Bump GitHub's checkout action to v4, fixing the continuous integration.

GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/468
2024-09-08 15:22:50 -03:00
Matheus Afonso Martins Moreira
c2723ebc8e make: fix missing separator error 2024-09-08 14:22:26 -03:00
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
mcguirepr89
608199268e removed break; from EVENT_ACTIVATE -- thanks @voloved 2024-09-08 11:49:01 -04:00
David Volovskiy
c02ec307ff Tally face sound now uses the preference's beep so decrementing fast can happen immedietly 2024-09-08 11:44:01 -04:00
David Volovskiy
002f5bc242 Updated the tally couter face to allow for presets, negative numbers, fast scrolling, and toggling sound 2024-09-08 11:39:48 -04:00
David Volovskiy
5ae88e438d Minot cleanup 2024-09-08 10:50:09 -04:00
Matheus Afonso Martins Moreira
5a8a49a8c7 Merge PR #268 - add daylight savings time toggle
Adds a toggle in the preferences face that allows the user
to enable or disable the daylight savings time.

Should help produce the correct results with the sunrise/sunset presets.

A proper solution would be to integrate the tzinfo database
but it's too big for the watch at the time of this writing.
Can't be done unless it can be shrunk down into a subset
the user would be interested. Even then it's a stopgap
since the database is likely to keep growing over time.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/268
2024-09-08 11:09:10 -03:00
R. Alex Barbieri
52f9500666 add blinking to DST toggle in settings page 2024-09-08 11:08:14 -03:00
Matheus Afonso Martins Moreira
bfadb81e82 Merge PR #401 - add fuzzy time watch face
Displays the time in a "close enough" manner:
periods of five minutes, relative to the nearest hour.

For example:

 - 3:24 -> 25 past 3
 - 3:50 -> 10 to 4
 - 3:59 -> 4 o'clock
 - 1:35 -> 35 past 1
 - 1:50 -> 10 to 2
 - 2:00 -> 2 o'clock

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Ruben Nic <RubenSandwich@users.noreply.github.com>
Tested-on-hardware-by: KlingonJane <148595159+KlingonJane@users.noreply.github.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/401
2024-09-07 20:57:24 -03:00
Matheus Afonso Martins Moreira
6d1d4f0594 Merge PR #386 - add beep demo face
Allows the user manually trigger all 87 buzzer notes.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Wesley Black <hello@wesleyblack.ca>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/386
2024-09-07 20:53:08 -03:00
Matheus Afonso Martins Moreira
1f6153809b Merge PR #413 - add thermometer face
Measures the temperature until it stabilizes for half a minute.

This watch face is not meant to diagnose, treat, cure or prevent
any disease.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/413
2024-09-07 20:49:19 -03:00
Matheus Afonso Martins Moreira
941a6ec523 Merge PR #454 - add simple calculator watch face
Adds a simple calculator watch face to the sensor watch
capable of addition, subtraction, multiplication, division
and exponentiation.

Reviewed-by: Joey Castillo <joeycastillo@utexas.edu>
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-by: Joey Castillo <joeycastillo@utexas.edu>
Tested-on-hardware-by: mcguirepr89 <mcguirepr89@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/454
2024-09-07 20:38:08 -03:00
Matheus Afonso Martins Moreira
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
Matheus Afonso Martins Moreira
b9dbc4ed21 Merge PR #398 - add simon game watch face
Adds a watch face that allows playing the classic Simon game
with the watch's buzzer and RGB LED.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/398
2024-09-07 20:28:45 -03:00
Matheus Afonso Martins Moreira
543788b622 Merge PR #287 - add minimal clock face
Add a minimalist clock face that shows only hours and minutes.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/287
2024-09-07 20:14:26 -03:00
Matheus Afonso Martins Moreira
7de53f9fa0 Merge PR #269 - add french revolutionary time face
Adds a french revolutionary time watch face which displays the time
divided into ten hours of one hundred minutes each which are in turn
divided into one hundred seconds each.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Reviewed-by: Wesley Aptekar-Cassels <me@wesleyac.com>
Reviewed-by: Alex Maestas <git@se30.xyz>
Tested-on-hardware-by: CarpeNoctem <cryptomax@pm.me>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/269
2024-09-07 20:00:16 -03:00
Matheus Afonso Martins Moreira
ce249abde6 Merge PR #259 - add higher or lower game face
Adds a watch face that implements a game where the player
must guess if the next card will be higher or lower than
the last cards that have been revealed.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Chris <chris.ellis.git.dev@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/259
2024-09-07 19:59:52 -03:00
Matheus Afonso Martins Moreira
c805cdc7df Merge PR #266 - add deadline tracking watch face
Adds a timing watch face that focuses on
keeping track of specific deadlines.

Dates and times can be set on the watch face
and it will display the time remaining at ever
decreasing levels of granularity for the sake
of brevity and ease of understanding.

For example, it will display years and months if over a year is left,
months and days if less than one year is left,
days and hours if less than one month is left
and the full remaining time if less than a day is left.

It also notifies the user when a deadline has passed recently.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Konrad Rieck <konrad@mlsec.org>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/266
2024-09-07 19:59:31 -03:00
Chris
9e1e692511 Hi-lo: Additional code tweaks 2024-09-07 19:59:04 -03:00
Konrad Rieck
50cff54833 move to deadline face on alarm 2024-09-07 19:59:04 -03:00
Chris
97ad12d939 Merge pull request #1 from voloved/higher-lower-game
Hi-lo: Made cards go through a deck format.
2024-09-07 19:59:04 -03:00
Konrad Rieck
e2ec468754 Alarm handled using background task.
The alarm for deadlines is now handled via a background task. Instead of a scheduled task that prevents sleep mode, the face checks in the background every minute whether an deadline is due. If this is the case, the face wakes up from sleep mode and starts a scheduled task for the remaining seconds.
2024-09-07 19:59:04 -03:00
Chris
6db0a62bbf Hi-lo: Use alternate card faces 2024-09-07 19:59:04 -03:00
David Volovskiy
93b9ca6341 Made cards go through a deck format. 2024-09-07 19:59:04 -03:00
Konrad Rieck
27ab799e85 Fixed bugs and improved watchface
- A background task is only scheduled if the alarm option is activated. If the option is enabled, an alarm sounds when the next deadline is reached. If the option is disabled, no alarm sounds and the watch can enter low energy sleep.

- Fixed tick frequency error. During running mode, the clock ticks at 1Hz. This is set in the init function `_running_init` and thus ensures that we do not run too fast when returning from the setting mode.

- Minor corrections to comments and indentations.
2024-09-07 19:59:04 -03:00
Konrad Rieck
c89316b3ec removed higher frequency in first loop run. 2024-09-07 19:59:04 -03:00
Konrad Rieck
fab8c94428 moved tick_freq to deadline_state_t structure. 2024-09-07 19:59:04 -03:00
Konrad Rieck
c102a10165 beep on button 2024-09-07 19:59:04 -03:00
Konrad Rieck
4cb00ebb4e support for alarm 2024-09-07 19:59:04 -03:00
Konrad Rieck
fea60e615c display closest deadline on activation 2024-09-07 19:59:04 -03:00
CarpeNoctem
07a2a49e72 french_revolutionary face: fix compiler warning and uninitialized date_time variable 2024-09-07 19:47:17 -03:00
Matheus Afonso Martins Moreira
852c3aad27 Merge PR #423 - add periodic table face
Adds a watch face full of useful information
about every known chemical element.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: PrimmR <primmr@icloud.com>
Tested-on-hardware-by: David Volovskiy <devolov@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/423
2024-09-07 18:47:20 -03:00
Matheus Afonso Martins Moreira
02e66309d4 Merge PR #444 - implement countdown autorepeater
Adds the ability to automatically restart the timer
in the countdown watch face. This allows users to
easily time repeating events.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/444
2024-09-07 16:52:29 -03:00
Joseph Bryant
ddaf3a8324 Add auto-repeat feature to Countdown watch face 2024-09-07 16:49:45 -03:00
Matheus Afonso Martins Moreira
80dc8a247f Merge PR #465 - add metal gear solid codec chime
Snake? Snake?! SNAAAAAAAAAAAAAAAAAAAAAAKE!

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/465
2024-09-07 16:43:00 -03:00
Jeremy O'Brien
a79bb46d39 add metal gear solid codec tune 2024-09-07 16:41:56 -03:00
Matheus Afonso Martins Moreira
3462d51071 Merge PR #467 - add harry potter chimes
Add Harry Potter themed hourly signal chimes, short and long variants.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/467
2024-09-07 16:26:10 -03:00
mcguirepr89
48fd4ee903 slightly shorter first note 2024-09-06 10:19:17 -04:00
atax1a
b69cd117f9
Merge pull request #468 from theAlexes/theAlexes/ci-fix
bump to the newer upload-artifact github action
2024-09-04 20:22:26 +00:00
Alex Maestas
fd526ed401 bump to the newer upload-artifact github action 2024-09-04 20:10:37 +00:00
mcguirepr89
b37be89bae adds a short and long harry potter signal 2024-09-04 11:46:33 -04:00
Matheus Afonso Martins Moreira
014ef32576 Merge PR #293 - add instant LED duration
Adds an instant LED duration preference that only keeps the LED lit
while the LIGHT button remains held down.

Matches the behavior of the original watch.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Wesley Aptekar-Cassels <me@wesleyac.com>
Tested-on-hardware-by: 814d3 (GitHub)
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/293
2024-09-03 19:06:40 -03:00
Matheus Afonso Martins Moreira
c0a72acb7c Merge PR #419 - add endless runner watch face
Adds an endless runner game face to the Sensor Watch.

The player character runs endlessly towards the right.
An endless number of obstacles speed towards him.
The player must jump over them or lose the game
when the player character runs smack into the obstacle.
Jumping requires fuel which is a limited resource
that must be managed by the player.

Features selectable difficulties and high score tracking.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/419
2024-09-03 18:50:12 -03:00
Matheus Afonso Martins Moreira
cd4b285c6e Merge PR #436 - add wordle watch face
Ports the famous Wordle game to the Sensor Watch.

A random 5 letter word is chosen and the player must guess it
without exceeding the configured maximum number of attempts.
Letters guessed correctly will stay in place.
Letters present in the word but in the wrong place will blink.

Streak tracking is supported and compile time configurable.

A Python script which finds an optimal dictionary is also included
and can be used to further customize the watch face.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/436
2024-09-03 18:49:18 -03:00
Matheus Afonso Martins Moreira
4d6a9345f2 Merge PR #299 - leading zero representation
Adds a movement-wide leading zero 024h representation mode
that's toggleable in the preferences watch face.
Also adds support for the new display mode to existing faces.

I modified the logic a bit to ensure the 24h indicator remains lit
in the simple clock face even when in 024h mode. I also added support
to the more advanced clock face. In the future I will add a compile time
toggle to it as well.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/299
2024-09-03 18:49:13 -03:00
David Volovskiy
118c07a3b6 Reduced struct memory per code review 2024-09-03 17:13:59 -04:00
David Volovskiy
faec45ce24 Include ability to select only the best words as the first choice 2024-09-03 17:09:52 -04:00
David Volovskiy
2e46aa0e2c got rid of hardcoding of half-second zero blink 2024-09-03 16:25:05 -04:00
David Volovskiy
c74ed78d72 Changed U LOSE to LOSE 2024-09-03 16:20:11 -04:00
David Volovskiy
e4a5121303 bug fix on displaying time in LE mode 2024-09-03 16:20:11 -04:00
David Volovskiy
28b14d3665 LE mode in the endless runner now displays the current time. 2024-09-03 16:20:11 -04:00
David Volovskiy
324942009e Added second fuel mode where we don't recharge the fuel if it hits zero. 2024-09-03 16:20:11 -04:00
David Volovskiy
30363d408e Added fuel mode 2024-09-03 16:20:11 -04:00
David Volovskiy
c027b247b2 Changed hi score number offset and refactored some code 2024-09-03 16:20:11 -04:00
David Volovskiy
503fcd6ebc Added author in header 2024-09-03 16:20:11 -04:00
David Volovskiy
6ec6476d0f Refectored the state machine 2024-09-03 16:20:11 -04:00
David Volovskiy
07d2bc91a5 Modified hi score display to allow for 3 digits in hi-score, it now resets at the beginning of each month 2024-09-03 16:20:11 -04:00
David Volovskiy
2d7aaceff7 hi score resets weekly 2024-09-03 16:20:11 -04:00
David Volovskiy
6f3f09c5ba Reformat to remove some hardocded variables 2024-09-03 16:20:11 -04:00
David Volovskiy
defd01f9f0 Added baby mode which used to be easy mode; easy mode is now same speed as normal, but 3 frames to jump and normal is 2 frames. 2024-09-03 16:20:11 -04:00
David Volovskiy
abc0bedbde Gave an extra jumping frame for non-hard mode; Curr scroll now loops; Title changed to ER 2024-09-03 16:20:11 -04:00
David Volovskiy
ed3c4d3c30 Fixed the long delays when beginning a game 2024-09-03 16:20:11 -04:00
David Volovskiy
e2870eb7af Removed the binary print debug function 2024-09-03 16:20:11 -04:00
David Volovskiy
73a975d0d9 Added endless-runner face 2024-09-03 16:20:11 -04:00
David Volovskiy
4dedcb3a6d Added ability to find best starting word 2024-09-03 16:11:54 -04:00
David Volovskiy
dd719183cf hard mode btn changed; logic changed on daily streak so if puzzle wasn't started and completed the previous day, then drop the streak 2024-09-03 16:11:54 -04:00
David Volovskiy
5435bc7f34 Streak face fix 2024-09-03 16:11:54 -04:00
David Volovskiy
d1c19166a1 WORDLE_USE_DAILY_STREAK logic changed 2024-09-03 16:11:54 -04:00
David Volovskiy
c43820e75d Wordle game resets after 24hrs of not playing when not using daily streak 2024-09-03 16:11:54 -04:00
David Volovskiy
41df6c113f Reset streak if don't continue 2024-09-03 16:11:54 -04:00
David Volovskiy
b364a6cfab Changed the lap to hard mode; fixed the ignore used letters 2024-09-03 16:11:54 -04:00
David Volovskiy
8205abe5be Revert "LAP indicator now dispalys on all screens"
This reverts commit 3bfa336b4d609668f6d8c71164f8f579f41240a5.
2024-09-03 16:11:54 -04:00
David Volovskiy
255ea97cc4 Documentation fix 2024-09-03 16:11:54 -04:00
David Volovskiy
4b8bd61408 Added explanation on LAP icon 2024-09-03 16:11:54 -04:00
David Volovskiy
c87e814140 LAP indicator now dispalys on all screens 2024-09-03 16:11:54 -04:00
David Volovskiy
733318c036 skip_wrong_letter is now a toggle 2024-09-03 16:11:54 -04:00
David Volovskiy
d98f749f3b Changed variable names for dictionary header 2024-09-03 16:11:54 -04:00
David Volovskiy
fdff6f581a Name change in python script 2024-09-03 16:11:54 -04:00
David Volovskiy
1b887aea2b Made skipping a wrong letters a #define 2024-09-03 16:11:54 -04:00
David Volovskiy
b58d6c0a2e Changed size of word lists from const int to #define to avoid folding constant array error 2024-09-03 16:11:54 -04:00
David Volovskiy
8342fef84f Added ability to skip already guessed letters that are wrong 2024-09-03 16:11:54 -04:00
David Volovskiy
0d16d126cd Added ability to guess non-dict words and repeats as that can save 11.5KB of watch memory 2024-09-03 16:11:54 -04:00
David Volovskiy
5149e7e1dd the dict of words to its own header 2024-09-03 16:11:54 -04:00
David Volovskiy
1d2fb20e99 Readding comment showing count of possible words. 2024-09-03 16:11:54 -04:00
David Volovskiy
099f78443e Added ability to use T in Wordle 2024-09-03 16:11:54 -04:00
David Volovskiy
7f38f8e416 modified Wordle list to use Wordle's own list and add 2 more letters 2024-09-03 16:11:54 -04:00
David Volovskiy
1a1560b59d Bugfix on elements not resetting when winning or losing 2024-09-03 16:11:54 -04:00
David Volovskiy
0d58f0d77d JOB to JOb 2024-09-03 16:11:54 -04:00
David Volovskiy
af6f6002ba Fixed the bug of the text not resetting after a timeout 2024-09-03 16:11:54 -04:00
David Volovskiy
a0ffd0ca7f Fix on playing with daily streak 2024-09-03 16:11:54 -04:00
David Volovskiy
7ceb682675 Better handling of seeing if currently playing 2024-09-03 16:11:54 -04:00
David Volovskiy
cb57ef237d Got rid of continue's blinking 2024-09-03 16:11:54 -04:00
David Volovskiy
ce31db3712 Continue test now blinks 2024-09-03 16:11:54 -04:00
David Volovskiy
1868f8446a Added continue screen 2024-09-03 16:11:54 -04:00
David Volovskiy
57ca74b253 Added SONIC and LASER to the allowed words 2024-09-03 16:11:54 -04:00
David Volovskiy
935ede9fda Fixed leaving the screen and coming back 2024-09-03 16:11:54 -04:00
David Volovskiy
4257b71562 combined two areas of code into one function 2024-09-03 16:11:54 -04:00
David Volovskiy
67c1089fb2 Don't delete the submitted characters if already guessed or not in dict 2024-09-03 16:11:54 -04:00
David Volovskiy
a0111fbe24 Swapped the Nice and Job so the Nice text is more likely to appear first. 2024-09-03 16:11:54 -04:00
David Volovskiy
2a10402d19 Removed wordle from movmeent face after testing 2024-09-03 16:08:12 -04:00
David Volovskiy
4bb4bc85fa USE_RANDOM_GUESS variable added 2024-09-03 16:08:12 -04:00
David Volovskiy
1e76022146 Gave the wordle face the ability to give random guesses on the first word 2024-09-03 16:08:12 -04:00
David Volovskiy
1675af6449 bug fix on max score 2024-09-03 16:08:12 -04:00
David Volovskiy
6dd46b46b1 Able to turn the expanded dict on and off with a variable 2024-09-03 16:08:12 -04:00
David Volovskiy
10eda8b208 Added expanded dictionary to check against 2024-09-03 16:08:12 -04:00
David Volovskiy
580f8bf8ee bugfix on iterating to previous position 2024-09-03 16:08:12 -04:00
David Volovskiy
02f6a3256c Added documentation for Wordle face 2024-09-03 16:08:12 -04:00
David Volovskiy
3e327eb7fd Another fix on the word_check 2024-09-03 16:08:12 -04:00
David Volovskiy
cef0d8836a Don't allow readding already guessed items 2024-09-03 16:08:12 -04:00
David Volovskiy
8ea779874f Face compares the values correctly now and does a dict lookup first 2024-09-03 16:08:12 -04:00
David Volovskiy
0c86be4a40 Swapped button mapping and removed fast iteration 2024-09-03 16:08:12 -04:00
David Volovskiy
676f50d194 Added fast cycle 2024-09-03 16:08:12 -04:00
David Volovskiy
3a24ede3de day streak and further wordle dev 2024-09-03 16:08:12 -04:00
David Volovskiy
ee53e83ae7 Changed dict to a smaller and simpler one 2024-09-03 16:08:12 -04:00
David Volovskiy
6bf22edbdc Continued Wordle dev 2024-09-03 16:08:12 -04:00
David Volovskiy
2e878e146c Start of Wordle 2024-09-03 16:08:12 -04:00
Matheus Afonso Martins Moreira
d4bd10ba5e Merge branch 'next'
This merge adds numerous individually small fixes and improvements
which amount to a sizeable set of features.

 - New hourly chime tunes added
 - Old hourly chime tunes improved
 - Display of characters on the stock LCD improved
 - Documentation improved
 - Simulator improved
 - Leap year handling improved
 - Months and their days sanity checked and fixed
 - More compile time configurable defaults added
 - Excessively exact time checks relaxed
 - Clock face indicators matched to original watch
 - Hardware interface issue fixed

The most significant new feature however is software debouncing.
The sensor watch now properly handles hardware switch bouncing,
making the button inputs much more precise at the cost of a small amount
of latency, greatly improving usability. Any watch faces which require
holding down buttons as part of their user interface, the pulsometer
for example, should see huge improvements in their usability.

 * 9c093f9 Merge PR #387 - configurable default birthdate/location
 * 879c48c Merge PR #417 - improve 24h only mode
 * db4097b Merge PR #426 - add temperature input to simulator
 * dea0566 Merge PR #428 - fix issues in sunrise/sunset
 * c8ca0d3 Merge PR #431 - fix wrong number of days in month
 * 95ca374 Merge PR #433 - fix clock face indicators
 * 663cd72 Merge PR #434 - fix leap years
 * a715265 Merge PR #437 - debouncing logic
 * c741332 Merge PR #439 - fix scheduled task misses
 * 657ff72 Merge PR #440 - fix countdown face issues
 * c8a87d3 Merge PR #441 - update documentation
 * dd04443 Merge PR #443 - improved t and y character display
 * 42dc151 Merge PR #447 - improve kim possible chime
 * fa0cdef Merge PR #450 - sync after enabling RTC
 * a67076f Merge PR #458 - add layla tune
 * 23c422b Merge PR #459 - add power rangers tune
 * a2e5417 Merge PR #461 - improve t/y special case docs

Tested-on-hardware-by: Alex Maestas <git@se30.xyz>
Tested-on-hardware-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Wesley Ellis <tahnok@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/460
2024-09-03 01:03:08 -03:00
Matheus Afonso Martins Moreira
a67076f437 Merge PR #458 - add layla tune
Awesome lick from Eric Clapton - Layla.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/458
2024-09-03 00:49:20 -03:00
Matheus Afonso Martins Moreira
23c422b27a Merge PR #459 - add power rangers tune
The power lies on their side.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/459
2024-09-03 00:42:33 -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
mcguirepr89
b774900ae6 finally squashed the bug 2024-09-02 13:10:26 -04:00
Metehan
696f7f12ec add power rangers tune 2024-09-02 02:11:27 +03:00
Metehan
6268ce4381 update layla tune 2024-09-02 00:03:21 +03:00
mcguirepr89
12b1432aae mode long press = reset_all() 2024-09-01 10:10:59 -04:00
Metehan
6f7693e880 add layla tune 2024-09-01 02:33:05 +03:00
mcguirepr89
20946e88f4 Merge remote-tracking branch 'fork/add_simple_calculator_face' into add_simple_calculator_face 2024-08-31 17:51:01 -04:00
mcguirepr89
70426751f8 negative toggle was only for first_num -- fixed 2024-08-31 17:47:15 -04:00
mcguirepr89
c75a21196f commented out debugging printf() statements 2024-08-31 14:46:23 -04:00
mcguirepr89
b607b6f7a9 removed note about mode long press 2024-08-31 12:44:29 -04:00
mcguirepr89
e13d42b5b5 mode=movement_move_to_next_face & longmode = face0 2024-08-31 12:41:57 -04:00
mcguirepr89
28db77f90c forgot to mention long press MODE for next face 2024-08-31 08:36:02 -04:00
mcguirepr89
18154deef4 Adds a simple calculator face 2024-08-31 08:31:26 -04:00
Matheus Afonso Martins Moreira
fa0cdef45b Merge PR #450 - sync after enabling RTC
According to the data sheet, writing to a Control A register's ENABLE
bit will trigger write synchronization and set SYNCBUSY's ENABLE bit
which will be automatically cleared by the hardware once the write
operation is complete.

It is necessary to wait until SYNCBUSY's ENABLE bit is clear.
Reading synchronized registers before that returns previous values.
Writing synchronized registers before that drops the write and generates
an error value in another register.

The data sheet recommends polling the ENABLE bit in this situation.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/450
References: SAM L22 Family Data Sheet §§ 14.3.2, 14.3.3, 14.3.4, 14.3.5
2024-08-30 16:47:47 -03:00
Matheus Afonso Martins Moreira
879c48ce4d Merge PR #417 - improve 24h only mode
Enhances 24 hour only mode by setting defaults properly
and skipping past the 12/24 hour settings page in the
preferences watch face.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/417
2024-08-30 16:47:47 -03:00
Matheus Afonso Martins Moreira
db4097bf84 Merge PR #426 - add temperature input to simulator
This patch enhances the Sensor Watch simulator with a temperature input
allowing users to simulate and test the temperature sensor.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/426
2024-08-30 16:47:47 -03:00
Matheus Afonso Martins Moreira
dea05663b0 Merge PR #428 - fix issues in sunrise/sunset
Takes zero into account, allowing the sunrise/sunset watch face
to work with no presets defined.

Also resolves a warning during compilation of the sunrise/sunset face.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/428
2024-08-30 16:47:47 -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
Matheus Afonso Martins Moreira
c8ca0d3619 Merge PR #431 - fix wrong number of days in month
July has 31 days and but was set to 30 days in the Sensor Watch.
This patch fixes the discrepancy.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/431
2024-08-30 16:46:22 -03:00
Matheus Afonso Martins Moreira
95ca374c98 Merge PR #433 - fix clock face indicators
I misinterpreted the documentation and swapped the alarm and time signal
indicators in the clock face. This patch brings it back in sync with
the original watch's behavior as described in the manual.

Reported-by: 814d3 (GitHub)
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/433
References: https://github.com/joeycastillo/Sensor-Watch/pull/380
References: https://github.com/joeycastillo/Sensor-Watch/issues/132
2024-08-30 16:46:22 -03:00
Matheus Afonso Martins Moreira
657ff724d0 Merge PR #440 - fix countdown face issues
Avoid potential underflow when evaluating x - y with y > x.
Evaluate it only when y <= x instead.

Avoid clearing indicators in background task
since another watch face is likely active.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/440
2024-08-30 16:46:22 -03:00
Matheus Afonso Martins Moreira
42dc15117e Merge PR #447 - improve kim possible chime
The current one is slightly off compared to the original tune.

Original: https://www.youtube.com/watch?v=_3nfrGdVcv0
Before: https://onlinesequencer.net/4159215
After: https://onlinesequencer.net/4160385

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/447
2024-08-30 16:46:22 -03:00
Matheus Afonso Martins Moreira
a715265af6 Merge PR #437 - debouncing logic
Mechanical switches exhibit temporary voltage fluctuations
when electrical contact is made, which manifest as "bouncing"
between the logical high and low states. Sampling the switch's
state during this period of stability produces invalid results.

The switch must be debounced by ignoring the generated interrupts
until the switch's state has stabilized. This is implemented by delaying
the input events until an empirically determined time has elapsed.
As such this pull request introduces customizable high resolution timers
for debouncing button down and up events.

This software debouncing unfortunately increases the sensor watch's
input latency. This is an acceptable tradeoff due to better usability:
watch faces which require holding down buttons such as the pulsometer
should work much more reliably after this patch.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
Tested-on-hardware-by: Krzysztof Gałka <@kshysztof@Discord>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/437
References: https://en.wikipedia.org/wiki/Switch#Contact_bounce
2024-08-30 16:44:38 -03:00
Matheus Moreira
9c093f9540 Merge PR #387 - configurable default birthdate/location
Adds the ability to configure at compilation time
the movement's default birth date and location.

Tested-by: madhogs <madhogs@protonmail.com>
Tested-by: Niehztog <niehztog@gmail.com>
Tested-on-hardware-by: madhogs <madhogs@protonmail.com>
Tested-on-hardware-by: Niehztog <niehztog@gmail.com>
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/387
2024-08-30 16:44:38 -03:00
Matheus Moreira
c7413322a5 Merge PR #439 - fix scheduled task misses
The movement was checking for scheduled tasks
by comparing for equality their scheduled times to
the current time. However, it is possible that the time
has moved past the scheduled time by the time the
function executes, leading to scheduled tasks not
being executed and therefore to missed deadlines.

Changing it to `<=` fixes the problem by taking that
possibility into account.

Helped-by: Wesley Ellis <tahnok@gmail.com>
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/439
2024-08-30 16:44:38 -03:00
Matheus Moreira
c8a87d3b7c Merge PR #441 - update documentation
The TOTP watch face has gained a new declarative API
for defining secrets directly in the source code but the
documentation still describes the old interfaces.
This pull request brings the documentation up to date
with currect practice.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/441
2024-08-30 16:44:38 -03:00
Matheus Moreira
dd04443413 Merge PR #443 - improved t and y character display
The t and y characters were not being displayed optimally
in certain positions. This commit improves it substantially
by internally remapping those characters to better looking
characters when displaying on those positions.

Tested-by: David Volovskiy <devolov@gmail.com>
Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/443
References: https://hchargois.github.io/sensor-watch-playground/
2024-08-30 16:44:00 -03:00
Joseph Bryant
cae5d8a33f wait for RTC SYNCBUSY in watch_register_extwake_callback 2024-08-30 16:20:32 -03:00
metehan-arslan
2a194dfa69
style: remove extra whitespace 2024-08-28 20:40:32 +00:00
metehan-arslan
77fb6202c9
Update SIGNAL_TUNE_KIM_POSSIBLE notes 2024-08-27 13:56:36 +03:00
David Volovskiy
fe259ee526 Comment change 2024-08-26 21:40:56 -04:00
Matheus Moreira
01940449b6
Merge PR #442 - update devcontainer image
The devcontainer image stopped working
because the requested Ubuntu image
was too outdated. This pull request
brings it up to date and it should remain
functional until 2029. It also enables
use of the emulator by installing the
needed dependencies.

Reviewed-by: Matheus Afonso Martins Moreira <matheus@matheusmoreira.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/442
2024-08-26 09:41:08 -03:00
David Volovskiy
d5a8c57c82 Additional code review change 2024-08-23 22:25:02 -04:00
David Volovskiy
c6f2bff75e Code review edits 2024-08-23 17:35:16 -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
Nicholas Rodrigues Lordello
f02e73c1c4
Update Devcontainer Dockerfile
This PR updates the .devcontainer Dockerfile which was no longer
working. Attempting to build an image from the Dockerfile would result
in an error:

```
E: The repository 'http://archive.ubuntu.com/ubuntu kinetic Release' does not have a Release file.
```

AFAIU, this is because the 22.04 release is no longer supported. I
changed the base image to the current LTS release, which should remain
supported until 2029.

In addition, the Dockerfile is also modified to install `emscripten` APT
package. While this is not the recommented installation method from the
Emscripten docs, it is much more convenient and works enough to build
the simulator using the resulting Docker image.
2024-08-22 14:54:41 +02:00
Nicholas Rodrigues Lordello
a4fc048f94
Update TOTP Face Documentation
The TOTP face header file documentation contained outdated instructions
for configuring the complication with TOTP credentials. This PR updates
the documentation to match what is expected in `totp_face.c`.
2024-08-22 14:53:17 +02:00
Joseph Bryant
e2c5babb2c don't change the bell indicator from within background task 2024-08-18 22:09:37 +01:00
Joseph Bryant
dcd4d12c0a avoid delta overflow in countdown draw 2024-08-18 22:09:17 +01:00
Joseph Bryant
20b4a32835 make sure we don't miss our scheduled tasks 2024-08-18 20:09:06 +01:00
David Volovskiy
e9837ff0cb Stops Running cb_fast_tick when the watch debounce timer is defined as 0 2024-08-17 02:52:30 -04:00
David Volovskiy
2cdfa2d3b3 Set the debounce tick variables to 0 to make the face work the same as stock. 2024-08-17 02:45:22 -04:00
David Volovskiy
9861da84c3 Changed debounce to ignore button presses after a press down or up rathe rthan dact after a set amount of time due to an issue of delay_ms allowing a shoft-bricking 2024-08-11 11:00:08 -04:00
David Volovskiy
09576807eb Made the days_in_month its own function 2024-08-10 07:40:52 -04:00
David Volovskiy
f85a7f2c78 Swapped the bell and alarm icon on the clock face to match Casio's doc 2024-08-10 06:38:46 -04:00
Struan
1da9d0aefe
fix: july has 31 days 2024-08-07 22:24:57 -06:00
atax1a
0ad5fa4733
Merge pull request #429 from theAlexes/theAlexes/format-command
add a format command
2024-08-07 04:51:12 +00:00
Alex Maestas
44bdc8503e explain usage in format command when arg isn't YES 2024-08-05 23:11:54 +00:00
Alex Maestas
ca1da33b82 in filesystem_init, handle the error code correctly 2024-08-05 23:09:24 +00:00
Alex Maestas
7000d08ba5 add a format command 2024-08-05 23:06:18 +00:00
David Volovskiy
598e876186 check_and_act_on_daylight_savings now only occurs in one spot 2024-08-04 10:11:33 -04:00
David Volovskiy
2824a62908 Bugfix on not registering the top of an hour 2024-08-04 09:53:04 -04:00
Christian Buschau
7a15ed3591
faces/alarm_thermometer: new watch face 2024-08-03 18:59:41 +02:00
David Volovskiy
51176344dc Made it so the code works with a completely empty preset list 2024-08-03 11:42:42 -04:00
David Volovskiy
84f0db0654 Fix to remove compiler complaint 2024-08-03 11:38:45 -04:00
David Volovskiy
6ae5dfef70 Leap Years Now Handled Dynamically 2024-08-03 11:20:25 -04:00
David Volovskiy
aebea960c0 Cleanup to the default branch 2024-08-03 10:08:24 -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
Christian Buschau
db165bec30
Fix all days in a month 2024-08-03 12:22:15 +02:00
Robert Masen
ccf99a9727 add temp input to simulator 2024-08-02 18:20:44 -05:00
David Volovskiy
bae8c65825 Made the faces I care about not need to continuously re-find the timezone 2024-08-02 07:37:30 -04:00
David Volovskiy
4c546b14dc The timezone now auto-corrects with DST (but still displays the same offset in the settings screen to the user) 2024-08-02 01:25:01 -04:00
David Volovskiy
149911e4ad Time now auto-updates with DST 2024-08-02 01:23:21 -04:00
atax1a
e732afbec6
Merge pull request #424 from edwardspeyer/bug-fix-july-31
Allow setting July 31st as today's date
2024-07-31 18:13:40 +00:00
EGS
278520bfaf Allow setting July 31st as today's date
To allow a valid date to be set the `set_time_face` cycles through the
valid days for a given month.  July was incorrectly encoded as having 30
days (it has 31!)
2024-07-31 18:17:04 +01:00
David Volovskiy
7bbac4cd80 Brought debounce time to 8ms rather than 15 2024-07-31 07:33:25 -04:00
David Volovskiy
027e42dc58 Moved a few lines around to match main 2024-07-31 07:25:09 -04:00
David Volovskiy
e297b3013e Using debounce that triggers when there's no change for Xms rather than just ignoring new presses after Xms 2024-07-31 07:22:33 -04:00
David Volovskiy
607946ed2e A little bit of clean-up 2024-07-30 07:27:47 -04:00
David Volovskiy
f7d1b8f9f3 Delay for starting the debounce no loonger happens 2024-07-29 23:53:25 -04:00
David Volovskiy
7f2ac61375 Fixed stuck fast_tick 2024-07-29 21:43:32 -04:00
David Volovskiy
73c3ba3ae7 Cleaned up code 2024-07-29 21:05:19 -04:00
David Volovskiy
36117ca207 using cb_fast_tick again 2024-07-29 20:48:17 -04:00
David Volovskiy
9727dac3c3 Revert "Leaving sleep with alarm button up doesn't trigger alarm button"
This reverts commit 7d5aaf60caa943a248a7f635111ddfd50c230389.
2024-07-29 20:28:10 -04:00
David Volovskiy
947e299494 Made the debounce register rising edges rather than falling edges 2024-07-29 20:13:54 -04:00
David Volovskiy
4a4fce428e Removed some dead code 2024-07-29 18:24:58 -04:00
David Volovskiy
df2dac5a07 debouince now uses cb_fast_tick and holding the button now also gets debounced 2024-07-29 18:12:46 -04:00
David Volovskiy
7d5aaf60ca Leaving sleep with alarm button up doesn't trigger alarm button 2024-07-29 07:44:31 -04:00
David Volovskiy
4375ca37e0 Added debouncing 2024-07-29 07:39:51 -04:00
PrimmR
a9e6b82f00 Update timeout & low energy behaviour 2024-07-25 15:31:25 +01:00
voloved
6e26c01de0
Holding light button on a non-element screen will turn on the light (#2)
* Holding light button on a non-element screen will turn on the light.

* The alarm and led button press moves back to the currently-selected element symbol page rather than the next and previous one

* Usage update
2024-07-25 14:18:56 +01:00
PrimmR
cb90a1980f Added LED button combo 2024-07-24 11:18:24 +01:00
atax1a
42c14c2e5b
Merge pull request #420 from voloved/sunrise_sunset_presets
Added ability to add presets to the sunrise and sunset face
2024-07-24 04:49:03 +00:00
voloved
c8702d346e
Added subscreens to periodic table face; added title and faster scrolling (#1)
* Added subscreens to periodic table face; added title and faster scrolling

* Resized buf for element display

* Fixed scrolling to work on actual hardware

* Added delay before _loop_text at title and bugfix on elements shorter than 6 char

* Title screen displays when le_mode starts

* Added documentation on usage and removed unneeded variable
2024-07-23 10:35:38 +01:00
Wesley Ellis
8aa1a3f8fa
Merge pull request #422 from wryun/fix-totp-lfs-error-params
Fix TOTP LFS printf string
2024-07-21 08:43:05 -04:00
James Haggerty
222c60b072 Fix TOTP LFS printf string 2024-07-21 09:10:28 +10:00
James Haggerty
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
David Volovskiy
a13c8c35b8 Code review commit 2024-07-20 15:59:42 -04:00
David Volovskiy
9ee319c888 Typo in comment 2024-07-20 14:48:32 -04:00
David Volovskiy
a3d23ab45e Long press of Alarm goes back to default 2024-07-20 14:46:42 -04:00
David Volovskiy
a7c0fb7dfd Added ability to add presets to the sunrise and sunset face 2024-07-20 14:35:37 -04:00
David Volovskiy
2afc2c6721 isolating this bit of complexity in movement function; Add ifdefs in clock faces for DCE 2024-07-10 07:22:55 -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
David Volovskiy
7f6a9e5c9b Typo fix on PREFERENCES_FACE_NUM_PREFERENCES 2024-07-08 18:33:17 -04:00
David Volovskiy
b923d50652 CLOCK_FACE_24H_ONLY hides the preference to change the setting and defaults the mode to 24Hr mode 2024-07-08 18:32:41 -04:00
atax1a
5f5d86353f
Merge pull request #397 from madhogs/wyrun-totp-lfs-fix
Reduce totp_face_lfs memory usage
2024-07-08 21:10:46 +00:00
voloved
3eaf807590
Added Timeout; Ability to turn off LED and Sound; Added doublespeed mode. (#1)
* Check that color is valid

Instead of merely checking that COLOR is set, check that it is one of
RED, BLUE or GREEN

* Added ability to turn off sound and timer with modes

* Added enum for mode

---------

Co-authored-by: Wesley Ellis <tahnok@gmail.com>
2024-07-07 19:23:31 -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
Wesley Ellis
226cda748c
Merge pull request #408 from tahnok/sanity-check-color
Check that color is valid
2024-06-26 11:40:28 -04:00
Wesley Ellis
96fdf64c4c Check that color is valid
Instead of merely checking that COLOR is set, check that it is one of
RED, BLUE or GREEN
2024-06-26 11:30:31 -04:00
Ruben Nic
7a2ecad334 Custom setting of switch from past to to index 2024-05-25 18:16:50 -04:00
Ruben Nic
af0f8d2732 If the alarm is enabled show bell not signal 2024-05-18 10:44:43 -04:00
Ruben Nic
53f11cbd1e have close enough to update less and clean up code 2024-05-15 12:30:00 -04:00
Ruben Nic
fa35b8bb77 Add close enough clock face 2024-05-06 20:32:59 -04:00
Matt Greer
9794f86430 simon_face: Simon game complication 2024-05-05 13:43:33 -04:00
R. Alex Barbieri
2ce07f9539 add blinking to DST toggle in settings page 2024-04-27 13:33:32 -05:00
R. Alex Barbieri
e3d67af604 Merge remote-tracking branch 'origin/main' into manual_dst_toggle
* origin/main: (119 commits)
  add an openocd.cfg for openocd 0.12.0
  Fix compile errors and warnings in movement.c and shell.c
  faces/totp: avoid displaying when key is invalid
  faces/totp: fix error message not displayed bug
  faces/totp: remove dynamic memory allocation
  faces/totp: improve memory usage
  faces: restore simple_clock_face
  uf2conv: argument to `re.split` should be a rawstring
  movement: fix unintended timeout short circuiting
  movement: convert can_sleep an automatic variable
  faces/pulsometer: remember pulsometer measurement
  faces/pulsometer: remember pulsometer calibration
  faces/totp: update copyrights
  faces/totp: allow moving backwards through codes
  faces/clock: add 24h only feature
  faces/clock: update copyrights and credits
  faces/totp: delete leading underscores
  faces/totp: rename initializer macro to credential
  faces/totp: improve TOTP initializer labeling
  faces/totp: decode secrets when setting up
  ...
2024-04-27 13:23:53 -05:00
James Haggerty
77ea1b8965 Reduce totp_face_lfs memory usage 2024-04-26 16:05:35 +01:00
atax1a
439843f56b
Merge pull request #388 from TheOnePerson/fix-compile-errors
Fix compile errors and warnings in movement.c and shell.c
2024-04-09 22:24:19 +00:00
atax1a
45beca19e8
Merge pull request #389 from joeycastillo/theAlexes/add-openocd
add an openocd.cfg for openocd 0.12.0
2024-04-09 22:23:21 +00:00
madhogs
524098b925 add the ability to set location and birthdate in movement config 2024-03-31 13:27:54 +01:00
atax1a
d2b5ed7155
Merge pull request #383 from theAlexes/theAlexes/fix-uf2conv
uf2conv: argument to `re.split` should be a rawstring
2024-03-31 00:40:05 +00:00
atax1a
1e29fe85e5
Merge pull request #385 from matheusmoreira/totp-hot-patch
TOTP hotfix: reduce memory usage
2024-03-31 00:39:43 +00:00
Alex Maestas
f28209b290 add an openocd.cfg for openocd 0.12.0 2024-03-31 00:37:35 +00:00
TheOnePerson
c22123961f Fix compile errors and warnings in movement.c and shell.c 2024-03-29 11:49:48 +01:00
Wesley Black
69f25f1016
Add files via upload 2024-03-20 17:54:23 -03:00
Wesley Black
0e70adf4d4
Update movement_faces.h 2024-03-20 17:53:45 -03:00
Matheus Afonso Martins Moreira
10701f3d50 faces/totp: avoid displaying when key is invalid
Fixes a division by zero bug caused by calling getCodeFromTimestamp
without having initialized the TOTP library with a secret first.
This was happening because the face calls totp_display on activation,
meaning the validity of the secret was not checked since this is
done in the generate function.

Now the validity of the key is determined solely by the size
of the current decoded key. A general display function checks it
and decides whether to display the code or just the error message.

The size of the current decoded key is initialized to zero
on watch face activation, ensuring fail safe operation.

Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/385
2024-03-20 12:54:20 -03:00
Matheus Afonso Martins Moreira
7e5c34773a faces/totp: fix error message not displayed bug
Forgot to call watch_display_string on the error message.
Of course the message isn't going to be displayed.

Also, increase the buffer size to 10 characters
and output a space to the last position.
This ensures the segments are cleared.

Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/385
2024-03-20 12:54:10 -03:00
Matheus Afonso Martins Moreira
3f850d79c8 faces/totp: remove dynamic memory allocation
Allocate an unlimited extent 128 byte buffer once during setup
instead of allocating and deallocating repeatedly. A static buffer
was not used because it fails to be reentrant and prevents multiple
instances of the watch face to be compiled by the user.

The advantage is the complete prevention of memory management errors,
improving the reliability of the watch. It also eliminates the overhead
of the memory allocator itself since malloc is not free.
The disadvantage is a worst case default size of 128 bytes was required,
meaning about 90 bytes will be wasted in the common case since most keys
are not that big. This can be overridden by the user via preprocessor.

The key lengths are checked on TOTP watch face initialization
and if any key is found to be too large to fit the buffer
it is turned off and the label and ERROR is displayed instead.

The base32 encoded secrets are decoded dynamically to the buffer
at the following times:

 - Face enters the foreground
 - User switches TOTP code

Therefore, there is still some extra runtime overhead
that can still be eliminated by code generation.
This will be addressed in future commits.

Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/385
2024-03-18 11:40:55 -03:00
Matheus Afonso Martins Moreira
df38c262b8 faces/totp: improve memory usage
The TOTP face is working in the simulator but fails on the real hardware
when loaded with lots of codes, just like the LFS version.
This is likely caused by the recent refactoring of the TOTP face
which introduced a declarative credential interface for ease of use.
That's accomplished by decoding the secrets at runtime which increases
the RAM requirements. Users are likely hitting memory limits.

In order to mitigate this, the algorithm is changed from decoding
all of the secrets only once during initialization to on the fly
decoding of the secret for the current TOTP credential only.
This converts this face's dynamic memory usage from O(N) to O(1)
at the cost of memory management when switching faces and credentials
which could impact power consumption. Issue is confirmed fixed by
author of issue who has tested it on real hardware. Fixes #384.

Due to variable key sizes, the memory cannot be statically allocated.
Perhaps there's a maximum key size that can serve as worst case?

Also took this opportunity to restructure the code a bit.
Also added code to check for memory allocation failure.

Reported-by: madhogs <59648482+madhogs@users.noreply.github.com>
Fixed-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-on-hardware-by: madhogs <59648482+madhogs@users.noreply.github.com>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/384
2024-03-17 20:48:54 -03:00
Matheus Afonso Martins Moreira
955ac94de3 faces: restore simple_clock_face
Restore the original simple clock face as requested.
2024-03-16 20:04:08 -03:00
Alex Maestas
40b71400c5 uf2conv: argument to re.split should be a rawstring 2024-03-16 16:50:55 +00:00
Matheus Afonso Martins Moreira
8bf652f213 Merge branch 'timeout-event-and-sleep-logic'
Currently, movement drops timeout events in case the previous loop
indicates that sleep is not possible. This is due to unintended
short circuiting behavior of && and is fixed with a temporary variable.

The static qualifier of can_sleep is also removed.

Helped-by: Alex Maestas <git@se30.xyz>
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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/376
2024-03-08 06:56:55 -03:00
Matheus Afonso Martins Moreira
ca40d101d3 Merge branch 'structured-totp+maxz' into advanced
Aggregates the TOTP credentials into a data structure,
making it easier to define and use the credentials.
Also incorporate backwards movement code from another branch.

Co-authored-by: Max Zettlmeißl <max@zettlmeissl.de>
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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/369
GitHub-Related-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/356
2024-03-08 06:56:31 -03:00
Matheus Afonso Martins Moreira
66796805ac Merge branch 'advanced-pulsometer' into advanced
Implements an advanced pulsometer that can be calibrated by the user.
Also features a streamlined and responsive user interface,
new documentation and generally improved code.

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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/371
2024-03-08 06:54:50 -03:00
Matheus Afonso Martins Moreira
4b269c5063 Merge branch 'advanced-clock+24h' into advanced
Completely refactors the simple clock face
and lays the foundations for new features.

Also adds a compile time 24 hour mode only feature.

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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/373
2024-03-08 06:54:22 -03:00
Matheus Afonso Martins Moreira
7208df1dfb Merge branch 'moon-phase-face-long-press-reset'
Makes a long press of the ALARM button reset the face to current day.

Reviewed-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
Tested-by: Wesley Aptekar-Cassels <me@wesleyac.com>
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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/316
2024-03-08 06:52:49 -03:00
Matheus Afonso Martins Moreira
f35cb849de Merge branch 'compile-time-preferences'
Adds overridable C preprocessor definitions for every user preference.
Enables the user to set defaults and omit the preferences face.

The default behavior of the watch is preserved.

Suggested-by: Wesley Aptekar-Cassels <me@wesleyac.com>
Implemented-by: madhogs <x3dh4vhf@duck.com>
Reviewed-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/295
GitHub-Related-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/291
2024-03-08 06:52:22 -03: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
Matheus Afonso Martins Moreira
a4ee7dd7fc Merge 'fix-sunrise-sunset-uninitialized'
Fixes a crash due to use of uninitialized buffer when setting location.

Reported-by: eshrh <esrh@gatech.edu>
Fixed-by: Wesley Aptekar-Cassels <me@wesleyac.com>
Reviewed-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
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>
Signed-off-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
GitHub-Pull-Request: https://github.com/joeycastillo/Sensor-Watch/pull/329
GitHub-Issue: https://github.com/joeycastillo/Sensor-Watch/issues/198
Fixes: https://github.com/joeycastillo/Sensor-Watch/issues/198
2024-03-08 06:49:18 -03:00
Matheus Afonso Martins Moreira
b1adbd548e movement: fix unintended timeout short circuiting
Currently, movement drops time out events in case the previous loop
indicates that sleep is not possible due to short circuiting behavior
of logical and in C: if the left-hand side is false, the right hand
side is not evaluated at all, which means the loop is not called.
This was not intended to happen.

Fix it by storing the result in a second boolean variable
and working out the logic after the fact.
2024-03-05 21:49:32 -03:00
Matheus Afonso Martins Moreira
6ca553e648 movement: convert can_sleep an automatic variable
It is a simple boolean value and its scope is limited to the function.
There is no reason that I can think of for it to be a static variable.
2024-03-05 21:08:10 -03:00
Matheus Afonso Martins Moreira
fb3b96c8b7 faces/pulsometer: remember pulsometer measurement
Avoid resetting it to zero when the face is activated.
Initialize the variables once when the face is first set up.

This makes it remember the last measurement taken by the user.
It will no longer be overwritten when the watch face activates.
2024-03-05 04:41:58 -03:00
Matheus Afonso Martins Moreira
e1b1493894 faces/pulsometer: remember pulsometer calibration
Avoid resetting it to default when the face is activated.
Set the default pulsometer calibration once,
only when the face is first set up.

This makes it remember the calibration set by the user.
It will no longer overwrite it.
2024-03-05 04:14:10 -03:00
Matheus Afonso Martins Moreira
92baa2200f faces/totp: update copyrights
Update the copyrights to include full name attribution
to Max Zettlmeißl whose code I've incorporated and who
has explicitly licensed it as MIT.

Max Zettlmeißl (@maxz) commented on 2024-01-20:

> I provide all my changes under the MIT license

GitHub-Comment: https://github.com/joeycastillo/Sensor-Watch/pull/356#issuecomment-1902114306
2024-03-05 03:58:09 -03:00
Max Zettlmeißl
26e1b7bdc4 faces/totp: allow moving backwards through codes
Adds the ability to cycle back to the previous credential with LIGHT.
Long pressing LIGHT activates the LED.

Co-authored-by: Matheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>
2024-03-05 03:58:09 -03:00
Matheus Afonso Martins Moreira
4a66035f77 faces/clock: add 24h only feature
The clock watch face can now be configured at build time
to only display the time in 24h mode. Also enabled in forced 24h mode.

This should result in smaller code size due to dead code elimination.
2024-03-05 00:46:27 -03:00
Matheus Afonso Martins Moreira
4cca3a0fac faces/clock: update copyrights and credits
Update the copyrights to include full name attribution to all
who contributed to the clock watch face, including myself.

Also add an SPDX license identifier header comment to the files.
2024-03-05 00:46:27 -03:00
Matheus Afonso Martins Moreira
4633be0845 faces/totp: delete leading underscores
Makes for cleaner symbols.
2024-02-25 22:57:47 -03:00
Matheus Afonso Martins Moreira
238709e1d9 faces/totp: rename initializer macro to credential
Shorter and far more expressive.
2024-02-25 22:53:15 -03:00
Matheus Afonso Martins Moreira
46a4076f9e faces/totp: improve TOTP initializer labeling
It now generates the string literal from the preprocessor token.
Even warns the user if the string is too long!
2024-02-25 22:52:31 -03:00
Matheus Afonso Martins Moreira
d70511515e faces/totp: decode secrets when setting up
This allows the user to easily copy the base32 encoded secrets
into the TOTP record initializers. They will be decoded once
at runtime when the face is being set up by the movement framework.

Also rename the array of TOTP records to credentials. Much better.
2024-02-25 22:50:47 -03:00
Matheus Afonso Martins Moreira
69639a5736 faces/clock: indicate low power only when needed
There is no need to set the indicator on every clock tick.
Indicate only when the battery is checked.
2024-02-25 15:24:15 -03:00
Matheus Afonso Martins Moreira
5c376d9b9a faces/clock: indicate alarm only when necessary
The alarm state is not modified within the clock face.
Therefore, it only needs to be set when the face is activated.
2024-02-25 15:24:15 -03:00
Matheus Afonso Martins Moreira
2df6b2879a faces/clock: refactor time signal toggling code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:15 -03:00
Matheus Afonso Martins Moreira
1e2c23cf13 faces/clock: refactor clock display code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:15 -03:00
Matheus Afonso Martins Moreira
830200f9c3 faces/clock: reorder periodic battery check
Check the battery after the time has been updated.
Place all the indication code next to each other.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
bf4d7a3f2b faces/clock: refactor partial time display code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
8f07192053 faces/clock: refactor full time display code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
76add5a2da faces/clock: refactor tick tock animation code
Simplifies the code by defining dedicated functions for this.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
1d79930ab7 faces/clock: refactor low power tick function
Simplifies the code by defining dedicated functions
and separating the case from the main ones.

Also use the snprintf function since the buffer size is known.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
e7052fe4e2 faces/clock: simplify LAP indication function
Simplifies the code by adding a dedicated function for this.
Also documents the meaning of the LAP indicator: Low Available Power.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
0773439a49 faces/clock: refactor daily battery check
Move the code in question to a dedicated function. Better organized.
Add overridable preprocessor definition for the low battery threshold.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
91713392a5 faces/clock: simplify PM indication function
Simplifies the code by adding dedicated functions for this.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
113b4bba9c faces/clock: simplify 24h indication function
Simplifies the code by adding a dedicated function for this.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
2132320d5c faces/clock: simplify signal indication function
Simplifies the code and makes it use the correct indicator.
For some reason it had been switched with the alarm indicator.

    WATCH_INDICATOR_BELL
        The small bell indicating that an alarm is set.

    WATCH_INDICATOR_SIGNAL
        The hourly signal indicator.
        Also useful for indicating that sensors are on.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
e2cba9f2f2 faces/clock: simplify alarm indication function
Deduplicates state in the clock state and movement settings.
Makes the code simpler.

Also makes it use the correct indicator.
For some reason it had been switched
with the hourly chime indicator.

    WATCH_INDICATOR_BELL
        The small bell indicating that an alarm is set.

    WATCH_INDICATOR_SIGNAL
        The hourly signal indicator.
        Also useful for indicating that sensors are on.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
e6d8b6aaff faces/clock: define general indication function
Sets or clears the specified indicator based on some boolean value.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
01312c2deb faces/clock: move structure definition
Instances of the clock state structure
are only passed to the clock face itself
and only via the opaque context pointer.
No other code uses it.

Thus there is no need to expose it in a header file.
So make it an implementation detail of the watch face
by localizing it inside the translation unit.
2024-02-25 15:24:14 -03:00
Matheus Afonso Martins Moreira
8f040252fd faces: rename simple_clock_face to clock_face
It's not actually so simple and will only gain features from now on.
Just "clock face" also feels more canonical.
2024-02-24 18:53:07 -03:00
Matheus Afonso Martins Moreira
30ebf4743e faces/pulsometer: move structure definition
Instances of the pulsometer state structure are only passed
to the pulsometer itself and only via the opaque context pointer.
No other code uses it. There is no need to expose it in a header file
so make it an implementation detail of the watch face.
2024-02-24 05:17:56 -03:00
Matheus Afonso Martins Moreira
4d77273238 faces/pulsometer: update copyrights and credits
Update the copyrights to include full name attribution to all
who contributed to the pulsometer watch face, including myself.

Also add an SPDX license identifier header comment to the files.
2024-02-24 05:17:43 -03:00
Matheus Afonso Martins Moreira
4b67ef56c6 faces/pulsometer: document the advanced pulsometer
Thoroughly document the new advanced pulsometer watch face
by describing what it is and how it works.
2024-02-24 05:17:43 -03:00
Matheus Afonso Martins Moreira
ea47bf9f22 faces/pulsometer: implement advanced pulsometer
Implements an advanced pulsometer that can be recalibrated by the user.
The main clock face now displays the measured pulses per minute.
The day of month digits now display the pulsometer calibration.
The light button now cycles through integer graduations
which now range from 1 to 39 pulses per minute.
Long presses of the light button cycle by 10 instead of 1.

The watch face's responsiveness to input has been carefully optimized.
The code has been reorganized and generally improved.
2024-02-24 05:17:43 -03:00
Matheus Afonso Martins Moreira
1c0050c97b faces/totp: update copyright and license data
Update the copyrights to include full name attribution
to all who contributed to this watch face, including myself.

Also add an SPDX license identifier header comment to the files.

https://spdx.org/licenses/MIT.html
2024-02-21 03:25:29 -03:00
Matheus Afonso Martins Moreira
0ebd94c4e1 faces/totp: delete unused structure field
The TOTP watch face now keeps track of each key separately.
There is no need to compute offsets at runtime.
2024-02-20 23:24:01 -03:00
Matheus Afonso Martins Moreira
79cfe315ff faces/totp: update watch face logic for new struct
Using the new structured TOTP record data structure
allows the TOTP watch face to statically and implicitly
compute the total number of defined TOTP records.

Users can now simply add new keys and records in the designated area
and the watch face will compile and automatically use them with no need
to maintain a separate array size variable. Less chance of mistakes.
2024-02-20 23:20:21 -03:00
Matheus Afonso Martins Moreira
bbb920a5d8 faces/totp: define current TOTP data function
Selects the appropriate TOTP data structure
given the TOTP watch face state.
2024-02-20 23:18:00 -03:00
Matheus Afonso Martins Moreira
48e7fb1a7c faces/totp: define TOTP data array size function
Computes the size of the array of TOTP records.
The compiler will likely evaluate it at compile time.
2024-02-20 23:16:41 -03:00
Matheus Afonso Martins Moreira
a99f6a716f faces/totp: update example data to new structure
The data definitions are much shorter and easier to read now.
2024-02-20 23:15:15 -03:00
Matheus Afonso Martins Moreira
8a7d9326cf faces/totp: define TOTP struct initializer macro
Generates a compound initializer for the given TOTP parameters.
Lessens repetition and allows functional definitions of TOTP records.
2024-02-20 23:12:53 -03:00
Matheus Afonso Martins Moreira
67907e4e5c faces/totp: define TOTP data structure
Aggregates all the data necessary for TOTP generation.
2024-02-20 23:10:13 -03:00
madhogs
3c6affb419
Merge branch 'main' into preferences_in_config 2024-02-14 17:17:10 +00:00
Max Zettlmeißl
af18673e1a
Change inactivity deadlines: add 10 minutes and remove 2 days. (#365)
I like to use the ten minute timeout on my watch and there are other
people who have similar interests in a lower deadline. The two day
deadline had to go to still accommodate the change within the three
bit index.

The default setting is still the one hour timeout.
2024-02-07 14:02:41 -05:00
Wesley Ellis
11de5936c5
Merge pull request #362 from Kistelini/fix
Revert "make the watch-face a global in movement.c, actually"
2024-01-22 12:09:05 -05:00
Alex Maestas
a2a60eb31a annotate SLEEPCFG-register detail 2024-01-22 00:39:20 +00:00
Alex Maestas
af49d3cfcb annotate voltage regulation erratum 2024-01-22 00:39:20 +00:00
Alex Maestas
2ae8f9863b annotate SysTick erratum 2024-01-22 00:39:20 +00:00
Alex Maestas
83a0e4e992 annotate TRNG erratum, address review comment 2024-01-22 00:39:18 +00:00
Christian Buschau
898b159a90
Revert "make the watch-face a global in movement.c, actually"
This reverts commit 0e801ed505cb0c368bf1eb0473058efb6c275a3e.
2024-01-21 20:31:37 +01:00
Wesley Aptekar-Cassels
3703d565ed
Merge pull request #337 from theAlexes/theAlexes/wyoscan-zero
make the zero in wyoscan a little more visually appealing
2024-01-21 02:35:32 -05:00
Wesley Aptekar-Cassels
3f58ce7693
Merge pull request #322 from WesleyAC/watch-face-save-load
Add save_load_face
2024-01-21 02:10:16 -05:00
Wesley Aptekar-Cassels
501ed8f9d2
Merge branch 'main' into watch-face-save-load 2024-01-21 02:08:28 -05:00
Wesley Aptekar-Cassels
45ede8f256
Merge pull request #319 from WesleyAC/watch-face-day-night-percentage
Add day_night_percentage_face.
2024-01-21 02:06:14 -05:00
Wesley Aptekar-Cassels
fe48776dae
Merge branch 'main' into watch-face-day-night-percentage 2024-01-21 02:04:20 -05:00
Wesley Aptekar-Cassels
332728b511
Merge pull request #318 from WesleyAC/watch-face-simple-coin-flip
Add simple_coin_flip_face
2024-01-21 02:03:41 -05:00
Wesley Aptekar-Cassels
f16ce6a767
Merge branch 'main' into watch-face-simple-coin-flip 2024-01-21 02:01:27 -05:00
Wesley Aptekar-Cassels
233036ff59
Merge pull request #315 from WesleyAC/watch-face-solstice
Add solstice_face
2024-01-21 02:00:51 -05:00
Wesley Aptekar-Cassels
29784983b5
Merge branch 'main' into watch-face-solstice 2024-01-21 01:58:20 -05:00
Wesley Aptekar-Cassels
e49a75b8ef
Merge pull request #339 from theAlexes/theAlexes/cleanup
did a tiny bit of code cleanup, encountered a bug that might fix some sleep-mode issues
2024-01-21 01:44:19 -05:00
Wesley Aptekar-Cassels
d7369cd00d
Merge branch 'main' into theAlexes/cleanup 2024-01-21 01:31:58 -05:00
Wesley Aptekar-Cassels
9e41ac8e49
Merge pull request #360 from CarpeNoctem/compiler_warning_watch_face_index
template: fix compiler warning on watch_face_index as mentioned in PR269
2024-01-21 01:21:32 -05:00
CarpeNoctem
6985ca54f3 template: fix compiler warning on watch_face_index as mentioned in PR 269 2024-01-17 23:08:54 +11:00
Wesley Aptekar-Cassels
07e45acba7
Merge pull request #325 from WesleyAC/fix-le-buzzer-default-tune
Fix buzzer in LE mode.
2024-01-11 19:53:51 -05:00
joeycastillo
cd44cb74a2 fix alternate firmware script 2024-01-10 09:38:33 -05:00
Wesley Aptekar-Cassels
bf8c1b5dae
Merge pull request #342 from theAlexes/theAlexes/nanosec-profile-bug
delete stray line of code that messed with correction profile
2024-01-09 17:46:48 -05:00
Alex Maestas
aa3a1eeeef movement: Use LE mode code to keep buzzer awake, instead of sleeping. 2024-01-09 16:24:11 -05: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
Wesley Aptekar-Cassels
3ee32c6e57 Use legacy buzzer functions when playing default tune.
This allows the default tune to be played in LE mode.

Fixes: #275
2024-01-09 16:22:21 -05:00
Wesley Aptekar-Cassels
6f4917a0d5 Revert "Merge pull request #283 from neutralinsomniac/fix_hourly_chime_background"
This reverts commit 5c94111ea20e50cb9dab8f416603403185e933b3, reversing
changes made to bc9b4ce700d3f12adc0daceaa880e3d638df0c2b.
2024-01-09 16:22:21 -05:00
Jose Castillo
b6cdef0689
Merge pull request #350 from pfmaggi/main
Handle visibility for tomato watchface
2024-01-09 15:54:46 -05:00
Pietro F. Maggi
8e0e942573 Handle visibility for tomato watchface
(cherry picked from commit 547e8248ba3538693ee8c587a92ffece7b40d1a2)
2024-01-07 12:43:18 +01: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
399679ac59 delete stray line of code that messed with correction profile while adjusting cadence 2023-12-22 22:35:46 +00:00
Alex Maestas
de692e05e2 make any unknown interrupts/faults reset the microcontroller 2023-12-18 06:41:21 +00:00
Alex Maestas
d96d6f9c91 make the HAL sleep function obey the chip documentation
the sleep mode doesn't get set immediately, and needs to be waited upon.
2023-12-18 03:09:36 +00:00
Alex Maestas
d10fa223b2 address SysTick erratum, which can hard-fault the chip 2023-12-18 01:29:28 +00: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
68f3865227 work around silicon erratum in SUPC/VREG 2023-12-17 17:40:19 +00:00
Alex Maestas
89e86fe629 work around silicon erratum in TRNG 2023-12-17 17:39:59 +00:00
Alex Maestas
0e801ed505 make the watch-face a global in movement.c, actually 2023-12-17 03:23:26 +00:00
Alex Maestas
8eae6eabd6 clean up trailing whitespace in movement.c 2023-12-16 22:23:32 +00:00
Alex Maestas
0ffe19da5b use a pointer to the watch face in the app loop instead of indirecting through the index each time, and also recalculate can_sleep based on the timeout loop call. 2023-12-16 22:23:19 +00:00
Alex Maestas
06d546f179 make it clear that the movement_state contains indexes 2023-12-16 22:08:10 +00:00
Alex Maestas
dd9ca10122 make the zero in wyoscan a little more visually appealing 2023-12-08 22:11:56 +00:00
Wesley Aptekar-Cassels
63d6bc6aa0
Merge pull request #336 from theAlexes/theAlexes/sanitize
fix undefined behavior found by clang's sanitize

The compiler isn't completely assured of the possible range of this variable. Probably harmless, but it clears up a clang sanitize error.
2023-12-06 21:49:58 -05:00
Alex Maestas
8206f37fcf fix undefined behavior found by clang's sanitize 2023-12-07 02:24:26 +00:00
PrimmR
1b90a4a07a
Kitchen Conversions Face 2023-12-01 15:33:38 -05:00
Wesley Aptekar-Cassels
91c82ee5f2
Merge pull request #281 from Kistelini/day_one_face
Improvements for Day One face
2023-11-27 23:24:04 -05:00
Wesley Aptekar-Cassels
a2f1ba9171
Merge branch 'main' into day_one_face 2023-11-27 23:08:28 -05:00
Alex Utter
7802994854
Fix missing documentation for many clock faces:
* Move from .c to .h as needed for consistency.
* When missing from both, copy from pull request or wiki.
* When missing entirely, infer functionality from source code.
2023-11-27 23:06:19 -05:00
PrimmR
7eb725a5f6 Periodic Table Face 2023-11-24 18:58:07 +00:00
Wesley Aptekar-Cassels
3487d742f1
Merge pull request #330 from hchargois/fix-simulator-keyboard-shortcuts
Fix simulator keyboard shortcuts
2023-11-19 21:56:05 -05:00
Hugo Chargois
b82d728937 Simulator: Add keyboard arrows as buttons shortcuts 2023-11-19 19:50:39 +01:00
Hugo Chargois
bd9d792230 Simulator: Allow sending debug command with Enter 2023-11-19 19:50:39 +01:00
Hugo Chargois
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
Wesley Aptekar-Cassels
4ececdc57a
Merge pull request #305 from ekaitz-zarraga/couch-2-5k
Add Couch-To-5k training face
2023-11-19 11:44:11 -05:00
Ekaitz Zárraga
735bbc97d7
Merge branch 'main' into couch-2-5k 2023-11-19 15:36:52 +01:00
Ekaitz Zarraga
f77ddc83b8 Resign when the entering LE 2023-11-19 15:31:56 +01:00
Ekaitz Zarraga
30c8da7f55 Fit naming conventions 2023-11-19 15:28:45 +01:00
Wesley Aptekar-Cassels
50e3da11bd
Merge pull request #308 from BrianBinFL/feat/minute-repeater-decimal-face
Add minute repeater decimal face
2023-11-19 01:07:31 -05:00
Wesley Aptekar-Cassels
6cc2b23723
Merge branch 'main' into feat/minute-repeater-decimal-face 2023-11-19 00:56:33 -05: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
Wesley Aptekar-Cassels
1f6409a71c sunrise_sunset_face: Fix use of uninitialized memory.
This was causing a crash in the simulator when setting the location.

Fixes: #198
2023-11-18 23:53:24 -05:00
Wesley Aptekar-Cassels
c4a5cb463e
Merge pull request #276 from hchargois/simulator-volume-slider
Simulator volume slider
2023-11-18 23:17:56 -05:00
Wesley Aptekar-Cassels
3b9fd8b0e9
Merge pull request #302 from LtKeks/Sensor-Watch-bugfix-timer_face-datatype
timer_face - Possibility to set seconds as default values
2023-11-18 23:12:51 -05:00
Wesley Aptekar-Cassels
2b7162c2be
Merge pull request #270 from perw/tuning_tones
new face: Tuning tones
2023-11-18 23:11:56 -05:00
Victor Graf
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
Wesley Aptekar-Cassels
ae6ccfd637
Merge pull request #273 from hchargois/atchar-pos-0
Turn on the funky segment of pos 0 for char '@'
2023-11-18 23:09:17 -05:00
Wesley Aptekar-Cassels
cda66e8c31
Merge pull request #267 from navan93/print-memory-percentages
Print memory percentages
2023-11-18 23:08:30 -05:00
Hugo Chargois
2e9ea8c36f Improve simulator page design 2023-11-19 01:24:57 +01:00
Jose Castillo
0263d9e0c7
Merge pull request #292 from WesleyAC/error-when-no-color
Don't allow building without setting board color.
2023-11-17 12:31:40 -05:00
Christian Buschau
984990fb66
day_one_face: show set date on short alarm button press 2023-11-17 09:11:18 +01:00
Christian Buschau
e8b7985dde
day_one_face: enable quick cycle through settings
This allows the alarm button to be held down in the date settings and
quickly cycle through the dates instead of having to push for each
single increment like in other faces.
2023-11-17 09:11:18 +01:00
Christian Buschau
1022359252
day_one_face: allow years until 2080
This is the same limit introduced in commit 7fd51ca
2023-11-17 09:11:18 +01:00
Christian Buschau
8c7e9fa558
day_one_face: cleanup 2023-11-17 09:11:16 +01:00
Wesley Aptekar-Cassels
1120690e13 Add save_load_face. 2023-11-09 22:22:40 -05:00
Wesley Aptekar-Cassels
691f2fe506 day_night_percentage_face: Clear seconds digits when entering LE mode. 2023-11-09 20:31:56 -05:00
Wesley Aptekar-Cassels
26f63dcaeb day_night_percentage_face: Use PM indicator instead of DA/NI.
This allows for use of the weekday digits for displaying the weekday.
2023-11-09 17:35:58 -05:00
Wesley Aptekar-Cassels
2e8ee9965e day_night_percentage_face: Calculate rise/set/daylen only once per day. 2023-11-09 17:21:35 -05:00
Wesley Aptekar-Cassels
f1d4d4ce89 Add day_night_percentage_face. 2023-11-09 02:34:36 -05:00
Wesley Aptekar-Cassels
73f689e65a Add simple_coin_flip_face. 2023-11-08 19:29:56 -05:00
Wesley Aptekar-Cassels
dcf167a8bf Add solstice_face. 2023-11-06 18:01:44 -05:00
Wesley Aptekar-Cassels
fc8c1fc726 moon_phase_face: Make alarm long-press reset to current day. 2023-11-03 06:34:31 -04:00
Jonathan Glines
f633b7634b Support leading zero representation for 24h clock
Toggle between default behavior and leading zero with long-press of alarm
button on page with 24h setting.
2023-10-29 11:15:50 -04:00
Brian Blakley
9c895817a0 Add minute repeater decimal face 2023-10-24 18:20:54 -04:00
Ekaitz Zarraga
d3d76ed0e7 Add sound to pause/resume button 2023-10-21 15:47:26 +02:00
Ekaitz Zarraga
cde6ae3598 Add Couch-To-5k training face 2023-10-21 01:30:03 +02:00
joeycastillo
67be6affd3 new standard firmware for october boards 2023-10-19 15:49:27 -04:00
LtKeks
ad846f5060 Update timer_face.c
Corrects the data type of the standard values in order to be able to configure seconds as well.
2023-10-15 17:35:36 +02:00
Wesley Aptekar-Cassels
7d353bba1c Set default board color for GH workflow.
I've chosen blue arbitrarily.
2023-10-05 12:42:43 -04:00
madhogs
868fecd248 add compile-time options for all preferences to movement_config 2023-10-02 17:23:11 +01:00
Wesley Aptekar-Cassels
4763568900 movement: default to "instant" led_duration.
This is a matter of personal preference, but "instant" is the behaviour
of the original watch, and seems like the thing more people would
expect. Feel free not to take this commit if you disagree, though.
2023-09-29 22:13:29 -04:00
Wesley Aptekar-Cassels
30195a2619 movement: Add "instant" led_duration option.
This illuminates the LED only for the time that the button is pressed,
and turns it off as soon as it's released, which is the behaviour of the
original watch.

I chose a led_duration of zero to represent "instant" and all bits set
to represent "no LED", which is arbitrary but seemed more sensible to
me.
2023-09-29 22:10:14 -04:00
Dennisman219
2164593484 Leading 0 for hours <12 in 24h mode 2023-09-29 14:17:30 +02:00
Dennisman219
c15b01cd4c Added missing description to header file 2023-09-29 14:16:51 +02:00
Wesley Aptekar-Cassels
c28ba6ef0b Don't allow building without setting board color.
Fixes: #288
2023-09-28 18:29:32 -04:00
Dennisman219
57e9f11a0c Minimal clock face 2023-09-27 22:14:19 +02:00
Jose Castillo
5c94111ea2
Merge pull request #283 from neutralinsomniac/fix_hourly_chime_background
fix signal tunes not firing in background, and move buzzer disable/enable logic into movement
2023-09-24 13:06:19 -04:00
joeycastillo
b162dc0663 use movement_play_signal for default tune (fixes background signal) 2023-09-24 12:41:18 -04:00
Jeremy O'Brien
45f402b4ec move buzzer enabled detection logic into movement for movement_play_signal/tune
this way watch faces don't have to disable/enable the buzzer themselves
before calling movement_play_signal() and movement_play_tune()
2023-09-23 10:56:12 -04:00
Jeremy O'Brien
bfde84f01d fix signal tunes not firing in background, and split out foreground/background chime functions 2023-09-22 07:29:04 -04:00
Hugo Chargois
baadb0b43f Save the selected skin of the simulator in local storage 2023-09-16 02:39:39 +02:00
Hugo Chargois
2e364f4ef9 Add a volume slider in the simulator 2023-09-16 02:39:39 +02:00
joeycastillo
bc9b4ce700 update alternate firmware for new board color 2023-09-13 14:08:52 -04:00
joeycastillo
9cd39cd3e3 add new COLOR flag 2023-09-13 11:40:40 -04:00
Hugo Chargois
ebfeb1f21a Turn on the funky segment of pos 0 for char '@' 2023-09-09 02:22:08 +02:00
Per Waagø
9e88f37ced new face: Tuning tones
Add a new face that plays out tones that can be used as a
reference when tuning musical instruments.
2023-09-06 21:46:31 +02:00
CarpeNoctem
82ed355aba fix two-part bug with decimal seconds introduced during big refactor. 2023-09-06 01:21:26 +10:00
CarpeNoctem
56f76b8c6a Initial commit of French Revolutionary (Decimal) Time face. (french_revolutionary_face) 2023-09-06 00:20:55 +10:00
R. Alex Barbieri
f3c28ede96 add a manual dst toggle
Uses a simplistic set of jump tables to toggle daylight savings on and off.
2023-09-02 14:52:37 -05:00
Navaneeth Bhardwaj
a5abf7ff7a Print memory percentages
this gives better idea of memories used.
2023-09-03 00:20:04 +05:30
joeycastillo
7fd51caa25 support years through 2080 2023-08-27 17:53:17 -04:00
joeycastillo
e4ad0e5567 default year to 2023 2023-08-27 17:53:02 -04:00
joeycastillo
1cb5d00aaf final build of red firmware 2023-08-27 17:52:18 -04:00
joeycastillo
cd9d85e808 update red firmware for shipboards.sh 2023-08-26 11:49:18 -04:00
joeycastillo
d323b79916 new default firmware 2023-08-25 15:44:33 -04:00
joeycastillo
e38f3bbec9 show temperature and battery voltage in low energy mode 2023-08-25 15:44:33 -04:00
joeycastillo
413e4602a7 final gerbers 2023-08-25 13:41:55 -04:00
Konrad Rieck
43e94ca0f2 Watch face for tracking deadlines.
You can enter and monitor up to four different deadlines by providing their respective date and time. The watch face displays the remaining time at matching granularity, ranging from years to seconds.
2023-08-20 22:34:50 +02:00
joeycastillo
fd2c8c2065 add sensor watch lite 2023-08-17 14:35:51 -04:00
Konrad Rieck
0f9bb0bd37 Fixed incorrect conversion from UNIX timestamp to watch_date_time. 2023-08-11 22:26:34 +02:00
mrbrown8
15eeca6b59
Decimal time face (#260)
* Update movement_faces.h

adding decimal_time_face.h to build

* Decimal Time, a new clock face

This face presents the current time as hours and hundredths of an hour.

* add decimal time to Makefile
2023-07-29 08:10:28 -04:00
Jose Castillo
07f150fbec
Merge pull request #253 from Kistelini/counter
Counter face: change sound to non-blocking, add option to deactivate sound
2023-07-29 07:48:16 -04:00
joeycastillo
e5dcc9d1b7 counter face: move beep_on to watch face state 2023-07-29 07:43:51 -04:00
Jose Castillo
2738a8b77a
Merge pull request #258 from analogist/nanosec-fix-profbounds
fix nanosec_face correction_profile bounds from going negative
2023-07-29 07:30:40 -04:00
austenadler
340e5d1a4a
Fix lengthBytesUTF8 not a function (#255)
* Add lengthBytesUTF8 as an exported runtime method

* Also export printErr as a runtime method

---------

Co-authored-by: Austen Adler <agadler@austenadler.com>
2023-07-29 07:25:27 -04:00
Willy Hardy
923112172d
Wyoscan .5 hz watchface (#256)
* initial wyoscan commit

* initial attempt at animation

* kinda working

* visually working but running out of memory

* slower

* little fixes

* add hardware watch blink function

* refine number animation

* remove movement from config for merging

* silence warnings

---------

Co-authored-by: Willy Hardy <whardy@redhat.com>
2023-07-29 07:22:42 -04:00
joeycastillo
1377d36622 silence warnings 2023-07-29 07:03:49 -04:00
joeycastillo
6a69e0a691 prep for red boards 2023-07-29 07:01:19 -04:00
Chris
b147ac0c67 Hi-lo: Update face description
- Remove test code
2023-07-23 15:51:25 +01:00
Chris
739ad64cc1 Hi-lo: Allow flipped board rendering option 2023-07-23 15:51:25 +01:00
Chris
a831ed3336 Hi-lo: Initial game face commit 2023-07-23 15:51:22 +01:00
James Wu
19672edcfb fix settings/nanosec correction_profile bounds 2023-07-20 00:27:37 +00:00
Hein-NonesensE
ed8149a759
Counter face: change sound to non-blocking, add option to deactivate sound 2023-07-04 17:02:31 +02:00
joeycastillo
b49259e4e0 add basic flashlight function 2023-06-29 16:17:19 -04:00
Jose Castillo
05e069ead1
Merge pull request #248 from TheOnePerson/simple-watch-bin-led
simple watch binary light: show current time by flashing the LED as binary code
2023-06-10 11:58:23 -04:00
Jeremy O'Brien
c1580b356d
movement: add custom hourly chime tunes (#209)
* movement: add custom hourly chime tunes

* slightly tweak note timings

* add kim possible ringtone
2023-06-10 11:55:09 -04:00
TheOnePerson
8f7452fd99 simple watch bin led: add functionality of representing the current time as binary code LED flashing. 2023-05-21 08:34:02 +02:00
randogoth
d348482759
geomancy.c warnings fix (#240) 2023-05-18 07:44:50 -04:00
Jose Castillo
9916e75e9b
Merge pull request #247 from TheOnePerson/timer-face
Timer face: fix error with repeating timers
2023-05-18 07:43:39 -04:00
TheOnePerson
45d9b97f07 timer face: fix problem with messed up durations for repeating timers / always beep when starting a timer 2023-05-18 13:10:32 +02:00
TheOnePerson
7331851c77 Merge branch 'main' into timer-face
# Conflicts:
#	movement/make/Makefile
#	movement/movement_faces.h
2023-05-18 09:42:13 +02:00
joeycastillo
798b29f297 rename folder for cross-platform compatibility 2023-05-14 10:41:02 -04:00
joeycastillo
33c2d7dd61
Merge pull request #238 from joeycastillo/randonaut-and-geomancy
Randonaut and geomancy
2023-04-17 21:34:56 -04:00
joeycastillo
d01320e114
Merge pull request #239 from randogoth/randonaut-and-geomancy
deobfuscated code, fixed warnings
2023-04-17 21:16:08 -04:00
randogoth
432de34709 deobfuscated code, fixed warnings 2023-04-16 21:54:26 +03:00
joeycastillo
00541bd9c5 fix most warnings 2023-04-16 11:06:11 -04:00
randogoth
c4da02ca2c Randonaut Watch Face (#233)
* init

* advanced latlon setting

* simple functionality done

* lat lon high precision fwd bwd

* edit toggle

* added readme for branch

* DD DMS conversion & cleanup

* DD to OLC conversion

* olc encoding & decoding

* OLC implementation

* swapped bools for modes, code cleanup

* place name editor

* updated button logic, fixed display

* load and save  places in state array

* todo list

* simplified OLC functions

* geohash conversion functions

* geohash display & digit functions

* todo

* finished geohash implementation

* code display function, defaults, bugfixes

* read/write file/reg logic

* long light in DATA to cancel

* write to registry

* todo

* read & write backup register

* file read/write

* todo

* new more concise button logic, optimizations

* todo

* renamed & cleaned up, fixed button logic

* documentation

* documentation

* LAP mode for all coordinate screens

* faster and more precise geohash algorithm

* updated description

* updated docu

* simple place face

* bugfixes, updated documentation

* init

* meh

* added public functions for OLC and Geohash

* randonauting face

* fix

* display fix

* cleanup

* bugfixes

* bugfix

* added place

* fixed TRNG call

* fixed declaration conflict

* modulo bias filter

* simplified things, chance RNG selection

* fixed button logic, better menus

* cleanup

* documentation

* docu fixes

* original README

* updated place_face

* fallback to register location

* removed pointless freq req

* reset config

* fixed dependency issue

* minor bugfixes

* saved a bit :)

* fix
2023-04-16 11:00:44 -04:00
randogoth
721887de3a Coin & Dice Toss & Geomantic Divination Watch Faces (#235)
* init

* advanced latlon setting

* simple functionality done

* lat lon high precision fwd bwd

* edit toggle

* added readme for branch

* DD DMS conversion & cleanup

* DD to OLC conversion

* olc encoding & decoding

* OLC implementation

* swapped bools for modes, code cleanup

* place name editor

* updated button logic, fixed display

* load and save  places in state array

* todo list

* simplified OLC functions

* geohash conversion functions

* geohash display & digit functions

* todo

* finished geohash implementation

* code display function, defaults, bugfixes

* read/write file/reg logic

* long light in DATA to cancel

* write to registry

* todo

* read & write backup register

* file read/write

* todo

* new more concise button logic, optimizations

* todo

* renamed & cleaned up, fixed button logic

* documentation

* documentation

* LAP mode for all coordinate screens

* faster and more precise geohash algorithm

* updated description

* updated docu

* simple place face

* bugfixes, updated documentation

* init

* meh

* added public functions for OLC and Geohash

* randonauting face

* fix

* display fix

* cleanup

* bugfixes

* bugfix

* added place

* fixed TRNG call

* fixed declaration conflict

* modulo bias filter

* simplified things, chance RNG selection

* fixed button logic, better menus

* cleanup

* documentation

* docu fixes

* init

* basic functions

* all needed static functions done

* progress

* coins and dice done

* progress

* place update

* divination faces functionality done

* better divine_bit

* figure numbers and names

* captions optional

* coin animation

* dice animation & optimizations

* animation

* changed names, documented

* bugfix

* cleanup

* reset config

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-04-16 11:00:08 -04:00
joeycastillo
bfeca93008 silence warnings around morsecalc 2023-04-16 10:56:08 -04:00
joeycastillo
e083f9b386 silence most warnings 2023-04-16 10:49:03 -04:00
joeycastillo
eb71681779 Revert "Coin & Dice Toss & Geomantic Divination Watch Faces (#235)"
This reverts commit 34030bf3e403b2043dcd9f960189d93190dcbb0c.
2023-04-16 10:46:52 -04:00
joeycastillo
00e641c2a7 Revert "Randonaut Watch Face (#233)"
This reverts commit a3fe36f6dbdbde331fb7c10138e4b0c3fa8ad298.
2023-04-16 10:46:44 -04:00
joeycastillo
721cb8386d Merge branch 'main' of https://github.com/joeycastillo/Sensor-Watch 2023-04-16 10:37:14 -04:00
joeycastillo
1acd2b0369 return movement_config to standard list of watch faces 2023-04-16 10:30:49 -04:00
randogoth
a3fe36f6db
Randonaut Watch Face (#233)
* init

* advanced latlon setting

* simple functionality done

* lat lon high precision fwd bwd

* edit toggle

* added readme for branch

* DD DMS conversion & cleanup

* DD to OLC conversion

* olc encoding & decoding

* OLC implementation

* swapped bools for modes, code cleanup

* place name editor

* updated button logic, fixed display

* load and save  places in state array

* todo list

* simplified OLC functions

* geohash conversion functions

* geohash display & digit functions

* todo

* finished geohash implementation

* code display function, defaults, bugfixes

* read/write file/reg logic

* long light in DATA to cancel

* write to registry

* todo

* read & write backup register

* file read/write

* todo

* new more concise button logic, optimizations

* todo

* renamed & cleaned up, fixed button logic

* documentation

* documentation

* LAP mode for all coordinate screens

* faster and more precise geohash algorithm

* updated description

* updated docu

* simple place face

* bugfixes, updated documentation

* init

* meh

* added public functions for OLC and Geohash

* randonauting face

* fix

* display fix

* cleanup

* bugfixes

* bugfix

* added place

* fixed TRNG call

* fixed declaration conflict

* modulo bias filter

* simplified things, chance RNG selection

* fixed button logic, better menus

* cleanup

* documentation

* docu fixes

* original README

* updated place_face

* fallback to register location

* removed pointless freq req

* reset config

* fixed dependency issue

* minor bugfixes

* saved a bit :)

* fix
2023-04-16 10:29:42 -04:00
randogoth
34030bf3e4
Coin & Dice Toss & Geomantic Divination Watch Faces (#235)
* init

* advanced latlon setting

* simple functionality done

* lat lon high precision fwd bwd

* edit toggle

* added readme for branch

* DD DMS conversion & cleanup

* DD to OLC conversion

* olc encoding & decoding

* OLC implementation

* swapped bools for modes, code cleanup

* place name editor

* updated button logic, fixed display

* load and save  places in state array

* todo list

* simplified OLC functions

* geohash conversion functions

* geohash display & digit functions

* todo

* finished geohash implementation

* code display function, defaults, bugfixes

* read/write file/reg logic

* long light in DATA to cancel

* write to registry

* todo

* read & write backup register

* file read/write

* todo

* new more concise button logic, optimizations

* todo

* renamed & cleaned up, fixed button logic

* documentation

* documentation

* LAP mode for all coordinate screens

* faster and more precise geohash algorithm

* updated description

* updated docu

* simple place face

* bugfixes, updated documentation

* init

* meh

* added public functions for OLC and Geohash

* randonauting face

* fix

* display fix

* cleanup

* bugfixes

* bugfix

* added place

* fixed TRNG call

* fixed declaration conflict

* modulo bias filter

* simplified things, chance RNG selection

* fixed button logic, better menus

* cleanup

* documentation

* docu fixes

* init

* basic functions

* all needed static functions done

* progress

* coins and dice done

* progress

* place update

* divination faces functionality done

* better divine_bit

* figure numbers and names

* captions optional

* coin animation

* dice animation & optimizations

* animation

* changed names, documented

* bugfix

* cleanup

* reset config

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-04-16 10:16:10 -04:00
randogoth
ccf44281e7
Dual Timer, a variant of the Stock Stopwatch (#236)
* init

* advanced latlon setting

* simple functionality done

* lat lon high precision fwd bwd

* edit toggle

* added readme for branch

* DD DMS conversion & cleanup

* DD to OLC conversion

* olc encoding & decoding

* OLC implementation

* swapped bools for modes, code cleanup

* place name editor

* updated button logic, fixed display

* load and save  places in state array

* todo list

* simplified OLC functions

* geohash conversion functions

* geohash display & digit functions

* todo

* finished geohash implementation

* code display function, defaults, bugfixes

* read/write file/reg logic

* long light in DATA to cancel

* write to registry

* todo

* read & write backup register

* file read/write

* todo

* new more concise button logic, optimizations

* todo

* renamed & cleaned up, fixed button logic

* documentation

* documentation

* LAP mode for all coordinate screens

* faster and more precise geohash algorithm

* updated description

* updated docu

* simple place face

* bugfixes, updated documentation

* init

* meh

* added public functions for OLC and Geohash

* randonauting face

* fix

* display fix

* cleanup

* bugfixes

* bugfix

* added place

* fixed TRNG call

* fixed declaration conflict

* modulo bias filter

* simplified things, chance RNG selection

* fixed button logic, better menus

* cleanup

* documentation

* docu fixes

* original README

* updated place_face

* fallback to register location

* removed pointless freq req

* init

* dual chronograph

* documented and cleaned up

* unused var warning fix

* swap TC2 with TC3 to avoid conflict

* conflict

* show active when returning to face

* docu

* removed unneeded file

* added remain

* show screen on startup

* simplified mode button
2023-04-16 10:13:51 -04:00
randogoth
2b87623611
Planetary Hours Faces (#234)
* initial setup & test

* simplified solar calulcation function

* Initial Release

* initial setup

* UTC offset fixes

* finished and cleaned up

* renamed faces

* optimizations & astro symbols

* wrapping ruler

* cleanup

* optimizations

* merged latest place_face

* documentation

* fixed faster seconds

* removed place_face from branch

* reset config

---------

Co-authored-by: NN Solex <info@sublunar.space>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-04-16 10:13:21 -04: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
Bernd Plontsch
bfde33c946
Adding Breathing complication (#220)
* Added complication

* Including complication in build configuration

* Clean up

* restore default watch face selection

* Fixed comment

* Remove unused

* Made functions internal

---------

Co-authored-by: Bernd Plontsch <bernd@plontsch@gmail.com>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-04-16 10:04:46 -04:00
Christian Chapman
0a836cecea
Morsecalc refactor (#229)
* Added Morse code based RPN calculator

* added manual and memory register

* fixed morsecalc negative indicator, edited header comment

* adjusted stack display controls

* Fixed warnings. Added calculator token aliasing ability. Added binary shorthand for numeral entry. Extended morse code binary tree.

* ui tweaks

* Update movement_config.h

* silence warning

* Reorganized codebase and simplified morse code reading routines.

* added 'quit if submission is empty' behavior

* reverted rules.mk change for merge into main

* corrected timeout behavior

* consolidated morsecode lib into one file; deleted old mc.c mc.h

* consolidated morsecode lib into one file; deleted old mc.c mc.h

* removed specious null in morsecode bintree string

---------

Co-authored-by: Christian Chapman <user@debian>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-04-16 10:01:03 -04:00
joeycastillo
16a96d16b2 add LIS2DW accelerometer board 2023-04-13 20:57:08 -04:00
joeycastillo
99ad430a01 add kicad stuff to gitignore 2023-04-13 20:55:53 -04:00
joeycastillo
933807b041 organize sensor watch accessory boards 2023-04-13 20:53:53 -04:00
TheOnePerson
e3f76317b5
Time Left Face: Visualize progress in any time interval (#217)
* time left face: initial commit, fully functional

* time left face: typos

* time left face: correct even more typos in documentation

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-03-11 16:40:55 -05:00
Konrad Rieck
84b947766e
Alternative implementation of world clock (#216)
* Implementation of alternative world clock.

* Fixed two minor bugs
- Only start in settings mode on first activation
- Fixed typo in time zone names

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-03-11 16:37:40 -05:00
joeycastillo
7aecc13b62
Merge pull request #221 from TheOnePerson/simulator-add-segment-0-15
Simulator LCD: add tiny element in the lower left corner for the first display position
2023-03-11 16:33:44 -05:00
joeycastillo
7793333ed3
Merge pull request #213 from wryun/fix-cat
Fix cat command
2023-03-11 16:33:13 -05:00
TheOnePerson
b90e997481
Invaders Face (#210)
* invaders face: Initial commit, fully functional so far

* invaders face: silence compiler warning

* invaders face: prevent involuntary restarts when the game is over and save some bytes on flags

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-03-11 16:31:17 -05:00
gugray
9af51de624
Activity face + Chirpy TX (#187)
* chirpy demo face; activity face stub

* activity face WIP: can log, pause and clear

* activity face and chirpy demo: ready to flash to watch

* activity face tweaks

* hour display for hours < 10

* fix: added rogue paused seconds when stopping activity

* LE mode; lower power with 1Hz tick

* fix: midnight is 12

* Documentation in code comments

* fixes from code review by @neutralinsomniac

* chirpy_demo_face option to chirp out nanosec.ini + auto-format

* UI tweaks

* remove erroneously added file (content revoked)

* UI tweaks: return from LE mode; time display vs LAP

* add default loop handler (will enable long-mode-to-first-face)

* reset watch faces to match main branch
2023-03-11 16:27:18 -05:00
TheOnePerson
2d46a9bf9e
Timer Face: Advanced countdown face with presets (#224)
* timer face: initial commit, fully functional

* timer face: show slot number in normal mode

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-03-11 16:26:36 -05:00
thg191
7584f9bf98
discgolf_face initial commit (#207)
* discgolf_face initial commit

* Comment on wrong line

* updated drawing method and added beeps

* Put description in appropriate file, added license

* fixed for loops that didn't cover whole array, long mode press snaps back to default face

---------

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-03-11 16:12:00 -05:00
joeycastillo
b7419866d9
Merge pull request #204 from Jonas-fr/repetition_minute
New face - Repetition Minute, fork of simple clock with an accessibillity feature
2023-03-11 16:08:19 -05:00
joeycastillo
266831cef0
Merge branch 'main' into repetition_minute 2023-03-11 16:06:38 -05:00
joeycastillo
3dafdc4709
Merge pull request #218 from TheOnePerson/fix-interval-face-globals
interval face: make global vars static
2023-03-11 16:05:32 -05:00
joeycastillo
0e2c179e15
Merge pull request #211 from neutralinsomniac/fix-day-one-compile-warning
fix compile warning in day one face
2023-03-11 16:05:20 -05:00
TheOnePerson
45e4bc31c4 timer face: show slot number in normal mode 2023-03-10 22:17:15 +01:00
TheOnePerson
267cdaa222 timer face: initial commit, fully functional 2023-03-06 21:41:48 +01:00
TheOnePerson
739d719e7c simulator: add tiny element in the lower left corner for the first display position. 2023-02-25 15:24:32 +01:00
TheOnePerson
567a21e8a5 interval face: make global vars static 2023-02-20 07:51:45 +01:00
James Haggerty
192d0b0450 Fix cat command
If we ran into a heap that wasn't filled with '\0', fun things.
2023-02-12 20:27:48 +11:00
Jeremy O'Brien
faa860f83d fix compile warning in day one face 2023-02-10 22:30:26 -05:00
Hein-NonesensE
59ff549235
Sensor watch sailing face (#205)
* Update sailing_face.c

Modified sailing_face.

Added features, some of which @niclashoyer already suggested in his initial PR:
- stopwatch-like counter after start signal
- lap counter after start signal
- optional additional sounds at every minute, 30s, 10s countdown
- sound options (no sound, start only, signals only, all)
- maximum starting time up to 10min (instead of 9)
- improved timing, display is no longer delayed by sound

* Update sailing_face.h

Modified sailing_face.

Added features, some of which @niclashoyer already suggested in his initial PR:
- stopwatch-like counter after start signal
- lap counter after start signal
- optional additional sounds at every minute, 30s, 10s countdown
- sound options (no sound, start only, signals only, all)
- maximum starting time up to 10min (instead of 9)
- improved timing, display is no longer delayed by sound
2023-02-10 18:07:53 -06:00
kingannoy
c814c780e3 Allow days in the future
With this small change you can also count down to a important upcoming event!

This is my first time coding in C, so please double check everything! But in the emulator this seemed to work!
2023-02-10 17:08:32 -06:00
joeycastillo
827c3eb4a4 what fresh hell was that? 2023-02-10 16:44:36 -06:00
Jeremy O'Brien
a461e8e8f9 countdown_face: implement holding light to reset the currently edited timer value (and everything below it) 2023-02-10 16:31:24 -06:00
tslil clingman
f571da4346 habit face
Track a single habit, occuring at most once per day, with an eight-day
look back and total count
2023-02-10 16:09:55 -06:00
Ronny Lam
eca75cfb23 Added option to use_iso_8601_weeknumber 2023-02-10 15:18:39 -06:00
joeycastillo
26b1ea51b9 make TOTP face more responsive when swapping between codes 2023-02-08 12:33:50 -05:00
Jonas Termeau
36ff634ced New face - Repetition Minute, fork of simple clock with an accessibility feature added : time reading via beeps 2023-02-02 23:07:24 +01:00
Jeremy O'Brien
a18c285e58 restore old light button behavior
watch faces that handle EVENT_LIGHT_BUTTON_UP but not EVENT_LIGHT_BUTTON_DOWN
probably don't want the default EVENT_LIGHT_BUTTON_DOWN LED activation behavior
2023-01-27 09:43:03 -06:00
joeycastillo
c945f323f4 fix for events firing way too fast 2023-01-27 00:08:36 -06:00
joeycastillo
f66b276dad add hardcoded frequency correction values 2023-01-25 10:37:16 -06:00
joeycastillo
e32f1d1926 rename definition for special edition boards 2023-01-25 10:32:35 -06:00
Jeremy O'Brien
e512b731bb tarot_face: use direct character arrays instead of arrays of pointers to global strings 2023-01-25 10:25:30 -06:00
joeycastillo
8e11285fd9
Merge pull request #180 from joeycastillo/default-handler
Restore long press on MODE to return to first watch face by adding a handler for unhandled events
2023-01-25 10:24:33 -06:00
joeycastillo
4412b5d08f
Merge branch 'main' into default-handler 2023-01-25 09:26:31 -06:00
Jeremy O'Brien
2b22ecc8e4 add default loop handler to all current watch faces 2023-01-25 09:23:50 -06:00
Jeremy O'Brien
3303060c59
ships_face: fix compiler warnings (#186) 2023-01-23 15:26:47 -06:00
TheOnePerson
e8a18864ee
fix fast_tick_enabled behavior in movement (#183) 2023-01-23 15:26:03 -06:00
Konrad Rieck
b5f191a1b7
Minor enhancements for the countdown face (#177)
* minor enhancements for the countdown face

* Changed usage of countdown timer.

- Long button presses have been removed.

- The light button is used to restore the last countdown as well as enter setting mode when pressed again.

- The visual state has been removed from the display.

- The internal states have been renamed to reflect the new logic.

* restore time when countdown finished.

* support for fast forward on long press (untested).

* support for beeps similar to stop watch

* fixed bug wiht display when fast forwarding
2023-01-23 14:18:28 -06:00
Jeremy O'Brien
3cd8e5c47e
tarot: avoid mandatory function call on every tick (#185) 2023-01-23 14:15:57 -06:00
buckket
8d20b46fec
Add ships_bell_face (#182) 2023-01-23 14:15:19 -06:00
Christian Chapman
027e3bb42e
Morse-code based RPN calculator (#164)
* Added Morse code based RPN calculator

* added manual and memory register

* fixed morsecalc negative indicator, edited header comment

* adjusted stack display controls

* Fixed warnings. Added calculator token aliasing ability. Added binary shorthand for numeral entry. Extended morse code binary tree.

* ui tweaks

* Update movement_config.h

* silence warning

Co-authored-by: Christian Chapman <user@debian>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-01-20 19:15:28 -06:00
joeycastillo
7ef2d6541a
Merge pull request #184 from TheOnePerson/alarm-fix-bell-indicator-on-fridays
alarm face: fix bell indicator not showing up on fridays
2023-01-20 15:03:54 -06:00
TheOnePerson
c27b63487b alarm: fix bell indicator not showing up on fridays 2023-01-20 21:54:00 +01:00
joeycastillo
12f2d31f98 typo 2023-01-17 11:05:27 -06:00
joeycastillo
45cd1dcac1 clarify return value notes in template 2023-01-17 11:03:13 -06:00
joeycastillo
3142fccea3 Merge branch 'main' into default-handler 2023-01-17 10:52:42 -06:00
joeycastillo
5163cf1fe1 Revert "never disable buzzer output"
This reverts commit 851d047c818dacc30c86f4d87f33247dcfb0095c.
2023-01-17 08:52:01 -06:00
joeycastillo
a610382f89 fix documentation of default loop handler in template 2023-01-15 09:31:12 -06:00
joeycastillo
9d47eb9a11 handle switch to secondary face in default handler 2023-01-15 09:28:41 -06:00
joeycastillo
ca05567576
Merge pull request #179 from neutralinsomniac/rpn_calculator_fix_compiler_warnings
rpn_calculator: fix compiler warnings
2023-01-14 16:52:15 -05:00
joeycastillo
0ef80b62da add movement_default_loop_handler, test with default watch faces 2023-01-14 14:21:04 -05:00
Jeremy O'Brien
8f4de405ed rpn_calculator: fix compiler warnings 2023-01-14 13:20:38 -05:00
EmilienCourt
9ebea46300
totp : rework and add SHA256/512 (#151)
* totp : rework and add SHA256/512

* totp : comment code

* totp : fix SHA224/SHA384 and examples

* totp : fix bug in totp_face_lfs

* totp : init_totp_record to SHA1

* totp : move TOTP-MCU to TOTP, update README and example

* totp : SHAX, use size_t n instead of harcoded 8

* clarify what to put in TOTP face

Co-authored-by: Emilien <Emilien>
Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-01-14 11:58:03 -05:00
Niclas Hoyer
2e61885070
Add calculator watch face (#111) 2023-01-14 11:51:33 -05:00
joeycastillo
98abdb5c0f
Merge pull request #175 from neutralinsomniac/tarot-add-minor-arcana
tarot: add full tarot deck as an option
2023-01-14 11:49:23 -05:00
Wesley Ellis
17c1b4a354
Merge pull request #176 from neutralinsomniac/alarm-fix-conditional
alarm: fix accidental assignment vs conditional logic
2023-01-13 15:33:16 -05:00
Jeremy O'Brien
e89ff78b10 alarm: fix accidental assignment vs conditional logic 2023-01-13 14:52:09 -05:00
Jeremy O'Brien
3025a73956 tarot: mode long press returns to face 0 2023-01-13 10:56:43 -05:00
Jeremy O'Brien
5e1f772138 tarot: reduce calls to watch_display_string() 2023-01-13 08:06:29 -05:00
Jeremy O'Brien
29d7d5bd40 tarot: add full tarot deck as an option 2023-01-12 22:33:01 -05:00
joeycastillo
4d987eb1f5
Merge pull request #174 from neutralinsomniac/tarot-fix-compiler-warning
tarot: fix compiler warning
2023-01-12 09:21:22 -05:00
Jeremy O'Brien
c029e40a9a tarot: fix compiler warning 2023-01-12 08:35:25 -05:00
joeycastillo
7c85bc5a81
Merge pull request #172 from neutralinsomniac/add-tarot-face-inversion-note
tarot: add card inversion explanation
2023-01-11 21:09:48 -05:00
Jeremy O'Brien
edca75c6f6 tarot: add card inversion explanation 2023-01-11 18:36:13 -05:00
joeycastillo
279954b724
Merge pull request #171 from neutralinsomniac/document_tarot_face
add tarot face documentation as per the new template.h
2023-01-11 16:25:57 -05:00
TheOnePerson
b28d31ba03
Interval timers face (#130)
* 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

* interval face: add initial version

* interval face: fix theoretical problem in helper function

* 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)

Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
2023-01-11 15:31:53 -05: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
TheOnePerson
ca7e704429
Add quick counting through hours, minutes, etc. to set time face. (#131)
* 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
2023-01-11 15:05:43 -05:00
Jeremy O'Brien
7a41c95d81 add tarot face documentation as per the new template.h 2023-01-11 14:55:48 -05:00
joeycastillo
05a539ab52
Merge pull request #169 from neutralinsomniac/tarot-face
Implement tarot card face
2023-01-11 14:25:37 -05:00
joeycastillo
784defcd55 revert tweak to 'world' card 2023-01-11 13:45:11 -05:00
Jeremy O'Brien
e43a43944f tarot: move comment to where it belongs 2023-01-11 13:33:55 -05:00
Jeremy O'Brien
0293daa926 Implement card flipping and arbitrary # of card draws up to 10 2023-01-11 13:24:52 -05:00
joeycastillo
a65d728877 tarot: tweak to display of 'world' card 2023-01-11 12:49:44 -05:00
joeycastillo
dc5290410e tweak some arcana for readability 2023-01-11 12:15:42 -05:00
joeycastillo
caf7689b2e
Merge pull request #170 from strickinato/add-doc-to-template
Add documentation to x_face.h template to encourage more docs
2023-01-11 11:44:44 -05:00
joeycastillo
cfd43a5b84
Merge pull request #168 from neutralinsomniac/remove-unnecessary-conditionals
Remove more unnecessary conditionals
2023-01-11 11:42:52 -05:00
Aaron Strick
d3005eeb5d Add documentation to read me to encourage watch face designers 2023-01-10 21:58:43 -08:00
Jeremy O'Brien
a0524ba4e6 Implement tarot card face 2023-01-10 23:07:43 -05:00
Jeremy O'Brien
8331a54896 Remove more unnecessary conditionals 2023-01-10 21:02:47 -05:00
Andrew Mike
280d8b246a
New watch face: Tally counter (tally_face) (#160)
* 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>
2023-01-10 17:02:41 -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
Raymundo Cassani
fee6145e4d
Add Tachymeter face (#165)
* 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>
2023-01-10 16:43:04 -05:00
gugray
18de75be5a
fixes 161: sets both CCBUF and PERFBUF for correct buzzer tone (#162) 2023-01-10 16:33:29 -05:00
TheOnePerson
d0a3fd2377
Add stock stopwatch face (#140)
* 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>
2023-01-10 16:31:32 -05:00
James Haggerty
529bad306d
RPN Calculator face (#112)
* 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.
2023-01-10 16:15:00 -05:00
joeycastillo
0aa77e27e4
Merge pull request #119 from neutralinsomniac/add_hours_to_countdown_face
Add hours support to the countdown face
2023-01-10 16:14:20 -05:00
joeycastillo
c576f5332d show colon after hours in countdown face 2023-01-10 16:12:15 -05:00
Wesley Ellis
6ee84e7d6b
Merge pull request #159 from neutralinsomniac/remove-unnecessary-conditional
remove unnecessary conditional in simple clock face
2023-01-08 12:53:16 -05:00
Jeremy O'Brien
3c576a83cf remove unnecessary conditional in simple clock face 2023-01-05 06:50:29 -05:00
joeycastillo
ed2d14b18c
Merge pull request #158 from neutralinsomniac/fix-sailing-face-compiler-warnings
fix compiler warnings in sailing face
2023-01-04 09:03:23 -06:00
Jeremy O'Brien
6ad67848d0 fix compiler warnings in sailing face 2023-01-04 09:47:26 -05:00
joeycastillo
851d047c81 never disable buzzer output 2023-01-03 21:24:14 -06:00
joeycastillo
801230cc3a
Merge pull request #106 from niclashoyer/sailing
Add sailing watch face
2022-12-31 11:04:55 -06:00
joeycastillo
283a219783
Merge pull request #126 from ShogoOkamoto/main
append beep sound to counter_face
2022-12-14 11:08:30 -06:00
joeycastillo
0be39a85fc
Merge pull request #149 from slim/main
Week number watch face
2022-12-14 09:40:22 -06:00
joeycastillo
80ce98bc65
Merge pull request #144 from kyleboyle/skin
Adds simulator watch skin toggle for model A158WEA-9
2022-12-05 23:18:26 -06:00
Slim
9cb2d3278a Merge branch 'main' of github.com:joeycastillo/Sensor-Watch into main 2022-12-02 19:53:56 +01: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
26228552cf new standard firmware 2022-11-29 14:51:26 -06:00
joeycastillo
45470d5781 stopwatch: slow down sleep animation 2022-11-29 13:40:03 -06:00
joeycastillo
41d9b00ba6 sunrise/set: return home if no location set 2022-11-29 13:39:14 -06:00
joeycastillo
967da2465a new backer firmware with original lineup 2022-11-29 10:01:47 -06:00
joeycastillo
ef87f44572 deep space now: use standard time 2022-11-28 11:44:12 -06:00
joeycastillo
59260c25de allow setting default LED colors in movement_config 2022-11-28 11:43:51 -06:00
joeycastillo
34d72e3296 time set: allow setting year through 2050 2022-11-28 01:28:02 -06:00
joeycastillo
16048e0c20 keep stopwatch awake while running and on screen 2022-11-28 00:58:25 -06:00
joeycastillo
423c5ec70e address sunrise/set rounding in last 30 seconds of hour (fixes #146) 2022-11-28 00:40:08 -06:00
joeycastillo
444b911e90 fix sunrise/sunset in last 30 seconds of the hour 2022-11-27 17:02:30 -06:00
joeycastillo
9c2c9087bf make stopwatch beep when started/stopped 2022-11-27 16:52:25 -06:00
joeycastillo
5de8a11968 replace temperature sensor with stopwatch 2022-11-27 09:57:25 -06:00
Kyle Boyle
4bbb34992a Adds watch skin toggle to for model A158WEA-9 should one be feeling classy 2022-11-24 18:37:19 -04:00
joeycastillo
852099e1ab
Merge pull request #134 from abhignay/main
Add Sensor board with BMI270 IMU
2022-11-22 08:48:09 -06:00
joeycastillo
e3300cc040
Merge pull request #138 from darigovresearch/main
docs: Adds License to readme
2022-11-22 08:45:53 -06:00
joeycastillo
a209178ac0
Merge pull request #141 from TomHodson/fix_simulated_led_color
Add support for bicolor led in the simulator
2022-11-22 08:43:12 -06:00
joeycastillo
8dbc00c56d
Merge pull request #118 from wryun/separate-emscripten-build-dir
Separate emscripten build directory
2022-11-22 08:37:33 -06:00
Tom Hodson
3377b489c7 remove errant console.log 2022-11-22 14:39:46 +01:00
Tom Hodson
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
Darigov Research
7cc81abce0
docs: Adds License to readme
Would resolve https://github.com/joeycastillo/Sensor-Watch/issues/137 if merged
2022-11-19 19:39:04 +00:00
joeycastillo
2455a922c6
Merge pull request #133 from wryun/set-indicator-on-reactivate
Set bell indicator on reactivating countdown/tomato faces
2022-11-15 11:05:23 -06:00
moonman
567610155a
added new sensor-board with the BMI270 IMU
Added files for a sensor board with the BMI270 IMU, a low-power IMU with pedometer/watch-specific features
2022-11-15 21:43:29 +05:30
James Haggerty
4f66e29b61 Set bell indicator on reactivating countdown/tomato faces
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.
2022-11-15 20:32:53 +11:00
Shogo Okamoto
eff3529b96 append beep sound to counter_face 2022-11-08 22:39:02 +09:00
joeycastillo
c149fef92d
Merge pull request #120 from TheOnePerson/alarm-face-fix-24h-check
alarm-face: fix occasional crash (while checking for active alarms)
2022-11-03 19:29:31 -05:00
TheOnePerson
3c5ac1ee16 alarm-face: fix occasional crash on checking for active alarms, fix 0 vs. 12 h in am/pm mode 2022-11-03 22:32:20 +01:00
James Haggerty
c5776781e0 Add .gitignore for build-sim 2022-11-03 09:32:58 +11:00
Jeremy O'Brien
9d3602220a Add hours support to the countdown face 2022-11-02 12:22:34 -04:00
James Haggerty
f24ded98f0 Fix up build. 2022-11-02 08:28:03 +11:00
James Haggerty
ad6e919107 Separate emscripten build directory
This avoids the need to 'make clean' before you do a simulator build
(or vice-versa).
2022-11-02 06:18:34 +11:00
James Haggerty
b7a461d280
Make the TOTP face use the filesystem for secret storage (#95)
* TOTP using filesystem

* Filesystem: ability to read files line by line
2022-11-01 01:08:05 -05:00
joeycastillo
54495d2d29
Merge pull request #114 from TheOnePerson/alarm-face-indicator-24h
Alarm face: make active alarm indicator show up only when there is an alarm set within the next 24 h
2022-10-31 01:09:13 -05:00
joeycastillo
214234a34f
Merge pull request #115 from neutralinsomniac/use_movement_play_alarm_in_countdown_face
Make countdown face use movement_play_alarm() instead of movement_play_signal()
2022-10-31 01:06:08 -05:00
Jeremy O'Brien
0cef0b0ce2 Make countdown face use movement_play_alarm() instead of movement_play_signal() 2022-10-30 20:35:43 -04:00
TheOnePerson
27111c2d51 alarm-face: make indicator show active alarms in 24h time range and implement UI tweak
- 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
2022-10-30 09:32:20 +01:00
joeycastillo
09f1d02330
Merge pull request #109 from TheOnePerson/auto-fire-long-press
Make movement auto fire long press event
2022-10-29 18:16:29 -05:00
joeycastillo
501d3f8447 make pulsometer face use new EVENT_ALARM_LONG_UP 2022-10-29 18:09:16 -05:00
joeycastillo
425dd77508
Merge pull request #110 from wryun/fix-makefile-parallelism-linux
Fix Linux Makefile parallelism
2022-10-29 17:49:12 -05:00
James Haggerty
d994ce8b48
Make countdown face reset to 0 (#90)
* 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
2022-10-29 17:01:05 -05:00
TheOnePerson
cb678d735a
Merge branch 'main' into auto-fire-long-press 2022-10-26 06:43:47 +02:00
TheOnePerson
cb69a2c181
Add an Alarm face to movement (#96)
* 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>
2022-10-25 21:57:53 -05:00
TheOnePerson
17cd90e72f movement: update comments regarding button events 2022-10-25 21:42:29 +02:00
TheOnePerson
6a8269629d alarm-face: correct am/pm indication and implement some minor tweaks. 2022-10-25 21:28:06 +02:00
James Haggerty
07f439c598 Fix Linux Makefile parallelism
Makefile != bourne shell, I think.

At least on my systems, this was causing a raw -j, which meant
that make had no restriction on its parallelism
(i.e. tried to build everything at once).
2022-10-25 09:24:54 +11:00
joeycastillo
894d3615e9
Merge pull request #103 from wryun/long-press-home-to-settings
Long press of mode on home screen goes to settings
2022-10-23 15:07:35 -05:00
joeycastillo
5c1e717034 make this an if/then to please emscripten 2022-10-23 15:05:28 -05:00
joeycastillo
46ac8defdc disable settings hiding by default 2022-10-23 14:59:57 -05:00
TheOnePerson
cdd9f737e6 alarm face: adjust quick cycling logic to new movement behavior regarding long press event 2022-10-23 13:08:22 +02:00
TheOnePerson
1a80003775 Movement: implement auto firing of long press events and introduce long up event. (Also re-implement alarm_enabled and alarm_note) 2022-10-23 13:07:32 +02:00
Niclas Hoyer
732a1caffe add sailing watch face 2022-10-23 00:27:32 +02:00
joeycastillo
f8f0ce479d
Merge pull request #105 from niclashoyer/fix_schedule
Fix scheduled tasks scheduling another task
2022-10-22 13:22:46 -05:00
joeycastillo
b56c60868e allow watch faces to schedule tasks from background 2022-10-22 13:16:46 -05:00
Niclas Hoyer
86f34b3653 fix scheduled tasks scheduling another task 2022-10-21 01:10:12 +02:00
David Singleton
dfb928b9d6
Adds a rate meter watchface (#101) 2022-10-18 23:30:05 -05:00
James Haggerty
b51f7b6f36 Long press of mode on home screen goes to settings
This also changes the default rotation so you don't see the settings
screens.
2022-10-19 10:30:59 +11:00
joeycastillo
5bd0aafc24
Merge pull request #94 from wryun/long-press-home-default
Long press mode button to return to first watch face + fix lag when watch face changes
2022-10-15 08:52:34 -05:00
joeycastillo
1bb656db91 use watch_face_changed property 2022-10-12 00:20:11 -05:00
joeycastillo
f89cecc56a document return value of watch_face_loop 2022-10-11 23:53:02 -05:00
joeycastillo
957f97ffad no need to set this (set in movement_move_to_face) 2022-10-11 23:40:19 -05:00
joeycastillo
4de51740fb don't sleep on watch face change 2022-10-11 23:14:59 -05:00
joeycastillo
4d860f482e
Merge pull request #93 from wryun/make-starter-proj-work-in-simulator
Make starter project work in simulator
2022-10-11 22:14:13 -05:00
joeycastillo
f79741a85f add delay_ms function for simulator 2022-10-11 22:11:58 -05:00
joeycastillo
b399f4ca45 only include watch_main_loop.h in simulator builds 2022-10-11 22:06:02 -05:00
James Haggerty
79ff361f06 Make long press mode go back to face 0 instead of next face 2022-10-12 13:35:08 +11:00
James Haggerty
be1f3d3631 Make starter project work in simulator
Use the higher abstraction level sleeping.
2022-10-12 11:59:43 +11:00
joeycastillo
e36b305379
Merge pull request #87 from wryun/readme-movement
Mention movement in the README (and link to website)
2022-10-11 19:47:40 -05:00
James Haggerty
96e575a5d5 Mention movement in the README (and link to website)
I know this is mostly going to be in the website, but I was initially
confused about how to get things going, and it seemed worth
having some simple 'getting started' here.
2022-10-11 21:19:55 +11:00
Joey Castillo
95f2f25ee6 implement stubs to make simulator build happy 2022-10-09 22:58:42 -05:00
Joey Castillo
48160e8a47 restore default watch faces (oops) 2022-10-09 22:54:36 -05:00
Joey Castillo
5bb058f585 add watch face for frequency correction and measurement 2022-10-09 22:50:31 -05:00
joeycastillo
33dec21cf1
Merge pull request #86 from michaelgruenewald/patch-1
Fix changed files detection in Make
2022-10-08 19:56:26 -05:00
Michael Gruenewald
10d4166986 Disable all built-in Make rules 2022-10-08 22:23:30 +02:00
Michael Gruenewald
1138d4d80c Enable dependency files for the emscripten build 2022-10-08 13:52:00 +02:00
Michael Grünewald
866b5a47d6
Fix DEPFILES 2022-10-06 23:09:59 +02:00
Joey Castillo
e6784339e0 add script for bulk flashing boards 2022-09-16 22:54:36 -05:00
Wesley Ellis
e2ab6cef6d
Merge pull request #84 from jackbondpreston/main
add support for multiple TOTP keys
2022-09-04 12:56:42 -04:00
Jack Bond-Preston
8b3c02ace5
add support for multiple TOTP keys 2022-08-29 01:28:19 +01:00
Joey Castillo
7fc4395298 add watch_reset_to_bootloader function (resolves #81) 2022-08-14 15:23:32 -05:00
473 changed files with 397408 additions and 15882 deletions

View File

@ -1,6 +1,4 @@
FROM ubuntu:22.10 FROM ubuntu:24.04
# TODO: install emscripten (https://emscripten.org/docs/getting_started/downloads.html)
# TODO: Clean this up once buildkit is supported gracefully in devcontainers # TODO: Clean this up once buildkit is supported gracefully in devcontainers
# https://github.com/microsoft/vscode-remote-release/issues/1409 # https://github.com/microsoft/vscode-remote-release/issues/1409
@ -27,7 +25,9 @@ RUN apt-get update \
# ca certs need to be available for fetching git submodules # ca certs need to be available for fetching git submodules
ca-certificates \ ca-certificates \
# python is used to convert binaries to uf2 files # python is used to convert binaries to uf2 files
python3 python-is-python3 python3 python-is-python3 \
# emscripten for building simulator
emscripten
# Download and verify both x86-64 and aarch64 toolchains. This is unfortunate and # Download and verify both x86-64 and aarch64 toolchains. This is unfortunate and
# slows down the build, but it's a clean-ish option until buildkit can be used. # slows down the build, but it's a clean-ish option until buildkit can be used.
@ -47,4 +47,4 @@ RUN /bin/sh -c 'set -ex && \
fi' fi'
RUN rm $X86_64_TOOLCHAIN_FILENAME RUN rm $X86_64_TOOLCHAIN_FILENAME
RUN rm $AARCH64_TOOLCHAIN_FILENAME RUN rm $AARCH64_TOOLCHAIN_FILENAME

View File

@ -6,7 +6,10 @@ on:
branches-ignore: branches-ignore:
- gh-pages - gh-pages
jobs: env:
COLOR: BLUE
jobs:
build: build:
container: container:
image: ghcr.io/armmbed/mbed-os-env:latest image: ghcr.io/armmbed/mbed-os-env:latest
@ -26,7 +29,7 @@ jobs:
run: make run: make
working-directory: 'movement/make' working-directory: 'movement/make'
- name: Upload UF2 - name: Upload UF2
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: watch.uf2 name: watch.uf2
path: movement/make/build/watch.uf2 path: movement/make/build/watch.uf2
@ -44,12 +47,12 @@ jobs:
run: emmake make run: emmake make
working-directory: 'movement/make' working-directory: 'movement/make'
- name: Archive simulator build - name: Archive simulator build
working-directory: 'movement/make/build' working-directory: 'movement/make/build-sim'
run: | run: |
cp watch.html index.html cp watch.html index.html
tar -czf simulator.tar.gz index.html watch.wasm watch.js tar -czf simulator.tar.gz index.html watch.wasm watch.js
- name: Upload simulator build - name: Upload simulator build
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: simulator.tar.gz name: simulator.tar.gz
path: movement/make/build/simulator.tar.gz path: movement/make/build-sim/simulator.tar.gz

10
.gitignore vendored
View File

@ -1,4 +1,5 @@
**/build/ **/build/
**/build-sim/
*.b#* *.b#*
*.bin *.bin
*.d *.d
@ -16,4 +17,11 @@
.idea/ .idea/
.vs .vs
.vscode .vscode
docs/ docs/
*.kicad_sch-bak
*-backups/
*.bak
_autosave*
fp-info-cache
.~*
*.plan

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1 @@
(version 1)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,78 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": false,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 1.0
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "0021020_ffffffff",
"zone_display_mode": 1
},
"meta": {
"filename": "OSO-SWAT-B1.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View File

@ -0,0 +1,692 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.0,
"height": 0.5,
"width": 0.5
},
"silk_line_width": 0.12,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.508
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [
"clearance|-5625900|11061900|75982c35-ff0f-49b9-9689-fa686b50f581|794ce734-e263-448b-83cd-a968d937aa77",
"clearance|-5625900|11290100|2160b495-17e4-4702-974c-8dfae747fab3|794ce734-e263-448b-83cd-a968d937aa77",
"clearance|-5842000|10426500|e57f3b3a-4723-4e07-8171-742af76c848c|794ce734-e263-448b-83cd-a968d937aa77",
"clearance|140899579|112414621|2160b495-17e4-4702-974c-8dfae747fab3|794ce734-e263-448b-83cd-a968d937aa77",
"clearance|9127300|23236100|e57f3b3a-4723-4e07-8171-742af76c848c|794ce734-e263-448b-83cd-a968d937aa77",
"clearance|9343400|23871500|75982c35-ff0f-49b9-9689-fa686b50f581|794ce734-e263-448b-83cd-a968d937aa77",
"clearance|9343400|24099700|2160b495-17e4-4702-974c-8dfae747fab3|794ce734-e263-448b-83cd-a968d937aa77",
"copper_edge_clearance|-11025479|-5628081|37ab839f-4d7b-4245-953f-2634f5afcffb|e329256e-bdf0-4014-9891-c83b43b0f3d7",
"copper_edge_clearance|-11213318|-5628081|ba19627a-6a39-44f8-902b-f787bac11df5|9c17f86d-3c3a-47b5-8457-2cbc72af8eb6",
"copper_edge_clearance|-11301518|6548250|1dcdbe51-f435-4a4a-bccc-6fd33aa2d9ee|1699a332-384d-49ae-bcfb-3d1fb593020d",
"copper_edge_clearance|-11312540|5972231|24501187-692e-44b2-9405-3e6564df4c24|1699a332-384d-49ae-bcfb-3d1fb593020d",
"copper_edge_clearance|-11419521|-4541378|37ab839f-4d7b-4245-953f-2634f5afcffb|6f8f709d-15fc-456e-97fe-38f64c22fb50",
"copper_edge_clearance|-11481144|-4556784|37ab839f-4d7b-4245-953f-2634f5afcffb|9c17f86d-3c3a-47b5-8457-2cbc72af8eb6",
"copper_edge_clearance|-11551827|4604698|9b59854a-c816-42da-81ee-a2a1bc1d81e9|4ed284a8-64f0-4233-b5a8-d1d2d5ac4542",
"copper_edge_clearance|-11697669|4241800|9b59854a-c816-42da-81ee-a2a1bc1d81e9|ae8ee581-2a39-472b-ae6f-d3550afdaa82",
"copper_edge_clearance|-11811379|4241800|9b59854a-c816-42da-81ee-a2a1bc1d81e9|0407acb5-5db7-4b9a-9b18-8424a1311eac",
"copper_edge_clearance|-11913368|3272640|df12fcbd-7579-42a9-996a-a2152d1dfa93|1699a332-384d-49ae-bcfb-3d1fb593020d",
"copper_edge_clearance|-12200000|-2757631|827ceb97-2070-461e-84b4-63295916a7c1|9c17f86d-3c3a-47b5-8457-2cbc72af8eb6",
"copper_edge_clearance|-5848631|11706250|90708b84-5e3e-4b75-a7be-07232ff20bef|2160b495-17e4-4702-974c-8dfae747fab3",
"copper_edge_clearance|-6362618|11433400|70a3d0de-ad3a-499c-b9e3-fa0bf3b8302b|2160b495-17e4-4702-974c-8dfae747fab3",
"copper_edge_clearance|-9549488|8443408|103df901-4048-4b74-a297-d384d6607268|6d7d4c39-58a0-4206-abf9-27e21e78543d",
"copper_edge_clearance|11236300|6021831|ab1d8d3e-b421-491e-b102-8b655f5b49b6|0251fd1d-3d1a-41b6-b0f5-efb6d578fc1b",
"copper_edge_clearance|11416625|4717601|d8854a48-2068-440c-a460-cfd915d43f01|60ded8d5-f434-49a2-ac94-690eea4ff2fd",
"copper_edge_clearance|11479052|4729327|d8854a48-2068-440c-a460-cfd915d43f01|0251fd1d-3d1a-41b6-b0f5-efb6d578fc1b",
"copper_edge_clearance|11629941|3925941|d8854a48-2068-440c-a460-cfd915d43f01|33a7437b-1cb3-4152-981e-eef21bef09b2",
"copper_edge_clearance|11686900|3622668|6ec0def0-d080-4810-ad42-53efa264a14a|0251fd1d-3d1a-41b6-b0f5-efb6d578fc1b",
"copper_edge_clearance|134811929|97497353|9405bec8-9b85-4b22-873c-30ac8cf07680|9c17f86d-3c3a-47b5-8457-2cbc72af8eb6",
"copper_edge_clearance|134827810|105366321|9b59854a-c816-42da-81ee-a2a1bc1d81e9|ae8ee581-2a39-472b-ae6f-d3550afdaa82",
"copper_edge_clearance|135044335|96567737|37ab839f-4d7b-4245-953f-2634f5afcffb|9c17f86d-3c3a-47b5-8457-2cbc72af8eb6",
"copper_edge_clearance|135212939|107096752|24501187-692e-44b2-9405-3e6564df4c24|1699a332-384d-49ae-bcfb-3d1fb593020d",
"copper_edge_clearance|140162861|112557921|70a3d0de-ad3a-499c-b9e3-fa0bf3b8302b|2160b495-17e4-4702-974c-8dfae747fab3",
"copper_edge_clearance|140676848|112830771|90708b84-5e3e-4b75-a7be-07232ff20bef|2160b495-17e4-4702-974c-8dfae747fab3",
"copper_edge_clearance|158004531|105853848|d8854a48-2068-440c-a460-cfd915d43f01|0251fd1d-3d1a-41b6-b0f5-efb6d578fc1b",
"copper_edge_clearance|158155420|105050462|d8854a48-2068-440c-a460-cfd915d43f01|33a7437b-1cb3-4152-981e-eef21bef09b2",
"copper_edge_clearance|158212379|104747189|6ec0def0-d080-4810-ad42-53efa264a14a|0251fd1d-3d1a-41b6-b0f5-efb6d578fc1b",
"copper_edge_clearance|26385925|17527201|d8854a48-2068-440c-a460-cfd915d43f01|60ded8d5-f434-49a2-ac94-690eea4ff2fd",
"copper_edge_clearance|26599241|16735541|d8854a48-2068-440c-a460-cfd915d43f01|33a7437b-1cb3-4152-981e-eef21bef09b2",
"copper_edge_clearance|26656200|16432268|6ec0def0-d080-4810-ad42-53efa264a14a|0251fd1d-3d1a-41b6-b0f5-efb6d578fc1b",
"copper_edge_clearance|3157921|17051400|9b59854a-c816-42da-81ee-a2a1bc1d81e9|0407acb5-5db7-4b9a-9b18-8424a1311eac",
"copper_edge_clearance|3271631|17051400|9b59854a-c816-42da-81ee-a2a1bc1d81e9|ae8ee581-2a39-472b-ae6f-d3550afdaa82",
"copper_edge_clearance|3417473|17414298|9b59854a-c816-42da-81ee-a2a1bc1d81e9|4ed284a8-64f0-4233-b5a8-d1d2d5ac4542",
"copper_edge_clearance|3488156|8252816|37ab839f-4d7b-4245-953f-2634f5afcffb|9c17f86d-3c3a-47b5-8457-2cbc72af8eb6",
"copper_edge_clearance|3549779|8268222|37ab839f-4d7b-4245-953f-2634f5afcffb|6f8f709d-15fc-456e-97fe-38f64c22fb50",
"copper_edge_clearance|3667782|19357850|1dcdbe51-f435-4a4a-bccc-6fd33aa2d9ee|1699a332-384d-49ae-bcfb-3d1fb593020d",
"copper_edge_clearance|3943821|7181519|37ab839f-4d7b-4245-953f-2634f5afcffb|e329256e-bdf0-4014-9891-c83b43b0f3d7",
"copper_edge_clearance|5419812|21253008|103df901-4048-4b74-a297-d384d6607268|6d7d4c39-58a0-4206-abf9-27e21e78543d",
"copper_edge_clearance|9120669|24515850|90708b84-5e3e-4b75-a7be-07232ff20bef|2160b495-17e4-4702-974c-8dfae747fab3",
"hole_clearance|-1901316|10712400|5773b5d8-0592-418a-8b1a-2395e8e7ee4d|8f6b6709-2bcb-4f68-8ec9-e57808459ee1",
"hole_clearance|-2622600|10712400|ba29c963-2b77-4401-ad90-4e23ee1d6e9c|8f6b6709-2bcb-4f68-8ec9-e57808459ee1",
"hole_clearance|143902879|111836921|ba29c963-2b77-4401-ad90-4e23ee1d6e9c|8f6b6709-2bcb-4f68-8ec9-e57808459ee1",
"hole_clearance|144624163|111836921|5773b5d8-0592-418a-8b1a-2395e8e7ee4d|8f6b6709-2bcb-4f68-8ec9-e57808459ee1",
"hole_clearance|155058479|99784721|397c6a58-ff1e-44da-82fc-0d7c0bb88582|8bf6d62b-e48a-41ef-9a23-e6b6fdf2c68e",
"hole_clearance|23502300|11469800|397c6a58-ff1e-44da-82fc-0d7c0bb88582|8bf6d62b-e48a-41ef-9a23-e6b6fdf2c68e",
"hole_clearance|8533000|-1339800|397c6a58-ff1e-44da-82fc-0d7c0bb88582|8bf6d62b-e48a-41ef-9a23-e6b6fdf2c68e",
"silk_edge_clearance|19977700|24822100|cb682c98-1447-4c14-8bbb-c7d05b378a4b|3b10a40e-0c8d-4715-81ca-4ad903851be3",
"silk_edge_clearance|5008400|12012500|cb682c98-1447-4c14-8bbb-c7d05b378a4b|3b10a40e-0c8d-4715-81ca-4ad903851be3",
"silk_over_copper|10883000|-539800|80a33098-6716-495a-a93c-33dbe31233aa|800b65a4-e777-43c7-97b8-d5ee87069507",
"silk_over_copper|151533879|113137021|cb682c98-1447-4c14-8bbb-c7d05b378a4b|3b10a40e-0c8d-4715-81ca-4ad903851be3",
"silk_over_copper|155708479|100584721|2fda1c1e-3a0c-47d3-b865-8d366d04b31e|397c6a58-ff1e-44da-82fc-0d7c0bb88582",
"silk_over_copper|157408479|100584721|80a33098-6716-495a-a93c-33dbe31233aa|800b65a4-e777-43c7-97b8-d5ee87069507",
"silk_over_copper|5008400|12012500|cb682c98-1447-4c14-8bbb-c7d05b378a4b|3b10a40e-0c8d-4715-81ca-4ad903851be3",
"silk_over_copper|5569544|6635800|17bb032d-f3fc-4d20-b54b-d09f9e6a51f2|ba29c963-2b77-4401-ad90-4e23ee1d6e9c",
"silk_over_copper|9183000|-539800|2fda1c1e-3a0c-47d3-b865-8d366d04b31e|397c6a58-ff1e-44da-82fc-0d7c0bb88582",
"solder_mask_bridge|-1382000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-1382000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-2088000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-2088000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-2088000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-2449713|-5391100|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-2620900|-5391100|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-2794000|-5564200|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-2794000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-2794000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-3500000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-3500000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-3500000|-6914000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-3594300|11848900|c7e2124d-111c-474c-9df5-4a89441062c0|e57f3b3a-4723-4e07-8171-742af76c848c",
"solder_mask_bridge|-4206000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-4206000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-4206000|-6970000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-4912000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-4912000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-4912000|-6899000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-5618000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-5618000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-5618000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-5625900|11290100|794ce734-e263-448b-83cd-a968d937aa77|2160b495-17e4-4702-974c-8dfae747fab3",
"solder_mask_bridge|-6324000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-6324000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-676000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-676000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-7030000|-5435600|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-7030000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-7030000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-7736000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-7736000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-7736000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-8442000|-5511200|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-8442000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-8442000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|-9148000|-5603987|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|-9148000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|1442000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|1442000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|2148000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|2148000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|2148000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|2772369|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|2854000|-5581631|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|2854000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|30000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|30000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|3560000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|3560000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|3560000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|4185600|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|4266000|-5580400|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|4266000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|4972000|-5435600|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|4972000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|4972000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|5678000|-5399006|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|5678000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|5678000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|6384000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|6384000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|7090000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|7090000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|736000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|736000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|7796000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|7796000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|8502000|-5500000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|9a2ed2e4-4b3f-462c-a389-8ff99b31478a",
"solder_mask_bridge|8502000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"solder_mask_bridge|9208000|-6250000|2027bcbf-cb36-4548-b6f0-b9b56bb58ef7|c43dae57-486d-4927-8a8c-b77d4dfdd0c3",
"starved_thermal|1631000|-3213100|d88fe181-a965-45bb-b61b-0e5d5d101beb|79777112-3e43-419c-996d-3c67a3aede7b|F.Cu",
"starved_thermal|16600300|9596500|d88fe181-a965-45bb-b61b-0e5d5d101beb|79777112-3e43-419c-996d-3c67a3aede7b|F.Cu",
"starved_thermal|24260900|9888600|d88fe181-a965-45bb-b61b-0e5d5d101beb|c8fabca9-57b7-4d36-85be-53fc68f72bc5|F.Cu",
"starved_thermal|9291600|-2921000|d88fe181-a965-45bb-b61b-0e5d5d101beb|c8fabca9-57b7-4d36-85be-53fc68f72bc5|F.Cu"
],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "ignore",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "ignore",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "warning",
"starved_thermal": "error",
"text_height": "ignore",
"text_thickness": "ignore",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.127,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.127,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.127,
"min_via_annular_width": 0.049999999999999996,
"min_via_diameter": 0.39999999999999997,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.127,
0.254
],
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.5588,
"drill": 0.3048
}
],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "error",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "OSO-SWAT-B1.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.127,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.25,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.127,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "gnd",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.254,
"via_diameter": 0.5588,
"via_drill": 0.3048,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.127,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "power",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.254,
"via_diameter": 0.5588,
"via_drill": 0.3048,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "gnd",
"pattern": "GND"
},
{
"netclass": "power",
"pattern": "VCC"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "empty.kicad_wks",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"3048f5e8-34bb-46da-8fa5-8c5aad2586f2",
""
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,267 @@
(footprint "CASIO-F91W-OUTLINE-USB" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0 0) (layer "F.SilkS")
(effects (font (size 1.27 1.27) (thickness 0.15)))
(tstamp b7c4d76f-8309-4968-8dad-afa9c7124619)
)
(fp_text value "" (at 0 0) (layer "F.Fab")
(effects (font (size 1.27 1.27) (thickness 0.15)))
(tstamp bdcefaed-5bfc-48d4-b5cd-0f76c5176943)
)
(fp_poly (pts
(xy -3.5943 11.8489)
(xy -4.956585 11.8489)
(xy -5.3719 11.589328)
(xy -5.3719 11.2901)
(xy -5.6259 11.2901)
(xy -5.6259 11.0619)
(xy -5.3719 11.0619)
(xy -5.3719 10.4265)
(xy -5.9815 10.4265)
(xy -5.9815 8.9791)
(xy -3.5943 8.9791)
) (layer "B.Cu") (width 0) (fill solid) (tstamp 2a655522-24e4-40f0-91bc-921b884c371a))
(fp_poly (pts
(xy -3.5943 11.8489)
(xy -4.956585 11.8489)
(xy -5.3719 11.589328)
(xy -5.3719 10.4265)
(xy -5.9815 10.4265)
(xy -5.9815 8.9791)
(xy -3.5943 8.9791)
) (layer "B.Mask") (width 0) (fill solid) (tstamp 65d46b28-bd2e-47e5-9cbd-7f956466ec9a))
(fp_line (start -8.617081 -9.831118) (end -8.617081 -9.5376) (layer "Edge.Cuts") (width 0.025) (tstamp 009bcd8a-cbe6-4a53-8940-f851d0b8af9d))
(fp_line (start 3.65 -12.19444) (end 4.778809 -12.19444) (layer "Edge.Cuts") (width 0.025) (tstamp 0154ce95-81b2-493b-b3e3-87cae8112aa5))
(fp_line (start 8.19084 10.129768) (end 7.741568 10.483931) (layer "Edge.Cuts") (width 0.025) (tstamp 03796222-e046-4c43-9c4a-09c3b5e6a753))
(fp_line (start -11.301518 6.54825) (end -11.31254 5.972231) (layer "Edge.Cuts") (width 0.025) (tstamp 04aa8960-b2eb-43cb-a5de-63d7ddd01f4d))
(fp_line (start -11.913368 3.27264) (end -12.2 2.663568) (layer "Edge.Cuts") (width 0.025) (tstamp 0feb6166-3cd9-42ab-8e26-0d0c2323a780))
(fp_line (start 5.283181 11.96119) (end 4.747131 12.185809) (layer "Edge.Cuts") (width 0.025) (tstamp 1b0a6f34-1223-4cce-8abb-4c8b1e9957a7))
(fp_line (start -5.789368 -11.731418) (end -6.293709 -11.468231) (layer "Edge.Cuts") (width 0.025) (tstamp 2231f3bb-72cc-4f03-899d-1a78e75cb02e))
(fp_line (start 8.6263 9.75909) (end 8.19084 10.129768) (layer "Edge.Cuts") (width 0.025) (tstamp 24d20d78-6ace-42ed-9ae5-dc7b9852d4a1))
(fp_line (start 11.128809 -6.857309) (end 10.98964 -6.857309) (layer "Edge.Cuts") (width 0.025) (tstamp 27c8be74-9b82-4ae2-bdc8-aad7ac06d7ee))
(fp_line (start 7.741568 10.483931) (end 7.27855 10.82155) (layer "Edge.Cuts") (width 0.025) (tstamp 29e619e8-1749-4fc4-bf29-4cfd56f01a0c))
(fp_line (start -6.86425 11.1385) (end -7.349309 10.82155) (layer "Edge.Cuts") (width 0.025) (tstamp 2b0f7602-ac60-4ea7-900e-a8c7f0313230))
(fp_line (start -5.273981 -11.973968) (end -5.789368 -11.731418) (layer "Edge.Cuts") (width 0.025) (tstamp 312d07b3-3a5a-4c94-b746-3e9b7b1d3629))
(fp_line (start 11.222509 6.748068) (end 11.00755 7.071918) (layer "Edge.Cuts") (width 0.025) (tstamp 35156bcd-4430-4cf2-a645-ff5773aa3b50))
(fp_line (start 8.39615 -9.988218) (end 7.927618 -10.371281) (layer "Edge.Cuts") (width 0.025) (tstamp 3c8c7fe3-8c88-4d16-b817-444a95d2cca9))
(fp_line (start 7.443931 -10.73374) (end 6.9437 -11.075468) (layer "Edge.Cuts") (width 0.025) (tstamp 41046e69-0ccb-4b72-9d2d-0a0a309d2d8a))
(fp_line (start -4.777868 12.185809) (end -5.31944 11.95705) (layer "Edge.Cuts") (width 0.025) (tstamp 43fec330-a4fa-4f3b-a95f-348bb52cb539))
(fp_line (start -5.848631 11.70625) (end -6.362618 11.4334) (layer "Edge.Cuts") (width 0.025) (tstamp 443f924b-f2a9-42d4-8c0d-9b514c5bab79))
(fp_line (start 11.71174 -5.818281) (end 11.430609 -6.34469) (layer "Edge.Cuts") (width 0.025) (tstamp 47c69dc8-2dec-4ed7-b646-9e2e4cfd3ba9))
(fp_line (start 7.927618 -10.371281) (end 7.443931 -10.73374) (layer "Edge.Cuts") (width 0.025) (tstamp 482ea094-8fd9-4608-9680-0543c0c5d4a1))
(fp_line (start 11.9694 -5.27944) (end 11.71174 -5.818281) (layer "Edge.Cuts") (width 0.025) (tstamp 49239529-b229-4492-a369-da1e44d5a2d6))
(fp_line (start 5.804081 11.71039) (end 5.283181 11.96119) (layer "Edge.Cuts") (width 0.025) (tstamp 4dbe5863-0724-47b7-b311-ee2e284b68ae))
(fp_line (start 12.199568 -4.7241) (end 11.9694 -5.27944) (layer "Edge.Cuts") (width 0.025) (tstamp 514b417d-e700-4675-a9d3-a8db0593d565))
(fp_line (start 12.199568 2.76969) (end 12.199568 -4.7241) (layer "Edge.Cuts") (width 0.025) (tstamp 560e0d83-d513-4960-a4bf-22a0af5792a5))
(fp_line (start -1.55 -12.19444) (end 1.55 -12.19444) (layer "Edge.Cuts") (width 0.025) (tstamp 58d98501-a1e6-4ab2-ab59-75275ba61cd1))
(fp_line (start -4.747559 -12.19444) (end -5.273981 -11.973968) (layer "Edge.Cuts") (width 0.025) (tstamp 5b4bdb8d-5687-49c7-81af-7455f47eca30))
(fp_line (start 6.801768 11.1385) (end 6.309818 11.43615) (layer "Edge.Cuts") (width 0.025) (tstamp 5d3ef5a6-5414-4e5b-83d9-4e599e571776))
(fp_line (start -6.293709 -11.468231) (end -6.785659 -11.18159) (layer "Edge.Cuts") (width 0.025) (tstamp 62e9fbd1-97fa-4320-82c8-0f4501efadcf))
(fp_line (start 5.343809 -11.954659) (end 4.778809 -12.19444) (layer "Edge.Cuts") (width 0.025) (tstamp 6bbd598f-2486-453b-8f3e-36277a686802))
(fp_line (start -10.761331 -7.05574) (end -11.012131 -7.05574) (layer "Edge.Cuts") (width 0.025) (tstamp 6f623670-2779-4f91-8fee-5110438e0707))
(fp_line (start -11.22435 -6.79254) (end -11.213318 -5.628081) (layer "Edge.Cuts") (width 0.025) (tstamp 7194db6f-b7d2-4285-9be7-14edbec20235))
(fp_line (start 8.8468 -9.34055) (end 8.8468 -9.5872) (layer "Edge.Cuts") (width 0.025) (tstamp 76f0a9a6-d36d-4a35-bd40-bff7d406c29f))
(fp_line (start 11.00755 7.071918) (end 10.76914 7.071918) (layer "Edge.Cuts") (width 0.025) (tstamp 78be12ba-a40a-4d2c-adf6-5fb4fd6adc2d))
(fp_line (start 6.42694 -11.393809) (end 5.893659 -11.687331) (layer "Edge.Cuts") (width 0.025) (tstamp 79bfb54b-a13b-4d7f-a058-5dace532d57b))
(fp_line (start -8.180268 -10.199068) (end -8.617081 -9.831118) (layer "Edge.Cuts") (width 0.025) (tstamp 8dd7731c-218a-42aa-8e67-c551a54ec377))
(fp_line (start 11.6869 3.622668) (end 11.2363 6.021831) (layer "Edge.Cuts") (width 0.025) (tstamp 8df923cd-972d-45cd-860b-f258d8fc5a0c))
(fp_line (start 8.6263 9.55375) (end 8.6263 9.75909) (layer "Edge.Cuts") (width 0.025) (tstamp 90f111da-b8f7-441e-8e6a-1660de237bb1))
(fp_line (start -11.71355 -3.627168) (end -11.213318 -5.628081) (layer "Edge.Cuts") (width 0.025) (tstamp 92053ab6-f46c-464c-a274-e247ca0a617a))
(fp_line (start -7.349309 10.82155) (end -7.819209 10.485309) (layer "Edge.Cuts") (width 0.025) (tstamp 95ece755-2e80-42da-bbd8-bbbc6dd9942c))
(fp_line (start 11.6869 3.622668) (end 12.199568 2.76969) (layer "Edge.Cuts") (width 0.025) (tstamp a07ebfe3-f0b8-4f04-90d1-f6162461ae1b))
(fp_line (start -11.31254 5.972231) (end -11.913368 3.27264) (layer "Edge.Cuts") (width 0.025) (tstamp a15d7817-7c13-4955-bca7-f660fb046c80))
(fp_line (start -6.785659 -11.18159) (end -7.263868 -10.874268) (layer "Edge.Cuts") (width 0.025) (tstamp a2ed3307-030f-48ae-89e5-8900439a7bdc))
(fp_line (start -1.75 -11.99444) (end -1.75 -9.49444) (layer "Edge.Cuts") (width 0.025) (tstamp a6c3f864-366e-4265-9333-ea7a94e84bd4))
(fp_line (start -12.2 -2.757631) (end -11.71355 -3.627168) (layer "Edge.Cuts") (width 0.025) (tstamp a7f40edc-7ad9-41a7-b49c-bb719d151bde))
(fp_line (start 11.430609 -6.34469) (end 11.128809 -6.857309) (layer "Edge.Cuts") (width 0.025) (tstamp abba224d-cde7-41d6-87df-a65dcebd3a91))
(fp_line (start 6.9437 -11.075468) (end 6.42694 -11.393809) (layer "Edge.Cuts") (width 0.025) (tstamp bb25d4ba-c00c-423a-be76-e66a20a1138a))
(fp_line (start 8.8468 -9.5872) (end 8.39615 -9.988218) (layer "Edge.Cuts") (width 0.025) (tstamp c1d11f79-e732-4607-8a9b-3ffe89fe7082))
(fp_line (start -3.45 -11.99444) (end -3.45 -9.49444) (layer "Edge.Cuts") (width 0.025) (tstamp c769b6d9-d31b-4c09-a8cc-15a5e10076db))
(fp_line (start 5.893659 -11.687331) (end 5.343809 -11.954659) (layer "Edge.Cuts") (width 0.025) (tstamp c7eed985-e8d6-4af5-8082-d46e2f33604b))
(fp_line (start 11.2363 6.021831) (end 11.222509 6.748068) (layer "Edge.Cuts") (width 0.025) (tstamp c7f39802-62ae-468a-b4d0-6002108b64db))
(fp_line (start -8.712168 9.41319) (end -10.855031 6.931331) (layer "Edge.Cuts") (width 0.025) (tstamp c8069ba5-60ae-4beb-b945-7ee4be1079d9))
(fp_line (start -10.855031 6.931331) (end -11.02729 6.931331) (layer "Edge.Cuts") (width 0.025) (tstamp cc644d26-7f85-40c8-b854-286e1936fd1f))
(fp_line (start -6.362618 11.4334) (end -6.86425 11.1385) (layer "Edge.Cuts") (width 0.025) (tstamp cc6ada69-d338-45fd-8c61-cbe76e5ae46d))
(fp_line (start 6.309818 11.43615) (end 5.804081 11.71039) (layer "Edge.Cuts") (width 0.025) (tstamp cc9491fd-d48d-45be-b7f8-308225777f91))
(fp_line (start 10.98964 -6.857309) (end 8.8468 -9.34055) (layer "Edge.Cuts") (width 0.025) (tstamp d338aeea-d486-4973-846d-6c123a66340a))
(fp_line (start 1.75 -11.99444) (end 1.75 -9.49444) (layer "Edge.Cuts") (width 0.025) (tstamp d7cdfbf2-9537-4cda-8eb4-91282637f83d))
(fp_line (start -4.747559 -12.19444) (end -3.65 -12.19444) (layer "Edge.Cuts") (width 0.025) (tstamp d7f40d37-5e58-466a-ae2c-ebf2b555497f))
(fp_line (start -7.729631 -10.547681) (end -8.180268 -10.199068) (layer "Edge.Cuts") (width 0.025) (tstamp d945a5be-0aa3-4a87-985a-142720efe170))
(fp_line (start -8.273968 10.12839) (end -8.712168 9.7522) (layer "Edge.Cuts") (width 0.025) (tstamp d9601eba-b797-4fc7-b378-863c6d034bde))
(fp_line (start 7.27855 10.82155) (end 6.801768 11.1385) (layer "Edge.Cuts") (width 0.025) (tstamp d976172d-a9b3-4fa9-9a23-9e0cfe4d3b4f))
(fp_line (start -5.31944 11.95705) (end -5.848631 11.70625) (layer "Edge.Cuts") (width 0.025) (tstamp daf87845-40d1-42eb-ad60-8ef6f71bb614))
(fp_line (start -8.712168 9.7522) (end -8.712168 9.41319) (layer "Edge.Cuts") (width 0.025) (tstamp def8c0aa-56a0-436b-86e7-4b04d58e71d4))
(fp_line (start -7.263868 -10.874268) (end -7.729631 -10.547681) (layer "Edge.Cuts") (width 0.025) (tstamp df2dd91b-459f-468b-a6cb-aee3d27ec656))
(fp_line (start -11.012131 -7.05574) (end -11.22435 -6.79254) (layer "Edge.Cuts") (width 0.025) (tstamp e45a6c88-e834-4f55-9bdb-bfc2680e64da))
(fp_line (start 3.45 -11.99444) (end 3.45 -9.49444) (layer "Edge.Cuts") (width 0.025) (tstamp e84d1760-494f-45a2-8087-ad907e413583))
(fp_line (start -11.02729 6.931331) (end -11.301518 6.54825) (layer "Edge.Cuts") (width 0.025) (tstamp eb696892-fe26-4318-9ee1-5bdceabbfff1))
(fp_line (start 10.76914 7.071918) (end 8.6263 9.55375) (layer "Edge.Cuts") (width 0.025) (tstamp ebf7e448-3aa1-420b-b349-4dc1ba9f6bbe))
(fp_line (start -12.2 2.663568) (end -12.2 -2.757631) (layer "Edge.Cuts") (width 0.025) (tstamp ed291bb6-f72f-49d4-847b-06264e4e5d66))
(fp_line (start 4.747131 12.185809) (end -4.777868 12.185809) (layer "Edge.Cuts") (width 0.025) (tstamp f1c4dd6e-e537-4195-8c85-6045acec9bc4))
(fp_line (start -8.617081 -9.5376) (end -10.761331 -7.05574) (layer "Edge.Cuts") (width 0.025) (tstamp f25e68ef-2301-494e-a84b-5d700c2d24e5))
(fp_line (start -7.819209 10.485309) (end -8.273968 10.12839) (layer "Edge.Cuts") (width 0.025) (tstamp f3e51744-f40a-4117-b86d-cc83f200cf67))
(fp_arc (start -1.75 -9.49444) (mid -2.6 -8.64444) (end -3.45 -9.49444) (layer "Edge.Cuts") (width 0.025) (tstamp 27e1340e-b322-4543-8031-6739b5a1c2b3))
(fp_arc (start 3.45 -9.49444) (mid 2.6 -8.64444) (end 1.75 -9.49444) (layer "Edge.Cuts") (width 0.025) (tstamp 314e6a53-97ee-4c76-9c6a-438cf5b6c050))
(fp_arc (start 1.55 -12.19444) (mid 1.691421 -12.135861) (end 1.75 -11.99444) (layer "Edge.Cuts") (width 0.025) (tstamp 33690c63-89a0-4374-9cca-1f0b9aeeafdd))
(fp_arc (start -3.65 -12.19444) (mid -3.508579 -12.135861) (end -3.45 -11.99444) (layer "Edge.Cuts") (width 0.025) (tstamp 60172a00-1db8-4d6b-9552-bb3b17c7f746))
(fp_arc (start 3.45 -11.99444) (mid 3.508579 -12.135861) (end 3.65 -12.19444) (layer "Edge.Cuts") (width 0.025) (tstamp 6a849860-919a-49bf-9d28-d7dbfc09580c))
(fp_arc (start -1.75 -11.99444) (mid -1.691421 -12.135861) (end -1.55 -12.19444) (layer "Edge.Cuts") (width 0.025) (tstamp e42da76f-6ef9-4350-a368-5b2fb45368cb))
(fp_line (start -6.7564 -3.9624) (end -6.7564 -1.3208) (layer "F.Fab") (width 0.127) (tstamp 015b039e-46e0-454d-b476-f221209ffba4))
(fp_line (start 8.382 -3.6576) (end 8.382 -3.048) (layer "F.Fab") (width 0.127) (tstamp 0645eb07-dfb9-40cb-b9e4-e5e640fd1b32))
(fp_line (start -10.82 -6.392) (end 10.88 -6.392) (layer "F.Fab") (width 0.127) (tstamp 1e5f14f7-3752-4a77-b7ff-6910f87cce77))
(fp_line (start -10.5156 -2.9464) (end -10.5156 -3.8608) (layer "F.Fab") (width 0.127) (tstamp 23e6d901-aaf9-44d2-9a78-944d55e27d00))
(fp_line (start 7.8232 6.604) (end 6.096 6.604) (layer "F.Fab") (width 0.127) (tstamp 242025c0-7f8e-410b-8a14-7638e65806ac))
(fp_line (start -10.0584 5.7404) (end -10.0584 0.762) (layer "F.Fab") (width 0.127) (tstamp 261564eb-62a5-4d44-93a4-7bdbdf59480c))
(fp_line (start -8.0264 10.0076) (end -8.0264 8.89) (layer "F.Fab") (width 0.127) (tstamp 2806a6c3-53c5-4937-9e9f-acbaf10e7067))
(fp_line (start 7.8232 -0.508) (end 8.0772 -0.508) (layer "F.Fab") (width 0.127) (tstamp 2cf5c37a-3f07-4c44-85a7-b8c8ddd83e1a))
(fp_line (start 9.906 3.4036) (end 9.906 4.5212) (layer "F.Fab") (width 0.127) (tstamp 388d8cdf-0ded-4e8f-815d-2492b9f79be3))
(fp_line (start -4.6736 11.938) (end -7.3152 10.5664) (layer "F.Fab") (width 0.127) (tstamp 3a952f78-a47f-47a4-ad53-5a3b11a1f982))
(fp_line (start 4.7244 11.9888) (end -4.6736 11.938) (layer "F.Fab") (width 0.127) (tstamp 442a617d-7bff-4600-89d3-a6ff41a1f92c))
(fp_line (start -9.8044 -4.572) (end -7.366 -4.572) (layer "F.Fab") (width 0.127) (tstamp 49f28d41-1ba6-4fff-b7e4-0305954206a7))
(fp_line (start 5.6388 -5.1308) (end 5.6388 0.4064) (layer "F.Fab") (width 0.127) (tstamp 59038ca5-58e0-4e12-9278-8fb7dfb0f2ad))
(fp_line (start -10.82 -6.392) (end -10.82 6.608) (layer "F.Fab") (width 0.127) (tstamp 60cc660d-d789-4904-b89b-d43a09459b13))
(fp_line (start -7.874 8.7376) (end -6.5532 8.7376) (layer "F.Fab") (width 0.127) (tstamp 63d31ae0-0562-4db2-92f7-f2fc18f81c33))
(fp_line (start 11.7348 -4.2164) (end 8.9408 -4.2164) (layer "F.Fab") (width 0.127) (tstamp 6759f369-f97b-4df1-bc26-b92ade53cd88))
(fp_line (start -10.5664 -0.0508) (end -10.5664 2.7432) (layer "F.Fab") (width 0.127) (tstamp 74c2f511-a575-4752-95b0-82003365369c))
(fp_line (start -6.8072 6.4008) (end -9.398 6.4008) (layer "F.Fab") (width 0.127) (tstamp 7e4ee5c2-19a5-45ed-8a46-685a0363d9b5))
(fp_line (start 6.6548 1.4224) (end 7.9248 1.4224) (layer "F.Fab") (width 0.127) (tstamp 7ebf3b89-ef87-4a8a-aef1-e87466c74433))
(fp_line (start -10.922 3.0988) (end -12.0396 1.9304) (layer "F.Fab") (width 0.127) (tstamp 80a57b2c-13c7-4ae9-887c-e32bafe0e7d3))
(fp_line (start 10.88 -6.392) (end 10.88 6.608) (layer "F.Fab") (width 0.127) (tstamp 88d44fad-ac8c-4ecd-b784-78689754a7fb))
(fp_line (start 5.3848 7.3152) (end 5.3848 8.5344) (layer "F.Fab") (width 0.127) (tstamp 93551814-b09e-43ec-88b4-7b24d8229926))
(fp_line (start 7.3152 8.9408) (end 7.3152 10.2108) (layer "F.Fab") (width 0.127) (tstamp 98df70e5-c654-4b8d-9b2c-ccbd455309aa))
(fp_line (start -12.0396 -1.4224) (end -10.5156 -2.9464) (layer "F.Fab") (width 0.127) (tstamp a1b8a431-a11e-49e3-a2cb-ebe34787756a))
(fp_line (start -12.0396 1.9304) (end -12.0396 -1.4224) (layer "F.Fab") (width 0.127) (tstamp a248284d-7330-4f61-8783-2dc8df22d5ff))
(fp_line (start -7.8232 -0.3556) (end -10.2616 -0.3556) (layer "F.Fab") (width 0.127) (tstamp a387f7e1-0493-4136-9834-21ff4c48b756))
(fp_line (start -5.5372 -0.4572) (end -5.5372 -5.08) (layer "F.Fab") (width 0.127) (tstamp aa5d2352-e562-4e55-b748-5bd7f93a0361))
(fp_line (start -1.75 -9.49444) (end -3.45 -9.49444) (layer "F.Fab") (width 0.1) (tstamp aafa1078-03f6-465c-97aa-45249cb8ba01))
(fp_line (start -9.652 0.3556) (end -6.35 0.3556) (layer "F.Fab") (width 0.127) (tstamp b45f61eb-6e7f-404f-91a0-ce5f4ee483f6))
(fp_line (start 12.0904 1.6764) (end 12.0904 -3.8608) (layer "F.Fab") (width 0.127) (tstamp ba921601-0512-4c71-8ddb-6340c194b5f7))
(fp_line (start 5.6388 8.7884) (end 7.1628 8.7884) (layer "F.Fab") (width 0.127) (tstamp c49432ab-55ec-4e0f-88bf-57a3753f12ce))
(fp_line (start 7.3152 10.2108) (end 4.7244 11.9888) (layer "F.Fab") (width 0.127) (tstamp c670df48-cc2b-4679-a5a3-aef36c0527ba))
(fp_line (start -6.2992 8.4836) (end -6.2992 6.9088) (layer "F.Fab") (width 0.127) (tstamp cd319436-47e6-44f1-98dc-3b8081b1c1bf))
(fp_line (start 8.7376 0.1524) (end 9.906 0.1524) (layer "F.Fab") (width 0.127) (tstamp ce663b0c-a9b9-4ac6-ab95-7029ac3317df))
(fp_line (start 10.668 0.9144) (end 10.668 1.6256) (layer "F.Fab") (width 0.127) (tstamp d41a02ae-cec2-4b9d-b978-5bd7058a92e2))
(fp_line (start 1.75 -9.49444) (end 3.45 -9.49444) (layer "F.Fab") (width 0.1) (tstamp d83167bb-4add-4d68-be9d-8f3d84695bac))
(fp_line (start -5.1308 -5.4864) (end 5.2832 -5.4864) (layer "F.Fab") (width 0.127) (tstamp e32f02c0-2a17-48b6-9430-c03ca275949b))
(fp_line (start 10.88 6.608) (end -10.82 6.608) (layer "F.Fab") (width 0.127) (tstamp e82b956a-63b2-426e-bec6-61871f700c6d))
(fp_line (start 11.176 2.1336) (end 11.6332 2.1336) (layer "F.Fab") (width 0.127) (tstamp eab087ab-9b65-4691-b52c-961877ab76ee))
(fp_line (start 6.9088 -1.5748) (end 6.9088 -1.4224) (layer "F.Fab") (width 0.127) (tstamp ee7c4c43-9c47-4633-8caa-249c4fbc3267))
(fp_line (start -7.3152 10.5664) (end -8.0264 10.0076) (layer "F.Fab") (width 0.127) (tstamp f522f1af-b7bf-4df8-abe8-53a9710d545a))
(fp_arc (start 8.382 -3.6576) (mid 8.545669 -4.052731) (end 8.9408 -4.2164) (layer "F.Fab") (width 0.127) (tstamp 02a23b5c-0f5a-4cfa-8bbe-d1b6f7fac2f7))
(fp_arc (start 11.7348 -4.2164) (mid 11.986247 -4.112247) (end 12.0904 -3.8608) (layer "F.Fab") (width 0.127) (tstamp 17aeb3a0-8fc1-4539-8edc-63d1a97823ad))
(fp_arc (start 8.0772 -0.508) (mid 8.256806 -0.433605) (end 8.331201 -0.253999) (layer "F.Fab") (width 0.127) (tstamp 1d1bd6d7-79f8-425f-a064-a99578d668c4))
(fp_arc (start 5.6388 8.7884) (mid 5.459195 8.714005) (end 5.3848 8.5344) (layer "F.Fab") (width 0.127) (tstamp 2dc0cfd5-9c3d-4fd3-984d-d58150c25e0d))
(fp_arc (start -7.366 -4.572) (mid -6.934948 -4.393452) (end -6.7564 -3.9624) (layer "F.Fab") (width 0.127) (tstamp 2eead50c-fbc0-44ed-be6c-53eb943e62d4))
(fp_arc (start 12.0904 1.6764) (mid 11.956489 1.999689) (end 11.6332 2.1336) (layer "F.Fab") (width 0.127) (tstamp 3182e871-b501-4aa3-9d4a-320fc11f888e))
(fp_arc (start -10.5664 2.7432) (mid -10.670553 2.994647) (end -10.922 3.0988) (layer "F.Fab") (width 0.127) (tstamp 361ceedb-ce26-4742-93ff-5b9a6389c063))
(fp_arc (start 9.906 0.1524) (mid 10.444815 0.375585) (end 10.668 0.9144) (layer "F.Fab") (width 0.127) (tstamp 473bc937-1afa-4802-bb28-4d7b95f62b35))
(fp_arc (start -6.7564 -1.3208) (mid -7.089901 -0.617258) (end -7.8232 -0.3556) (layer "F.Fab") (width 0.127) (tstamp 51552f72-5830-41df-a2c3-a765be14ea9a))
(fp_arc (start 5.2832 -5.4864) (mid 5.534647 -5.382247) (end 5.6388 -5.1308) (layer "F.Fab") (width 0.127) (tstamp 585d20f6-37cf-4c88-a00b-52e33f789e3f))
(fp_arc (start 7.9248 1.4224) (mid 9.32572 2.00268) (end 9.906 3.4036) (layer "F.Fab") (width 0.127) (tstamp 6016ad8e-c29e-4f60-9b6f-8376b258f7a3))
(fp_arc (start 9.906 4.5212) (mid 9.295962 5.993962) (end 7.8232 6.604) (layer "F.Fab") (width 0.127) (tstamp 72684794-e835-48d7-85ce-ff14fa55790c))
(fp_arc (start 8.382 -3.048) (mid 8.203452 -2.616948) (end 7.7724 -2.4384) (layer "F.Fab") (width 0.127) (tstamp 72dc34b5-87cd-4a98-a7df-5302201c87ee))
(fp_arc (start 8.7376 0.1524) (mid 8.450232 0.033368) (end 8.3312 -0.254) (layer "F.Fab") (width 0.127) (tstamp 73f81baa-c5e7-4516-81bc-4794f3ca1dd2))
(fp_arc (start 6.9088 -1.5748) (mid 7.161743 -2.185457) (end 7.7724 -2.4384) (layer "F.Fab") (width 0.127) (tstamp 9a4d8a0c-bc2d-4859-8f84-7ddfdf420a3c))
(fp_arc (start -10.0584 0.762) (mid -9.939368 0.474632) (end -9.652 0.3556) (layer "F.Fab") (width 0.127) (tstamp 9ad0ceb6-372f-4aab-a949-f91f239195f9))
(fp_arc (start -5.5372 -0.4572) (mid -5.775264 0.117536) (end -6.35 0.3556) (layer "F.Fab") (width 0.127) (tstamp a75675d2-af58-4021-b112-dc9b8cb053d3))
(fp_arc (start -6.8072 6.4008) (mid -6.44799 6.54959) (end -6.2992 6.9088) (layer "F.Fab") (width 0.127) (tstamp af9a23c8-420b-440f-9e8e-405f4f79b091))
(fp_arc (start -5.5372 -5.08) (mid -5.418168 -5.367368) (end -5.1308 -5.4864) (layer "F.Fab") (width 0.127) (tstamp bd753e19-12a6-4bb0-a5d4-7659a9e94bc9))
(fp_arc (start 7.1628 8.7884) (mid 7.270563 8.833037) (end 7.3152 8.9408) (layer "F.Fab") (width 0.127) (tstamp c4a861d2-e9e7-4ed6-8c94-18b09f0cbd59))
(fp_arc (start 11.176 2.1336) (mid 10.81679 1.98481) (end 10.668 1.6256) (layer "F.Fab") (width 0.127) (tstamp cca1cf7c-96fe-430d-ad9c-79745f07d6e6))
(fp_arc (start -10.5156 -3.8608) (mid -10.307294 -4.363694) (end -9.8044 -4.572) (layer "F.Fab") (width 0.127) (tstamp cd116568-e3ed-44e7-b39c-766b8ff387cc))
(fp_arc (start 6.654801 1.422399) (mid 5.93638 1.12482) (end 5.6388 0.4064) (layer "F.Fab") (width 0.127) (tstamp d4b541f1-69ad-4b98-aa5c-691cce8e7b34))
(fp_arc (start 5.3848 7.3152) (mid 5.593106 6.812306) (end 6.096 6.604) (layer "F.Fab") (width 0.127) (tstamp d870409c-65d3-419d-a2d0-69f499366e23))
(fp_arc (start -10.566401 -0.050799) (mid -10.477127 -0.266326) (end -10.2616 -0.3556) (layer "F.Fab") (width 0.127) (tstamp e369e9a3-bf49-4fb1-9a41-7233d03146c0))
(fp_arc (start -6.2992 8.4836) (mid -6.373595 8.663205) (end -6.5532 8.7376) (layer "F.Fab") (width 0.127) (tstamp e4272128-1d56-4d61-9780-02600fe1eb8b))
(fp_arc (start 7.8232 -0.508) (mid 7.176622 -0.775822) (end 6.9088 -1.4224) (layer "F.Fab") (width 0.127) (tstamp f87cdeb5-b752-41be-a5bb-7a050bbfb283))
(fp_arc (start -9.398 6.4008) (mid -9.864973 6.207373) (end -10.0584 5.7404) (layer "F.Fab") (width 0.127) (tstamp f92d9510-7816-453c-b61e-c0af6c5595b6))
(fp_arc (start -8.0264 8.89) (mid -7.981763 8.782237) (end -7.874 8.7376) (layer "F.Fab") (width 0.127) (tstamp fbbd6be7-5389-46a0-8f9a-266195de8efb))
(pad "" np_thru_hole circle (at -7.1374 7.7216) (size 1.3 1.3) (drill 1.3) (layers *.Cu *.Mask) (tstamp 0f8ba86f-e130-409b-991b-44e250650e53))
(pad "" np_thru_hole circle (at -7.8994 -1.2192) (size 1.1 1.1) (drill 1.1) (layers *.Cu *.Mask) (tstamp 482b4039-f469-4ba3-b431-ed6c8328cef4))
(pad "" np_thru_hole circle (at 6.6294 7.7216) (size 1.3 1.3) (drill 1.3) (layers *.Cu *.Mask) (tstamp 50c188af-9bbe-42ba-8a78-f48916d6929f))
(pad "" np_thru_hole circle (at -2.2352 11.2268) (size 0.85 0.85) (drill 0.85) (layers *.Cu *.Mask) (tstamp 56ff61f2-489e-403d-a30b-c851502820bf))
(pad "" np_thru_hole circle (at -6.477 -9.906) (size 1.3 1.3) (drill 1.3) (layers *.Cu *.Mask) (tstamp 9c753764-a0ce-41a9-8069-4bf1fed1c458))
(pad "" np_thru_hole circle (at 7.8486 -1.4732) (size 1.1 1.1) (drill 1.1) (layers *.Cu *.Mask) (tstamp b3e417a9-8465-4ce4-9035-6119ce697d30))
(pad "" np_thru_hole circle (at 6.5278 -9.8044) (size 1.3 1.3) (drill 1.3) (layers *.Cu *.Mask) (tstamp e9ba5480-a2b2-4269-9251-dc718e829846))
(pad "1" smd rect (at -9.148 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8df7cf56-0f40-4170-9f72-589283460d3a))
(pad "2" smd rect (at -8.442 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 83cd7812-fb45-4612-8599-69038e1c4020))
(pad "3" smd rect (at -7.736 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3b2f812b-037a-4fd0-887c-a99a242f58ba))
(pad "4" smd rect (at -7.03 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp ffd240e6-2825-44e9-b02c-aa551312cca9))
(pad "5" smd rect (at -6.324 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 29ce58b0-9f00-46f1-8e4a-c715b56768ab))
(pad "6" smd rect (at -5.618 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 6d0160ed-978d-4f39-bf16-62dbea9f27f0))
(pad "7" smd rect (at -4.912 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 57196076-0d96-4820-b845-fa87b6c27d1f))
(pad "8" smd rect (at -4.206 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d4fac87d-9333-458c-be3e-575dd4eaa3e5))
(pad "9" smd rect (at -3.5 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a1c47c5e-2ca8-433f-a416-e563cbba596d))
(pad "10" smd rect (at -2.794 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d5b05e53-e304-4be1-9445-478e86e3b156))
(pad "11" smd rect (at -2.088 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8d777f94-b1a3-48f3-ab13-5eadac35a2e3))
(pad "12" smd rect (at -1.382 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 099b148b-18e8-469f-949a-dff27b4eb241))
(pad "13" smd rect (at -0.676 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bbad88ae-7e7a-4383-af0e-1d4779d6defc))
(pad "14" smd rect (at 0.03 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8da8bb36-10c6-412c-9aa3-d16f6c5abb81))
(pad "15" smd rect (at 0.736 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d1818026-f828-476c-b902-807f12b408d1))
(pad "16" smd rect (at 1.442 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 42eecc63-0099-4ca6-994a-08ef7909ba73))
(pad "17" smd rect (at 2.148 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cde545ca-63a6-4f54-8ea7-56b40909f87a))
(pad "18" smd rect (at 2.854 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f1420c91-a85e-4bb2-a19d-b67dff53b150))
(pad "19" smd rect (at 3.56 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 6689ce3c-a7d1-44d6-8859-0658cd8c1fc9))
(pad "20" smd rect (at 4.266 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 64fefa58-7ce5-47b2-878a-ec62933c9032))
(pad "21" smd rect (at 4.972 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 6cf6aeeb-de99-4342-b765-83bca1670854))
(pad "22" smd rect (at 5.678 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7edfddad-2f59-42ba-b91c-6c0a16f44bcf))
(pad "23" smd rect (at 6.384 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d6364e84-e588-4483-a666-0227936450c2))
(pad "24" smd rect (at 7.09 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d3a24f79-21e0-4a26-a82c-2548edff0574))
(pad "25" smd rect (at 7.796 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 9164712c-3d2e-49cb-8f5a-099c49f5718c))
(pad "26" smd rect (at 8.502 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f191af9e-e3b9-4d35-b770-81095afeaa2c))
(pad "27" smd rect (at 9.208 -6.25) (size 0.326 1.52) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7176c0fb-165d-4d21-8563-62345a9a4257))
(pad "ALARM" thru_hole circle (at 12.654 4.95) (size 4.2 4.2) (drill 3) (layers *.Cu *.Mask)
(solder_mask_margin 0.0635) (tstamp f4bcc2ab-bfdd-45e0-973b-485afc59e7c7))
(pad "BUZZER" thru_hole circle (at -6.0452 11.176) (size 1.2 1.2) (drill 0.85) (layers *.Cu *.Mask)
(solder_mask_margin 0.0635) (tstamp f1f1b6ec-a011-40bb-b78d-87fe03c6404b))
(pad "GND" smd rect (at 1.3 -10.64444 90) (size 2.3 0.37) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e3e82b1c-9b23-4425-9e7e-5d4c23b40510))
(pad "GND1" smd rect (at -2.286 -1.3716 180) (size 3.4036 2.794) (layers "B.Cu" "B.Mask")
(solder_mask_margin 0.0635) (zone_connect 2) (tstamp cd0d943d-d7b6-4f54-93e8-a43db3315eb4))
(pad "GND2" smd rect (at 2.1844 -1.3716 180) (size 3.4036 2.794) (layers "B.Cu" "B.Mask")
(solder_mask_margin 0.0635) (zone_connect 2) (tstamp 3433d29a-4cfc-45d9-86a3-7ac2928402f2))
(pad "LIGHT" thru_hole circle (at -12.654 -4.85) (size 4.2 4.2) (drill 3) (layers *.Cu *.Mask)
(solder_mask_margin 0.0635) (tstamp 4619d363-cb5e-4f88-8cb0-5ef17e47483a))
(pad "MODE" thru_hole circle (at -12.654 4.85) (size 4.2 4.2) (drill 3) (layers *.Cu *.Mask)
(solder_mask_margin 0.0635) (tstamp 919ac103-e7a3-47a9-a740-95c5bf45e6f4))
(pad "USB_ID" smd rect (at 0.65 -10.64444 90) (size 2.3 0.37) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 01ebd03f-5aec-4880-a470-6732ee55cab2))
(pad "USB_N" smd rect (at -0.65 -10.64444 90) (size 2.3 0.37) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp ee44e084-7b2d-4687-9433-b23df367e29d))
(pad "USB_P" smd rect (at 0 -10.64444 90) (size 2.3 0.37) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d2b25975-6a31-47a7-a91b-a970e3f381e2))
(pad "VBUS" smd rect (at -1.3 -10.64444 90) (size 2.3 0.37) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp da2fc07b-eca0-4b10-a35b-8f3e5ad27f3c))
(pad "VCC1" smd roundrect (at -9.0424 5.588 180) (size 2.286 2.286) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.5)
(solder_mask_margin 0.0635) (tstamp 81d01f71-7e62-46b1-99ba-b8c6fedd377d))
(pad "VCC2" smd roundrect (at 9.0424 5.7404 180) (size 2.286 2.286) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.5)
(solder_mask_margin 0.0635) (tstamp dde7dc9b-9abb-49aa-978c-76a43d7792b0))
)

View File

@ -0,0 +1,47 @@
(footprint "FH19C9S05SH10" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>FH19C-9S-0.5SH(10)-1</b><br>\n")
(fp_text reference "REF**" (at 0 -1.425) (layer "F.SilkS")
(effects (font (size 1.1684 1.1684) (thickness 0.1016)))
(tstamp f001c7f4-3bac-4901-bfec-55e6729b7a2d)
)
(fp_text value ">VALUE" (at 0 -1.425) (layer "F.Fab")
(effects (font (size 1.1684 1.1684) (thickness 0.1016)))
(tstamp 561aeca9-49f1-4f98-93e2-6788ec46bd30)
)
(fp_line (start -2.75 -2.25) (end -3.25 -2.25) (layer "F.SilkS") (width 0.1) (tstamp 1eac27e8-d706-4fd3-9d7e-f44c3bceecb7))
(fp_line (start -3.25 0.75) (end 3.25 0.75) (layer "F.SilkS") (width 0.1) (tstamp 2954b329-e121-4506-a75a-9fd0ad6fb160))
(fp_line (start -3.25 -2.25) (end -3.25 -0.75) (layer "F.SilkS") (width 0.1) (tstamp 707c871c-221c-430b-8a6b-9066bbe6a8b7))
(fp_line (start 3.25 -2.25) (end 3.25 -0.75) (layer "F.SilkS") (width 0.1) (tstamp c93c51a4-9fbb-472e-8b27-c730f1646c88))
(fp_line (start 2.75 -2.25) (end 3.25 -2.25) (layer "F.SilkS") (width 0.1) (tstamp f62c7b3a-070f-4127-95d5-3042f710b35c))
(fp_arc (start -2.457 -2.572) (mid -2.407 -2.622) (end -2.357 -2.572) (layer "F.SilkS") (width 0.2) (tstamp 99032ce3-83f4-4d78-bc12-cfc846be0db6))
(fp_arc (start -2.357 -2.572) (mid -2.407 -2.522) (end -2.457 -2.572) (layer "F.SilkS") (width 0.2) (tstamp cc85bc5e-d12e-4c30-b330-62e6d8cd831e))
(fp_arc (start -2.457 -2.572) (mid -2.407 -2.622) (end -2.357 -2.572) (layer "F.SilkS") (width 0.2) (tstamp e306135f-93e3-4c31-83e0-8c60a6608eec))
(fp_line (start 3.25 0.75) (end -3.25 0.75) (layer "F.Fab") (width 0.2) (tstamp 4524f199-9890-4fbd-90ec-2bd6babdbf89))
(fp_line (start 3.25 -2.25) (end 3.25 0.75) (layer "F.Fab") (width 0.2) (tstamp 855f1cc0-31ef-4190-b476-18e3b5158686))
(fp_line (start -3.25 0.75) (end -3.25 -2.25) (layer "F.Fab") (width 0.2) (tstamp a7aeadd1-064c-4dec-839a-d3cb8b0a8559))
(fp_line (start -3.25 -2.25) (end 3.25 -2.25) (layer "F.Fab") (width 0.2) (tstamp b29496a7-f051-4b0c-a792-56f5b1d5ae06))
(pad "1" smd rect (at -2 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp acda55bd-5be5-40b1-a960-d198db4ec672))
(pad "2" smd rect (at -1.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 45b21120-703c-4698-9c56-6564d6e1bf81))
(pad "3" smd rect (at -1 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8b754c17-ed29-4271-a8ee-1331ac5995ef))
(pad "4" smd rect (at -0.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 9ccadf67-4eb3-4873-b5dd-5cc11b45344d))
(pad "5" smd rect (at 0 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bda542d0-ecb7-417f-8c5a-7bba95d4eba5))
(pad "6" smd rect (at 0.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8e3054c6-288a-41ce-abc0-f8e853b26354))
(pad "7" smd rect (at 1 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1f1c1390-fe89-4a71-a866-c4e1f01372f9))
(pad "8" smd rect (at 1.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 83315760-4e59-4aea-8656-92a90fbb73b7))
(pad "9" smd rect (at 2 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f1470e81-8bfa-4c7b-9a4f-907119981553))
(pad "MP1" smd rect (at -3 0 90) (size 0.8 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5d56d96c-0e59-4d80-b122-61ae0456f87e))
(pad "MP2" smd rect (at 3 0 90) (size 0.8 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 65badac9-bbc1-4323-b96e-20b366a5c013))
)

View File

@ -0,0 +1,22 @@
(footprint "FIDUCIAL_1MM" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0 0) (layer "F.SilkS")
(effects (font (size 1.27 1.27) (thickness 0.15)))
(tstamp 084b231a-a841-4989-ba78-c80f52a1d530)
)
(fp_text value "" (at 0 0) (layer "F.Fab")
(effects (font (size 1.27 1.27) (thickness 0.15)))
(tstamp 5023af4a-f69e-458d-abff-77e97f0c49aa)
)
(fp_arc (start -0.75 0) (mid -0.53033 -0.53033) (end 0 -0.75) (layer "F.Mask") (width 0.5) (tstamp 243424d9-367c-4c55-9ce2-5c7f6b71c486))
(fp_arc (start 0 0.75) (mid -0.53033 0.53033) (end -0.75 0) (layer "F.Mask") (width 0.5) (tstamp 38a261de-e7ad-4359-9a4e-e8325d947b3c))
(fp_arc (start 0.75 0) (mid 0.53033 0.53033) (end 0 0.75) (layer "F.Mask") (width 0.5) (tstamp 3e5e4d91-af7b-467f-93be-7757d59f4acd))
(fp_arc (start 0 -0.75) (mid 0.53033 -0.53033) (end 0.75 0) (layer "F.Mask") (width 0.5) (tstamp cba0161e-94ca-4df5-83f4-b38d910a40d8))
(fp_arc (start 0 -0.75) (mid 0.53033 -0.53033) (end 0.75 0) (layer "F.CrtYd") (width 0.5) (tstamp 24375f2d-9f3c-47f3-bf1b-d9abc9459487))
(fp_arc (start 0.75 0) (mid 0.53033 0.53033) (end 0 0.75) (layer "F.CrtYd") (width 0.5) (tstamp 61d35d35-c7e3-45c7-a1f6-4c560b28917a))
(fp_arc (start 0 0.75) (mid -0.53033 0.53033) (end -0.75 0) (layer "F.CrtYd") (width 0.5) (tstamp b245f192-3aeb-4a3c-8f5f-5b2ac372cfb6))
(fp_arc (start -0.75 0) (mid -0.53033 -0.53033) (end 0 -0.75) (layer "F.CrtYd") (width 0.5) (tstamp f012c0d9-2bab-4b5b-8327-ed4e32f900bb))
(pad "1" smd roundrect (at 0 0) (size 1 1) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5)
(solder_mask_margin 0.0635) (tstamp ea46b6d0-c0be-44d4-aa82-47c56ffdb259))
)

View File

@ -0,0 +1,26 @@
(footprint "LED_QBLP655" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0.011609 -1.462631) (layer "F.SilkS")
(effects (font (size 0.682286 0.682286) (thickness 0.14977)))
(tstamp 441c2b28-158a-4d68-a991-31f4c6a03554)
)
(fp_text value ">VALUE" (at -0.054931 1.580818) (layer "F.Fab")
(effects (font (size 0.677435 0.677435) (thickness 0.148705)))
(tstamp 2f361345-03db-4c21-a99d-0b9cfab62aee)
)
(fp_circle (center -3.1 -0.5) (end -3 -0.5) (layer "F.SilkS") (width 0.2) (fill none) (tstamp 0ba68dd4-e618-4da0-b7e7-599817b38c08))
(fp_line (start -1.6 -0.6) (end 1.6 -0.6) (layer "F.Fab") (width 0.127) (tstamp 3629e8ab-0a05-463c-9cb0-81d2e314e044))
(fp_line (start -1.6 0.6) (end -1.6 -0.6) (layer "F.Fab") (width 0.127) (tstamp 379a3f23-154c-4da8-9d91-714d85fa6b82))
(fp_line (start 1.6 -0.6) (end 1.6 0.6) (layer "F.Fab") (width 0.127) (tstamp 78db06e4-b90e-45d6-90ee-f31a25c04c7d))
(fp_line (start 1.6 0.6) (end -1.6 0.6) (layer "F.Fab") (width 0.127) (tstamp de669889-6aee-41d8-9167-24b5b7cd2f7a))
(fp_circle (center -3.1 -0.5) (end -3 -0.5) (layer "F.Fab") (width 0.2) (fill none) (tstamp a3f31f15-16ea-4248-8fe2-4f1f6cb6fef0))
(pad "1" smd rect (at -1.5 -0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp c0b010da-7837-47db-be16-93e46d77ee03))
(pad "2" smd rect (at 1.5 -0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0491e5ac-92c6-4da4-a40f-13768f4f5f7c))
(pad "3" smd rect (at -1.5 0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d96a3b29-ffbb-4252-a695-34388cf2cce8))
(pad "4" smd rect (at 1.5 0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a7b3dfda-cc06-4a25-8ceb-15247a6b386b))
)

View File

@ -0,0 +1,15 @@
(footprint "MICROBUILDER_TESTPOINT_ROUND_1.5MM" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 1.143 0.127) (layer "F.SilkS")
(effects (font (size 0.666496 0.666496) (thickness 0.146304)) (justify left bottom))
(tstamp 3249263f-d424-465a-883e-c9fbfca1c498)
)
(fp_text value ">VALUE" (at 1.143 0.635) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp ffe18277-47dd-48a9-ae75-8daae098595b)
)
(fp_circle (center 0 0) (end 1 0) (layer "F.SilkS") (width 0.2032) (fill none) (tstamp 10aeb60f-0687-4840-aeb5-a5e914b89db2))
(pad "P$1" smd roundrect (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5)
(solder_mask_margin 0.0635) (tstamp 278b13e7-2a43-4fc5-a675-ea6ed2efdd4b))
)

View File

@ -0,0 +1,38 @@
(footprint "MICROBUILDER__0805MP" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>0805 MicroPitch</b>")
(fp_text reference "REF**" (at -1.5875 -0.9525) (layer "F.SilkS")
(effects (font (size 0.666496 0.666496) (thickness 0.146304)) (justify left bottom))
(tstamp 6d480cb3-ccbc-4f91-b215-36d9b6b90e39)
)
(fp_text value ">VALUE" (at -1.5875 1.27) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp 6bb67786-fe79-4530-a8f0-ca53290823df)
)
(fp_poly (pts
(xy -0.1999 0.5001)
(xy 0.1999 0.5001)
(xy 0.1999 -0.5001)
(xy -0.1999 -0.5001)
) (layer "F.Adhes") (width 0) (fill solid) (tstamp 9e351c4d-f895-49c5-ba3f-cecde3dc6e44))
(fp_line (start 0 -0.508) (end 0 0.508) (layer "F.SilkS") (width 0.2032) (tstamp 629c7bfb-b888-4932-aba0-6916a21e7f67))
(fp_line (start -0.51 0.535) (end 0.51 0.535) (layer "F.Fab") (width 0.1016) (tstamp 22396a4f-3f2f-4a10-9672-ef964a1e15ec))
(fp_line (start -0.51 -0.535) (end 0.51 -0.535) (layer "F.Fab") (width 0.1016) (tstamp 90cacfdf-b07f-4151-ac89-23042124f640))
(fp_poly (pts
(xy 0.4064 0.65)
(xy 1 0.65)
(xy 1 -0.65)
(xy 0.4064 -0.65)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 0138f6cb-7190-4a12-af47-1e018fd27b3c))
(fp_poly (pts
(xy -1 0.65)
(xy -0.4168 0.65)
(xy -0.4168 -0.65)
(xy -1 -0.65)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 637ecbcd-a78f-4c8a-8dcf-472bde2de83b))
(pad "1" smd rect (at -1.016 0) (size 1.2 1.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bd23358d-4a17-4f52-b69d-122e91d97c44))
(pad "2" smd rect (at 1.016 0) (size 1.2 1.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 165d5fb4-7aca-4db2-a5bd-306d43842183))
)

View File

@ -0,0 +1,274 @@
(footprint "QFN64_9X9MC_MCH" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0 -5.715) (layer "F.SilkS")
(effects (font (size 0.499872 0.499872) (thickness 0.109728)))
(tstamp 3e871d9c-2a1f-438a-ba83-60e5f8d0fa51)
)
(fp_text value ">VALUE" (at 0 5.715) (layer "F.Fab")
(effects (font (size 0.499872 0.499872) (thickness 0.109728)))
(tstamp f2dcc10c-546f-4bd9-be1f-368ae783a117)
)
(fp_poly (pts
(xy 2.1606 0.662)
(xy 0.8366 0.662)
(xy 0.8366 -0.662)
(xy 2.1606 -0.662)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 2ec0ad3d-3957-4524-a3b2-3e97e3345ecf))
(fp_poly (pts
(xy 2.1606 -0.8366)
(xy 0.8366 -0.8366)
(xy 0.8366 -2.1606)
(xy 2.1606 -2.1606)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 42a0d4d0-fc9b-4730-8110-13a84ab3bcb0))
(fp_poly (pts
(xy 0.662 0.662)
(xy -0.662 0.662)
(xy -0.662 -0.662)
(xy 0.662 -0.662)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 4fbb659c-e71a-4c9b-9e8a-6da964a65cd4))
(fp_poly (pts
(xy 2.1606 2.1606)
(xy 0.8366 2.1606)
(xy 0.8366 0.8366)
(xy 2.1606 0.8366)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 655728ed-daf4-477f-8a3b-b5624d1a73df))
(fp_poly (pts
(xy -0.8366 2.1606)
(xy -2.1606 2.1606)
(xy -2.1606 0.8366)
(xy -0.8366 0.8366)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 6566a81c-4902-448f-a6df-8bc32a765ffa))
(fp_poly (pts
(xy -0.8366 -0.8366)
(xy -2.1606 -0.8366)
(xy -2.1606 -2.1606)
(xy -0.8366 -2.1606)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 99ce666e-158b-4f82-b57f-184f0eedda5c))
(fp_poly (pts
(xy 0.662 -0.8366)
(xy -0.662 -0.8366)
(xy -0.662 -2.1606)
(xy 0.662 -2.1606)
) (layer "F.Paste") (width 0) (fill solid) (tstamp ddf6c3a2-a910-45ea-844b-a8db2b458e91))
(fp_poly (pts
(xy -0.8366 0.662)
(xy -2.1606 0.662)
(xy -2.1606 -0.662)
(xy -0.8366 -0.662)
) (layer "F.Paste") (width 0) (fill solid) (tstamp e3f7e99a-4f59-4e18-a5cb-6900c4b08cae))
(fp_poly (pts
(xy 0.662 2.1606)
(xy -0.662 2.1606)
(xy -0.662 0.8366)
(xy 0.662 0.8366)
) (layer "F.Paste") (width 0) (fill solid) (tstamp f934416f-45a1-43f5-b5e1-fba1dddf1aa4))
(fp_line (start 4.2164 4.6228) (end 4.6228 4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 2015e2d6-2795-4247-a207-acb4cf8886e6))
(fp_line (start -4.2164 -4.6228) (end -4.6228 -4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 2252c90a-7ebf-4d2d-a791-89982b21117b))
(fp_line (start 4.6228 -4.6228) (end 4.2164 -4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 2c7437bb-66d1-4b20-ab25-e4022916701f))
(fp_line (start -4.6228 4.6228) (end -4.2164 4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 32c6b15e-f755-475e-b73e-6c7fffdfa53a))
(fp_line (start -4.6228 -4.6228) (end -4.6228 -4.2164) (layer "F.SilkS") (width 0.1524) (tstamp 450f1cc5-825a-4891-8a52-c72891a373f0))
(fp_line (start 4.6228 4.6228) (end 4.6228 4.2164) (layer "F.SilkS") (width 0.1524) (tstamp 82e659cf-ebcc-4fcd-a243-d4894e4c531e))
(fp_line (start 4.6228 -4.2164) (end 4.6228 -4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 8caa9a3a-8461-464c-9a5d-58f28cc73fdb))
(fp_line (start -4.6228 4.2164) (end -4.6228 4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 9d03b0af-f67a-4b75-88d5-3fdc2fb53147))
(fp_circle (center -5.207 -5.207) (end -5.08 -5.207) (layer "F.SilkS") (width 0.254) (fill none) (tstamp d8471eec-d281-4956-8871-df001c4b9d0e))
(fp_line (start 4.4958 -2.5908) (end 4.4958 -2.8956) (layer "F.Fab") (width 0.1524) (tstamp 049458dd-1cf1-4608-bc61-728d12d853ec))
(fp_line (start -4.4958 -3.9116) (end -4.4958 -3.6068) (layer "F.Fab") (width 0.1524) (tstamp 05d31c0e-dc59-4cfd-8b11-9750f532f89d))
(fp_line (start 4.4958 -0.1016) (end 4.4958 -0.4064) (layer "F.Fab") (width 0.1524) (tstamp 0c83150d-4515-4bc6-947c-a18bb0f583b5))
(fp_line (start -3.9116 4.4958) (end -3.6068 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 10420e88-4a28-4643-b21a-9465d0057a73))
(fp_line (start 4.4958 0.4064) (end 4.4958 0.1016) (layer "F.Fab") (width 0.1524) (tstamp 10e57a60-62de-407e-b340-5e48d8af51a1))
(fp_line (start -4.4958 -2.8956) (end -4.4958 -2.5908) (layer "F.Fab") (width 0.1524) (tstamp 15822844-ae2b-47a9-8d24-dd3b08c9541d))
(fp_line (start 4.4958 4.4958) (end 4.4958 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 189f4344-d732-4381-8d0f-4a31c3fa9319))
(fp_line (start 4.4958 -3.0988) (end 4.4958 -3.4036) (layer "F.Fab") (width 0.1524) (tstamp 1da5d536-ffc3-40be-9afa-f932c35159bf))
(fp_line (start -0.6096 -4.4958) (end -0.9144 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 1e512696-3bdf-43ca-8ca3-64344bcd8de6))
(fp_line (start -4.4958 -3.4036) (end -4.4958 -3.0988) (layer "F.Fab") (width 0.1524) (tstamp 1efbd3c4-f6bc-449a-85e1-e54dc088704f))
(fp_line (start -1.6002 -4.4958) (end -1.905 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 1fd0b84b-3048-4a24-b2ab-7960a733598e))
(fp_line (start 4.4958 1.397) (end 4.4958 1.0922) (layer "F.Fab") (width 0.1524) (tstamp 256bd16a-a961-4e7c-bc57-c47218be0e9b))
(fp_line (start 0.1016 4.4958) (end 0.4064 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 2610c8d8-02ed-46ba-b8ce-b15585c89028))
(fp_line (start -0.1016 -4.4958) (end -0.4064 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 2b9a3dd0-e1a1-405a-ac7d-c3e3d878560b))
(fp_line (start -4.4958 0.6096) (end -4.4958 0.9144) (layer "F.Fab") (width 0.1524) (tstamp 3132d241-d7f6-4a55-9503-29f1062b517f))
(fp_line (start 0.6096 4.4958) (end 0.9144 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 31daf2d4-3957-4ce7-98d3-a043649dd97e))
(fp_line (start -4.4958 3.0988) (end -4.4958 3.4036) (layer "F.Fab") (width 0.1524) (tstamp 337e4bb2-4de6-409d-8061-54d04950842d))
(fp_line (start 4.4958 -4.4958) (end -4.4958 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 4115dd93-f2eb-4a67-8dbd-532f41b7a69f))
(fp_line (start -4.4958 -0.9144) (end -4.4958 -0.6096) (layer "F.Fab") (width 0.1524) (tstamp 453e6bba-48de-4666-a7eb-66bef0e2b02c))
(fp_line (start 3.9116 -4.4958) (end 3.6068 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 4cda505e-c23d-4504-823e-c4f0c3948a9d))
(fp_line (start 4.4958 -1.0922) (end 4.4958 -1.397) (layer "F.Fab") (width 0.1524) (tstamp 503e0041-3118-4b51-83f1-b9c14f77f4b1))
(fp_line (start -4.4958 -3.2258) (end -3.2258 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 54b28547-cb8b-489a-a9df-6ad15177b2e9))
(fp_line (start -3.0988 -4.4958) (end -3.4036 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 5918fd35-f23c-42ff-9fba-9c5a9ac207d3))
(fp_line (start 4.4958 3.4036) (end 4.4958 3.0988) (layer "F.Fab") (width 0.1524) (tstamp 5f822173-84ee-42a7-a838-54e1cfc17adf))
(fp_line (start 3.6068 4.4958) (end 3.9116 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 632e8422-a140-4238-81b2-8829c7485b2e))
(fp_line (start -4.4958 -2.413) (end -4.4958 -2.1082) (layer "F.Fab") (width 0.1524) (tstamp 67448bdd-3f5c-4a5e-8105-da8836876044))
(fp_line (start 2.1082 4.4958) (end 2.413 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 69ab593b-1948-43ac-9d69-727c88e9b459))
(fp_line (start -2.8956 4.4958) (end -2.5908 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 6dc5284f-c6ff-453d-b163-9f63ed7892ad))
(fp_line (start -1.905 4.4958) (end -1.6002 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 6df1e081-1245-47a6-86a6-0c79f1f9db56))
(fp_line (start 1.6002 4.4958) (end 1.905 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 709494b8-7fc2-496a-8451-57d7441e8505))
(fp_line (start -4.4958 3.6068) (end -4.4958 3.9116) (layer "F.Fab") (width 0.1524) (tstamp 7212588c-17f7-4956-b77b-065540b4ee49))
(fp_line (start 2.8956 -4.4958) (end 2.5908 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 7ce7324c-91ea-47c6-b7c2-bd1b2f2a14c2))
(fp_line (start -3.4036 4.4958) (end -3.0988 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 7fb70e9b-db47-465c-b7f5-3f144c3fe511))
(fp_line (start 4.4958 -2.1082) (end 4.4958 -2.413) (layer "F.Fab") (width 0.1524) (tstamp 832b785c-4536-49cf-b6de-cedea7d015a6))
(fp_line (start 2.5908 4.4958) (end 2.8956 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 838b54da-8d76-4af0-a533-f421e7be02c2))
(fp_line (start -4.4958 2.5908) (end -4.4958 2.8956) (layer "F.Fab") (width 0.1524) (tstamp 8c3c449f-a035-419f-9950-338baab558f6))
(fp_line (start 4.4958 -1.6002) (end 4.4958 -1.905) (layer "F.Fab") (width 0.1524) (tstamp 8e588935-ced6-458a-a187-91e74c238ac8))
(fp_line (start -1.397 4.4958) (end -1.0922 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 8fe96cfe-a951-426f-80b8-9a4ee6265385))
(fp_line (start -4.4958 1.0922) (end -4.4958 1.397) (layer "F.Fab") (width 0.1524) (tstamp 8ff9eeba-c353-40da-b499-b20afa11f353))
(fp_line (start -4.4958 -4.4958) (end -4.4958 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 93722526-b9c8-4550-8cdd-369ecb315477))
(fp_line (start -1.0922 -4.4958) (end -1.397 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 9a7cda4c-e257-4759-beca-0a008c33f019))
(fp_line (start 0.9144 -4.4958) (end 0.6096 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 9c8602d4-958b-412c-8bb3-0d75d4a4147b))
(fp_line (start 4.4958 2.8956) (end 4.4958 2.5908) (layer "F.Fab") (width 0.1524) (tstamp ab68518b-68f5-4fed-903c-3d10b7662e9c))
(fp_line (start -4.4958 -0.4064) (end -4.4958 -0.1016) (layer "F.Fab") (width 0.1524) (tstamp ae845f43-7bd0-4d9b-b6ce-ea24c3f78b67))
(fp_line (start 4.4958 2.413) (end 4.4958 2.1082) (layer "F.Fab") (width 0.1524) (tstamp ae9df4c2-28e5-48f0-aff2-79a0c1a8a15a))
(fp_line (start -0.4064 4.4958) (end -0.1016 4.4958) (layer "F.Fab") (width 0.1524) (tstamp b27f2059-e221-491a-8338-8399fdb6602a))
(fp_line (start 1.905 -4.4958) (end 1.6002 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp b30b8721-3fe1-41c3-8198-1a4ccb7ceb74))
(fp_line (start -4.4958 4.4958) (end 4.4958 4.4958) (layer "F.Fab") (width 0.1524) (tstamp b476f917-8b6e-4132-b869-771909a051c6))
(fp_line (start 1.397 -4.4958) (end 1.0922 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp b5382627-0c47-465b-972a-a305e2e8c255))
(fp_line (start -4.4958 0.1016) (end -4.4958 0.4064) (layer "F.Fab") (width 0.1524) (tstamp b6e57a1a-77bc-4011-8ab7-3ca5980c960f))
(fp_line (start 4.4958 1.905) (end 4.4958 1.6002) (layer "F.Fab") (width 0.1524) (tstamp b8b1c0a5-6e37-467f-b8f0-bf600730b7aa))
(fp_line (start 2.413 -4.4958) (end 2.1082 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp b8c56df8-3039-424a-9681-56118c58b690))
(fp_line (start 1.0922 4.4958) (end 1.397 4.4958) (layer "F.Fab") (width 0.1524) (tstamp bb394421-3605-4756-9508-929d6758f654))
(fp_line (start -3.6068 -4.4958) (end -3.9116 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp be1b6c3d-7e5b-4a40-908c-b936697a3a15))
(fp_line (start 4.4958 -0.6096) (end 4.4958 -0.9144) (layer "F.Fab") (width 0.1524) (tstamp c1182e1e-de77-4a90-a154-0b526180f4ec))
(fp_line (start -4.4958 2.1082) (end -4.4958 2.413) (layer "F.Fab") (width 0.1524) (tstamp c1bc3314-d8be-4ff1-a3c3-ed1c9b2d7f54))
(fp_line (start -2.1082 -4.4958) (end -2.413 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp c2f4caf6-9472-4b57-8792-997c7297ad6f))
(fp_line (start 3.4036 -4.4958) (end 3.0988 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp c580dbd6-b23d-4473-a656-cd0cbd690fa4))
(fp_line (start 4.4958 0.9144) (end 4.4958 0.6096) (layer "F.Fab") (width 0.1524) (tstamp c8e7357a-ffca-40b2-9f1f-0e667dd778c7))
(fp_line (start 4.4958 -3.6068) (end 4.4958 -3.9116) (layer "F.Fab") (width 0.1524) (tstamp c968c46a-836c-481d-9a49-06172946f81e))
(fp_line (start -4.4958 -1.905) (end -4.4958 -1.6002) (layer "F.Fab") (width 0.1524) (tstamp cd74684a-5938-4604-a11c-848de541a8a6))
(fp_line (start 0.4064 -4.4958) (end 0.1016 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp d06a81a3-464e-4192-865d-76347fe63188))
(fp_line (start -4.4958 1.6002) (end -4.4958 1.905) (layer "F.Fab") (width 0.1524) (tstamp e08784ed-8b2a-49ee-bef9-7b2d3857e5ba))
(fp_line (start 4.4958 3.9116) (end 4.4958 3.6068) (layer "F.Fab") (width 0.1524) (tstamp e40896aa-4f74-4b18-add9-342665b200b4))
(fp_line (start -0.9144 4.4958) (end -0.6096 4.4958) (layer "F.Fab") (width 0.1524) (tstamp e9b70cd9-c935-4ef0-8469-421eb4fd1bac))
(fp_line (start -4.4958 -1.397) (end -4.4958 -1.0922) (layer "F.Fab") (width 0.1524) (tstamp eb56c15a-02df-4139-84ab-d8a1651203fa))
(fp_line (start 3.0988 4.4958) (end 3.4036 4.4958) (layer "F.Fab") (width 0.1524) (tstamp f58471ed-0cee-4f6a-b2e5-1373fa172f0d))
(fp_line (start -2.5908 -4.4958) (end -2.8956 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp f9ac7fe7-3a4d-4488-bc27-2d7e673008b2))
(fp_line (start -2.413 4.4958) (end -2.1082 4.4958) (layer "F.Fab") (width 0.1524) (tstamp f9cb66b4-6171-4d5f-b302-fa11feb7e25e))
(pad "1" smd rect (at -4.3942 -3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0962937a-7e17-49c2-843a-309b9e705166))
(pad "2" smd rect (at -4.3942 -3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a2fedbd9-479b-4398-baab-86589de39528))
(pad "3" smd rect (at -4.3942 -2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e98112c7-b41a-4ab2-8cb2-235538dcf529))
(pad "4" smd rect (at -4.3942 -2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 01c8af07-90ff-4b3d-b404-db01135cbcbd))
(pad "5" smd rect (at -4.3942 -1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 36cd9aaf-ae25-480f-827b-e14d53a73530))
(pad "6" smd rect (at -4.3942 -1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 89a4dae4-94d7-4e16-b389-021d58b92093))
(pad "7" smd rect (at -4.3942 -0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e79aeb81-b0e9-42dc-9659-8a0783bf4de2))
(pad "8" smd rect (at -4.3942 -0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7c204068-d0aa-459b-b4fa-71e8935dd9dd))
(pad "9" smd rect (at -4.3942 0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1c34ed7b-f29c-48ab-a67f-7e34e10696d9))
(pad "10" smd rect (at -4.3942 0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4b62ffb5-f26f-42ce-b28d-6d417a8eb453))
(pad "11" smd rect (at -4.3942 1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp b93c79ac-77e5-4fb0-abe6-0f662be65153))
(pad "12" smd rect (at -4.3942 1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a82deada-b3dc-43d8-9675-ea9e287e99f4))
(pad "13" smd rect (at -4.3942 2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f89abcc5-9507-4994-b7ec-08e99b565c34))
(pad "14" smd rect (at -4.3942 2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3b07801d-fbc1-4f67-a403-def8cd01c41d))
(pad "15" smd rect (at -4.3942 3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp fc1fc9cb-2099-4de4-8cdd-d83af9dd5f90))
(pad "16" smd rect (at -4.3942 3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bc1d3611-8bc5-4413-b9ae-8a04bfaa0730))
(pad "17" smd rect (at -3.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp eae353fe-5b10-44d1-aee2-527fb697339e))
(pad "18" smd rect (at -3.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0be2d7ef-74f7-4c54-9c11-567b325a3550))
(pad "19" smd rect (at -2.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 94af1e4e-830f-47d9-b4af-1d2f77f0e846))
(pad "20" smd rect (at -2.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0c875dfd-527c-4ba5-84fd-4d171caf74bb))
(pad "21" smd rect (at -1.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f8327bac-2bfe-4f25-b58b-a76fe59386c6))
(pad "22" smd rect (at -1.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 39a31cfe-a89d-4f7b-b480-a9458bbbaeec))
(pad "23" smd rect (at -0.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e1e0568d-368c-488e-902b-8d4d2ca00d90))
(pad "24" smd rect (at -0.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp b4c8b1b6-b104-424e-b3ae-e10a63946100))
(pad "25" smd rect (at 0.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 43bd0070-dd63-4c69-be69-c4ea652b922a))
(pad "26" smd rect (at 0.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4a1cf31f-d5f4-4210-ac17-84340c530d59))
(pad "27" smd rect (at 1.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a6955bbd-8e2f-47ac-9d2d-1dc038277299))
(pad "28" smd rect (at 1.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7ffcf02c-15fa-481f-81f2-bd642d7f79cb))
(pad "29" smd rect (at 2.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 41a0665e-4d1a-4fa6-90c8-82faf5e06664))
(pad "30" smd rect (at 2.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cc003555-3729-46c6-8945-cbd09db502b4))
(pad "31" smd rect (at 3.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5c77f960-ade6-4efb-9c4b-dcf559c7eac2))
(pad "32" smd rect (at 3.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d89499ae-4014-4f85-949d-db2745a5c1be))
(pad "33" smd rect (at 4.3942 3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a15c3c43-a66d-4557-9dd1-9291285217ad))
(pad "34" smd rect (at 4.3942 3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5654db23-3f90-4ce8-879c-12ebe3c1b2f7))
(pad "35" smd rect (at 4.3942 2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cf36d037-47b9-4211-a0ba-1b21c826386c))
(pad "36" smd rect (at 4.3942 2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7446c48e-88d2-43f3-9107-02dc8c28c890))
(pad "37" smd rect (at 4.3942 1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp dc190b06-ebe1-480f-9f26-814b886ca30e))
(pad "38" smd rect (at 4.3942 1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f31d87cd-a520-48c6-bd59-16ce7a0c8a4c))
(pad "39" smd rect (at 4.3942 0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3fa7895a-6817-41c8-b122-323e15af05f5))
(pad "40" smd rect (at 4.3942 0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0af777e9-db83-44e5-82b3-4d0cc1118c82))
(pad "41" smd rect (at 4.3942 -0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cc198b2a-7c6d-448a-ba27-a1a291727e63))
(pad "42" smd rect (at 4.3942 -0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4f4f7230-a137-4430-aeca-4b9793e7ef29))
(pad "43" smd rect (at 4.3942 -1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 09e93bbc-81b5-4780-a105-25986af4e57c))
(pad "44" smd rect (at 4.3942 -1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 80626780-24b0-434f-a133-1859aa0ffc80))
(pad "45" smd rect (at 4.3942 -2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e213e53b-8e52-48ca-828a-5f55b9135f2a))
(pad "46" smd rect (at 4.3942 -2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4c7b79ca-8f05-473a-80e6-3bebce2e229f))
(pad "47" smd rect (at 4.3942 -3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 2cab5ab7-2cc3-4048-816f-20e4725e4987))
(pad "48" smd rect (at 4.3942 -3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8441a91d-f48e-4251-bcaf-dc7094507898))
(pad "49" smd rect (at 3.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3c1b33ef-acb9-4266-b8c6-bb013e5dae2c))
(pad "50" smd rect (at 3.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a8a245a0-1165-437d-87fe-7eee7997aee7))
(pad "51" smd rect (at 2.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1e99a129-c646-417d-b055-3f37123cf8ef))
(pad "52" smd rect (at 2.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 82864969-1aa8-49df-9eac-4458700e6ca7))
(pad "53" smd rect (at 1.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4d35c705-5a51-4806-a126-12c937c6b1e7))
(pad "54" smd rect (at 1.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d491f121-2845-455d-8541-44fa2ec6c594))
(pad "55" smd rect (at 0.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 2186d0aa-6d37-46d1-8257-2c34c61fca1c))
(pad "56" smd rect (at 0.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 732ba6d0-6193-4c48-8070-6779e2d08aac))
(pad "57" smd rect (at -0.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f7f108f5-a5d2-4a71-bd92-4b7a64cd67ef))
(pad "58" smd rect (at -0.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5a9c3c03-bc6d-4d54-97af-ccd4b0ec62bd))
(pad "59" smd rect (at -1.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 02619e26-a84a-4ced-aa63-185f88279688))
(pad "60" smd rect (at -1.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 92a99c1b-1f77-4822-9ef0-404ea7ef9b34))
(pad "61" smd rect (at -2.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 90707762-bc1e-4e07-b417-1728eca9f661))
(pad "62" smd rect (at -2.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3db20676-41a3-4cd5-aaaa-fb7aac0e3ef9))
(pad "63" smd rect (at -3.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 2a66cae8-a800-4958-8ae7-e7d7f25b2674))
(pad "64" smd rect (at -3.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 70110040-44aa-4caf-9824-f55720183967))
(pad "65" smd rect (at 0 0) (size 4.572 4.572) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1a1fa73c-dc68-468e-8e77-2f7147d220c5))
)

View File

@ -0,0 +1,29 @@
(footprint "SOD-323F" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -1.8 -0.9) (layer "F.SilkS")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left bottom))
(tstamp 8d130de6-21ac-49e1-b622-a95fb15425d4)
)
(fp_text value ">VALUE" (at -2.1 1.7) (layer "F.Fab")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left bottom))
(tstamp f5198c37-c2af-4b4a-ace7-b957cdea8352)
)
(fp_line (start 0.4 -0.6) (end 0.4 0.6) (layer "F.SilkS") (width 0.127) (tstamp 0165360a-2e66-4636-a3c0-be1ba6b7146b))
(fp_line (start 0.4 0.6) (end 0.3 0.6) (layer "F.SilkS") (width 0.127) (tstamp 31d6649e-2cb0-4b56-9f6f-94a0dc543d5a))
(fp_line (start 0.85 -0.65) (end 0.85 0.65) (layer "F.SilkS") (width 0.127) (tstamp 320884e5-1885-40b5-8b79-b48357d2fa56))
(fp_line (start 0.3 0.6) (end 0.3 -0.6) (layer "F.SilkS") (width 0.127) (tstamp 3a4ae6db-a2ad-4e01-be88-bd3d813a8e29))
(fp_line (start -0.85 0.65) (end -0.85 -0.65) (layer "F.SilkS") (width 0.127) (tstamp 4fef4a0d-c874-4fe4-9bb4-3b8d64e9347b))
(fp_line (start 0.85 0.65) (end -0.85 0.65) (layer "F.SilkS") (width 0.127) (tstamp 7ebd6805-bd0d-4272-b0ea-a17483d80ca5))
(fp_line (start -0.85 -0.65) (end 0.85 -0.65) (layer "F.SilkS") (width 0.127) (tstamp cb3724d9-81a8-487f-80a1-8ccce53d6d55))
(fp_line (start -0.9 -0.2) (end -1.2 -0.2) (layer "F.Fab") (width 0.127) (tstamp 9290e464-7c10-4d28-b961-53ead5d00f7c))
(fp_line (start 1.2 0.2) (end 0.9 0.2) (layer "F.Fab") (width 0.127) (tstamp 9a951f19-776d-408e-9dd7-550047b0e2a6))
(fp_line (start -1.2 0.2) (end -0.9 0.2) (layer "F.Fab") (width 0.127) (tstamp c213b2e9-ebc1-49b9-ad72-5803127305a5))
(fp_line (start 0.9 -0.2) (end 1.2 -0.2) (layer "F.Fab") (width 0.127) (tstamp c31a6350-0001-4420-90f8-12019bfccaf7))
(fp_line (start 1.2 -0.2) (end 1.2 0.2) (layer "F.Fab") (width 0.127) (tstamp d0e73230-a9c2-4595-9b95-ba35aa96b070))
(fp_line (start -1.2 -0.2) (end -1.2 0.2) (layer "F.Fab") (width 0.127) (tstamp d91a4af6-4bb8-467f-b69b-1a906bc211a7))
(pad "A" smd rect (at -1 0) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 72b76f37-b628-4712-9ff6-021da3f7a013))
(pad "C" smd rect (at 1 0) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cb8dd863-14d8-4470-ad3e-b81fad315442))
)

View File

@ -0,0 +1,34 @@
(footprint "SOT65P210X110-5N" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -1.8 -1.4) (layer "F.SilkS")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left bottom))
(tstamp 457cb9de-fc22-4a85-9c82-7438f85d137d)
)
(fp_text value ">VALUE" (at -1.8 1.4) (layer "F.Fab")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left top))
(tstamp 674ecd7e-5cc8-4469-9690-04223952bf82)
)
(fp_line (start -0.625 1.17) (end 0.625 1.17) (layer "F.SilkS") (width 0.127) (tstamp 2f22abf8-16bd-42ad-a0ee-757b9dc94627))
(fp_line (start 0.625 -1.17) (end -0.625 -1.17) (layer "F.SilkS") (width 0.127) (tstamp 7fba8434-1fa5-492e-93c3-f5210db0af84))
(fp_circle (center -2.1 -0.9) (end -2 -0.9) (layer "F.SilkS") (width 0.2) (fill none) (tstamp 687a4ff9-95c3-4e33-9daa-47acc0e40e1e))
(fp_line (start -1.805 -1.2625) (end -1.805 1.2625) (layer "F.CrtYd") (width 0.05) (tstamp 17863368-ebf9-4b76-8a27-2431df2a120c))
(fp_line (start 1.805 -1.2625) (end -1.805 -1.2625) (layer "F.CrtYd") (width 0.05) (tstamp 62cf88fb-d482-4b99-9b0f-281e43055f8b))
(fp_line (start -1.805 1.2625) (end 1.805 1.2625) (layer "F.CrtYd") (width 0.05) (tstamp b5135559-37a4-492d-a6dc-8ab982428252))
(fp_line (start 1.805 1.2625) (end 1.805 -1.2625) (layer "F.CrtYd") (width 0.05) (tstamp dcf4a5aa-5c00-4b2e-ba11-24374e17c340))
(fp_line (start 0.625 1.0125) (end 0.625 -1.0125) (layer "F.Fab") (width 0.127) (tstamp 0d92b703-ef1a-45ad-8945-076840a3419d))
(fp_line (start 0.625 -1.0125) (end -0.625 -1.0125) (layer "F.Fab") (width 0.127) (tstamp 3b31ae4c-5100-4114-b54f-c515c85e31ef))
(fp_line (start -0.625 -1.0125) (end -0.625 1.0125) (layer "F.Fab") (width 0.127) (tstamp 4479abbf-71f9-42d6-b915-553dfa74ac7a))
(fp_line (start -0.625 1.0125) (end 0.625 1.0125) (layer "F.Fab") (width 0.127) (tstamp a7b3fdba-c9c6-4541-aa58-e7d5af1159f7))
(fp_circle (center -2.1 -0.9) (end -2 -0.9) (layer "F.Fab") (width 0.2) (fill none) (tstamp 4b3d66f1-3431-45ab-8164-ecd0988102d2))
(pad "1" smd rect (at -0.97 -0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 79539752-66ac-4cde-9791-7e50fc9c08e9))
(pad "2" smd rect (at -0.97 0) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 412a873e-1c99-4a4b-86e1-a676f2285a25))
(pad "3" smd rect (at -0.97 0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d56e9cb4-6e4a-4ec0-a67f-7fd53cd17c95))
(pad "4" smd rect (at 0.97 0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bed9dd9c-f127-43c3-a252-0194a4ef1905))
(pad "5" smd rect (at 0.97 -0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 468863fa-6e22-4082-9c4f-d4c63b16d5f2))
)

View File

@ -0,0 +1,54 @@
(footprint "SW_EVP-BB1AAB000" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -2.628409 -1.50195) (layer "F.SilkS")
(effects (font (size 1.169909 1.169909) (thickness 0.101731)) (justify left bottom))
(tstamp 5bfc1104-d8e6-463d-96bf-3b297940d17a)
)
(fp_text value ">VALUE" (at -2.629818 3.005518) (layer "F.Fab")
(effects (font (size 1.170545 1.170545) (thickness 0.101786)) (justify left bottom))
(tstamp 0d6e3660-78d4-4c9d-aa40-0c2181937185)
)
(fp_poly (pts
(xy -1.095 -0.145)
(xy -1.555 -0.145)
(xy -1.555 -0.605)
(xy -1.095 -0.605)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 6db398f8-2729-450b-aef1-8242c2cd2e0f))
(fp_poly (pts
(xy -1.095 0.605)
(xy -1.555 0.605)
(xy -1.555 0.145)
(xy -1.095 0.145)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 84da75db-45c9-4044-8d1e-347621238750))
(fp_poly (pts
(xy 1.555 0.605)
(xy 1.095 0.605)
(xy 1.095 0.145)
(xy 1.555 0.145)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 85bec7d7-877b-406c-bad8-abaa99fcbe23))
(fp_poly (pts
(xy 1.555 -0.145)
(xy 1.095 -0.145)
(xy 1.095 -0.605)
(xy 1.555 -0.605)
) (layer "F.Paste") (width 0) (fill solid) (tstamp e8fb6dd3-e158-4257-9e15-870695c296b7))
(fp_line (start -1.3 0.9635) (end 1.3 0.9635) (layer "F.SilkS") (width 0.127) (tstamp 2a0673e1-384a-4091-aad2-73c6b1e7babd))
(fp_line (start -1.3 -0.9635) (end 1.3 -0.9635) (layer "F.SilkS") (width 0.127) (tstamp daeab9ff-4ca6-4d3e-8486-53bc65dc2c70))
(fp_line (start 1.85 -1.05) (end 1.85 1.05) (layer "F.CrtYd") (width 0.05) (tstamp 4939d836-3fdc-47f9-b885-f87382603570))
(fp_line (start -1.85 1.05) (end -1.85 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp b1dcf4ab-520c-4ad1-8398-87f8dd8fec29))
(fp_line (start -1.85 -1.05) (end 1.85 -1.05) (layer "F.CrtYd") (width 0.05) (tstamp d6daa52c-633b-4f9e-9611-999747c83ff7))
(fp_line (start 1.85 1.05) (end -1.85 1.05) (layer "F.CrtYd") (width 0.05) (tstamp e4f415ce-fdbb-4c24-b2a1-e501eae24f60))
(fp_line (start -1.3 0.8) (end -1.3 -0.8) (layer "F.Fab") (width 0.127) (tstamp 1e090053-4c0c-424f-8664-54986066ef27))
(fp_line (start 1.3 0.8) (end -1.3 0.8) (layer "F.Fab") (width 0.127) (tstamp 31b618ce-8704-4bd2-948f-25d290b97ca7))
(fp_line (start -1.3 -0.8) (end 1.3 -0.8) (layer "F.Fab") (width 0.127) (tstamp 8e13a383-d573-4545-b914-42a75e606b8c))
(fp_line (start 1.3 -0.8) (end 1.3 0.8) (layer "F.Fab") (width 0.127) (tstamp df66859c-c21f-4048-8e27-8d86d5f411f0))
(pad "A1" smd rect (at -1.325 -0.375) (size 0.55 0.55) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp efeb691d-5593-439a-a931-ffe8a985f2c4))
(pad "A2" smd rect (at -1.325 0.375) (size 0.55 0.55) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4ceaa3e3-568f-42dd-8491-a773d8add0f9))
(pad "B1" smd rect (at 1.325 -0.375) (size 0.55 0.55) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5bdc0a88-b8c1-4c56-b2c0-8737e7eeb5ed))
(pad "B2" smd rect (at 1.325 0.375) (size 0.55 0.55) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp fb158033-514b-4126-84ba-b82cd884d9a2))
)

View File

@ -0,0 +1,32 @@
(footprint "XTAL3215" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -2.3 2.2) (layer "F.SilkS")
(effects (font (size 0.93472 0.93472) (thickness 0.08128)) (justify left bottom))
(tstamp a9c6df82-9b3d-430b-ac3d-773dba21edac)
)
(fp_text value ">VALUE" (at -2.6 -1.2) (layer "F.Fab")
(effects (font (size 0.93472 0.93472) (thickness 0.08128)) (justify left bottom))
(tstamp 2d0c10c9-abbe-4218-b4a2-a2a06a7ca92f)
)
(fp_line (start -1.6 0.4172) (end -1.6 -0.4764) (layer "F.SilkS") (width 0.127) (tstamp 078a622d-2e6e-4da6-9441-6376052c47eb))
(fp_line (start -1.1 -0.4) (end 1 -0.4) (layer "F.SilkS") (width 0.127) (tstamp 16000523-6636-4a7c-90fe-2f09fce78d5e))
(fp_line (start -1.3 0.2) (end -1.3 -0.1) (layer "F.SilkS") (width 0.127) (tstamp 46b2dcb4-bf9c-401f-993d-249e79f10a6f))
(fp_line (start 1 0.4) (end -1 0.4) (layer "F.SilkS") (width 0.127) (tstamp 519e3fa1-ccf8-482c-80ef-bd5f407c1c5f))
(fp_line (start 1.3172 0.7) (end -1.3172 0.7) (layer "F.SilkS") (width 0.127) (tstamp 93307323-bd88-4ddc-ab8a-4f2d823906f4))
(fp_line (start -1.3764 -0.7) (end 1.2838 -0.7) (layer "F.SilkS") (width 0.127) (tstamp 96d8ac11-ef54-4b37-87dc-dbd4ca0b1cb4))
(fp_line (start 1.6 -0.3838) (end 1.6 0.4172) (layer "F.SilkS") (width 0.127) (tstamp bec9dc30-b160-4d84-ad5b-772b0009be76))
(fp_line (start 1.3 -0.1) (end 1.3 0.1) (layer "F.SilkS") (width 0.127) (tstamp f4ad8862-e14a-4b15-bbdf-fb0b7a3f55f3))
(fp_arc (start -1.3172 0.7) (mid -1.51717 0.61717) (end -1.6 0.4172) (layer "F.SilkS") (width 0.127) (tstamp 0c48587a-6c32-4781-9323-526f5fdc2492))
(fp_arc (start 1.3 0.1) (mid 1.212131 0.312132) (end 0.999999 0.399999) (layer "F.SilkS") (width 0.127) (tstamp 11535cde-6a05-4f6a-a42d-7840292384eb))
(fp_arc (start -1 0.4) (mid -1.191422 0.362132) (end -1.300001 0.199999) (layer "F.SilkS") (width 0.127) (tstamp 1d879171-52ed-4187-9c41-72a9e6c6b120))
(fp_arc (start -1.6 -0.4764) (mid -1.534509 -0.634509) (end -1.3764 -0.7) (layer "F.SilkS") (width 0.127) (tstamp 285901dd-7be7-4fde-bb96-976224872c4a))
(fp_arc (start -1.3 -0.1) (mid -1.262161 -0.291441) (end -1.099999 -0.399999) (layer "F.SilkS") (width 0.127) (tstamp 2eacfb6a-d7d1-4bde-b6bc-6096465bc8c1))
(fp_arc (start 1.2838 -0.7) (mid 1.507387 -0.607387) (end 1.6 -0.3838) (layer "F.SilkS") (width 0.127) (tstamp 499a51d8-52e8-4eb8-aeac-96a1be49503b))
(fp_arc (start 1.6 0.4172) (mid 1.51717 0.61717) (end 1.3172 0.7) (layer "F.SilkS") (width 0.127) (tstamp ab55d0d5-009c-4663-a9bc-dfc975cfe4f8))
(fp_arc (start 1 -0.4) (mid 1.212103 -0.312103) (end 1.3 -0.1) (layer "F.SilkS") (width 0.127) (tstamp e095b566-4c68-4a1b-a41d-59524889820a))
(pad "P$1" smd rect (at 1.2 0) (size 1.1 1.9) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4ee07c5d-9f78-4558-bf26-a2f36b7ff744))
(pad "P$2" smd rect (at -1.2 0 180) (size 1.1 1.9) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4d20cca2-e97b-4688-a784-b838b6ce3b76))
)

View File

@ -0,0 +1,38 @@
(footprint "_0402MP" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>0402 MicroPitch<p>")
(fp_text reference "REF**" (at -0.635 -0.4763) (layer "F.SilkS")
(effects (font (size 0.499872 0.499872) (thickness 0.109728)) (justify left bottom))
(tstamp 66f54e50-362a-4456-a671-e8b742aabfe7)
)
(fp_text value ">VALUE" (at -0.635 0.7938) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp 7205e05a-db5d-40d5-aa8d-0965b4d6a0a3)
)
(fp_poly (pts
(xy -0.1 0.2)
(xy 0.1 0.2)
(xy 0.1 -0.2)
(xy -0.1 -0.2)
) (layer "F.Adhes") (width 0) (fill solid) (tstamp 151adedc-3095-4283-bc8b-67b6c834501c))
(fp_line (start 0 -0.127) (end 0 0.127) (layer "F.SilkS") (width 0.2032) (tstamp a31d0c78-4bd5-4839-be72-14af5f3f165d))
(fp_line (start -0.245 -0.174) (end 0.245 -0.174) (layer "F.Fab") (width 0.1016) (tstamp ddaa21a2-edd4-401c-ac76-6f183cf5be3d))
(fp_line (start 0.245 0.174) (end -0.245 0.174) (layer "F.Fab") (width 0.1016) (tstamp ec8c18e2-500a-4935-81c1-76a24c731e63))
(fp_poly (pts
(xy -0.5 0.25)
(xy -0.254 0.25)
(xy -0.254 -0.25)
(xy -0.5 -0.25)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 335257f6-f886-460f-b838-e2d8232128c8))
(fp_poly (pts
(xy 0.2588 0.25)
(xy 0.5 0.25)
(xy 0.5 -0.25)
(xy 0.2588 -0.25)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 3d7cd32b-2bab-4b7c-a3da-482a6d596be7))
(pad "1" smd rect (at -0.508 0) (size 0.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp c609a9e6-5647-44af-a743-b732a2a0c37d))
(pad "2" smd rect (at 0.508 0) (size 0.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1249fd1b-9f93-42c3-bb42-dae4056aa043))
)

View File

@ -0,0 +1,38 @@
(footprint "_0603MP" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>0603 MicroPitch</b>")
(fp_text reference "REF**" (at -0.9525 -0.635) (layer "F.SilkS")
(effects (font (size 0.666496 0.666496) (thickness 0.146304)) (justify left bottom))
(tstamp a1f3b960-720c-4050-8c7b-e4fb81f7c447)
)
(fp_text value ">VALUE" (at -0.9525 0.9525) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp f7454cc9-a5be-454b-b5bb-decc69423e09)
)
(fp_poly (pts
(xy -0.1999 0.25)
(xy 0.1999 0.25)
(xy 0.1999 -0.25)
(xy -0.1999 -0.25)
) (layer "F.Adhes") (width 0) (fill solid) (tstamp 23d6168b-6030-48a2-96be-111de678cbf9))
(fp_line (start 0 -0.254) (end 0 0.254) (layer "F.SilkS") (width 0.2032) (tstamp ebb6e458-b901-41c0-b269-52de840ade47))
(fp_line (start -0.432 0.306) (end 0.432 0.306) (layer "F.Fab") (width 0.1016) (tstamp 0ff59386-9f8f-4bc5-871b-4804e001e34f))
(fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer "F.Fab") (width 0.1016) (tstamp c1b693b3-0c6a-47f3-bd85-e73de386676a))
(fp_poly (pts
(xy 0.4318 0.4)
(xy 0.8 0.4)
(xy 0.8 -0.4)
(xy 0.4318 -0.4)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 98d6e8c0-7c85-4056-b142-5a49d5f78f6a))
(fp_poly (pts
(xy -0.8 0.4)
(xy -0.4318 0.4)
(xy -0.4318 -0.4)
(xy -0.8 -0.4)
) (layer "F.Fab") (width 0) (fill solid) (tstamp c67e1e1d-f03c-4cd2-855a-6f77ed9840d4))
(pad "1" smd rect (at -0.762 0) (size 0.8 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 261178c6-668c-4d25-9316-e97dc5e52e2d))
(pad "2" smd rect (at 0.762 0) (size 0.8 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp aece925f-4ef2-4a3b-a64c-72600b766d22))
)

View File

@ -0,0 +1,42 @@
(footprint "OSO_SWD_2x3" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr smd)
(fp_text reference "REF**" (at 0 -2.032 unlocked) (layer "F.SilkS") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp cc97765e-03dd-40c8-bc09-9942f8485d23)
)
(fp_text value "OSO_SWD_2x3" (at 0 -4.572 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3723f1be-f632-4091-a098-c9348aec63f6)
)
(fp_text user "C" (at -0.508 -0.762 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp 88931c8d-237f-4e79-b244-24354b5507cc)
)
(fp_text user "+" (at -0.508 1.778 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp b2d594d3-dac9-41e7-b515-19ad22df4cd2)
)
(fp_text user "D" (at 2.032 1.778 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp c41801cb-4840-4a63-9b83-a0b86093de8d)
)
(fp_text user "-" (at 2.032 -0.762 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp d116e34b-7d96-49fa-980e-61f5adbb5cc2)
)
(fp_text user "~{R}" (at -0.508 -3.302 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp e48e1604-d489-45a4-9587-152a042c354a)
)
(fp_text user "${REFERENCE}" (at 0 4.318 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3cf253e6-b3d8-4b70-990a-3a9df456d233)
)
(pad "1" smd circle (at 1.27 2.54) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp c93a3c51-b06c-47bc-b2c8-dcd43fd3bce4))
(pad "2" smd circle (at 1.27 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 657a0b8d-9c0a-4efd-920e-1742e80dbd77))
(pad "3" smd circle (at -1.27 2.54) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 110879b7-d820-400e-83c2-2ba83b15a32d))
(pad "4" smd circle (at -1.27 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 0da5021b-2960-4fb1-abd4-df913ada6e37))
(pad "5" smd circle (at -1.27 -2.54) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 5e6b9662-455f-4d0d-8334-3f95b2cc20e1))
)

View File

@ -0,0 +1,42 @@
(footprint "OSO_SWD_Linear" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr smd)
(fp_text reference "REF**" (at 0 -2.032 unlocked) (layer "F.SilkS") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp cc97765e-03dd-40c8-bc09-9942f8485d23)
)
(fp_text value "OSO_SWD_Linear" (at 0 -1.5 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3723f1be-f632-4091-a098-c9348aec63f6)
)
(fp_text user "SWC" (at 2.54 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp 88931c8d-237f-4e79-b244-24354b5507cc)
)
(fp_text user "3V3" (at 0 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp b2d594d3-dac9-41e7-b515-19ad22df4cd2)
)
(fp_text user "SWD" (at -5.08 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp c41801cb-4840-4a63-9b83-a0b86093de8d)
)
(fp_text user "GND" (at -2.54 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp d116e34b-7d96-49fa-980e-61f5adbb5cc2)
)
(fp_text user "~{RST}" (at 5.08 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp e48e1604-d489-45a4-9587-152a042c354a)
)
(fp_text user "${REFERENCE}" (at 0 3.048 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3cf253e6-b3d8-4b70-990a-3a9df456d233)
)
(pad "1" smd circle (at -5.08 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp c93a3c51-b06c-47bc-b2c8-dcd43fd3bce4))
(pad "2" smd circle (at -2.54 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 657a0b8d-9c0a-4efd-920e-1742e80dbd77))
(pad "3" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 110879b7-d820-400e-83c2-2ba83b15a32d))
(pad "4" smd circle (at 2.54 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 0da5021b-2960-4fb1-abd4-df913ada6e37))
(pad "5" smd circle (at 5.08 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 5e6b9662-455f-4d0d-8334-3f95b2cc20e1))
)

View File

@ -0,0 +1,44 @@
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
(symbol "OSO_SWD" (in_bom yes) (on_board yes)
(property "Reference" "J" (id 0) (at 0 -7.62 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "OSO_SWD" (id 1) (at 0 7.62 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "OSO_SWD_0_1"
(rectangle (start -5.08 6.35) (end 5.08 -6.35)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type background))
)
)
(symbol "OSO_SWD_1_1"
(pin bidirectional line (at -7.62 5.08 0) (length 2.54)
(name "SWDIO" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -7.62 2.54 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -7.62 0 0) (length 2.54)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 -2.54 0) (length 2.54)
(name "SWCLK" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 -5.08 0) (length 2.54)
(name "~{RESET}" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
)
)
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
(kicad_wks (version 20210606) (generator pl_editor)
(setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15)
(left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10))
(line (name "segm1:Line") (start 0 0) (end 0 0))
)

View File

@ -0,0 +1,4 @@
(fp_lib_table
(lib (name "OSO-SWAT-A1-05")(type "KiCad")(uri "$(KIPRJMOD)/OSO-SWAT-B1.pretty")(options "")(descr ""))
(lib (name "OSO-SWD")(type "KiCad")(uri "${KIPRJMOD}/OSO-SWD.pretty")(options "")(descr ""))
)

View File

@ -0,0 +1,4 @@
(sym_lib_table
(lib (name "OSO-SWAT-A1-05-eagle-import")(type "KiCad")(uri "${KIPRJMOD}/OSO-SWAT-A1-05-eagle-import.kicad_sym")(options "")(descr ""))
(lib (name "OSO-SWD")(type "KiCad")(uri "${KIPRJMOD}/OSO_SWD.kicad_sym")(options "")(descr ""))
)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 31,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": true,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"visible_layers": "00290aa_80000007",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "OSO-SWAT-C1-rounded.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View File

@ -0,0 +1,692 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.9,
"height": 0.9,
"width": 0.9
},
"silk_line_width": 0.12,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 1e-06
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [
"clearance|6549579|23514621|0dac23a8-f43b-4e30-9a10-b757851281ba|192908ec-7c4c-4ab1-a565-bc709c96b57f",
"clearance|7950000|22690000|821d722e-241b-43f8-bcb8-12290d54f4d9|192908ec-7c4c-4ab1-a565-bc709c96b57f",
"clearance|7970521|23400521|e003e765-2ee5-400f-abaa-d669dc68a0c6|192908ec-7c4c-4ab1-a565-bc709c96b57f",
"clearance|8581179|22000000|3dde5b5d-55b0-42ee-abfb-5429896be16c|192908ec-7c4c-4ab1-a565-bc709c96b57f",
"clearance|8581179|22002512|3cab235c-f7da-46c2-8b4d-9d21002f2b49|192908ec-7c4c-4ab1-a565-bc709c96b57f",
"items_not_allowed|6130279|23400521|0dac23a8-f43b-4e30-9a10-b757851281ba|00000000-0000-0000-0000-000000000000",
"items_not_allowed|7050400|23400521|e003e765-2ee5-400f-abaa-d669dc68a0c6|00000000-0000-0000-0000-000000000000",
"items_not_allowed|7950000|23035000|821d722e-241b-43f8-bcb8-12290d54f4d9|00000000-0000-0000-0000-000000000000",
"items_not_allowed|8640000|22000000|3cab235c-f7da-46c2-8b4d-9d21002f2b49|00000000-0000-0000-0000-000000000000",
"items_not_allowed|8780000|22000000|3dde5b5d-55b0-42ee-abfb-5429896be16c|00000000-0000-0000-0000-000000000000"
],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "warning",
"copper_sliver": "warning",
"courtyards_overlap": "warning",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "warning",
"starved_thermal": "warning",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0889,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.0889,
"min_hole_clearance": 0.0889,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.2,
"min_track_width": 0.0889,
"min_via_annular_width": 0.125,
"min_via_diameter": 0.45,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.0762,
0.0889,
0.1016,
0.127,
0.1524,
0.1778,
0.2032,
0.254,
0.3048,
0.55
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.5588,
"drill": 0.3048
}
],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "error",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "OSO-SWAT-C1-rounded.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.0889,
"diff_pair_gap": 0.0889,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.0889,
"line_style": 0,
"microvia_diameter": 0.45,
"microvia_drill": 0.2,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.0889,
"via_diameter": 0.45,
"via_drill": 0.2,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.0889,
"diff_pair_gap": 0.0889,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.0889,
"line_style": 0,
"microvia_diameter": 0.45,
"microvia_drill": 0.2,
"name": "gnd",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2032,
"via_diameter": 0.45,
"via_drill": 0.2,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.0889,
"diff_pair_gap": 0.0889,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.0889,
"line_style": 0,
"microvia_diameter": 0.45,
"microvia_drill": 0.2,
"name": "power",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2032,
"via_diameter": 0.45,
"via_drill": 0.2,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "gnd",
"pattern": "GND"
},
{
"netclass": "power",
"pattern": "VCC"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "./OSO-SWAT-C1-06",
"pos_files": "",
"specctra_dsn": "",
"step": "OSO-SWAT-C1.step",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "OSO-SWAT-C1-05.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "empty.kicad_wks",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"3048f5e8-34bb-46da-8fa5-8c5aad2586f2",
"Root"
]
],
"text_variables": {}
}

View File

@ -0,0 +1 @@
(version 1)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": true,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"visible_layers": "0015055_80000001",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "OSO-SWAT-C1.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View File

@ -0,0 +1,681 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.9,
"height": 0.9,
"width": 0.9
},
"silk_line_width": 0.12,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 1e-06
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "warning",
"copper_sliver": "warning",
"courtyards_overlap": "warning",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "warning",
"starved_thermal": "warning",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0889,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.0889,
"min_hole_clearance": 0.0889,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.2,
"min_track_width": 0.0889,
"min_via_annular_width": 0.125,
"min_via_diameter": 0.45,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.0762,
0.0889,
0.1016,
0.127,
0.1524,
0.1778,
0.2032,
0.254,
0.3048,
0.55
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.5588,
"drill": 0.3048
}
],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "error",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "OSO-SWAT-C1.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.0889,
"diff_pair_gap": 0.0889,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.0889,
"line_style": 0,
"microvia_diameter": 0.45,
"microvia_drill": 0.2,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.0889,
"via_diameter": 0.45,
"via_drill": 0.2,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.0889,
"diff_pair_gap": 0.0889,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.0889,
"line_style": 0,
"microvia_diameter": 0.45,
"microvia_drill": 0.2,
"name": "gnd",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2032,
"via_diameter": 0.45,
"via_drill": 0.2,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.0889,
"diff_pair_gap": 0.0889,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.0889,
"line_style": 0,
"microvia_diameter": 0.45,
"microvia_drill": 0.2,
"name": "power",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2032,
"via_diameter": 0.45,
"via_drill": 0.2,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "gnd",
"pattern": "GND"
},
{
"netclass": "power",
"pattern": "VCC"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "./OSO-SWAT-C1-06",
"pos_files": "./temp/",
"specctra_dsn": "",
"step": "OSO-SWAT-C1.step",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "OSO-SWAT-C1-05-bottom.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "empty.kicad_wks",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"3048f5e8-34bb-46da-8fa5-8c5aad2586f2",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,154 @@
(footprint "ELT3KN"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0 -2.5 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "a169e63e-29cc-4564-a621-b8211c147892")
(effects
(font
(size 1 1)
(thickness 0.2)
(bold yes)
)
)
)
(property "Value" "ELT3KN"
(at 0 2.5 0)
(unlocked yes)
(layer "F.Fab")
(uuid "12f117ff-fc54-4392-9702-20053568a437")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "4696eff2-7885-4247-8d7f-ea328aeb61b3")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "38e32ed5-5bed-49cc-a302-cc80b63f7eca")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "bbe09b54-7873-4c59-90a5-708f27e5af76")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(attr smd)
(fp_arc
(start -1.495202 -0.697761)
(mid -0.886339 -1.391726)
(end 0 -1.65)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "2b5cd3f8-b18c-4557-94e3-1779ca1608f1")
)
(fp_arc
(start 0 -1.65)
(mid 0.886339 -1.391727)
(end 1.495202 -0.697761)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "d473595f-e35a-4857-8449-1d9f3feacdc9")
)
(fp_arc
(start 0 1.65)
(mid -0.886339 1.391727)
(end -1.495202 0.697761)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "d37347f0-9221-4e4b-a029-a04f185819ec")
)
(fp_arc
(start 1.495202 0.697761)
(mid 0.886339 1.391726)
(end 0 1.65)
(stroke
(width 0.1)
(type default)
)
(layer "F.SilkS")
(uuid "f12bf60f-5b3d-45b5-82f7-79448488ae21")
)
(fp_circle
(center 0 0)
(end 1.65 0)
(stroke
(width 0.1)
(type default)
)
(fill none)
(layer "F.Fab")
(uuid "3ab1094b-f4c1-4436-87a3-fa43bddd0a8d")
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "0739cf1b-8f40-4d32-91d0-496ba0ec98b8")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "1" smd roundrect
(at -2.15 0)
(size 1.4 1.05)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "e742aada-aafd-47f3-8447-3fbf9c4a7579")
)
(pad "2" smd roundrect
(at 2.15 0)
(size 1.4 1.05)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0.25)
(thermal_bridge_angle 45)
(uuid "fa457dd1-8427-41f4-83ec-ab02d543d005")
)
)

View File

@ -0,0 +1,47 @@
(footprint "FH19C9S05SH10" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>FH19C-9S-0.5SH(10)-1</b><br>\n")
(fp_text reference "REF**" (at 0 -1.425) (layer "F.SilkS")
(effects (font (size 1.1684 1.1684) (thickness 0.1016)))
(tstamp f001c7f4-3bac-4901-bfec-55e6729b7a2d)
)
(fp_text value ">VALUE" (at 0 -1.425) (layer "F.Fab")
(effects (font (size 1.1684 1.1684) (thickness 0.1016)))
(tstamp 561aeca9-49f1-4f98-93e2-6788ec46bd30)
)
(fp_line (start -2.75 -2.25) (end -3.25 -2.25) (layer "F.SilkS") (width 0.1) (tstamp 1eac27e8-d706-4fd3-9d7e-f44c3bceecb7))
(fp_line (start -3.25 0.75) (end 3.25 0.75) (layer "F.SilkS") (width 0.1) (tstamp 2954b329-e121-4506-a75a-9fd0ad6fb160))
(fp_line (start -3.25 -2.25) (end -3.25 -0.75) (layer "F.SilkS") (width 0.1) (tstamp 707c871c-221c-430b-8a6b-9066bbe6a8b7))
(fp_line (start 3.25 -2.25) (end 3.25 -0.75) (layer "F.SilkS") (width 0.1) (tstamp c93c51a4-9fbb-472e-8b27-c730f1646c88))
(fp_line (start 2.75 -2.25) (end 3.25 -2.25) (layer "F.SilkS") (width 0.1) (tstamp f62c7b3a-070f-4127-95d5-3042f710b35c))
(fp_arc (start -2.457 -2.572) (mid -2.407 -2.622) (end -2.357 -2.572) (layer "F.SilkS") (width 0.2) (tstamp 99032ce3-83f4-4d78-bc12-cfc846be0db6))
(fp_arc (start -2.357 -2.572) (mid -2.407 -2.522) (end -2.457 -2.572) (layer "F.SilkS") (width 0.2) (tstamp cc85bc5e-d12e-4c30-b330-62e6d8cd831e))
(fp_arc (start -2.457 -2.572) (mid -2.407 -2.622) (end -2.357 -2.572) (layer "F.SilkS") (width 0.2) (tstamp e306135f-93e3-4c31-83e0-8c60a6608eec))
(fp_line (start 3.25 0.75) (end -3.25 0.75) (layer "F.Fab") (width 0.2) (tstamp 4524f199-9890-4fbd-90ec-2bd6babdbf89))
(fp_line (start 3.25 -2.25) (end 3.25 0.75) (layer "F.Fab") (width 0.2) (tstamp 855f1cc0-31ef-4190-b476-18e3b5158686))
(fp_line (start -3.25 0.75) (end -3.25 -2.25) (layer "F.Fab") (width 0.2) (tstamp a7aeadd1-064c-4dec-839a-d3cb8b0a8559))
(fp_line (start -3.25 -2.25) (end 3.25 -2.25) (layer "F.Fab") (width 0.2) (tstamp b29496a7-f051-4b0c-a792-56f5b1d5ae06))
(pad "1" smd rect (at -2 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp acda55bd-5be5-40b1-a960-d198db4ec672))
(pad "2" smd rect (at -1.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 45b21120-703c-4698-9c56-6564d6e1bf81))
(pad "3" smd rect (at -1 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8b754c17-ed29-4271-a8ee-1331ac5995ef))
(pad "4" smd rect (at -0.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 9ccadf67-4eb3-4873-b5dd-5cc11b45344d))
(pad "5" smd rect (at 0 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bda542d0-ecb7-417f-8c5a-7bba95d4eba5))
(pad "6" smd rect (at 0.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8e3054c6-288a-41ce-abc0-f8e853b26354))
(pad "7" smd rect (at 1 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1f1c1390-fe89-4a71-a866-c4e1f01372f9))
(pad "8" smd rect (at 1.5 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 83315760-4e59-4aea-8656-92a90fbb73b7))
(pad "9" smd rect (at 2 -2.5 90) (size 0.8 0.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f1470e81-8bfa-4c7b-9a4f-907119981553))
(pad "MP1" smd rect (at -3 0 90) (size 0.8 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5d56d96c-0e59-4d80-b122-61ae0456f87e))
(pad "MP2" smd rect (at 3 0 90) (size 0.8 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 65badac9-bbc1-4323-b96e-20b366a5c013))
)

View File

@ -0,0 +1,22 @@
(footprint "FIDUCIAL_1MM" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0 0) (layer "F.SilkS")
(effects (font (size 1.27 1.27) (thickness 0.15)))
(tstamp 084b231a-a841-4989-ba78-c80f52a1d530)
)
(fp_text value "" (at 0 0) (layer "F.Fab")
(effects (font (size 1.27 1.27) (thickness 0.15)))
(tstamp 5023af4a-f69e-458d-abff-77e97f0c49aa)
)
(fp_arc (start -0.75 0) (mid -0.53033 -0.53033) (end 0 -0.75) (layer "F.Mask") (width 0.5) (tstamp 243424d9-367c-4c55-9ce2-5c7f6b71c486))
(fp_arc (start 0 0.75) (mid -0.53033 0.53033) (end -0.75 0) (layer "F.Mask") (width 0.5) (tstamp 38a261de-e7ad-4359-9a4e-e8325d947b3c))
(fp_arc (start 0.75 0) (mid 0.53033 0.53033) (end 0 0.75) (layer "F.Mask") (width 0.5) (tstamp 3e5e4d91-af7b-467f-93be-7757d59f4acd))
(fp_arc (start 0 -0.75) (mid 0.53033 -0.53033) (end 0.75 0) (layer "F.Mask") (width 0.5) (tstamp cba0161e-94ca-4df5-83f4-b38d910a40d8))
(fp_arc (start 0 -0.75) (mid 0.53033 -0.53033) (end 0.75 0) (layer "F.CrtYd") (width 0.5) (tstamp 24375f2d-9f3c-47f3-bf1b-d9abc9459487))
(fp_arc (start 0.75 0) (mid 0.53033 0.53033) (end 0 0.75) (layer "F.CrtYd") (width 0.5) (tstamp 61d35d35-c7e3-45c7-a1f6-4c560b28917a))
(fp_arc (start 0 0.75) (mid -0.53033 0.53033) (end -0.75 0) (layer "F.CrtYd") (width 0.5) (tstamp b245f192-3aeb-4a3c-8f5f-5b2ac372cfb6))
(fp_arc (start -0.75 0) (mid -0.53033 -0.53033) (end 0 -0.75) (layer "F.CrtYd") (width 0.5) (tstamp f012c0d9-2bab-4b5b-8327-ed4e32f900bb))
(pad "1" smd roundrect (at 0 0) (size 1 1) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5)
(solder_mask_margin 0.0635) (tstamp ea46b6d0-c0be-44d4-aa82-47c56ffdb259))
)

View File

@ -0,0 +1,26 @@
(footprint "LED_QBLP655" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0.011609 -1.462631) (layer "F.SilkS")
(effects (font (size 0.682286 0.682286) (thickness 0.14977)))
(tstamp 441c2b28-158a-4d68-a991-31f4c6a03554)
)
(fp_text value ">VALUE" (at -0.054931 1.580818) (layer "F.Fab")
(effects (font (size 0.677435 0.677435) (thickness 0.148705)))
(tstamp 2f361345-03db-4c21-a99d-0b9cfab62aee)
)
(fp_circle (center -3.1 -0.5) (end -3 -0.5) (layer "F.SilkS") (width 0.2) (fill none) (tstamp 0ba68dd4-e618-4da0-b7e7-599817b38c08))
(fp_line (start -1.6 -0.6) (end 1.6 -0.6) (layer "F.Fab") (width 0.127) (tstamp 3629e8ab-0a05-463c-9cb0-81d2e314e044))
(fp_line (start -1.6 0.6) (end -1.6 -0.6) (layer "F.Fab") (width 0.127) (tstamp 379a3f23-154c-4da8-9d91-714d85fa6b82))
(fp_line (start 1.6 -0.6) (end 1.6 0.6) (layer "F.Fab") (width 0.127) (tstamp 78db06e4-b90e-45d6-90ee-f31a25c04c7d))
(fp_line (start 1.6 0.6) (end -1.6 0.6) (layer "F.Fab") (width 0.127) (tstamp de669889-6aee-41d8-9167-24b5b7cd2f7a))
(fp_circle (center -3.1 -0.5) (end -3 -0.5) (layer "F.Fab") (width 0.2) (fill none) (tstamp a3f31f15-16ea-4248-8fe2-4f1f6cb6fef0))
(pad "1" smd rect (at -1.5 -0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp c0b010da-7837-47db-be16-93e46d77ee03))
(pad "2" smd rect (at 1.5 -0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0491e5ac-92c6-4da4-a40f-13768f4f5f7c))
(pad "3" smd rect (at -1.5 0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d96a3b29-ffbb-4252-a695-34388cf2cce8))
(pad "4" smd rect (at 1.5 0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a7b3dfda-cc06-4a25-8ceb-15247a6b386b))
)

View File

@ -0,0 +1,24 @@
(footprint "LED_QBLP655_RGB" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0.011609 -1.462631) (layer "F.SilkS")
(effects (font (size 0.682286 0.682286) (thickness 0.14977)))
(tstamp 441c2b28-158a-4d68-a991-31f4c6a03554)
)
(fp_text value ">VALUE" (at -0.054931 1.580818) (layer "F.Fab")
(effects (font (size 0.677435 0.677435) (thickness 0.148705)))
(tstamp 2f361345-03db-4c21-a99d-0b9cfab62aee)
)
(fp_line (start -1.6 -0.6) (end 1.6 -0.6) (layer "F.Fab") (width 0.127) (tstamp 3629e8ab-0a05-463c-9cb0-81d2e314e044))
(fp_line (start -1.6 0.6) (end -1.6 -0.6) (layer "F.Fab") (width 0.127) (tstamp 379a3f23-154c-4da8-9d91-714d85fa6b82))
(fp_line (start 1.6 -0.6) (end 1.6 0.6) (layer "F.Fab") (width 0.127) (tstamp 78db06e4-b90e-45d6-90ee-f31a25c04c7d))
(fp_line (start 1.6 0.6) (end -1.6 0.6) (layer "F.Fab") (width 0.127) (tstamp de669889-6aee-41d8-9167-24b5b7cd2f7a))
(pad "1" smd rect (at 1.5 -0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0491e5ac-92c6-4da4-a40f-13768f4f5f7c))
(pad "2" smd rect (at -1.5 -0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp c0b010da-7837-47db-be16-93e46d77ee03))
(pad "3" smd rect (at -1.5 0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d96a3b29-ffbb-4252-a695-34388cf2cce8))
(pad "4" smd rect (at 1.5 0.4) (size 1.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a7b3dfda-cc06-4a25-8ceb-15247a6b386b))
)

View File

@ -0,0 +1,15 @@
(footprint "MICROBUILDER_TESTPOINT_ROUND_1.5MM" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 1.143 0.127) (layer "F.SilkS")
(effects (font (size 0.666496 0.666496) (thickness 0.146304)) (justify left bottom))
(tstamp 3249263f-d424-465a-883e-c9fbfca1c498)
)
(fp_text value ">VALUE" (at 1.143 0.635) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp ffe18277-47dd-48a9-ae75-8daae098595b)
)
(fp_circle (center 0 0) (end 1 0) (layer "F.SilkS") (width 0.2032) (fill none) (tstamp 10aeb60f-0687-4840-aeb5-a5e914b89db2))
(pad "P$1" smd roundrect (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.5)
(solder_mask_margin 0.0635) (tstamp 278b13e7-2a43-4fc5-a675-ea6ed2efdd4b))
)

View File

@ -0,0 +1,38 @@
(footprint "MICROBUILDER__0805MP" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>0805 MicroPitch</b>")
(fp_text reference "REF**" (at -1.5875 -0.9525) (layer "F.SilkS")
(effects (font (size 0.666496 0.666496) (thickness 0.146304)) (justify left bottom))
(tstamp 6d480cb3-ccbc-4f91-b215-36d9b6b90e39)
)
(fp_text value ">VALUE" (at -1.5875 1.27) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp 6bb67786-fe79-4530-a8f0-ca53290823df)
)
(fp_poly (pts
(xy -0.1999 0.5001)
(xy 0.1999 0.5001)
(xy 0.1999 -0.5001)
(xy -0.1999 -0.5001)
) (layer "F.Adhes") (width 0) (fill solid) (tstamp 9e351c4d-f895-49c5-ba3f-cecde3dc6e44))
(fp_line (start 0 -0.508) (end 0 0.508) (layer "F.SilkS") (width 0.2032) (tstamp 629c7bfb-b888-4932-aba0-6916a21e7f67))
(fp_line (start -0.51 0.535) (end 0.51 0.535) (layer "F.Fab") (width 0.1016) (tstamp 22396a4f-3f2f-4a10-9672-ef964a1e15ec))
(fp_line (start -0.51 -0.535) (end 0.51 -0.535) (layer "F.Fab") (width 0.1016) (tstamp 90cacfdf-b07f-4151-ac89-23042124f640))
(fp_poly (pts
(xy 0.4064 0.65)
(xy 1 0.65)
(xy 1 -0.65)
(xy 0.4064 -0.65)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 0138f6cb-7190-4a12-af47-1e018fd27b3c))
(fp_poly (pts
(xy -1 0.65)
(xy -0.4168 0.65)
(xy -0.4168 -0.65)
(xy -1 -0.65)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 637ecbcd-a78f-4c8a-8dcf-472bde2de83b))
(pad "1" smd rect (at -1.016 0) (size 1.2 1.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bd23358d-4a17-4f52-b69d-122e91d97c44))
(pad "2" smd rect (at 1.016 0) (size 1.2 1.3) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 165d5fb4-7aca-4db2-a5bd-306d43842183))
)

View File

@ -0,0 +1,274 @@
(footprint "QFN64_9X9MC_MCH" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at 0 -5.715) (layer "F.SilkS")
(effects (font (size 0.499872 0.499872) (thickness 0.109728)))
(tstamp 3e871d9c-2a1f-438a-ba83-60e5f8d0fa51)
)
(fp_text value ">VALUE" (at 0 5.715) (layer "F.Fab")
(effects (font (size 0.499872 0.499872) (thickness 0.109728)))
(tstamp f2dcc10c-546f-4bd9-be1f-368ae783a117)
)
(fp_poly (pts
(xy 2.1606 0.662)
(xy 0.8366 0.662)
(xy 0.8366 -0.662)
(xy 2.1606 -0.662)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 2ec0ad3d-3957-4524-a3b2-3e97e3345ecf))
(fp_poly (pts
(xy 2.1606 -0.8366)
(xy 0.8366 -0.8366)
(xy 0.8366 -2.1606)
(xy 2.1606 -2.1606)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 42a0d4d0-fc9b-4730-8110-13a84ab3bcb0))
(fp_poly (pts
(xy 0.662 0.662)
(xy -0.662 0.662)
(xy -0.662 -0.662)
(xy 0.662 -0.662)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 4fbb659c-e71a-4c9b-9e8a-6da964a65cd4))
(fp_poly (pts
(xy 2.1606 2.1606)
(xy 0.8366 2.1606)
(xy 0.8366 0.8366)
(xy 2.1606 0.8366)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 655728ed-daf4-477f-8a3b-b5624d1a73df))
(fp_poly (pts
(xy -0.8366 2.1606)
(xy -2.1606 2.1606)
(xy -2.1606 0.8366)
(xy -0.8366 0.8366)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 6566a81c-4902-448f-a6df-8bc32a765ffa))
(fp_poly (pts
(xy -0.8366 -0.8366)
(xy -2.1606 -0.8366)
(xy -2.1606 -2.1606)
(xy -0.8366 -2.1606)
) (layer "F.Paste") (width 0) (fill solid) (tstamp 99ce666e-158b-4f82-b57f-184f0eedda5c))
(fp_poly (pts
(xy 0.662 -0.8366)
(xy -0.662 -0.8366)
(xy -0.662 -2.1606)
(xy 0.662 -2.1606)
) (layer "F.Paste") (width 0) (fill solid) (tstamp ddf6c3a2-a910-45ea-844b-a8db2b458e91))
(fp_poly (pts
(xy -0.8366 0.662)
(xy -2.1606 0.662)
(xy -2.1606 -0.662)
(xy -0.8366 -0.662)
) (layer "F.Paste") (width 0) (fill solid) (tstamp e3f7e99a-4f59-4e18-a5cb-6900c4b08cae))
(fp_poly (pts
(xy 0.662 2.1606)
(xy -0.662 2.1606)
(xy -0.662 0.8366)
(xy 0.662 0.8366)
) (layer "F.Paste") (width 0) (fill solid) (tstamp f934416f-45a1-43f5-b5e1-fba1dddf1aa4))
(fp_line (start 4.2164 4.6228) (end 4.6228 4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 2015e2d6-2795-4247-a207-acb4cf8886e6))
(fp_line (start -4.2164 -4.6228) (end -4.6228 -4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 2252c90a-7ebf-4d2d-a791-89982b21117b))
(fp_line (start 4.6228 -4.6228) (end 4.2164 -4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 2c7437bb-66d1-4b20-ab25-e4022916701f))
(fp_line (start -4.6228 4.6228) (end -4.2164 4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 32c6b15e-f755-475e-b73e-6c7fffdfa53a))
(fp_line (start -4.6228 -4.6228) (end -4.6228 -4.2164) (layer "F.SilkS") (width 0.1524) (tstamp 450f1cc5-825a-4891-8a52-c72891a373f0))
(fp_line (start 4.6228 4.6228) (end 4.6228 4.2164) (layer "F.SilkS") (width 0.1524) (tstamp 82e659cf-ebcc-4fcd-a243-d4894e4c531e))
(fp_line (start 4.6228 -4.2164) (end 4.6228 -4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 8caa9a3a-8461-464c-9a5d-58f28cc73fdb))
(fp_line (start -4.6228 4.2164) (end -4.6228 4.6228) (layer "F.SilkS") (width 0.1524) (tstamp 9d03b0af-f67a-4b75-88d5-3fdc2fb53147))
(fp_circle (center -5.207 -5.207) (end -5.08 -5.207) (layer "F.SilkS") (width 0.254) (fill none) (tstamp d8471eec-d281-4956-8871-df001c4b9d0e))
(fp_line (start 4.4958 -2.5908) (end 4.4958 -2.8956) (layer "F.Fab") (width 0.1524) (tstamp 049458dd-1cf1-4608-bc61-728d12d853ec))
(fp_line (start -4.4958 -3.9116) (end -4.4958 -3.6068) (layer "F.Fab") (width 0.1524) (tstamp 05d31c0e-dc59-4cfd-8b11-9750f532f89d))
(fp_line (start 4.4958 -0.1016) (end 4.4958 -0.4064) (layer "F.Fab") (width 0.1524) (tstamp 0c83150d-4515-4bc6-947c-a18bb0f583b5))
(fp_line (start -3.9116 4.4958) (end -3.6068 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 10420e88-4a28-4643-b21a-9465d0057a73))
(fp_line (start 4.4958 0.4064) (end 4.4958 0.1016) (layer "F.Fab") (width 0.1524) (tstamp 10e57a60-62de-407e-b340-5e48d8af51a1))
(fp_line (start -4.4958 -2.8956) (end -4.4958 -2.5908) (layer "F.Fab") (width 0.1524) (tstamp 15822844-ae2b-47a9-8d24-dd3b08c9541d))
(fp_line (start 4.4958 4.4958) (end 4.4958 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 189f4344-d732-4381-8d0f-4a31c3fa9319))
(fp_line (start 4.4958 -3.0988) (end 4.4958 -3.4036) (layer "F.Fab") (width 0.1524) (tstamp 1da5d536-ffc3-40be-9afa-f932c35159bf))
(fp_line (start -0.6096 -4.4958) (end -0.9144 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 1e512696-3bdf-43ca-8ca3-64344bcd8de6))
(fp_line (start -4.4958 -3.4036) (end -4.4958 -3.0988) (layer "F.Fab") (width 0.1524) (tstamp 1efbd3c4-f6bc-449a-85e1-e54dc088704f))
(fp_line (start -1.6002 -4.4958) (end -1.905 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 1fd0b84b-3048-4a24-b2ab-7960a733598e))
(fp_line (start 4.4958 1.397) (end 4.4958 1.0922) (layer "F.Fab") (width 0.1524) (tstamp 256bd16a-a961-4e7c-bc57-c47218be0e9b))
(fp_line (start 0.1016 4.4958) (end 0.4064 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 2610c8d8-02ed-46ba-b8ce-b15585c89028))
(fp_line (start -0.1016 -4.4958) (end -0.4064 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 2b9a3dd0-e1a1-405a-ac7d-c3e3d878560b))
(fp_line (start -4.4958 0.6096) (end -4.4958 0.9144) (layer "F.Fab") (width 0.1524) (tstamp 3132d241-d7f6-4a55-9503-29f1062b517f))
(fp_line (start 0.6096 4.4958) (end 0.9144 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 31daf2d4-3957-4ce7-98d3-a043649dd97e))
(fp_line (start -4.4958 3.0988) (end -4.4958 3.4036) (layer "F.Fab") (width 0.1524) (tstamp 337e4bb2-4de6-409d-8061-54d04950842d))
(fp_line (start 4.4958 -4.4958) (end -4.4958 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 4115dd93-f2eb-4a67-8dbd-532f41b7a69f))
(fp_line (start -4.4958 -0.9144) (end -4.4958 -0.6096) (layer "F.Fab") (width 0.1524) (tstamp 453e6bba-48de-4666-a7eb-66bef0e2b02c))
(fp_line (start 3.9116 -4.4958) (end 3.6068 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 4cda505e-c23d-4504-823e-c4f0c3948a9d))
(fp_line (start 4.4958 -1.0922) (end 4.4958 -1.397) (layer "F.Fab") (width 0.1524) (tstamp 503e0041-3118-4b51-83f1-b9c14f77f4b1))
(fp_line (start -4.4958 -3.2258) (end -3.2258 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 54b28547-cb8b-489a-a9df-6ad15177b2e9))
(fp_line (start -3.0988 -4.4958) (end -3.4036 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 5918fd35-f23c-42ff-9fba-9c5a9ac207d3))
(fp_line (start 4.4958 3.4036) (end 4.4958 3.0988) (layer "F.Fab") (width 0.1524) (tstamp 5f822173-84ee-42a7-a838-54e1cfc17adf))
(fp_line (start 3.6068 4.4958) (end 3.9116 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 632e8422-a140-4238-81b2-8829c7485b2e))
(fp_line (start -4.4958 -2.413) (end -4.4958 -2.1082) (layer "F.Fab") (width 0.1524) (tstamp 67448bdd-3f5c-4a5e-8105-da8836876044))
(fp_line (start 2.1082 4.4958) (end 2.413 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 69ab593b-1948-43ac-9d69-727c88e9b459))
(fp_line (start -2.8956 4.4958) (end -2.5908 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 6dc5284f-c6ff-453d-b163-9f63ed7892ad))
(fp_line (start -1.905 4.4958) (end -1.6002 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 6df1e081-1245-47a6-86a6-0c79f1f9db56))
(fp_line (start 1.6002 4.4958) (end 1.905 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 709494b8-7fc2-496a-8451-57d7441e8505))
(fp_line (start -4.4958 3.6068) (end -4.4958 3.9116) (layer "F.Fab") (width 0.1524) (tstamp 7212588c-17f7-4956-b77b-065540b4ee49))
(fp_line (start 2.8956 -4.4958) (end 2.5908 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 7ce7324c-91ea-47c6-b7c2-bd1b2f2a14c2))
(fp_line (start -3.4036 4.4958) (end -3.0988 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 7fb70e9b-db47-465c-b7f5-3f144c3fe511))
(fp_line (start 4.4958 -2.1082) (end 4.4958 -2.413) (layer "F.Fab") (width 0.1524) (tstamp 832b785c-4536-49cf-b6de-cedea7d015a6))
(fp_line (start 2.5908 4.4958) (end 2.8956 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 838b54da-8d76-4af0-a533-f421e7be02c2))
(fp_line (start -4.4958 2.5908) (end -4.4958 2.8956) (layer "F.Fab") (width 0.1524) (tstamp 8c3c449f-a035-419f-9950-338baab558f6))
(fp_line (start 4.4958 -1.6002) (end 4.4958 -1.905) (layer "F.Fab") (width 0.1524) (tstamp 8e588935-ced6-458a-a187-91e74c238ac8))
(fp_line (start -1.397 4.4958) (end -1.0922 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 8fe96cfe-a951-426f-80b8-9a4ee6265385))
(fp_line (start -4.4958 1.0922) (end -4.4958 1.397) (layer "F.Fab") (width 0.1524) (tstamp 8ff9eeba-c353-40da-b499-b20afa11f353))
(fp_line (start -4.4958 -4.4958) (end -4.4958 4.4958) (layer "F.Fab") (width 0.1524) (tstamp 93722526-b9c8-4550-8cdd-369ecb315477))
(fp_line (start -1.0922 -4.4958) (end -1.397 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 9a7cda4c-e257-4759-beca-0a008c33f019))
(fp_line (start 0.9144 -4.4958) (end 0.6096 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp 9c8602d4-958b-412c-8bb3-0d75d4a4147b))
(fp_line (start 4.4958 2.8956) (end 4.4958 2.5908) (layer "F.Fab") (width 0.1524) (tstamp ab68518b-68f5-4fed-903c-3d10b7662e9c))
(fp_line (start -4.4958 -0.4064) (end -4.4958 -0.1016) (layer "F.Fab") (width 0.1524) (tstamp ae845f43-7bd0-4d9b-b6ce-ea24c3f78b67))
(fp_line (start 4.4958 2.413) (end 4.4958 2.1082) (layer "F.Fab") (width 0.1524) (tstamp ae9df4c2-28e5-48f0-aff2-79a0c1a8a15a))
(fp_line (start -0.4064 4.4958) (end -0.1016 4.4958) (layer "F.Fab") (width 0.1524) (tstamp b27f2059-e221-491a-8338-8399fdb6602a))
(fp_line (start 1.905 -4.4958) (end 1.6002 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp b30b8721-3fe1-41c3-8198-1a4ccb7ceb74))
(fp_line (start -4.4958 4.4958) (end 4.4958 4.4958) (layer "F.Fab") (width 0.1524) (tstamp b476f917-8b6e-4132-b869-771909a051c6))
(fp_line (start 1.397 -4.4958) (end 1.0922 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp b5382627-0c47-465b-972a-a305e2e8c255))
(fp_line (start -4.4958 0.1016) (end -4.4958 0.4064) (layer "F.Fab") (width 0.1524) (tstamp b6e57a1a-77bc-4011-8ab7-3ca5980c960f))
(fp_line (start 4.4958 1.905) (end 4.4958 1.6002) (layer "F.Fab") (width 0.1524) (tstamp b8b1c0a5-6e37-467f-b8f0-bf600730b7aa))
(fp_line (start 2.413 -4.4958) (end 2.1082 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp b8c56df8-3039-424a-9681-56118c58b690))
(fp_line (start 1.0922 4.4958) (end 1.397 4.4958) (layer "F.Fab") (width 0.1524) (tstamp bb394421-3605-4756-9508-929d6758f654))
(fp_line (start -3.6068 -4.4958) (end -3.9116 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp be1b6c3d-7e5b-4a40-908c-b936697a3a15))
(fp_line (start 4.4958 -0.6096) (end 4.4958 -0.9144) (layer "F.Fab") (width 0.1524) (tstamp c1182e1e-de77-4a90-a154-0b526180f4ec))
(fp_line (start -4.4958 2.1082) (end -4.4958 2.413) (layer "F.Fab") (width 0.1524) (tstamp c1bc3314-d8be-4ff1-a3c3-ed1c9b2d7f54))
(fp_line (start -2.1082 -4.4958) (end -2.413 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp c2f4caf6-9472-4b57-8792-997c7297ad6f))
(fp_line (start 3.4036 -4.4958) (end 3.0988 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp c580dbd6-b23d-4473-a656-cd0cbd690fa4))
(fp_line (start 4.4958 0.9144) (end 4.4958 0.6096) (layer "F.Fab") (width 0.1524) (tstamp c8e7357a-ffca-40b2-9f1f-0e667dd778c7))
(fp_line (start 4.4958 -3.6068) (end 4.4958 -3.9116) (layer "F.Fab") (width 0.1524) (tstamp c968c46a-836c-481d-9a49-06172946f81e))
(fp_line (start -4.4958 -1.905) (end -4.4958 -1.6002) (layer "F.Fab") (width 0.1524) (tstamp cd74684a-5938-4604-a11c-848de541a8a6))
(fp_line (start 0.4064 -4.4958) (end 0.1016 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp d06a81a3-464e-4192-865d-76347fe63188))
(fp_line (start -4.4958 1.6002) (end -4.4958 1.905) (layer "F.Fab") (width 0.1524) (tstamp e08784ed-8b2a-49ee-bef9-7b2d3857e5ba))
(fp_line (start 4.4958 3.9116) (end 4.4958 3.6068) (layer "F.Fab") (width 0.1524) (tstamp e40896aa-4f74-4b18-add9-342665b200b4))
(fp_line (start -0.9144 4.4958) (end -0.6096 4.4958) (layer "F.Fab") (width 0.1524) (tstamp e9b70cd9-c935-4ef0-8469-421eb4fd1bac))
(fp_line (start -4.4958 -1.397) (end -4.4958 -1.0922) (layer "F.Fab") (width 0.1524) (tstamp eb56c15a-02df-4139-84ab-d8a1651203fa))
(fp_line (start 3.0988 4.4958) (end 3.4036 4.4958) (layer "F.Fab") (width 0.1524) (tstamp f58471ed-0cee-4f6a-b2e5-1373fa172f0d))
(fp_line (start -2.5908 -4.4958) (end -2.8956 -4.4958) (layer "F.Fab") (width 0.1524) (tstamp f9ac7fe7-3a4d-4488-bc27-2d7e673008b2))
(fp_line (start -2.413 4.4958) (end -2.1082 4.4958) (layer "F.Fab") (width 0.1524) (tstamp f9cb66b4-6171-4d5f-b302-fa11feb7e25e))
(pad "1" smd rect (at -4.3942 -3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0962937a-7e17-49c2-843a-309b9e705166))
(pad "2" smd rect (at -4.3942 -3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a2fedbd9-479b-4398-baab-86589de39528))
(pad "3" smd rect (at -4.3942 -2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e98112c7-b41a-4ab2-8cb2-235538dcf529))
(pad "4" smd rect (at -4.3942 -2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 01c8af07-90ff-4b3d-b404-db01135cbcbd))
(pad "5" smd rect (at -4.3942 -1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 36cd9aaf-ae25-480f-827b-e14d53a73530))
(pad "6" smd rect (at -4.3942 -1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 89a4dae4-94d7-4e16-b389-021d58b92093))
(pad "7" smd rect (at -4.3942 -0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e79aeb81-b0e9-42dc-9659-8a0783bf4de2))
(pad "8" smd rect (at -4.3942 -0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7c204068-d0aa-459b-b4fa-71e8935dd9dd))
(pad "9" smd rect (at -4.3942 0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1c34ed7b-f29c-48ab-a67f-7e34e10696d9))
(pad "10" smd rect (at -4.3942 0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4b62ffb5-f26f-42ce-b28d-6d417a8eb453))
(pad "11" smd rect (at -4.3942 1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp b93c79ac-77e5-4fb0-abe6-0f662be65153))
(pad "12" smd rect (at -4.3942 1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a82deada-b3dc-43d8-9675-ea9e287e99f4))
(pad "13" smd rect (at -4.3942 2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f89abcc5-9507-4994-b7ec-08e99b565c34))
(pad "14" smd rect (at -4.3942 2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3b07801d-fbc1-4f67-a403-def8cd01c41d))
(pad "15" smd rect (at -4.3942 3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp fc1fc9cb-2099-4de4-8cdd-d83af9dd5f90))
(pad "16" smd rect (at -4.3942 3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bc1d3611-8bc5-4413-b9ae-8a04bfaa0730))
(pad "17" smd rect (at -3.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp eae353fe-5b10-44d1-aee2-527fb697339e))
(pad "18" smd rect (at -3.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0be2d7ef-74f7-4c54-9c11-567b325a3550))
(pad "19" smd rect (at -2.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 94af1e4e-830f-47d9-b4af-1d2f77f0e846))
(pad "20" smd rect (at -2.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0c875dfd-527c-4ba5-84fd-4d171caf74bb))
(pad "21" smd rect (at -1.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f8327bac-2bfe-4f25-b58b-a76fe59386c6))
(pad "22" smd rect (at -1.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 39a31cfe-a89d-4f7b-b480-a9458bbbaeec))
(pad "23" smd rect (at -0.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e1e0568d-368c-488e-902b-8d4d2ca00d90))
(pad "24" smd rect (at -0.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp b4c8b1b6-b104-424e-b3ae-e10a63946100))
(pad "25" smd rect (at 0.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 43bd0070-dd63-4c69-be69-c4ea652b922a))
(pad "26" smd rect (at 0.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4a1cf31f-d5f4-4210-ac17-84340c530d59))
(pad "27" smd rect (at 1.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a6955bbd-8e2f-47ac-9d2d-1dc038277299))
(pad "28" smd rect (at 1.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7ffcf02c-15fa-481f-81f2-bd642d7f79cb))
(pad "29" smd rect (at 2.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 41a0665e-4d1a-4fa6-90c8-82faf5e06664))
(pad "30" smd rect (at 2.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cc003555-3729-46c6-8945-cbd09db502b4))
(pad "31" smd rect (at 3.25 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5c77f960-ade6-4efb-9c4b-dcf559c7eac2))
(pad "32" smd rect (at 3.75 4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d89499ae-4014-4f85-949d-db2745a5c1be))
(pad "33" smd rect (at 4.3942 3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a15c3c43-a66d-4557-9dd1-9291285217ad))
(pad "34" smd rect (at 4.3942 3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5654db23-3f90-4ce8-879c-12ebe3c1b2f7))
(pad "35" smd rect (at 4.3942 2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cf36d037-47b9-4211-a0ba-1b21c826386c))
(pad "36" smd rect (at 4.3942 2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 7446c48e-88d2-43f3-9107-02dc8c28c890))
(pad "37" smd rect (at 4.3942 1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp dc190b06-ebe1-480f-9f26-814b886ca30e))
(pad "38" smd rect (at 4.3942 1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f31d87cd-a520-48c6-bd59-16ce7a0c8a4c))
(pad "39" smd rect (at 4.3942 0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3fa7895a-6817-41c8-b122-323e15af05f5))
(pad "40" smd rect (at 4.3942 0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 0af777e9-db83-44e5-82b3-4d0cc1118c82))
(pad "41" smd rect (at 4.3942 -0.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cc198b2a-7c6d-448a-ba27-a1a291727e63))
(pad "42" smd rect (at 4.3942 -0.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4f4f7230-a137-4430-aeca-4b9793e7ef29))
(pad "43" smd rect (at 4.3942 -1.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 09e93bbc-81b5-4780-a105-25986af4e57c))
(pad "44" smd rect (at 4.3942 -1.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 80626780-24b0-434f-a133-1859aa0ffc80))
(pad "45" smd rect (at 4.3942 -2.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp e213e53b-8e52-48ca-828a-5f55b9135f2a))
(pad "46" smd rect (at 4.3942 -2.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4c7b79ca-8f05-473a-80e6-3bebce2e229f))
(pad "47" smd rect (at 4.3942 -3.25 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 2cab5ab7-2cc3-4048-816f-20e4725e4987))
(pad "48" smd rect (at 4.3942 -3.75 270) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 8441a91d-f48e-4251-bcaf-dc7094507898))
(pad "49" smd rect (at 3.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3c1b33ef-acb9-4266-b8c6-bb013e5dae2c))
(pad "50" smd rect (at 3.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp a8a245a0-1165-437d-87fe-7eee7997aee7))
(pad "51" smd rect (at 2.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1e99a129-c646-417d-b055-3f37123cf8ef))
(pad "52" smd rect (at 2.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 82864969-1aa8-49df-9eac-4458700e6ca7))
(pad "53" smd rect (at 1.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4d35c705-5a51-4806-a126-12c937c6b1e7))
(pad "54" smd rect (at 1.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d491f121-2845-455d-8541-44fa2ec6c594))
(pad "55" smd rect (at 0.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 2186d0aa-6d37-46d1-8257-2c34c61fca1c))
(pad "56" smd rect (at 0.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 732ba6d0-6193-4c48-8070-6779e2d08aac))
(pad "57" smd rect (at -0.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp f7f108f5-a5d2-4a71-bd92-4b7a64cd67ef))
(pad "58" smd rect (at -0.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 5a9c3c03-bc6d-4d54-97af-ccd4b0ec62bd))
(pad "59" smd rect (at -1.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 02619e26-a84a-4ced-aa63-185f88279688))
(pad "60" smd rect (at -1.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 92a99c1b-1f77-4822-9ef0-404ea7ef9b34))
(pad "61" smd rect (at -2.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 90707762-bc1e-4e07-b417-1728eca9f661))
(pad "62" smd rect (at -2.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 3db20676-41a3-4cd5-aaaa-fb7aac0e3ef9))
(pad "63" smd rect (at -3.25 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 2a66cae8-a800-4958-8ae7-e7d7f25b2674))
(pad "64" smd rect (at -3.75 -4.3942 180) (size 0.254 0.8128) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 70110040-44aa-4caf-9824-f55720183967))
(pad "65" smd rect (at 0 0) (size 4.572 4.572) (layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1a1fa73c-dc68-468e-8e77-2f7147d220c5))
)

View File

@ -0,0 +1,29 @@
(footprint "SOD-323F" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -1.8 -0.9) (layer "F.SilkS")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left bottom))
(tstamp 8d130de6-21ac-49e1-b622-a95fb15425d4)
)
(fp_text value ">VALUE" (at -2.1 1.7) (layer "F.Fab")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left bottom))
(tstamp f5198c37-c2af-4b4a-ace7-b957cdea8352)
)
(fp_line (start 0.4 -0.6) (end 0.4 0.6) (layer "F.SilkS") (width 0.127) (tstamp 0165360a-2e66-4636-a3c0-be1ba6b7146b))
(fp_line (start 0.4 0.6) (end 0.3 0.6) (layer "F.SilkS") (width 0.127) (tstamp 31d6649e-2cb0-4b56-9f6f-94a0dc543d5a))
(fp_line (start 0.85 -0.65) (end 0.85 0.65) (layer "F.SilkS") (width 0.127) (tstamp 320884e5-1885-40b5-8b79-b48357d2fa56))
(fp_line (start 0.3 0.6) (end 0.3 -0.6) (layer "F.SilkS") (width 0.127) (tstamp 3a4ae6db-a2ad-4e01-be88-bd3d813a8e29))
(fp_line (start -0.85 0.65) (end -0.85 -0.65) (layer "F.SilkS") (width 0.127) (tstamp 4fef4a0d-c874-4fe4-9bb4-3b8d64e9347b))
(fp_line (start 0.85 0.65) (end -0.85 0.65) (layer "F.SilkS") (width 0.127) (tstamp 7ebd6805-bd0d-4272-b0ea-a17483d80ca5))
(fp_line (start -0.85 -0.65) (end 0.85 -0.65) (layer "F.SilkS") (width 0.127) (tstamp cb3724d9-81a8-487f-80a1-8ccce53d6d55))
(fp_line (start -0.9 -0.2) (end -1.2 -0.2) (layer "F.Fab") (width 0.127) (tstamp 9290e464-7c10-4d28-b961-53ead5d00f7c))
(fp_line (start 1.2 0.2) (end 0.9 0.2) (layer "F.Fab") (width 0.127) (tstamp 9a951f19-776d-408e-9dd7-550047b0e2a6))
(fp_line (start -1.2 0.2) (end -0.9 0.2) (layer "F.Fab") (width 0.127) (tstamp c213b2e9-ebc1-49b9-ad72-5803127305a5))
(fp_line (start 0.9 -0.2) (end 1.2 -0.2) (layer "F.Fab") (width 0.127) (tstamp c31a6350-0001-4420-90f8-12019bfccaf7))
(fp_line (start 1.2 -0.2) (end 1.2 0.2) (layer "F.Fab") (width 0.127) (tstamp d0e73230-a9c2-4595-9b95-ba35aa96b070))
(fp_line (start -1.2 -0.2) (end -1.2 0.2) (layer "F.Fab") (width 0.127) (tstamp d91a4af6-4bb8-467f-b69b-1a906bc211a7))
(pad "A" smd rect (at -1 0) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 72b76f37-b628-4712-9ff6-021da3f7a013))
(pad "C" smd rect (at 1 0) (size 1 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp cb8dd863-14d8-4470-ad3e-b81fad315442))
)

View File

@ -0,0 +1,34 @@
(footprint "SOT65P210X110-5N" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -1.8 -1.4) (layer "F.SilkS")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left bottom))
(tstamp 457cb9de-fc22-4a85-9c82-7438f85d137d)
)
(fp_text value ">VALUE" (at -1.8 1.4) (layer "F.Fab")
(effects (font (size 0.747776 0.747776) (thickness 0.065024)) (justify left top))
(tstamp 674ecd7e-5cc8-4469-9690-04223952bf82)
)
(fp_line (start -0.625 1.17) (end 0.625 1.17) (layer "F.SilkS") (width 0.127) (tstamp 2f22abf8-16bd-42ad-a0ee-757b9dc94627))
(fp_line (start 0.625 -1.17) (end -0.625 -1.17) (layer "F.SilkS") (width 0.127) (tstamp 7fba8434-1fa5-492e-93c3-f5210db0af84))
(fp_circle (center -2.1 -0.9) (end -2 -0.9) (layer "F.SilkS") (width 0.2) (fill none) (tstamp 687a4ff9-95c3-4e33-9daa-47acc0e40e1e))
(fp_line (start -1.805 -1.2625) (end -1.805 1.2625) (layer "F.CrtYd") (width 0.05) (tstamp 17863368-ebf9-4b76-8a27-2431df2a120c))
(fp_line (start 1.805 -1.2625) (end -1.805 -1.2625) (layer "F.CrtYd") (width 0.05) (tstamp 62cf88fb-d482-4b99-9b0f-281e43055f8b))
(fp_line (start -1.805 1.2625) (end 1.805 1.2625) (layer "F.CrtYd") (width 0.05) (tstamp b5135559-37a4-492d-a6dc-8ab982428252))
(fp_line (start 1.805 1.2625) (end 1.805 -1.2625) (layer "F.CrtYd") (width 0.05) (tstamp dcf4a5aa-5c00-4b2e-ba11-24374e17c340))
(fp_line (start 0.625 1.0125) (end 0.625 -1.0125) (layer "F.Fab") (width 0.127) (tstamp 0d92b703-ef1a-45ad-8945-076840a3419d))
(fp_line (start 0.625 -1.0125) (end -0.625 -1.0125) (layer "F.Fab") (width 0.127) (tstamp 3b31ae4c-5100-4114-b54f-c515c85e31ef))
(fp_line (start -0.625 -1.0125) (end -0.625 1.0125) (layer "F.Fab") (width 0.127) (tstamp 4479abbf-71f9-42d6-b915-553dfa74ac7a))
(fp_line (start -0.625 1.0125) (end 0.625 1.0125) (layer "F.Fab") (width 0.127) (tstamp a7b3fdba-c9c6-4541-aa58-e7d5af1159f7))
(fp_circle (center -2.1 -0.9) (end -2 -0.9) (layer "F.Fab") (width 0.2) (fill none) (tstamp 4b3d66f1-3431-45ab-8164-ecd0988102d2))
(pad "1" smd rect (at -0.97 -0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 79539752-66ac-4cde-9791-7e50fc9c08e9))
(pad "2" smd rect (at -0.97 0) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 412a873e-1c99-4a4b-86e1-a676f2285a25))
(pad "3" smd rect (at -0.97 0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp d56e9cb4-6e4a-4ec0-a67f-7fd53cd17c95))
(pad "4" smd rect (at 0.97 0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp bed9dd9c-f127-43c3-a252-0194a4ef1905))
(pad "5" smd rect (at 0.97 -0.65) (size 1.17 0.4) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 468863fa-6e22-4082-9c4f-d4c63b16d5f2))
)

View File

@ -0,0 +1,282 @@
(footprint "SW_EVP-BB1AAB000"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -2.628409 -1.50195 0)
(layer "F.SilkS")
(uuid "5bfc1104-d8e6-463d-96bf-3b297940d17a")
(effects
(font
(size 1.169909 1.169909)
(thickness 0.101731)
)
(justify left bottom)
)
)
(property "Value" ">VALUE"
(at -2.629818 3.005518 0)
(layer "F.Fab")
(uuid "0d6e3660-78d4-4c9d-aa40-0c2181937185")
(effects
(font
(size 1.170545 1.170545)
(thickness 0.101786)
)
(justify left bottom)
)
)
(property "Footprint" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "adf19691-fa3b-4d7a-abc1-3f78748c21cf")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "e644642e-886c-44ac-b86f-d6c911d62221")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "36f34cd2-251b-4e5d-9062-61208ddf5d26")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(fp_line
(start -1.325 -0.375)
(end -1.325 0.375)
(stroke
(width 0.465)
(type solid)
)
(layer "F.Paste")
(uuid "4d800587-4919-426d-b1ba-7b44b3e9466f")
)
(fp_line
(start 1.325 -0.375)
(end 1.325 0.375)
(stroke
(width 0.465)
(type solid)
)
(layer "F.Paste")
(uuid "ce64bb60-7755-4c83-8701-9a2cef3a1c7b")
)
(fp_poly
(pts
(xy -1.095 -0.145) (xy -1.555 -0.145) (xy -1.555 -0.605) (xy -1.095 -0.605)
)
(stroke
(width 0)
(type solid)
)
(fill solid)
(layer "F.Paste")
(uuid "6db398f8-2729-450b-aef1-8242c2cd2e0f")
)
(fp_poly
(pts
(xy -1.095 0.605) (xy -1.555 0.605) (xy -1.555 0.145) (xy -1.095 0.145)
)
(stroke
(width 0)
(type solid)
)
(fill solid)
(layer "F.Paste")
(uuid "84da75db-45c9-4044-8d1e-347621238750")
)
(fp_poly
(pts
(xy 1.555 -0.145) (xy 1.095 -0.145) (xy 1.095 -0.605) (xy 1.555 -0.605)
)
(stroke
(width 0)
(type solid)
)
(fill solid)
(layer "F.Paste")
(uuid "e8fb6dd3-e158-4257-9e15-870695c296b7")
)
(fp_poly
(pts
(xy 1.555 0.605) (xy 1.095 0.605) (xy 1.095 0.145) (xy 1.555 0.145)
)
(stroke
(width 0)
(type solid)
)
(fill solid)
(layer "F.Paste")
(uuid "85bec7d7-877b-406c-bad8-abaa99fcbe23")
)
(fp_line
(start -1.3 -0.9635)
(end 1.3 -0.9635)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "daeab9ff-4ca6-4d3e-8486-53bc65dc2c70")
)
(fp_line
(start -1.3 0.9635)
(end 1.3 0.9635)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "2a0673e1-384a-4091-aad2-73c6b1e7babd")
)
(fp_line
(start -1.325 -0.375)
(end -1.325 0.375)
(stroke
(width 0.55)
(type solid)
)
(layer "F.Mask")
(uuid "573428fa-1f2a-49c8-b999-dc918c489ec0")
)
(fp_line
(start 1.325 -0.375)
(end 1.325 0.375)
(stroke
(width 0.55)
(type solid)
)
(layer "F.Mask")
(uuid "3f0f8722-1483-4aa6-bcae-dcff8ecba59b")
)
(fp_line
(start -1.85 -1.05)
(end 1.85 -1.05)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "d6daa52c-633b-4f9e-9611-999747c83ff7")
)
(fp_line
(start -1.85 1.05)
(end -1.85 -1.05)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "b1dcf4ab-520c-4ad1-8398-87f8dd8fec29")
)
(fp_line
(start 1.85 -1.05)
(end 1.85 1.05)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "4939d836-3fdc-47f9-b885-f87382603570")
)
(fp_line
(start 1.85 1.05)
(end -1.85 1.05)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "e4f415ce-fdbb-4c24-b2a1-e501eae24f60")
)
(fp_line
(start -1.3 -0.8)
(end 1.3 -0.8)
(stroke
(width 0.127)
(type solid)
)
(layer "F.Fab")
(uuid "8e13a383-d573-4545-b914-42a75e606b8c")
)
(fp_line
(start -1.3 0.8)
(end -1.3 -0.8)
(stroke
(width 0.127)
(type solid)
)
(layer "F.Fab")
(uuid "1e090053-4c0c-424f-8664-54986066ef27")
)
(fp_line
(start 1.3 -0.8)
(end 1.3 0.8)
(stroke
(width 0.127)
(type solid)
)
(layer "F.Fab")
(uuid "df66859c-c21f-4048-8e27-8d86d5f411f0")
)
(fp_line
(start 1.3 0.8)
(end -1.3 0.8)
(stroke
(width 0.127)
(type solid)
)
(layer "F.Fab")
(uuid "31b618ce-8704-4bd2-948f-25d290b97ca7")
)
(pad "A1" smd rect
(at -1.325 -0.375)
(size 0.55 0.55)
(layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635)
(uuid "efeb691d-5593-439a-a931-ffe8a985f2c4")
)
(pad "A2" smd rect
(at -1.325 0.375)
(size 0.55 0.55)
(layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635)
(uuid "4ceaa3e3-568f-42dd-8491-a773d8add0f9")
)
(pad "B1" smd rect
(at 1.325 -0.375)
(size 0.55 0.55)
(layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635)
(uuid "5bdc0a88-b8c1-4c56-b2c0-8737e7eeb5ed")
)
(pad "B2" smd rect
(at 1.325 0.375)
(size 0.55 0.55)
(layers "F.Cu" "F.Mask")
(solder_mask_margin 0.0635)
(uuid "fb158033-514b-4126-84ba-b82cd884d9a2")
)
)

View File

@ -0,0 +1,32 @@
(footprint "XTAL3215" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(fp_text reference "REF**" (at -2.3 2.2) (layer "F.SilkS")
(effects (font (size 0.93472 0.93472) (thickness 0.08128)) (justify left bottom))
(tstamp a9c6df82-9b3d-430b-ac3d-773dba21edac)
)
(fp_text value ">VALUE" (at -2.6 -1.2) (layer "F.Fab")
(effects (font (size 0.93472 0.93472) (thickness 0.08128)) (justify left bottom))
(tstamp 2d0c10c9-abbe-4218-b4a2-a2a06a7ca92f)
)
(fp_line (start -1.6 0.4172) (end -1.6 -0.4764) (layer "F.SilkS") (width 0.127) (tstamp 078a622d-2e6e-4da6-9441-6376052c47eb))
(fp_line (start -1.1 -0.4) (end 1 -0.4) (layer "F.SilkS") (width 0.127) (tstamp 16000523-6636-4a7c-90fe-2f09fce78d5e))
(fp_line (start -1.3 0.2) (end -1.3 -0.1) (layer "F.SilkS") (width 0.127) (tstamp 46b2dcb4-bf9c-401f-993d-249e79f10a6f))
(fp_line (start 1 0.4) (end -1 0.4) (layer "F.SilkS") (width 0.127) (tstamp 519e3fa1-ccf8-482c-80ef-bd5f407c1c5f))
(fp_line (start 1.3172 0.7) (end -1.3172 0.7) (layer "F.SilkS") (width 0.127) (tstamp 93307323-bd88-4ddc-ab8a-4f2d823906f4))
(fp_line (start -1.3764 -0.7) (end 1.2838 -0.7) (layer "F.SilkS") (width 0.127) (tstamp 96d8ac11-ef54-4b37-87dc-dbd4ca0b1cb4))
(fp_line (start 1.6 -0.3838) (end 1.6 0.4172) (layer "F.SilkS") (width 0.127) (tstamp bec9dc30-b160-4d84-ad5b-772b0009be76))
(fp_line (start 1.3 -0.1) (end 1.3 0.1) (layer "F.SilkS") (width 0.127) (tstamp f4ad8862-e14a-4b15-bbdf-fb0b7a3f55f3))
(fp_arc (start -1.3172 0.7) (mid -1.51717 0.61717) (end -1.6 0.4172) (layer "F.SilkS") (width 0.127) (tstamp 0c48587a-6c32-4781-9323-526f5fdc2492))
(fp_arc (start 1.3 0.1) (mid 1.212131 0.312132) (end 0.999999 0.399999) (layer "F.SilkS") (width 0.127) (tstamp 11535cde-6a05-4f6a-a42d-7840292384eb))
(fp_arc (start -1 0.4) (mid -1.191422 0.362132) (end -1.300001 0.199999) (layer "F.SilkS") (width 0.127) (tstamp 1d879171-52ed-4187-9c41-72a9e6c6b120))
(fp_arc (start -1.6 -0.4764) (mid -1.534509 -0.634509) (end -1.3764 -0.7) (layer "F.SilkS") (width 0.127) (tstamp 285901dd-7be7-4fde-bb96-976224872c4a))
(fp_arc (start -1.3 -0.1) (mid -1.262161 -0.291441) (end -1.099999 -0.399999) (layer "F.SilkS") (width 0.127) (tstamp 2eacfb6a-d7d1-4bde-b6bc-6096465bc8c1))
(fp_arc (start 1.2838 -0.7) (mid 1.507387 -0.607387) (end 1.6 -0.3838) (layer "F.SilkS") (width 0.127) (tstamp 499a51d8-52e8-4eb8-aeac-96a1be49503b))
(fp_arc (start 1.6 0.4172) (mid 1.51717 0.61717) (end 1.3172 0.7) (layer "F.SilkS") (width 0.127) (tstamp ab55d0d5-009c-4663-a9bc-dfc975cfe4f8))
(fp_arc (start 1 -0.4) (mid 1.212103 -0.312103) (end 1.3 -0.1) (layer "F.SilkS") (width 0.127) (tstamp e095b566-4c68-4a1b-a41d-59524889820a))
(pad "P$1" smd rect (at 1.2 0) (size 1.1 1.9) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4ee07c5d-9f78-4558-bf26-a2f36b7ff744))
(pad "P$2" smd rect (at -1.2 0 180) (size 1.1 1.9) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 4d20cca2-e97b-4688-a784-b838b6ce3b76))
)

View File

@ -0,0 +1,38 @@
(footprint "_0402MP" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>0402 MicroPitch<p>")
(fp_text reference "REF**" (at -0.635 -0.4763) (layer "F.SilkS")
(effects (font (size 0.499872 0.499872) (thickness 0.109728)) (justify left bottom))
(tstamp 66f54e50-362a-4456-a671-e8b742aabfe7)
)
(fp_text value ">VALUE" (at -0.635 0.7938) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp 7205e05a-db5d-40d5-aa8d-0965b4d6a0a3)
)
(fp_poly (pts
(xy -0.1 0.2)
(xy 0.1 0.2)
(xy 0.1 -0.2)
(xy -0.1 -0.2)
) (layer "F.Adhes") (width 0) (fill solid) (tstamp 151adedc-3095-4283-bc8b-67b6c834501c))
(fp_line (start 0 -0.127) (end 0 0.127) (layer "F.SilkS") (width 0.2032) (tstamp a31d0c78-4bd5-4839-be72-14af5f3f165d))
(fp_line (start -0.245 -0.174) (end 0.245 -0.174) (layer "F.Fab") (width 0.1016) (tstamp ddaa21a2-edd4-401c-ac76-6f183cf5be3d))
(fp_line (start 0.245 0.174) (end -0.245 0.174) (layer "F.Fab") (width 0.1016) (tstamp ec8c18e2-500a-4935-81c1-76a24c731e63))
(fp_poly (pts
(xy -0.5 0.25)
(xy -0.254 0.25)
(xy -0.254 -0.25)
(xy -0.5 -0.25)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 335257f6-f886-460f-b838-e2d8232128c8))
(fp_poly (pts
(xy 0.2588 0.25)
(xy 0.5 0.25)
(xy 0.5 -0.25)
(xy 0.2588 -0.25)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 3d7cd32b-2bab-4b7c-a3da-482a6d596be7))
(pad "1" smd rect (at -0.508 0) (size 0.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp c609a9e6-5647-44af-a743-b732a2a0c37d))
(pad "2" smd rect (at 0.508 0) (size 0.5 0.5) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 1249fd1b-9f93-42c3-bb42-dae4056aa043))
)

View File

@ -0,0 +1,38 @@
(footprint "_0603MP" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(descr "<b>0603 MicroPitch</b>")
(fp_text reference "REF**" (at -0.9525 -0.635) (layer "F.SilkS")
(effects (font (size 0.666496 0.666496) (thickness 0.146304)) (justify left bottom))
(tstamp a1f3b960-720c-4050-8c7b-e4fb81f7c447)
)
(fp_text value ">VALUE" (at -0.9525 0.9525) (layer "F.Fab")
(effects (font (size 0.36576 0.36576) (thickness 0.04064)) (justify left bottom))
(tstamp f7454cc9-a5be-454b-b5bb-decc69423e09)
)
(fp_poly (pts
(xy -0.1999 0.25)
(xy 0.1999 0.25)
(xy 0.1999 -0.25)
(xy -0.1999 -0.25)
) (layer "F.Adhes") (width 0) (fill solid) (tstamp 23d6168b-6030-48a2-96be-111de678cbf9))
(fp_line (start 0 -0.254) (end 0 0.254) (layer "F.SilkS") (width 0.2032) (tstamp ebb6e458-b901-41c0-b269-52de840ade47))
(fp_line (start -0.432 0.306) (end 0.432 0.306) (layer "F.Fab") (width 0.1016) (tstamp 0ff59386-9f8f-4bc5-871b-4804e001e34f))
(fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer "F.Fab") (width 0.1016) (tstamp c1b693b3-0c6a-47f3-bd85-e73de386676a))
(fp_poly (pts
(xy 0.4318 0.4)
(xy 0.8 0.4)
(xy 0.8 -0.4)
(xy 0.4318 -0.4)
) (layer "F.Fab") (width 0) (fill solid) (tstamp 98d6e8c0-7c85-4056-b142-5a49d5f78f6a))
(fp_poly (pts
(xy -0.8 0.4)
(xy -0.4318 0.4)
(xy -0.4318 -0.4)
(xy -0.8 -0.4)
) (layer "F.Fab") (width 0) (fill solid) (tstamp c67e1e1d-f03c-4cd2-855a-6f77ed9840d4))
(pad "1" smd rect (at -0.762 0) (size 0.8 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp 261178c6-668c-4d25-9316-e97dc5e52e2d))
(pad "2" smd rect (at 0.762 0) (size 0.8 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
(solder_mask_margin 0.0635) (tstamp aece925f-4ef2-4a3b-a64c-72600b766d22))
)

View File

@ -0,0 +1,4 @@
Default True 2.0 3
gnd True 2.0 3
power True 2.0 3
True True False

View File

@ -0,0 +1,42 @@
(footprint "OSO_SWD_2x3" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr smd)
(fp_text reference "REF**" (at 0 -2.032 unlocked) (layer "F.SilkS") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp cc97765e-03dd-40c8-bc09-9942f8485d23)
)
(fp_text value "OSO_SWD_2x3" (at 0 -4.572 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3723f1be-f632-4091-a098-c9348aec63f6)
)
(fp_text user "C" (at -0.508 -0.762 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp 88931c8d-237f-4e79-b244-24354b5507cc)
)
(fp_text user "+" (at -0.508 1.778 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp b2d594d3-dac9-41e7-b515-19ad22df4cd2)
)
(fp_text user "D" (at 2.032 1.778 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp c41801cb-4840-4a63-9b83-a0b86093de8d)
)
(fp_text user "-" (at 2.032 -0.762 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp d116e34b-7d96-49fa-980e-61f5adbb5cc2)
)
(fp_text user "~{R}" (at -0.508 -3.302 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp e48e1604-d489-45a4-9587-152a042c354a)
)
(fp_text user "${REFERENCE}" (at 0 4.318 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3cf253e6-b3d8-4b70-990a-3a9df456d233)
)
(pad "1" smd circle (at 1.27 2.54) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp c93a3c51-b06c-47bc-b2c8-dcd43fd3bce4))
(pad "2" smd circle (at 1.27 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 657a0b8d-9c0a-4efd-920e-1742e80dbd77))
(pad "3" smd circle (at -1.27 2.54) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 110879b7-d820-400e-83c2-2ba83b15a32d))
(pad "4" smd circle (at -1.27 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 0da5021b-2960-4fb1-abd4-df913ada6e37))
(pad "5" smd circle (at -1.27 -2.54) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 5e6b9662-455f-4d0d-8334-3f95b2cc20e1))
)

View File

@ -0,0 +1,42 @@
(footprint "OSO_SWD_Linear" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr smd)
(fp_text reference "REF**" (at 0 -2.032 unlocked) (layer "F.SilkS") hide
(effects (font (size 1 1) (thickness 0.15)))
(tstamp cc97765e-03dd-40c8-bc09-9942f8485d23)
)
(fp_text value "OSO_SWD_Linear" (at 0 -1.5 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3723f1be-f632-4091-a098-c9348aec63f6)
)
(fp_text user "SWC" (at 2.54 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp 88931c8d-237f-4e79-b244-24354b5507cc)
)
(fp_text user "3V3" (at 0 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp b2d594d3-dac9-41e7-b515-19ad22df4cd2)
)
(fp_text user "SWD" (at -5.08 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp c41801cb-4840-4a63-9b83-a0b86093de8d)
)
(fp_text user "GND" (at -2.54 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp d116e34b-7d96-49fa-980e-61f5adbb5cc2)
)
(fp_text user "~{RST}" (at 5.08 1.524 unlocked) (layer "F.SilkS")
(effects (font (size 0.5 0.5) (thickness 0.1)))
(tstamp e48e1604-d489-45a4-9587-152a042c354a)
)
(fp_text user "${REFERENCE}" (at 0 3.048 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 3cf253e6-b3d8-4b70-990a-3a9df456d233)
)
(pad "1" smd circle (at -5.08 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp c93a3c51-b06c-47bc-b2c8-dcd43fd3bce4))
(pad "2" smd circle (at -2.54 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 657a0b8d-9c0a-4efd-920e-1742e80dbd77))
(pad "3" smd circle (at 0 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 110879b7-d820-400e-83c2-2ba83b15a32d))
(pad "4" smd circle (at 2.54 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 0da5021b-2960-4fb1-abd4-df913ada6e37))
(pad "5" smd circle (at 5.08 0) (size 1.5 1.5) (layers "F.Cu" "F.Mask") (tstamp 5e6b9662-455f-4d0d-8334-3f95b2cc20e1))
)

View File

@ -0,0 +1,44 @@
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
(symbol "OSO_SWD" (in_bom yes) (on_board yes)
(property "Reference" "J" (id 0) (at 0 -7.62 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "OSO_SWD" (id 1) (at 0 7.62 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "OSO_SWD_0_1"
(rectangle (start -5.08 6.35) (end 5.08 -6.35)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type background))
)
)
(symbol "OSO_SWD_1_1"
(pin bidirectional line (at -7.62 5.08 0) (length 2.54)
(name "SWDIO" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -7.62 2.54 0) (length 2.54)
(name "GND" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -7.62 0 0) (length 2.54)
(name "VCC" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 -2.54 0) (length 2.54)
(name "SWCLK" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -7.62 -5.08 0) (length 2.54)
(name "~{RESET}" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
)
)
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
(kicad_wks (version 20210606) (generator pl_editor)
(setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15)
(left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10))
(line (name "segm1:Line") (start 0 0) (end 0 0))
)

View File

@ -0,0 +1,4 @@
(fp_lib_table
(lib (name "OSO-SWAT-A1-05")(type "KiCad")(uri "$(KIPRJMOD)/OSO-SWAT-C1.pretty")(options "")(descr ""))
(lib (name "OSO-SWD")(type "KiCad")(uri "${KIPRJMOD}/OSO-SWD.pretty")(options "")(descr ""))
)

View File

@ -0,0 +1,4 @@
(sym_lib_table
(lib (name "OSO-SWAT-A1-05-eagle-import")(type "KiCad")(uri "${KIPRJMOD}/OSO-SWAT-A1-05-eagle-import.kicad_sym")(options "")(descr ""))
(lib (name "OSO-SWD")(type "KiCad")(uri "${KIPRJMOD}/OSO_SWD.kicad_sym")(options "")(descr ""))
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More