Compare commits

...

14 Commits

Author SHA1 Message Date
demik cfe3c0314a Updated ChangeLog to 1.4.5 2023-12-28 21:45:46 +01:00
demik 8dd60e2d20 Upgraded SDK to v5.1.2 2023-12-28 21:40:18 +01:00
demik 17be92fec7
Merge pull request #2 from ElectronicsArchiver/README-Rework
README Rework
2022-08-03 18:18:02 +02:00
ElectronicsArchiver 405194156c Merge branch 'README-Rework' of https://github.com/ElectronicsArchiver/quack into README-Rework 2022-08-03 12:08:08 -04:00
ElectronicsArchiver 72218018a4 Added Bigger Preview 2022-08-03 12:07:58 -04:00
トトも 6ad6c7bb4e
Adjusted Badge Style 2022-08-02 07:57:02 -04:00
ElectronicsArchiver 876920fd90 Updated Support Section 2022-07-05 06:56:52 -04:00
トトも c211ab1f2c
Adjusted Spacing 2022-07-05 06:54:28 -04:00
ElectronicsArchiver 86f08d776b Formatted README 2022-07-05 06:51:16 -04:00
ElectronicsArchiver 0ca38e2f0a Cut Out Preview 2022-07-05 06:48:29 -04:00
demik eeb5772664 Upgraded SDK to v4.2.3 2022-04-03 21:28:45 +02:00
demik b4024687b4 cleaning 2022-01-04 19:26:32 +01:00
demik 4ba1b4b113 added back panel using a PCB 2022-01-04 19:23:36 +01:00
demik f691dc34e6
fix typo 2021-12-22 23:05:08 +01:00
19 changed files with 2314 additions and 618 deletions

View File

@ -1,3 +1,14 @@
## v1.4.5
- update to ESP-IDF v5.1.2
- big background update, lot of cleaning and rewrites
- as most patches as now mainstream, sdk patching now minimal
- removed direct call bluedroid
## v1.4.4
- update to ESP-IDF v4.2.3:
- https://github.com/espressif/esp-idf/releases/tag/v4.2.2
- mostly bluetooth related security and bug fixes
## v1.4.3
- provides some slight acceleration and desceleration on bluetooth mouses

View File

@ -0,0 +1,37 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# Connector_TestPoint_Small
#
DEF Connector_TestPoint_Small TP 0 30 N N 1 F N
F0 "TP" 0 150 50 H V C CNN
F1 "Connector_TestPoint_Small" 0 80 50 H V C CNN
F2 "" 200 0 50 H I C CNN
F3 "" 200 0 50 H I C CNN
$FPLIST
Pin*
Test*
$ENDFPLIST
DRAW
C 0 0 20 0 1 0 N
X 1 1 0 0 0 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# power_Earth
#
DEF power_Earth #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "power_Earth" 0 -150 50 H I C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -25 -75 25 -75 N
P 2 0 1 0 -5 -100 5 -100 N
P 2 0 1 0 0 -50 0 0 N
P 2 0 1 0 50 -50 -50 -50 N
X Earth 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
#End Library

View File

@ -0,0 +1,701 @@
(kicad_pcb (version 20171130) (host pcbnew "(5.1.12-1-10_14)")
(general
(thickness 1.6)
(drawings 19)
(tracks 10)
(zones 0)
(modules 3)
(nets 2)
)
(page A4)
(title_block
(title "Quack back panel")
(date 2021-12-08)
(rev 1.0)
(company Lostwave)
(comment 1 https://68kmla.org)
(comment 2 https://github.com/quack/quack)
)
(layers
(0 F.Cu signal)
(31 B.Cu signal)
(36 B.SilkS user)
(37 F.SilkS user)
(38 B.Mask user)
(39 F.Mask user)
(44 Edge.Cuts user)
(45 Margin user)
(46 B.CrtYd user)
(47 F.CrtYd user)
(48 B.Fab user)
(49 F.Fab user)
)
(setup
(last_trace_width 0.25)
(trace_clearance 0.2)
(zone_clearance 0.508)
(zone_45_only no)
(trace_min 0.2)
(via_size 0.8)
(via_drill 0.4)
(via_min_size 0.4)
(via_min_drill 0.3)
(uvia_size 0.3)
(uvia_drill 0.1)
(uvias_allowed no)
(uvia_min_size 0.2)
(uvia_min_drill 0.1)
(edge_width 0.05)
(segment_width 0.2)
(pcb_text_width 0.3)
(pcb_text_size 1.5 1.5)
(mod_edge_width 0.12)
(mod_text_size 1 1)
(mod_text_width 0.15)
(pad_size 1.524 1.524)
(pad_drill 0.762)
(pad_to_mask_clearance 0)
(aux_axis_origin 0 0)
(visible_elements FFFFFF7F)
(pcbplotparams
(layerselection 0x030f0_ffffffff)
(usegerberextensions false)
(usegerberattributes true)
(usegerberadvancedattributes true)
(creategerberjobfile true)
(excludeedgelayer true)
(linewidth 0.100000)
(plotframeref false)
(viasonmask false)
(mode 1)
(useauxorigin false)
(hpglpennumber 1)
(hpglpenspeed 20)
(hpglpendiameter 15.000000)
(psnegative false)
(psa4output false)
(plotreference true)
(plotvalue true)
(plotinvisibletext false)
(padsonsilk false)
(subtractmaskfromsilk false)
(outputformat 1)
(mirror false)
(drillshape 0)
(scaleselection 1)
(outputdirectory ""))
)
(net 0 "")
(net 1 Earth)
(net_class Default "Ceci est la Netclass par défaut."
(clearance 0.2)
(trace_width 0.25)
(via_dia 0.8)
(via_drill 0.4)
(uvia_dia 0.3)
(uvia_drill 0.1)
(add_net Earth)
)
(module "Macintosh logo:Macintosh logo" (layer F.Cu) (tedit 0) (tstamp 61B10486)
(at 90 51)
(fp_text reference G*** (at 0 0) (layer F.SilkS) hide
(effects (font (size 1.524 1.524) (thickness 0.3)))
)
(fp_text value LOGO (at 0.75 0) (layer F.SilkS) hide
(effects (font (size 1.524 1.524) (thickness 0.3)))
)
(fp_poly (pts (xy -3.142214 -2.857296) (xy -3.161382 -2.83255) (xy -3.194017 -2.795127) (xy -3.23769 -2.747483)
(xy -3.289971 -2.692074) (xy -3.348431 -2.631356) (xy -3.410644 -2.567785) (xy -3.474178 -2.503818)
(xy -3.536607 -2.441911) (xy -3.5955 -2.38452) (xy -3.64843 -2.334102) (xy -3.692967 -2.293111)
(xy -3.726682 -2.264006) (xy -3.747148 -2.249241) (xy -3.751028 -2.2479) (xy -3.771835 -2.258356)
(xy -3.786485 -2.278714) (xy -3.794843 -2.310463) (xy -3.78977 -2.345028) (xy -3.769636 -2.38706)
(xy -3.732813 -2.441214) (xy -3.72677 -2.449316) (xy -3.660779 -2.525856) (xy -3.574445 -2.607899)
(xy -3.471268 -2.692189) (xy -3.4417 -2.714377) (xy -3.396506 -2.744962) (xy -3.343087 -2.776932)
(xy -3.286683 -2.807649) (xy -3.23253 -2.834475) (xy -3.185867 -2.85477) (xy -3.151932 -2.865895)
(xy -3.13894 -2.866908) (xy -3.142214 -2.857296)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 0.613196 -4.757878) (xy 0.748727 -4.753862) (xy 0.81915 -4.751044) (xy 1.017327 -4.741404)
(xy 1.192932 -4.730384) (xy 1.345412 -4.718036) (xy 1.47421 -4.704412) (xy 1.578773 -4.689562)
(xy 1.658545 -4.67354) (xy 1.662147 -4.67264) (xy 1.791536 -4.62969) (xy 1.901307 -4.570915)
(xy 1.992287 -4.495564) (xy 2.065303 -4.402886) (xy 2.12118 -4.29213) (xy 2.140394 -4.23797)
(xy 2.152166 -4.198382) (xy 2.16058 -4.162227) (xy 2.166188 -4.123959) (xy 2.169541 -4.078026)
(xy 2.171191 -4.01888) (xy 2.171689 -3.940972) (xy 2.1717 -3.923087) (xy 2.17095 -3.861839)
(xy 2.168801 -3.78159) (xy 2.165399 -3.684929) (xy 2.160892 -3.574444) (xy 2.155426 -3.452724)
(xy 2.14915 -3.322357) (xy 2.142209 -3.185931) (xy 2.134752 -3.046036) (xy 2.126926 -2.905259)
(xy 2.118878 -2.76619) (xy 2.110755 -2.631415) (xy 2.102705 -2.503525) (xy 2.094874 -2.385107)
(xy 2.087411 -2.27875) (xy 2.080461 -2.187042) (xy 2.074174 -2.112572) (xy 2.068695 -2.057928)
(xy 2.064172 -2.025698) (xy 2.063609 -2.023061) (xy 2.0384 -1.937901) (xy 2.004965 -1.870479)
(xy 1.959485 -1.813517) (xy 1.947351 -1.801539) (xy 1.905988 -1.766308) (xy 1.860656 -1.736856)
(xy 1.808506 -1.712498) (xy 1.746686 -1.692552) (xy 1.672347 -1.676331) (xy 1.582636 -1.663153)
(xy 1.474705 -1.652331) (xy 1.345703 -1.643182) (xy 1.27 -1.638893) (xy 1.19756 -1.635889)
(xy 1.105131 -1.633348) (xy 0.997335 -1.631289) (xy 0.878791 -1.629732) (xy 0.754122 -1.628697)
(xy 0.627949 -1.628205) (xy 0.504893 -1.628274) (xy 0.389575 -1.628925) (xy 0.286617 -1.630177)
(xy 0.200639 -1.632051) (xy 0.14605 -1.634065) (xy 0.039198 -1.640612) (xy -0.066828 -1.649695)
(xy -0.166335 -1.66066) (xy -0.25363 -1.672858) (xy -0.323021 -1.685637) (xy -0.340326 -1.689695)
(xy -0.407849 -1.708441) (xy -0.464633 -1.727552) (xy -0.506683 -1.745433) (xy -0.530002 -1.760488)
(xy -0.5334 -1.766782) (xy -0.528893 -1.778039) (xy -0.514427 -1.788036) (xy -0.488586 -1.796878)
(xy -0.449953 -1.804671) (xy -0.397113 -1.811521) (xy -0.32865 -1.817534) (xy -0.243147 -1.822814)
(xy -0.139188 -1.827468) (xy -0.015358 -1.831601) (xy 0.129761 -1.835319) (xy 0.297584 -1.838728)
(xy 0.4699 -1.841629) (xy 0.671179 -1.845041) (xy 0.849004 -1.848711) (xy 1.005319 -1.852772)
(xy 1.142069 -1.857361) (xy 1.261201 -1.862615) (xy 1.364657 -1.868667) (xy 1.454385 -1.875656)
(xy 1.532328 -1.883716) (xy 1.600432 -1.892982) (xy 1.660641 -1.903592) (xy 1.714902 -1.91568)
(xy 1.765158 -1.929383) (xy 1.776625 -1.932861) (xy 1.862452 -1.965321) (xy 1.923741 -2.002228)
(xy 1.961021 -2.043933) (xy 1.968513 -2.059774) (xy 1.9741 -2.087622) (xy 1.979412 -2.140243)
(xy 1.984411 -2.21701) (xy 1.98906 -2.317298) (xy 1.99332 -2.440479) (xy 1.994956 -2.497869)
(xy 1.998541 -2.613518) (xy 2.003176 -2.736857) (xy 2.008556 -2.86122) (xy 2.014373 -2.979941)
(xy 2.020322 -3.086353) (xy 2.025889 -3.170969) (xy 2.032687 -3.269905) (xy 2.039293 -3.376709)
(xy 2.045237 -3.482998) (xy 2.050049 -3.580387) (xy 2.053164 -3.6576) (xy 2.055372 -3.757275)
(xy 2.05386 -3.838487) (xy 2.047608 -3.90803) (xy 2.035594 -3.9727) (xy 2.016799 -4.039288)
(xy 1.990204 -4.114591) (xy 1.980878 -4.139051) (xy 1.948923 -4.209215) (xy 1.910726 -4.264573)
(xy 1.860875 -4.310765) (xy 1.793958 -4.353435) (xy 1.756091 -4.373365) (xy 1.694633 -4.40278)
(xy 1.637364 -4.426155) (xy 1.57959 -4.444501) (xy 1.516614 -4.458828) (xy 1.443741 -4.470147)
(xy 1.356277 -4.479468) (xy 1.249526 -4.487801) (xy 1.21285 -4.490272) (xy 1.077497 -4.4999)
(xy 0.937382 -4.511228) (xy 0.797345 -4.523772) (xy 0.662226 -4.537053) (xy 0.536868 -4.550591)
(xy 0.426111 -4.563903) (xy 0.334795 -4.57651) (xy 0.3175 -4.579188) (xy 0.240263 -4.594591)
(xy 0.187858 -4.612671) (xy 0.159801 -4.634019) (xy 0.155609 -4.659225) (xy 0.174798 -4.688876)
(xy 0.205765 -4.715529) (xy 0.234833 -4.731046) (xy 0.276912 -4.743032) (xy 0.333893 -4.751599)
(xy 0.407672 -4.756856) (xy 0.500142 -4.758913) (xy 0.613196 -4.757878)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 0.458489 -5.585005) (xy 0.632765 -5.584465) (xy 0.807316 -5.58362) (xy 0.979667 -5.582485)
(xy 1.147341 -5.581072) (xy 1.307862 -5.579394) (xy 1.458754 -5.577463) (xy 1.597541 -5.575292)
(xy 1.721746 -5.572894) (xy 1.828893 -5.570283) (xy 1.916506 -5.567469) (xy 1.982109 -5.564467)
(xy 2.00025 -5.563315) (xy 2.146091 -5.551737) (xy 2.267917 -5.539141) (xy 2.367103 -5.525113)
(xy 2.445028 -5.509238) (xy 2.503068 -5.491099) (xy 2.5426 -5.470282) (xy 2.565001 -5.44637)
(xy 2.571648 -5.418949) (xy 2.565965 -5.392637) (xy 2.544901 -5.362846) (xy 2.52035 -5.346473)
(xy 2.483544 -5.338976) (xy 2.425034 -5.335326) (xy 2.348217 -5.335472) (xy 2.256488 -5.339361)
(xy 2.153244 -5.346942) (xy 2.08915 -5.353039) (xy 1.987409 -5.362368) (xy 1.874684 -5.370477)
(xy 1.749523 -5.377396) (xy 1.610474 -5.383156) (xy 1.456089 -5.387788) (xy 1.284914 -5.391321)
(xy 1.095501 -5.393786) (xy 0.886397 -5.395214) (xy 0.656153 -5.395635) (xy 0.403317 -5.395079)
(xy 0.148275 -5.393723) (xy -0.079986 -5.392031) (xy -0.284456 -5.390057) (xy -0.466745 -5.387688)
(xy -0.62846 -5.384812) (xy -0.77121 -5.381315) (xy -0.896605 -5.377086) (xy -1.006253 -5.372013)
(xy -1.101762 -5.365982) (xy -1.184741 -5.358882) (xy -1.2568 -5.3506) (xy -1.319546 -5.341023)
(xy -1.374589 -5.33004) (xy -1.423538 -5.317538) (xy -1.468 -5.303404) (xy -1.509585 -5.287526)
(xy -1.536271 -5.276021) (xy -1.589234 -5.247881) (xy -1.634992 -5.213246) (xy -1.673812 -5.170521)
(xy -1.705961 -5.118111) (xy -1.731706 -5.05442) (xy -1.751313 -4.977854) (xy -1.765049 -4.886816)
(xy -1.773181 -4.779712) (xy -1.775975 -4.654946) (xy -1.773699 -4.510923) (xy -1.766618 -4.346048)
(xy -1.755 -4.158726) (xy -1.745274 -4.0259) (xy -1.737359 -3.899274) (xy -1.731123 -3.74797)
(xy -1.72657 -3.572656) (xy -1.723706 -3.374) (xy -1.722534 -3.152669) (xy -1.72306 -2.90933)
(xy -1.725289 -2.644651) (xy -1.729226 -2.359299) (xy -1.731941 -2.20345) (xy -1.734557 -2.054997)
(xy -1.736413 -1.92863) (xy -1.737471 -1.821048) (xy -1.737696 -1.728947) (xy -1.73705 -1.649026)
(xy -1.735497 -1.577981) (xy -1.733 -1.51251) (xy -1.729521 -1.449311) (xy -1.725025 -1.38508)
(xy -1.722465 -1.35255) (xy -1.715595 -1.267326) (xy -1.708917 -1.183809) (xy -1.702901 -1.107926)
(xy -1.698018 -1.045606) (xy -1.694775 -1.0033) (xy -1.69321 -0.950633) (xy -1.695127 -0.89107)
(xy -1.699865 -0.830879) (xy -1.706767 -0.776324) (xy -1.715173 -0.733674) (xy -1.724425 -0.709193)
(xy -1.72588 -0.707441) (xy -1.738169 -0.708109) (xy -1.744989 -0.718844) (xy -1.750882 -0.741583)
(xy -1.759678 -0.784943) (xy -1.77063 -0.844408) (xy -1.782992 -0.915461) (xy -1.796017 -0.993587)
(xy -1.808959 -1.07427) (xy -1.82107 -1.152994) (xy -1.831605 -1.225242) (xy -1.839816 -1.286499)
(xy -1.842419 -1.3081) (xy -1.846634 -1.360396) (xy -1.849633 -1.433665) (xy -1.851413 -1.528397)
(xy -1.85197 -1.645083) (xy -1.851299 -1.784212) (xy -1.849396 -1.946275) (xy -1.846257 -2.131761)
(xy -1.841878 -2.34116) (xy -1.836255 -2.574963) (xy -1.829602 -2.82575) (xy -1.825442 -3.011945)
(xy -1.823793 -3.185363) (xy -1.824793 -3.352556) (xy -1.828579 -3.520081) (xy -1.835286 -3.694491)
(xy -1.845053 -3.88234) (xy -1.855047 -4.04495) (xy -1.860321 -4.150728) (xy -1.863418 -4.267597)
(xy -1.864438 -4.3908) (xy -1.863477 -4.515576) (xy -1.860635 -4.637167) (xy -1.856009 -4.750813)
(xy -1.849698 -4.851754) (xy -1.841801 -4.935232) (xy -1.835775 -4.9784) (xy -1.823516 -5.043253)
(xy -1.808611 -5.109972) (xy -1.793726 -5.16689) (xy -1.789453 -5.180971) (xy -1.766192 -5.246491)
(xy -1.739746 -5.303899) (xy -1.70834 -5.353801) (xy -1.670202 -5.396801) (xy -1.623557 -5.433503)
(xy -1.566631 -5.464514) (xy -1.497652 -5.490437) (xy -1.414844 -5.511878) (xy -1.316436 -5.529442)
(xy -1.200652 -5.543733) (xy -1.06572 -5.555357) (xy -0.909865 -5.564918) (xy -0.731314 -5.573022)
(xy -0.62865 -5.57687) (xy -0.545723 -5.579217) (xy -0.442711 -5.581159) (xy -0.322089 -5.582708)
(xy -0.186334 -5.583877) (xy -0.037923 -5.584678) (xy 0.120669 -5.585125) (xy 0.286965 -5.58523)
(xy 0.458489 -5.585005)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 1.856078 -0.555069) (xy 1.947224 -0.553758) (xy 2.025479 -0.551107) (xy 2.08829 -0.54703)
(xy 2.133104 -0.541436) (xy 2.156373 -0.534806) (xy 2.179133 -0.51044) (xy 2.182827 -0.477748)
(xy 2.166918 -0.445782) (xy 2.161969 -0.440838) (xy 2.136031 -0.42569) (xy 2.097351 -0.411621)
(xy 2.081292 -0.407486) (xy 2.020192 -0.39721) (xy 1.937764 -0.388481) (xy 1.838042 -0.38144)
(xy 1.725057 -0.37623) (xy 1.602843 -0.372994) (xy 1.475434 -0.371872) (xy 1.346862 -0.373008)
(xy 1.221161 -0.376543) (xy 1.21285 -0.376873) (xy 1.079982 -0.384866) (xy 0.960797 -0.397309)
(xy 0.858809 -0.413714) (xy 0.777529 -0.433594) (xy 0.758319 -0.439945) (xy 0.713002 -0.456863)
(xy 0.677053 -0.471706) (xy 0.657251 -0.481646) (xy 0.656007 -0.482617) (xy 0.65959 -0.490721)
(xy 0.686021 -0.498729) (xy 0.732746 -0.506553) (xy 0.797213 -0.514104) (xy 0.876869 -0.521294)
(xy 0.969162 -0.528033) (xy 1.071538 -0.534232) (xy 1.181444 -0.539804) (xy 1.296329 -0.544658)
(xy 1.413639 -0.548707) (xy 1.530822 -0.551861) (xy 1.645325 -0.554032) (xy 1.754594 -0.555131)
(xy 1.856078 -0.555069)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy -3.170154 -2.140166) (xy -3.096896 -2.123196) (xy -3.029496 -2.091953) (xy -2.964654 -2.045995)
(xy -2.899071 -1.984878) (xy -2.8956 -1.9813) (xy -2.809499 -1.881333) (xy -2.748208 -1.785215)
(xy -2.711519 -1.692408) (xy -2.699223 -1.602375) (xy -2.711112 -1.514578) (xy -2.712611 -1.509299)
(xy -2.730101 -1.485264) (xy -2.757521 -1.480527) (xy -2.782897 -1.493695) (xy -2.798812 -1.514384)
(xy -2.821315 -1.551532) (xy -2.846481 -1.598476) (xy -2.856453 -1.618583) (xy -2.902134 -1.698027)
(xy -2.960572 -1.777419) (xy -3.026175 -1.850389) (xy -3.093348 -1.910567) (xy -3.142094 -1.943877)
(xy -3.182332 -1.963829) (xy -3.223786 -1.976786) (xy -3.269617 -1.982409) (xy -3.322983 -1.980356)
(xy -3.387045 -1.970285) (xy -3.464962 -1.951855) (xy -3.559894 -1.924724) (xy -3.675001 -1.888553)
(xy -3.685386 -1.88519) (xy -3.762318 -1.861695) (xy -3.830646 -1.843629) (xy -3.885143 -1.83226)
(xy -3.917799 -1.8288) (xy -3.953627 -1.832227) (xy -4.006321 -1.841524) (xy -4.068433 -1.855221)
(xy -4.124963 -1.869742) (xy -4.192814 -1.88762) (xy -4.247935 -1.899462) (xy -4.299608 -1.906491)
(xy -4.357116 -1.909927) (xy -4.429744 -1.910993) (xy -4.43865 -1.911017) (xy -4.507422 -1.910831)
(xy -4.556677 -1.909364) (xy -4.592296 -1.905741) (xy -4.620159 -1.899084) (xy -4.646146 -1.888519)
(xy -4.669638 -1.876611) (xy -4.738294 -1.829877) (xy -4.787027 -1.771399) (xy -4.817111 -1.698735)
(xy -4.829818 -1.609441) (xy -4.83032 -1.56845) (xy -4.824115 -1.487606) (xy -4.807464 -1.408045)
(xy -4.77887 -1.326526) (xy -4.736838 -1.239812) (xy -4.679872 -1.144663) (xy -4.606475 -1.037838)
(xy -4.550188 -0.961849) (xy -4.470176 -0.855927) (xy -4.402973 -0.766226) (xy -4.345794 -0.688916)
(xy -4.295854 -0.62017) (xy -4.250367 -0.556157) (xy -4.20655 -0.49305) (xy -4.167305 -0.435438)
(xy -4.112148 -0.356192) (xy -4.066991 -0.297023) (xy -4.029672 -0.255709) (xy -3.998028 -0.230026)
(xy -3.969899 -0.217753) (xy -3.953815 -0.2159) (xy -3.927026 -0.222426) (xy -3.887812 -0.239518)
(xy -3.845452 -0.263012) (xy -3.794775 -0.291253) (xy -3.750663 -0.306984) (xy -3.700542 -0.314393)
(xy -3.688685 -0.315245) (xy -3.643064 -0.317052) (xy -3.61441 -0.313935) (xy -3.594466 -0.303952)
(xy -3.578948 -0.289413) (xy -3.552203 -0.265406) (xy -3.528626 -0.250736) (xy -3.528373 -0.250641)
(xy -3.488318 -0.248831) (xy -3.437618 -0.267473) (xy -3.378898 -0.305361) (xy -3.34118 -0.336589)
(xy -3.280268 -0.387936) (xy -3.233462 -0.420332) (xy -3.199093 -0.434731) (xy -3.17549 -0.43209)
(xy -3.174836 -0.431699) (xy -3.164055 -0.42039) (xy -3.167539 -0.40239) (xy -3.175312 -0.386768)
(xy -3.194487 -0.360719) (xy -3.22906 -0.322792) (xy -3.274694 -0.2771) (xy -3.327053 -0.227753)
(xy -3.381798 -0.178862) (xy -3.434593 -0.13454) (xy -3.472064 -0.105464) (xy -3.515199 -0.07548)
(xy -3.548015 -0.06065) (xy -3.578026 -0.061137) (xy -3.612747 -0.077099) (xy -3.659691 -0.108697)
(xy -3.660805 -0.109489) (xy -3.69945 -0.133202) (xy -3.734998 -0.148786) (xy -3.752727 -0.1524)
(xy -3.776973 -0.146248) (xy -3.816454 -0.129702) (xy -3.864739 -0.105633) (xy -3.89504 -0.0889)
(xy -3.962724 -0.052377) (xy -4.015056 -0.031067) (xy -4.056972 -0.024903) (xy -4.093405 -0.033814)
(xy -4.129293 -0.057733) (xy -4.15855 -0.085206) (xy -4.192546 -0.12247) (xy -4.239272 -0.177852)
(xy -4.296718 -0.248784) (xy -4.362876 -0.332698) (xy -4.435737 -0.427025) (xy -4.513293 -0.529197)
(xy -4.593534 -0.636645) (xy -4.6531 -0.71755) (xy -4.756853 -0.867147) (xy -4.83923 -1.003118)
(xy -4.900255 -1.125512) (xy -4.939956 -1.234379) (xy -4.947536 -1.26365) (xy -4.960175 -1.344731)
(xy -4.964561 -1.436973) (xy -4.961073 -1.53188) (xy -4.950095 -1.620958) (xy -4.932007 -1.695711)
(xy -4.927587 -1.70815) (xy -4.870443 -1.82887) (xy -4.79909 -1.928663) (xy -4.713946 -2.00737)
(xy -4.615427 -2.064829) (xy -4.50395 -2.100883) (xy -4.379932 -2.115369) (xy -4.243791 -2.108129)
(xy -4.095944 -2.079002) (xy -4.019348 -2.056691) (xy -3.952205 -2.037116) (xy -3.893447 -2.025531)
(xy -3.837091 -2.022178) (xy -3.777152 -2.0273) (xy -3.70765 -2.041139) (xy -3.622601 -2.063938)
(xy -3.58775 -2.074169) (xy -3.458068 -2.109864) (xy -3.347441 -2.133057) (xy -3.252569 -2.143306)
(xy -3.170154 -2.140166)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 3.125447 -5.113898) (xy 3.143864 -5.101845) (xy 3.14438 -5.100685) (xy 3.145808 -5.083054)
(xy 3.145819 -5.044292) (xy 3.144513 -4.988624) (xy 3.141994 -4.920273) (xy 3.138362 -4.843462)
(xy 3.138031 -4.83716) (xy 3.135938 -4.787419) (xy 3.133651 -4.714594) (xy 3.131213 -4.621001)
(xy 3.128667 -4.508955) (xy 3.126057 -4.380771) (xy 3.123425 -4.238766) (xy 3.120816 -4.085253)
(xy 3.118272 -3.922549) (xy 3.115836 -3.752969) (xy 3.113551 -3.578828) (xy 3.111761 -3.429)
(xy 3.107743 -3.078904) (xy 3.103937 -2.753278) (xy 3.100326 -2.451193) (xy 3.09689 -2.171719)
(xy 3.09361 -1.913928) (xy 3.090467 -1.67689) (xy 3.087443 -1.459677) (xy 3.084519 -1.261359)
(xy 3.081675 -1.081008) (xy 3.078893 -0.917694) (xy 3.076154 -0.770488) (xy 3.07344 -0.638461)
(xy 3.07073 -0.520684) (xy 3.068007 -0.416228) (xy 3.065251 -0.324163) (xy 3.062443 -0.243562)
(xy 3.059566 -0.173494) (xy 3.056599 -0.113031) (xy 3.053524 -0.061243) (xy 3.050321 -0.017202)
(xy 3.046973 0.020022) (xy 3.04346 0.051357) (xy 3.040572 0.072452) (xy 3.030798 0.115623)
(xy 3.017557 0.146165) (xy 3.003408 0.159848) (xy 2.991544 0.153523) (xy 2.987167 0.1346)
(xy 2.983071 0.09236) (xy 2.979255 0.02666) (xy 2.975717 -0.062642) (xy 2.972456 -0.175687)
(xy 2.96947 -0.312618) (xy 2.966757 -0.473577) (xy 2.964315 -0.658707) (xy 2.962142 -0.868149)
(xy 2.960237 -1.102045) (xy 2.958599 -1.360538) (xy 2.957224 -1.64377) (xy 2.956113 -1.951882)
(xy 2.955262 -2.285018) (xy 2.95467 -2.643318) (xy 2.954426 -2.887183) (xy 2.95275 -5.069516)
(xy 2.982731 -5.093808) (xy 3.012031 -5.108364) (xy 3.051162 -5.116802) (xy 3.091757 -5.118765)
(xy 3.125447 -5.113898)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 3.13055 1.194435) (xy 3.241022 1.324292) (xy 3.282992 1.372475) (xy 3.338214 1.434165)
(xy 3.402318 1.504574) (xy 3.470932 1.578916) (xy 3.539688 1.652403) (xy 3.564872 1.679033)
(xy 3.639031 1.757195) (xy 3.720994 1.843588) (xy 3.804682 1.931805) (xy 3.884016 2.015438)
(xy 3.952919 2.088079) (xy 3.962572 2.098256) (xy 4.059292 2.201216) (xy 4.137788 2.286947)
(xy 4.198268 2.355693) (xy 4.240941 2.4077) (xy 4.266015 2.443215) (xy 4.273698 2.462484)
(xy 4.273066 2.464581) (xy 4.255399 2.470414) (xy 4.221722 2.459997) (xy 4.17425 2.434771)
(xy 4.115199 2.396176) (xy 4.046784 2.345654) (xy 3.971221 2.284647) (xy 3.895866 2.219218)
(xy 3.842618 2.172758) (xy 3.792518 2.131424) (xy 3.75013 2.098813) (xy 3.720017 2.078523)
(xy 3.712659 2.074757) (xy 3.682048 2.066698) (xy 3.63903 2.061032) (xy 3.590889 2.057979)
(xy 3.54491 2.057759) (xy 3.508379 2.060592) (xy 3.488579 2.066699) (xy 3.487471 2.067961)
(xy 3.49217 2.081421) (xy 3.509388 2.111724) (xy 3.536786 2.155112) (xy 3.572025 2.207827)
(xy 3.596112 2.242586) (xy 3.662464 2.3395) (xy 3.712388 2.417885) (xy 3.746194 2.478318)
(xy 3.764191 2.521374) (xy 3.766689 2.547631) (xy 3.76327 2.553709) (xy 3.750563 2.560121)
(xy 3.732198 2.557726) (xy 3.706608 2.545281) (xy 3.672227 2.521545) (xy 3.627488 2.485275)
(xy 3.570824 2.435227) (xy 3.500668 2.37016) (xy 3.415454 2.28883) (xy 3.3528 2.228166)
(xy 3.20675 2.08618) (xy 3.05435 2.096227) (xy 2.988629 2.100334) (xy 2.926626 2.103812)
(xy 2.875889 2.106259) (xy 2.846907 2.107236) (xy 2.791865 2.1082) (xy 2.830444 2.155825)
(xy 2.851251 2.181368) (xy 2.884658 2.222209) (xy 2.927127 2.274033) (xy 2.975121 2.332521)
(xy 3.013896 2.379723) (xy 3.07737 2.457602) (xy 3.125529 2.518359) (xy 3.159764 2.564005)
(xy 3.181464 2.596553) (xy 3.19202 2.618013) (xy 3.19282 2.630398) (xy 3.189613 2.634067)
(xy 3.173641 2.631466) (xy 3.144734 2.617332) (xy 3.122736 2.603685) (xy 3.097391 2.584163)
(xy 3.057207 2.550114) (xy 3.005652 2.50462) (xy 2.946194 2.450764) (xy 2.882302 2.391626)
(xy 2.85115 2.362338) (xy 2.761456 2.279172) (xy 2.686119 2.21273) (xy 2.625907 2.163655)
(xy 2.58159 2.132595) (xy 2.568968 2.125596) (xy 2.535134 2.109714) (xy 2.508218 2.101032)
(xy 2.479811 2.098665) (xy 2.441505 2.101731) (xy 2.397518 2.10758) (xy 2.320758 2.115995)
(xy 2.227077 2.122683) (xy 2.122762 2.12752) (xy 2.014098 2.130383) (xy 1.907372 2.131149)
(xy 1.808869 2.129694) (xy 1.724876 2.125895) (xy 1.677386 2.121694) (xy 1.594179 2.109791)
(xy 1.528122 2.095827) (xy 1.480971 2.080485) (xy 1.454483 2.064447) (xy 1.450415 2.048396)
(xy 1.461394 2.037796) (xy 1.478276 2.034112) (xy 1.515742 2.029547) (xy 1.569013 2.024577)
(xy 1.63331 2.019671) (xy 1.667371 2.017436) (xy 1.733827 2.012734) (xy 1.811227 2.006325)
(xy 1.895825 1.998615) (xy 1.983872 1.990011) (xy 2.071623 1.980921) (xy 2.155329 1.97175)
(xy 2.231245 1.962906) (xy 2.295622 1.954795) (xy 2.344714 1.947823) (xy 2.374774 1.942399)
(xy 2.382411 1.939822) (xy 2.380621 1.925593) (xy 2.36724 1.898235) (xy 2.346502 1.864482)
(xy 2.322644 1.83107) (xy 2.299902 1.804735) (xy 2.294065 1.799336) (xy 2.231211 1.759923)
(xy 2.151957 1.732536) (xy 2.120114 1.727322) (xy 2.4765 1.727322) (xy 2.483633 1.742545)
(xy 2.502773 1.772778) (xy 2.530532 1.812829) (xy 2.547706 1.836431) (xy 2.581559 1.881362)
(xy 2.605201 1.909165) (xy 2.623102 1.923441) (xy 2.639732 1.927791) (xy 2.658831 1.92594)
(xy 2.688769 1.922146) (xy 2.736205 1.917553) (xy 2.793283 1.912884) (xy 2.82575 1.910559)
(xy 2.880236 1.906437) (xy 2.924923 1.902251) (xy 2.953939 1.898596) (xy 2.961608 1.896789)
(xy 2.958347 1.88518) (xy 2.942336 1.858204) (xy 2.91648 1.820495) (xy 2.898108 1.795519)
(xy 2.82575 1.699414) (xy 2.7051 1.706891) (xy 2.644976 1.710264) (xy 2.587827 1.712862)
(xy 2.542962 1.714284) (xy 2.530475 1.714434) (xy 2.497509 1.717161) (xy 2.478412 1.723942)
(xy 2.4765 1.727322) (xy 2.120114 1.727322) (xy 2.082414 1.721149) (xy 2.048747 1.718892)
(xy 1.993701 1.716088) (xy 1.921283 1.712904) (xy 1.835505 1.709503) (xy 1.740376 1.706051)
(xy 1.639906 1.702712) (xy 1.6129 1.701867) (xy 1.443125 1.695673) (xy 1.298462 1.688329)
(xy 1.258382 1.685478) (xy 3.0532 1.685478) (xy 3.061364 1.705938) (xy 3.085355 1.737108)
(xy 3.123274 1.781537) (xy 3.124765 1.783288) (xy 3.215169 1.889458) (xy 3.350659 1.882731)
(xy 3.408732 1.879242) (xy 3.458789 1.87512) (xy 3.494466 1.870952) (xy 3.50776 1.868224)
(xy 3.514409 1.861432) (xy 3.510043 1.847344) (xy 3.492703 1.82297) (xy 3.460429 1.785316)
(xy 3.435239 1.757465) (xy 3.341108 1.654486) (xy 3.216779 1.659787) (xy 3.142652 1.662884)
(xy 3.091946 1.666499) (xy 3.062761 1.673181) (xy 3.0532 1.685478) (xy 1.258382 1.685478)
(xy 1.178643 1.679806) (xy 1.083404 1.670074) (xy 1.012479 1.659103) (xy 0.965604 1.646864)
(xy 0.942513 1.633327) (xy 0.9398 1.626341) (xy 0.944585 1.620395) (xy 0.96014 1.615139)
(xy 0.988261 1.610457) (xy 1.030747 1.606234) (xy 1.089395 1.602353) (xy 1.166003 1.598699)
(xy 1.262368 1.595155) (xy 1.380287 1.591605) (xy 1.521559 1.587933) (xy 1.54305 1.587409)
(xy 1.652359 1.584565) (xy 1.754494 1.581535) (xy 1.846476 1.578433) (xy 1.925325 1.575378)
(xy 1.988063 1.572485) (xy 2.03171 1.569871) (xy 2.053287 1.567653) (xy 2.054225 1.567426)
(xy 2.077096 1.553654) (xy 2.080817 1.529017) (xy 2.065843 1.49016) (xy 2.064956 1.488444)
(xy 2.022713 1.432342) (xy 1.964525 1.395988) (xy 1.9304 1.385384) (xy 1.903561 1.38217)
(xy 1.853478 1.37924) (xy 1.782307 1.376646) (xy 1.692202 1.374442) (xy 1.585319 1.372678)
(xy 1.463812 1.371407) (xy 1.329837 1.370681) (xy 1.3208 1.370654) (xy 1.278104 1.370484)
(xy 2.2352 1.370484) (xy 2.24117 1.386218) (xy 2.257038 1.417791) (xy 2.279736 1.459199)
(xy 2.287097 1.472084) (xy 2.338995 1.5621) (xy 2.449022 1.560615) (xy 2.512348 1.558882)
(xy 2.577849 1.555679) (xy 2.632602 1.551656) (xy 2.638418 1.55109) (xy 2.717786 1.54305)
(xy 2.657468 1.443455) (xy 2.59715 1.343861) (xy 2.5146 1.35129) (xy 2.457772 1.355137)
(xy 2.390846 1.357855) (xy 2.333625 1.358809) (xy 2.287263 1.360226) (xy 2.25265 1.363903)
(xy 2.235888 1.369114) (xy 2.2352 1.370484) (xy 1.278104 1.370484) (xy 1.166842 1.370041)
(xy 1.036526 1.369095) (xy 0.928094 1.367735) (xy 0.839789 1.365884) (xy 0.769853 1.363462)
(xy 0.716528 1.36039) (xy 0.678058 1.35659) (xy 0.652685 1.351983) (xy 0.638652 1.34649)
(xy 0.634201 1.340032) (xy 0.634197 1.33985) (xy 2.794348 1.33985) (xy 2.91465 1.523572)
(xy 3.0226 1.523646) (xy 3.079221 1.522759) (xy 3.132017 1.520341) (xy 3.171277 1.516873)
(xy 3.17716 1.516013) (xy 3.223771 1.508305) (xy 3.15176 1.415117) (xy 3.07975 1.321928)
(xy 3.0099 1.322742) (xy 2.954128 1.324826) (xy 2.892835 1.329173) (xy 2.867199 1.331703)
(xy 2.794348 1.33985) (xy 0.634197 1.33985) (xy 0.639892 1.332257) (xy 0.657736 1.324885)
(xy 0.688733 1.317661) (xy 0.733886 1.310513) (xy 0.794199 1.30337) (xy 0.870675 1.29616)
(xy 0.964317 1.28881) (xy 1.076129 1.28125) (xy 1.207113 1.273407) (xy 1.358273 1.26521)
(xy 1.530612 1.256587) (xy 1.725134 1.247466) (xy 1.942842 1.237776) (xy 2.184739 1.227444)
(xy 2.2352 1.225332) (xy 2.373609 1.219612) (xy 2.506174 1.214236) (xy 2.630416 1.209298)
(xy 2.743853 1.204893) (xy 2.844004 1.201115) (xy 2.928388 1.198056) (xy 2.994525 1.195811)
(xy 3.039934 1.194473) (xy 3.0607 1.194121) (xy 3.13055 1.194435)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 2.018702 0.731077) (xy 2.227672 0.731196) (xy 2.414714 0.731435) (xy 2.580986 0.731805)
(xy 2.727645 0.732316) (xy 2.85585 0.732977) (xy 2.966756 0.733799) (xy 3.061521 0.734792)
(xy 3.141304 0.735965) (xy 3.207261 0.737329) (xy 3.260549 0.738895) (xy 3.302327 0.740671)
(xy 3.333751 0.742668) (xy 3.355979 0.744896) (xy 3.369168 0.747127) (xy 3.414699 0.76094)
(xy 3.458155 0.782666) (xy 3.507338 0.816601) (xy 3.535576 0.838731) (xy 3.578688 0.875642)
(xy 3.636434 0.928441) (xy 3.70612 0.994444) (xy 3.785051 1.070971) (xy 3.870531 1.155339)
(xy 3.959866 1.244864) (xy 4.05036 1.336866) (xy 4.139318 1.42866) (xy 4.224046 1.517566)
(xy 4.301849 1.600901) (xy 4.307572 1.607115) (xy 4.447189 1.761314) (xy 4.568363 1.900675)
(xy 4.672066 2.026741) (xy 4.759267 2.141055) (xy 4.830938 2.245159) (xy 4.888048 2.340595)
(xy 4.931568 2.428908) (xy 4.962468 2.511639) (xy 4.981719 2.590331) (xy 4.99029 2.666527)
(xy 4.990949 2.693546) (xy 4.978598 2.785235) (xy 4.941128 2.876095) (xy 4.878415 2.96641)
(xy 4.860475 2.98706) (xy 4.806657 3.046771) (xy 3.778103 3.085519) (xy 3.541928 3.094243)
(xy 3.329462 3.101699) (xy 3.139049 3.107913) (xy 2.969029 3.11291) (xy 2.817746 3.116715)
(xy 2.683543 3.119351) (xy 2.56476 3.120844) (xy 2.459742 3.121219) (xy 2.366829 3.1205)
(xy 2.284366 3.118712) (xy 2.210693 3.115879) (xy 2.144153 3.112027) (xy 2.119684 3.110247)
(xy 2.040007 3.102272) (xy 1.959919 3.091003) (xy 1.88338 3.077353) (xy 1.814353 3.062234)
(xy 1.756799 3.046556) (xy 1.714679 3.031233) (xy 1.691954 3.017176) (xy 1.6891 3.011128)
(xy 1.691155 3.006714) (xy 1.698597 3.002721) (xy 1.713341 2.999009) (xy 1.737303 2.995438)
(xy 1.772397 2.991866) (xy 1.820538 2.988152) (xy 1.883642 2.984158) (xy 1.963624 2.97974)
(xy 2.0624 2.974761) (xy 2.181883 2.969077) (xy 2.323989 2.96255) (xy 2.39395 2.959385)
(xy 2.666064 2.947095) (xy 2.91396 2.93586) (xy 3.138791 2.925624) (xy 3.341716 2.91633)
(xy 3.52389 2.907922) (xy 3.686468 2.900344) (xy 3.830608 2.89354) (xy 3.957465 2.887453)
(xy 4.068196 2.882028) (xy 4.163956 2.877209) (xy 4.245902 2.872938) (xy 4.31519 2.86916)
(xy 4.372976 2.865819) (xy 4.420416 2.862859) (xy 4.458667 2.860223) (xy 4.488884 2.857855)
(xy 4.4958 2.857256) (xy 4.618062 2.844628) (xy 4.716407 2.829967) (xy 4.792292 2.812266)
(xy 4.84718 2.790516) (xy 4.88253 2.763711) (xy 4.899803 2.730842) (xy 4.900459 2.690903)
(xy 4.885959 2.642886) (xy 4.866359 2.601614) (xy 4.825398 2.531767) (xy 4.768903 2.447133)
(xy 4.698833 2.349948) (xy 4.617145 2.242444) (xy 4.525798 2.126857) (xy 4.426749 2.005422)
(xy 4.321957 1.880372) (xy 4.21338 1.753943) (xy 4.102975 1.628369) (xy 3.9927 1.505884)
(xy 3.884514 1.388722) (xy 3.780374 1.279119) (xy 3.682239 1.179309) (xy 3.592067 1.091527)
(xy 3.511815 1.018006) (xy 3.443442 0.960981) (xy 3.403007 0.931618) (xy 3.37687 0.917279)
(xy 3.344665 0.90659) (xy 3.300617 0.898242) (xy 3.23895 0.890924) (xy 3.212507 0.888397)
(xy 3.180541 0.88658) (xy 3.124285 0.884708) (xy 3.04485 0.882793) (xy 2.943345 0.880848)
(xy 2.820881 0.878888) (xy 2.678569 0.876924) (xy 2.517517 0.874971) (xy 2.338838 0.873041)
(xy 2.14364 0.871147) (xy 1.933034 0.869303) (xy 1.70813 0.867522) (xy 1.470039 0.865817)
(xy 1.21987 0.864201) (xy 1.12395 0.863625) (xy 0.898917 0.862225) (xy 0.679523 0.860708)
(xy 0.467268 0.859092) (xy 0.26365 0.857395) (xy 0.070167 0.855633) (xy -0.111682 0.853825)
(xy -0.280399 0.851987) (xy -0.434484 0.850137) (xy -0.572439 0.848291) (xy -0.692765 0.846467)
(xy -0.793964 0.844683) (xy -0.874537 0.842956) (xy -0.932986 0.841303) (xy -0.967811 0.839741)
(xy -0.97155 0.839463) (xy -1.037781 0.833413) (xy -1.083462 0.827579) (xy -1.113407 0.820856)
(xy -1.132432 0.812135) (xy -1.145351 0.800309) (xy -1.146175 0.799306) (xy -1.162555 0.7759)
(xy -1.1684 0.762072) (xy -1.15575 0.758369) (xy -1.117991 0.754886) (xy -1.055417 0.751627)
(xy -0.968319 0.748594) (xy -0.856988 0.745791) (xy -0.721716 0.743223) (xy -0.562795 0.740891)
(xy -0.380516 0.738799) (xy -0.175171 0.73695) (xy 0.052948 0.735349) (xy 0.303551 0.733998)
(xy 0.576344 0.7329) (xy 0.871037 0.73206) (xy 1.187337 0.731479) (xy 1.524954 0.731163)
(xy 1.53035 0.73116) (xy 1.786647 0.731068) (xy 2.018702 0.731077)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy -1.047717 0.026842) (xy -0.955302 0.030664) (xy -0.868396 0.036587) (xy -0.791468 0.044209)
(xy -0.728988 0.05313) (xy -0.685426 0.062947) (xy -0.673186 0.067551) (xy -0.649413 0.089913)
(xy -0.637075 0.122698) (xy -0.638367 0.155577) (xy -0.6504 0.17477) (xy -0.673051 0.18306)
(xy -0.720369 0.191175) (xy -0.791622 0.199055) (xy -0.886077 0.206645) (xy -1.003002 0.213887)
(xy -1.141663 0.220724) (xy -1.30133 0.227099) (xy -1.33985 0.228456) (xy -1.556932 0.236891)
(xy -1.751859 0.246636) (xy -1.927858 0.258034) (xy -2.088156 0.27143) (xy -2.235981 0.287167)
(xy -2.374559 0.305589) (xy -2.507117 0.327041) (xy -2.636883 0.351867) (xy -2.767082 0.38041)
(xy -2.7686 0.380762) (xy -2.913582 0.417516) (xy -3.06258 0.46093) (xy -3.211387 0.509423)
(xy -3.35579 0.561409) (xy -3.491582 0.615308) (xy -3.614552 0.669534) (xy -3.720491 0.722505)
(xy -3.797952 0.767899) (xy -3.874049 0.821807) (xy -3.943969 0.880179) (xy -4.004695 0.939717)
(xy -4.05321 0.99712) (xy -4.086497 1.049088) (xy -4.101539 1.092322) (xy -4.102101 1.100594)
(xy -4.090091 1.139718) (xy -4.055409 1.183236) (xy -4.000071 1.229583) (xy -3.926094 1.277193)
(xy -3.835497 1.324498) (xy -3.78324 1.348132) (xy -3.692833 1.384127) (xy -3.596446 1.416255)
(xy -3.489883 1.445606) (xy -3.368944 1.473271) (xy -3.229431 1.500339) (xy -3.131833 1.517289)
(xy -2.946357 1.551674) (xy -2.77451 1.590219) (xy -2.618105 1.63231) (xy -2.478951 1.677332)
(xy -2.35886 1.724672) (xy -2.259642 1.773714) (xy -2.183108 1.823845) (xy -2.153951 1.84909)
(xy -2.121044 1.888548) (xy -2.099391 1.934759) (xy -2.087268 1.993419) (xy -2.082952 2.070226)
(xy -2.082871 2.084083) (xy -2.083628 2.124262) (xy -2.087131 2.159089) (xy -2.09513 2.192479)
(xy -2.109378 2.228348) (xy -2.131624 2.270609) (xy -2.163619 2.323178) (xy -2.207115 2.38997)
(xy -2.245256 2.447154) (xy -2.297885 2.526726) (xy -2.337378 2.589374) (xy -2.365516 2.638734)
(xy -2.384078 2.678442) (xy -2.394844 2.712132) (xy -2.399595 2.74344) (xy -2.4003 2.763803)
(xy -2.394635 2.814441) (xy -2.37668 2.862417) (xy -2.344998 2.908683) (xy -2.298149 2.954194)
(xy -2.234694 2.999901) (xy -2.153197 3.046759) (xy -2.052217 3.095719) (xy -1.930317 3.147736)
(xy -1.786059 3.203763) (xy -1.674764 3.244527) (xy -1.504423 3.30657) (xy -1.356135 3.362609)
(xy -1.227591 3.413821) (xy -1.116479 3.46138) (xy -1.020489 3.506463) (xy -0.937309 3.550245)
(xy -0.86463 3.593901) (xy -0.800141 3.638608) (xy -0.741531 3.685541) (xy -0.68649 3.735876)
(xy -0.662796 3.759414) (xy -0.615596 3.808545) (xy -0.585033 3.84376) (xy -0.571884 3.865218)
(xy -0.576926 3.873078) (xy -0.600938 3.867498) (xy -0.644698 3.848638) (xy -0.708983 3.816657)
(xy -0.7747 3.782266) (xy -0.903394 3.716967) (xy -1.034117 3.656796) (xy -1.172197 3.599583)
(xy -1.322961 3.543157) (xy -1.491737 3.485347) (xy -1.550315 3.466235) (xy -1.714408 3.412309)
(xy -1.855733 3.363711) (xy -1.976169 3.319629) (xy -2.077594 3.279251) (xy -2.161888 3.241762)
(xy -2.230928 3.20635) (xy -2.286593 3.172204) (xy -2.330763 3.138509) (xy -2.350768 3.119944)
(xy -2.414654 3.03921) (xy -2.456001 2.948237) (xy -2.474913 2.848297) (xy -2.471491 2.740661)
(xy -2.44584 2.626602) (xy -2.398061 2.507391) (xy -2.328258 2.384301) (xy -2.286319 2.32333)
(xy -2.239286 2.255638) (xy -2.199531 2.192504) (xy -2.16933 2.137967) (xy -2.150957 2.096065)
(xy -2.1463 2.074739) (xy -2.15794 2.043797) (xy -2.190737 2.00825) (xy -2.241506 1.970747)
(xy -2.307064 1.933939) (xy -2.326746 1.924529) (xy -2.372804 1.904155) (xy -2.420842 1.884963)
(xy -2.472937 1.866451) (xy -2.531163 1.848115) (xy -2.597595 1.829454) (xy -2.674311 1.809964)
(xy -2.763384 1.789144) (xy -2.86689 1.76649) (xy -2.986905 1.7415) (xy -3.125504 1.713671)
(xy -3.284763 1.682501) (xy -3.466757 1.647488) (xy -3.48615 1.643782) (xy -3.618636 1.615605)
(xy -3.730462 1.5849) (xy -3.826364 1.54967) (xy -3.911078 1.507917) (xy -3.989337 1.457645)
(xy -4.06042 1.401544) (xy -4.107279 1.3588) (xy -4.138249 1.321121) (xy -4.156086 1.281525)
(xy -4.163547 1.233028) (xy -4.16339 1.168647) (xy -4.162192 1.143748) (xy -4.145989 1.011446)
(xy -4.112087 0.896327) (xy -4.059567 0.796502) (xy -3.98751 0.710086) (xy -3.924714 0.656383)
(xy -3.848899 0.605412) (xy -3.752958 0.550527) (xy -3.641428 0.493896) (xy -3.518844 0.437689)
(xy -3.389741 0.384074) (xy -3.258655 0.335221) (xy -3.2385 0.328231) (xy -3.07935 0.27891)
(xy -2.898805 0.232317) (xy -2.700777 0.189016) (xy -2.489181 0.149573) (xy -2.267928 0.114552)
(xy -2.040932 0.084518) (xy -1.812105 0.060035) (xy -1.58536 0.041669) (xy -1.36461 0.029985)
(xy -1.153768 0.025546) (xy -1.141171 0.025522) (xy -1.047717 0.026842)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 0.487051 4.32865) (xy 0.505201 4.354112) (xy 0.518026 4.384655) (xy 0.5207 4.401978)
(xy 0.511277 4.431613) (xy 0.484726 4.474554) (xy 0.443617 4.528078) (xy 0.390524 4.589461)
(xy 0.328018 4.655979) (xy 0.258674 4.724908) (xy 0.185062 4.793524) (xy 0.109756 4.859102)
(xy 0.035327 4.918919) (xy 0.025345 4.926512) (xy -0.034388 4.968039) (xy -0.104026 5.010837)
(xy -0.177208 5.051506) (xy -0.247572 5.086649) (xy -0.308757 5.112866) (xy -0.346075 5.124947)
(xy -0.37108 5.128377) (xy -0.380076 5.11792) (xy -0.381 5.103144) (xy -0.369824 5.072653)
(xy -0.335458 5.037867) (xy -0.328466 5.032358) (xy -0.305784 5.013367) (xy -0.267507 4.979541)
(xy -0.216501 4.933491) (xy -0.155632 4.877826) (xy -0.087767 4.815157) (xy -0.015772 4.748094)
(xy 0.000602 4.73276) (xy 0.118639 4.622579) (xy 0.218985 4.529929) (xy 0.302011 4.45448)
(xy 0.368089 4.395906) (xy 0.41759 4.353876) (xy 0.450885 4.328064) (xy 0.468346 4.31814)
(xy 0.469505 4.318) (xy 0.487051 4.32865)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 0.313054 3.983364) (xy 0.380867 4.008586) (xy 0.406277 4.020345) (xy 0.498585 4.070114)
(xy 0.586655 4.129748) (xy 0.673262 4.201821) (xy 0.761179 4.288906) (xy 0.853177 4.393577)
(xy 0.952031 4.518408) (xy 0.973447 4.546792) (xy 1.073473 4.683022) (xy 1.156787 4.802305)
(xy 1.223228 4.904379) (xy 1.272637 4.988982) (xy 1.304856 5.055853) (xy 1.319724 5.10473)
(xy 1.3208 5.117541) (xy 1.311208 5.176318) (xy 1.284625 5.245043) (xy 1.244337 5.318369)
(xy 1.193632 5.390949) (xy 1.135797 5.457438) (xy 1.081517 5.50674) (xy 1.005268 5.562399)
(xy 0.913891 5.62149) (xy 0.816098 5.678683) (xy 0.720603 5.72865) (xy 0.71124 5.733176)
(xy 0.652898 5.760026) (xy 0.615056 5.774441) (xy 0.596157 5.776581) (xy 0.594642 5.766605)
(xy 0.608954 5.744674) (xy 0.609814 5.743575) (xy 0.626724 5.723291) (xy 0.6574 5.68768)
(xy 0.698689 5.640357) (xy 0.747434 5.584936) (xy 0.800482 5.525034) (xy 0.803102 5.522086)
(xy 0.901948 5.408998) (xy 0.98321 5.31161) (xy 1.047894 5.228314) (xy 1.097007 5.157501)
(xy 1.131554 5.097564) (xy 1.152541 5.046894) (xy 1.160976 5.003883) (xy 1.157863 4.966924)
(xy 1.155521 4.958809) (xy 1.141909 4.929212) (xy 1.117695 4.88685) (xy 1.087357 4.839394)
(xy 1.076774 4.823936) (xy 1.001032 4.720483) (xy 0.919597 4.618413) (xy 0.835342 4.520723)
(xy 0.751142 4.430408) (xy 0.669873 4.350464) (xy 0.594409 4.283888) (xy 0.527626 4.233675)
(xy 0.487403 4.209775) (xy 0.446201 4.190525) (xy 0.410268 4.179124) (xy 0.369998 4.1736)
(xy 0.315783 4.171979) (xy 0.303279 4.17195) (xy 0.249787 4.172693) (xy 0.21009 4.17647)
(xy 0.174925 4.185601) (xy 0.135027 4.202407) (xy 0.087379 4.226031) (xy 0.041321 4.251736)
(xy -0.019235 4.288882) (xy -0.088441 4.333702) (xy -0.160449 4.38243) (xy -0.213733 4.419962)
(xy -0.278772 4.466125) (xy -0.340285 4.508767) (xy -0.393934 4.544956) (xy -0.435384 4.571765)
(xy -0.45893 4.585582) (xy -0.506646 4.60287) (xy -0.539863 4.600593) (xy -0.55655 4.580623)
(xy -0.554677 4.544836) (xy -0.540641 4.510222) (xy -0.520765 4.482514) (xy -0.484921 4.442741)
(xy -0.437065 4.394592) (xy -0.381154 4.341756) (xy -0.321143 4.28792) (xy -0.26099 4.236774)
(xy -0.204651 4.192007) (xy -0.179029 4.173083) (xy -0.118085 4.132186) (xy -0.046495 4.088138)
(xy 0.023336 4.048463) (xy 0.045936 4.036558) (xy 0.125356 3.999551) (xy 0.191929 3.978548)
(xy 0.252285 3.973252) (xy 0.313054 3.983364)) (layer F.SilkS) (width 0.01))
)
(module TestPoint:TestPoint_Pad_1.5x1.5mm (layer B.Cu) (tedit 5A0F774F) (tstamp 61B104B1)
(at 86 50.5)
(descr "SMD rectangular pad as test Point, square 1.5mm side length")
(tags "test point SMD pad rectangle square")
(path /61B0C87F)
(attr virtual)
(fp_text reference TP2 (at 0 1.648) (layer B.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text value TestPoint_Small (at 0 -1.75) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start -0.95 0.95) (end 0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 0.95) (end 0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 -0.95) (end -0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -0.95 -0.95) (end -0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -1.25 1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_text user %R (at 0 1.65) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(pad 1 smd rect (at 0 0) (size 1.5 1.5) (layers B.Cu B.Mask)
(net 1 Earth))
)
(module TestPoint:TestPoint_Pad_1.5x1.5mm (layer B.Cu) (tedit 5A0F774F) (tstamp 61B10897)
(at 50.5 50.5)
(descr "SMD rectangular pad as test Point, square 1.5mm side length")
(tags "test point SMD pad rectangle square")
(path /61B0AF58)
(attr virtual)
(fp_text reference TP1 (at 0 1.648) (layer B.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_text value TestPoint_Small (at 0 -1.75) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start -0.95 0.95) (end 0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 0.95) (end 0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 -0.95) (end -0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -0.95 -0.95) (end -0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -1.25 1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_text user %R (at 0 1.65) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(pad 1 smd rect (at 0 0) (size 1.5 1.5) (layers B.Cu B.Mask)
(net 1 Earth))
)
(gr_text JLCJLCJLCJLC (at 68 59.5) (layer B.SilkS)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(gr_text "Use with Macintosh 128/512/Plus or Apple Lisa" (at 68 59.5) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(gr_text Quack (at 46 50.5) (layer F.SilkS)
(effects (font (size 2 2) (thickness 0.3)))
)
(gr_arc (start 81.5 55) (end 81.5 57) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B100EF))
(gr_line (start 54.5 57) (end 81.5 57) (layer Edge.Cuts) (width 0.05) (tstamp 61B100E8))
(gr_arc (start 81.5 46) (end 83.5 46) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B100D6))
(gr_line (start 83.5 46) (end 83.5 55) (layer Edge.Cuts) (width 0.05) (tstamp 61B100CF))
(gr_line (start 54.5 44) (end 81.5 44) (layer Edge.Cuts) (width 0.05))
(gr_arc (start 54.5 55) (end 52.5 55) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B10074))
(gr_arc (start 54.5 46) (end 54.5 44) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B1006E))
(gr_line (start 52.5 46) (end 52.5 55) (layer Edge.Cuts) (width 0.05))
(gr_line (start 40 62.8) (end 96 62.8) (layer Edge.Cuts) (width 0.05) (tstamp 61B0A208))
(gr_line (start 38 42) (end 38 60.8) (layer Edge.Cuts) (width 0.05) (tstamp 61B0A1EF))
(gr_arc (start 40 60.8) (end 38 60.8) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B0A1C6))
(gr_arc (start 96 60.8) (end 96 62.8) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B0A1BD))
(gr_line (start 98 42) (end 98 60.8) (layer Edge.Cuts) (width 0.05))
(gr_arc (start 96 42) (end 98 42) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 61B0A124))
(gr_arc (start 40 42) (end 40 40) (angle -90) (layer Edge.Cuts) (width 0.05))
(gr_line (start 40 40) (end 96 40) (layer Edge.Cuts) (width 0.05))
(via (at 96 41.999988) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
(segment (start 86 50.5) (end 87.499988 50.5) (width 0.25) (layer B.Cu) (net 1))
(segment (start 87.499988 50.5) (end 96 41.999988) (width 0.25) (layer B.Cu) (net 1))
(via (at 39.999998 42) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
(segment (start 96 41.999988) (end 40.00001 41.999988) (width 0.25) (layer F.Cu) (net 1))
(segment (start 48.499998 50.5) (end 39.999998 42) (width 0.25) (layer B.Cu) (net 1))
(segment (start 50.5 50.5) (end 48.499998 50.5) (width 0.25) (layer B.Cu) (net 1))
(segment (start 96 41.999988) (end 40.00001 41.999988) (width 0.25) (layer B.Cu) (net 1))
(segment (start 40.00001 41.999988) (end 39.999998 42) (width 0.25) (layer F.Cu) (net 1))
(segment (start 40.00001 41.999988) (end 39.999998 42) (width 0.25) (layer B.Cu) (net 1))
(zone (net 1) (net_name Earth) (layer F.Cu) (tstamp 61B0B678) (hatch edge 0.508)
(connect_pads (clearance 0.508))
(min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
(polygon
(pts
(xy 97 42) (xy 97 61) (xy 96 62) (xy 40 62) (xy 39 61)
(xy 39 42) (xy 40 41) (xy 96 41)
)
)
(filled_polygon
(pts
(xy 96.873 42.052606) (xy 96.873 60.947394) (xy 95.947394 61.873) (xy 40.052606 61.873) (xy 39.127 60.947394)
(xy 39.127 45.967582) (xy 51.84 45.967582) (xy 51.840001 55.032419) (xy 51.842852 55.061364) (xy 51.842765 55.073781)
(xy 51.843665 55.082952) (xy 51.884466 55.471145) (xy 51.896487 55.529708) (xy 51.907702 55.588501) (xy 51.910366 55.597323)
(xy 52.02579 55.970198) (xy 52.048975 56.025353) (xy 52.071379 56.080806) (xy 52.075706 56.088943) (xy 52.261357 56.432298)
(xy 52.29478 56.481849) (xy 52.327562 56.531946) (xy 52.333387 56.539087) (xy 52.582194 56.839841) (xy 52.624629 56.881981)
(xy 52.666492 56.92473) (xy 52.673592 56.930604) (xy 52.976077 57.177305) (xy 53.025904 57.210409) (xy 53.075259 57.244204)
(xy 53.083365 57.248587) (xy 53.428007 57.431837) (xy 53.483311 57.454631) (xy 53.538295 57.478198) (xy 53.547098 57.480923)
(xy 53.92077 57.593741) (xy 53.979458 57.605361) (xy 54.037961 57.617797) (xy 54.047126 57.61876) (xy 54.435595 57.65685)
(xy 54.435598 57.65685) (xy 54.467581 57.66) (xy 81.532419 57.66) (xy 81.561373 57.657148) (xy 81.573781 57.657235)
(xy 81.582952 57.656335) (xy 81.971145 57.615534) (xy 82.029708 57.603513) (xy 82.088501 57.592298) (xy 82.097323 57.589634)
(xy 82.470198 57.47421) (xy 82.525353 57.451025) (xy 82.580806 57.428621) (xy 82.588943 57.424294) (xy 82.932298 57.238643)
(xy 82.981849 57.20522) (xy 83.031946 57.172438) (xy 83.039087 57.166613) (xy 83.339841 56.917806) (xy 83.381981 56.875371)
(xy 83.42473 56.833508) (xy 83.430604 56.826408) (xy 83.677305 56.523923) (xy 83.710409 56.474096) (xy 83.744204 56.424741)
(xy 83.748587 56.416635) (xy 83.931837 56.071993) (xy 83.954631 56.016689) (xy 83.978198 55.961705) (xy 83.980923 55.952902)
(xy 84.093741 55.57923) (xy 84.105361 55.520542) (xy 84.117797 55.462039) (xy 84.11876 55.452874) (xy 84.15685 55.064405)
(xy 84.15685 55.064402) (xy 84.16 55.032419) (xy 84.16 45.967581) (xy 84.157148 45.938627) (xy 84.157235 45.926219)
(xy 84.156335 45.917047) (xy 84.115534 45.528855) (xy 84.103514 45.470299) (xy 84.092298 45.411498) (xy 84.089634 45.402677)
(xy 83.97421 45.029802) (xy 83.951025 44.974647) (xy 83.928621 44.919194) (xy 83.924294 44.911058) (xy 83.924294 44.911057)
(xy 83.924291 44.911053) (xy 83.738643 44.567702) (xy 83.705187 44.518101) (xy 83.672437 44.468054) (xy 83.666613 44.460913)
(xy 83.417806 44.160158) (xy 83.375371 44.118019) (xy 83.333508 44.075269) (xy 83.326407 44.069396) (xy 83.023923 43.822695)
(xy 82.974107 43.789598) (xy 82.924741 43.755795) (xy 82.916635 43.751413) (xy 82.571993 43.568163) (xy 82.516687 43.545368)
(xy 82.461704 43.521802) (xy 82.452901 43.519077) (xy 82.07923 43.406259) (xy 82.020542 43.394639) (xy 81.962039 43.382203)
(xy 81.952874 43.38124) (xy 81.564405 43.34315) (xy 81.564402 43.34315) (xy 81.532419 43.34) (xy 54.467581 43.34)
(xy 54.438627 43.342852) (xy 54.426219 43.342765) (xy 54.417047 43.343665) (xy 54.028855 43.384466) (xy 53.970299 43.396486)
(xy 53.911498 43.407702) (xy 53.902677 43.410366) (xy 53.529802 43.52579) (xy 53.474647 43.548975) (xy 53.419194 43.571379)
(xy 53.411062 43.575704) (xy 53.411057 43.575706) (xy 53.411053 43.575709) (xy 53.067702 43.761357) (xy 53.018101 43.794813)
(xy 52.968054 43.827563) (xy 52.960913 43.833387) (xy 52.660158 44.082194) (xy 52.618019 44.124629) (xy 52.575269 44.166492)
(xy 52.569396 44.173593) (xy 52.322695 44.476077) (xy 52.289598 44.525893) (xy 52.255795 44.575259) (xy 52.251413 44.583365)
(xy 52.068163 44.928007) (xy 52.045368 44.983313) (xy 52.021802 45.038296) (xy 52.019077 45.047099) (xy 51.906259 45.42077)
(xy 51.894639 45.479458) (xy 51.882203 45.537961) (xy 51.88124 45.547126) (xy 51.84315 45.935595) (xy 51.84 45.967582)
(xy 39.127 45.967582) (xy 39.127 42.052606) (xy 40.052606 41.127) (xy 95.947394 41.127)
)
)
)
(zone (net 1) (net_name Earth) (layer B.Cu) (tstamp 61B0B675) (hatch edge 0.508)
(connect_pads (clearance 0.508))
(min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
(polygon
(pts
(xy 97 42) (xy 97 61) (xy 96 62) (xy 40 62) (xy 39 61)
(xy 39 42) (xy 40 41) (xy 96 41)
)
)
(filled_polygon
(pts
(xy 96.873 42.052606) (xy 96.873 60.947394) (xy 95.947394 61.873) (xy 40.052606 61.873) (xy 39.127 60.947394)
(xy 39.127 51.25) (xy 49.111928 51.25) (xy 49.124188 51.374482) (xy 49.160498 51.49418) (xy 49.219463 51.604494)
(xy 49.298815 51.701185) (xy 49.395506 51.780537) (xy 49.50582 51.839502) (xy 49.625518 51.875812) (xy 49.75 51.888072)
(xy 50.21425 51.885) (xy 50.373 51.72625) (xy 50.373 50.627) (xy 49.27375 50.627) (xy 49.115 50.78575)
(xy 49.111928 51.25) (xy 39.127 51.25) (xy 39.127 49.75) (xy 49.111928 49.75) (xy 49.115 50.21425)
(xy 49.27375 50.373) (xy 50.373 50.373) (xy 50.373 49.27375) (xy 50.627 49.27375) (xy 50.627 50.373)
(xy 50.647 50.373) (xy 50.647 50.627) (xy 50.627 50.627) (xy 50.627 51.72625) (xy 50.78575 51.885)
(xy 51.25 51.888072) (xy 51.374482 51.875812) (xy 51.49418 51.839502) (xy 51.604494 51.780537) (xy 51.701185 51.701185)
(xy 51.780537 51.604494) (xy 51.839502 51.49418) (xy 51.840001 51.492536) (xy 51.840001 55.032419) (xy 51.842852 55.061364)
(xy 51.842765 55.073781) (xy 51.843665 55.082952) (xy 51.884466 55.471145) (xy 51.896487 55.529708) (xy 51.907702 55.588501)
(xy 51.910366 55.597323) (xy 52.02579 55.970198) (xy 52.048975 56.025353) (xy 52.071379 56.080806) (xy 52.075706 56.088943)
(xy 52.261357 56.432298) (xy 52.29478 56.481849) (xy 52.327562 56.531946) (xy 52.333387 56.539087) (xy 52.582194 56.839841)
(xy 52.624629 56.881981) (xy 52.666492 56.92473) (xy 52.673592 56.930604) (xy 52.976077 57.177305) (xy 53.025904 57.210409)
(xy 53.075259 57.244204) (xy 53.083365 57.248587) (xy 53.428007 57.431837) (xy 53.483311 57.454631) (xy 53.538295 57.478198)
(xy 53.547098 57.480923) (xy 53.92077 57.593741) (xy 53.979458 57.605361) (xy 54.037961 57.617797) (xy 54.047126 57.61876)
(xy 54.435595 57.65685) (xy 54.435598 57.65685) (xy 54.467581 57.66) (xy 81.532419 57.66) (xy 81.561373 57.657148)
(xy 81.573781 57.657235) (xy 81.582952 57.656335) (xy 81.971145 57.615534) (xy 82.029708 57.603513) (xy 82.088501 57.592298)
(xy 82.097323 57.589634) (xy 82.470198 57.47421) (xy 82.525353 57.451025) (xy 82.580806 57.428621) (xy 82.588943 57.424294)
(xy 82.932298 57.238643) (xy 82.981849 57.20522) (xy 83.031946 57.172438) (xy 83.039087 57.166613) (xy 83.339841 56.917806)
(xy 83.381981 56.875371) (xy 83.42473 56.833508) (xy 83.430604 56.826408) (xy 83.677305 56.523923) (xy 83.710409 56.474096)
(xy 83.744204 56.424741) (xy 83.748587 56.416635) (xy 83.931837 56.071993) (xy 83.954631 56.016689) (xy 83.978198 55.961705)
(xy 83.980923 55.952902) (xy 84.093741 55.57923) (xy 84.105361 55.520542) (xy 84.117797 55.462039) (xy 84.11876 55.452874)
(xy 84.15685 55.064405) (xy 84.15685 55.064402) (xy 84.16 55.032419) (xy 84.16 51.25) (xy 84.611928 51.25)
(xy 84.624188 51.374482) (xy 84.660498 51.49418) (xy 84.719463 51.604494) (xy 84.798815 51.701185) (xy 84.895506 51.780537)
(xy 85.00582 51.839502) (xy 85.125518 51.875812) (xy 85.25 51.888072) (xy 85.71425 51.885) (xy 85.873 51.72625)
(xy 85.873 50.627) (xy 86.127 50.627) (xy 86.127 51.72625) (xy 86.28575 51.885) (xy 86.75 51.888072)
(xy 86.874482 51.875812) (xy 86.99418 51.839502) (xy 87.104494 51.780537) (xy 87.201185 51.701185) (xy 87.280537 51.604494)
(xy 87.339502 51.49418) (xy 87.375812 51.374482) (xy 87.388072 51.25) (xy 87.385 50.78575) (xy 87.22625 50.627)
(xy 86.127 50.627) (xy 85.873 50.627) (xy 84.77375 50.627) (xy 84.615 50.78575) (xy 84.611928 51.25)
(xy 84.16 51.25) (xy 84.16 49.75) (xy 84.611928 49.75) (xy 84.615 50.21425) (xy 84.77375 50.373)
(xy 85.873 50.373) (xy 85.873 49.27375) (xy 86.127 49.27375) (xy 86.127 50.373) (xy 87.22625 50.373)
(xy 87.385 50.21425) (xy 87.388072 49.75) (xy 87.375812 49.625518) (xy 87.339502 49.50582) (xy 87.280537 49.395506)
(xy 87.201185 49.298815) (xy 87.104494 49.219463) (xy 86.99418 49.160498) (xy 86.874482 49.124188) (xy 86.75 49.111928)
(xy 86.28575 49.115) (xy 86.127 49.27375) (xy 85.873 49.27375) (xy 85.71425 49.115) (xy 85.25 49.111928)
(xy 85.125518 49.124188) (xy 85.00582 49.160498) (xy 84.895506 49.219463) (xy 84.798815 49.298815) (xy 84.719463 49.395506)
(xy 84.660498 49.50582) (xy 84.624188 49.625518) (xy 84.611928 49.75) (xy 84.16 49.75) (xy 84.16 45.967581)
(xy 84.157148 45.938627) (xy 84.157235 45.926219) (xy 84.156335 45.917047) (xy 84.115534 45.528855) (xy 84.103514 45.470299)
(xy 84.092298 45.411498) (xy 84.089634 45.402677) (xy 83.97421 45.029802) (xy 83.951025 44.974647) (xy 83.928621 44.919194)
(xy 83.924294 44.911058) (xy 83.924294 44.911057) (xy 83.924291 44.911053) (xy 83.738643 44.567702) (xy 83.705187 44.518101)
(xy 83.672437 44.468054) (xy 83.666613 44.460913) (xy 83.417806 44.160158) (xy 83.375371 44.118019) (xy 83.333508 44.075269)
(xy 83.326407 44.069396) (xy 83.023923 43.822695) (xy 82.974107 43.789598) (xy 82.924741 43.755795) (xy 82.916635 43.751413)
(xy 82.571993 43.568163) (xy 82.516687 43.545368) (xy 82.461704 43.521802) (xy 82.452901 43.519077) (xy 82.07923 43.406259)
(xy 82.020542 43.394639) (xy 81.962039 43.382203) (xy 81.952874 43.38124) (xy 81.564405 43.34315) (xy 81.564402 43.34315)
(xy 81.532419 43.34) (xy 54.467581 43.34) (xy 54.438627 43.342852) (xy 54.426219 43.342765) (xy 54.417047 43.343665)
(xy 54.028855 43.384466) (xy 53.970299 43.396486) (xy 53.911498 43.407702) (xy 53.902677 43.410366) (xy 53.529802 43.52579)
(xy 53.474647 43.548975) (xy 53.419194 43.571379) (xy 53.411062 43.575704) (xy 53.411057 43.575706) (xy 53.411053 43.575709)
(xy 53.067702 43.761357) (xy 53.018101 43.794813) (xy 52.968054 43.827563) (xy 52.960913 43.833387) (xy 52.660158 44.082194)
(xy 52.618019 44.124629) (xy 52.575269 44.166492) (xy 52.569396 44.173593) (xy 52.322695 44.476077) (xy 52.289598 44.525893)
(xy 52.255795 44.575259) (xy 52.251413 44.583365) (xy 52.068163 44.928007) (xy 52.045368 44.983313) (xy 52.021802 45.038296)
(xy 52.019077 45.047099) (xy 51.906259 45.42077) (xy 51.894639 45.479458) (xy 51.882203 45.537961) (xy 51.88124 45.547126)
(xy 51.84315 45.935595) (xy 51.84 45.967582) (xy 51.84 49.507463) (xy 51.839502 49.50582) (xy 51.780537 49.395506)
(xy 51.701185 49.298815) (xy 51.604494 49.219463) (xy 51.49418 49.160498) (xy 51.374482 49.124188) (xy 51.25 49.111928)
(xy 50.78575 49.115) (xy 50.627 49.27375) (xy 50.373 49.27375) (xy 50.21425 49.115) (xy 49.75 49.111928)
(xy 49.625518 49.124188) (xy 49.50582 49.160498) (xy 49.395506 49.219463) (xy 49.298815 49.298815) (xy 49.219463 49.395506)
(xy 49.160498 49.50582) (xy 49.124188 49.625518) (xy 49.111928 49.75) (xy 39.127 49.75) (xy 39.127 42.052606)
(xy 40.052606 41.127) (xy 95.947394 41.127)
)
)
)
)

View File

@ -0,0 +1,248 @@
update=2021 December 08, Wednesday 14:30:39
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=
CopperLayerCount=2
BoardThickness=1.6
AllowMicroVias=0
AllowBlindVias=0
RequireCourtyardDefinitions=0
ProhibitOverlappingCourtyards=1
MinTrackWidth=0.2
MinViaDiameter=0.4
MinViaDrill=0.3
MinMicroViaDiameter=0.2
MinMicroViaDrill=0.09999999999999999
MinHoleToHole=0.25
TrackWidth1=0.25
ViaDiameter1=0.8
ViaDrill1=0.4
dPairWidth1=0.2
dPairGap1=0.25
dPairViaGap1=0.25
SilkLineWidth=0.12
SilkTextSizeV=1
SilkTextSizeH=1
SilkTextSizeThickness=0.15
SilkTextItalic=0
SilkTextUpright=1
CopperLineWidth=0.2
CopperTextSizeV=1.5
CopperTextSizeH=1.5
CopperTextThickness=0.3
CopperTextItalic=0
CopperTextUpright=1
EdgeCutLineWidth=0.05
CourtyardLineWidth=0.05
OthersLineWidth=0.15
OthersTextSizeV=1
OthersTextSizeH=1
OthersTextSizeThickness=0.15
OthersTextItalic=0
OthersTextUpright=1
SolderMaskClearance=0
SolderMaskMinWidth=0
SolderPasteClearance=0
SolderPasteRatio=-0
[pcbnew/Layer.F.Cu]
Name=F.Cu
Type=0
Enabled=1
[pcbnew/Layer.In1.Cu]
Name=In1.Cu
Type=0
Enabled=0
[pcbnew/Layer.In2.Cu]
Name=In2.Cu
Type=0
Enabled=0
[pcbnew/Layer.In3.Cu]
Name=In3.Cu
Type=0
Enabled=0
[pcbnew/Layer.In4.Cu]
Name=In4.Cu
Type=0
Enabled=0
[pcbnew/Layer.In5.Cu]
Name=In5.Cu
Type=0
Enabled=0
[pcbnew/Layer.In6.Cu]
Name=In6.Cu
Type=0
Enabled=0
[pcbnew/Layer.In7.Cu]
Name=In7.Cu
Type=0
Enabled=0
[pcbnew/Layer.In8.Cu]
Name=In8.Cu
Type=0
Enabled=0
[pcbnew/Layer.In9.Cu]
Name=In9.Cu
Type=0
Enabled=0
[pcbnew/Layer.In10.Cu]
Name=In10.Cu
Type=0
Enabled=0
[pcbnew/Layer.In11.Cu]
Name=In11.Cu
Type=0
Enabled=0
[pcbnew/Layer.In12.Cu]
Name=In12.Cu
Type=0
Enabled=0
[pcbnew/Layer.In13.Cu]
Name=In13.Cu
Type=0
Enabled=0
[pcbnew/Layer.In14.Cu]
Name=In14.Cu
Type=0
Enabled=0
[pcbnew/Layer.In15.Cu]
Name=In15.Cu
Type=0
Enabled=0
[pcbnew/Layer.In16.Cu]
Name=In16.Cu
Type=0
Enabled=0
[pcbnew/Layer.In17.Cu]
Name=In17.Cu
Type=0
Enabled=0
[pcbnew/Layer.In18.Cu]
Name=In18.Cu
Type=0
Enabled=0
[pcbnew/Layer.In19.Cu]
Name=In19.Cu
Type=0
Enabled=0
[pcbnew/Layer.In20.Cu]
Name=In20.Cu
Type=0
Enabled=0
[pcbnew/Layer.In21.Cu]
Name=In21.Cu
Type=0
Enabled=0
[pcbnew/Layer.In22.Cu]
Name=In22.Cu
Type=0
Enabled=0
[pcbnew/Layer.In23.Cu]
Name=In23.Cu
Type=0
Enabled=0
[pcbnew/Layer.In24.Cu]
Name=In24.Cu
Type=0
Enabled=0
[pcbnew/Layer.In25.Cu]
Name=In25.Cu
Type=0
Enabled=0
[pcbnew/Layer.In26.Cu]
Name=In26.Cu
Type=0
Enabled=0
[pcbnew/Layer.In27.Cu]
Name=In27.Cu
Type=0
Enabled=0
[pcbnew/Layer.In28.Cu]
Name=In28.Cu
Type=0
Enabled=0
[pcbnew/Layer.In29.Cu]
Name=In29.Cu
Type=0
Enabled=0
[pcbnew/Layer.In30.Cu]
Name=In30.Cu
Type=0
Enabled=0
[pcbnew/Layer.B.Cu]
Name=B.Cu
Type=0
Enabled=1
[pcbnew/Layer.B.Adhes]
Enabled=0
[pcbnew/Layer.F.Adhes]
Enabled=0
[pcbnew/Layer.B.Paste]
Enabled=0
[pcbnew/Layer.F.Paste]
Enabled=0
[pcbnew/Layer.B.SilkS]
Enabled=1
[pcbnew/Layer.F.SilkS]
Enabled=1
[pcbnew/Layer.B.Mask]
Enabled=1
[pcbnew/Layer.F.Mask]
Enabled=1
[pcbnew/Layer.Dwgs.User]
Enabled=0
[pcbnew/Layer.Cmts.User]
Enabled=0
[pcbnew/Layer.Eco1.User]
Enabled=0
[pcbnew/Layer.Eco2.User]
Enabled=0
[pcbnew/Layer.Edge.Cuts]
Enabled=1
[pcbnew/Layer.Margin]
Enabled=1
[pcbnew/Layer.B.CrtYd]
Enabled=1
[pcbnew/Layer.F.CrtYd]
Enabled=1
[pcbnew/Layer.B.Fab]
Enabled=1
[pcbnew/Layer.F.Fab]
Enabled=1
[pcbnew/Layer.Rescue]
Enabled=0
[pcbnew/Netclasses]
[pcbnew/Netclasses/Default]
Name=Default
Clearance=0.2
TrackWidth=0.25
ViaDiameter=0.8
ViaDrill=0.4
uViaDiameter=0.3
uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25

View File

@ -0,0 +1,54 @@
EESchema Schematic File Version 4
EELAYER 30 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title "Quack back panel"
Date "2021-12-08"
Rev "1.0"
Comp "Lostwave"
Comment1 "https://68kmla.org"
Comment2 "https://github.com/quack/quack"
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L power:Earth #PWR0101
U 1 1 61B0AB0B
P 3000 3000
F 0 "#PWR0101" H 3000 2750 50 0001 C CNN
F 1 "Earth" H 3000 2850 50 0001 C CNN
F 2 "" H 3000 3000 50 0001 C CNN
F 3 "~" H 3000 3000 50 0001 C CNN
1 3000 3000
1 0 0 -1
$EndComp
$Comp
L Connector:TestPoint_Small TP1
U 1 1 61B0AF58
P 3000 2500
F 0 "TP1" H 3048 2546 50 0000 L CNN
F 1 "TestPoint_Small" H 3048 2455 50 0000 L CNN
F 2 "TestPoint:TestPoint_Pad_1.5x1.5mm" H 3200 2500 50 0001 C CNN
F 3 "~" H 3200 2500 50 0001 C CNN
1 3000 2500
1 0 0 -1
$EndComp
Wire Wire Line
3000 3000 3000 2750
$Comp
L Connector:TestPoint_Small TP2
U 1 1 61B0C87F
P 3000 2750
F 0 "TP2" H 3048 2796 50 0000 L CNN
F 1 "TestPoint_Small" H 3048 2705 50 0000 L CNN
F 2 "TestPoint:TestPoint_Pad_1.5x1.5mm" H 3200 2750 50 0001 C CNN
F 3 "~" H 3200 2750 50 0001 C CNN
1 3000 2750
1 0 0 -1
$EndComp
Connection ~ 3000 2750
Wire Wire Line
3000 2750 3000 2500
$EndSCHEMATC

View File

@ -1,21 +1,71 @@
# Quack Mouse Converter
The Quack Mouse project is a Bluetooth & ADB Mouse "Dongle" for the Macintosh 128/512/Plus and the Apple Lisa. It allow you to use most ADB and BT2+ mouses with a Macintosh 128/512/Plus and Apple Lisa though the mouse port of the Macintosh.
# Quack Mouse Converter[![Badge License]][License]
It include a custom PCB (EDA subfolder) with the accompanying firmware (code in main subfolder)
![Board](https://raw.githubusercontent.com/demik/quack/master/Images/board.png)
A dongle that allows various retro systems to use the `Apple Desktop Bus` <br>
as well as `Bluetooth 2+` mice through their `quadrature` mouse ports.
### Supported mouse conversions:
<br>
<br>
<br>
Quack support the following conversions:
- ADB mouse to Macintosh 128/512/Plus or Apple Lisa
- Bluetooth mouse to Macintosh 128/512/Plus or Apple Lisa
<div align = center>
### Unsupported mouse conversions:
[![Button Documentation]][Documentation]
[![Button Firmware]][Firmware]
[![Button PCB]][PCB]
[![Button Changelog]][Changelog]
- ADB mouse to Bluetooth LE host
This is a work in progress for now, it doesn't work with all mainstream operating systems (Windows 10 works)
<br>
<br>
### Documentation
<img
src = 'Resources/Preview.png'
width = 500
/>
More documentation is avaible on the Wiki. Please check it out: https://github.com/demik/quack/wiki
</div>
<br>
<br>
## Supported
#### Systems
<kbd>Macintosh 128 / 512 / Plus</kbd><kbd>Apple Lisa</kbd>
#### Connection Types
<kbd>Apple Desktop Bus</kbd><kbd>Bluetooth 2+</kbd>
<br>
<br>
### Unsupported
- `ADB`  ➞  `Bluetooth LE`for **Non-Windows 10**
<br>
<!----------------------------------------------------------------------------->
[Documentation]: https://github.com/demik/quack/wiki
[Changelog]: ChangeLog.md
[Firmware]: main/README.md
[License]: LICENSE
[PCB]: EDA/ChangeLog.md
<!-------------------------------[ Badges ]----------------------------------->
[Badge License]: https://img.shields.io/badge/License-Apache_2.0-961b1f?style=for-the-badge&labelColor=D22128
<!-------------------------------[ Buttons ]----------------------------------->
[Button Documentation]: https://img.shields.io/badge/Documentation-0099E5?style=for-the-badge&logoColor=white&logo=BookStack
[Button Changelog]: https://img.shields.io/badge/Changelog-21375A?style=for-the-badge&logoColor=white&logo=AzureArtifacts
[Button Firmware]: https://img.shields.io/badge/Firmware-E5426E?style=for-the-badge&logoColor=white&logo=ROS
[Button PCB]: https://img.shields.io/badge/PCB-007c40?style=for-the-badge&logoColor=white&logo=PowerApps

BIN
Resources/Preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -10,4 +10,4 @@ set(include_dirs ".")
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "${include_dirs}"
REQUIRES esp_hid)
REQUIRES driver esp_hid nvs_flash spi_flash)

View File

@ -2,7 +2,7 @@
### Supported SDK versions:
The code is designed to be build with ESP-IDF SDK version 4.2.2. To workaround some patchs or limitations of this specific release, you need to apply the patch located in the SDK subfolder
The code is designed to be build with ESP-IDF SDK version 4.2.3. To workaround some patchs or limitations of this specific release, you need to apply the patch located in the SDK subfolder
### Unsupported mouse conversions:

View File

@ -1,75 +1,13 @@
diff --git a/components/bt/host/bluedroid/bta/hh/bta_hh_le.c b/components/bt/host/bluedroid/bta/hh/bta_hh_le.c
index 6c86cb9be7..8fdf1a1dc3 100644
--- a/components/bt/host/bluedroid/bta/hh/bta_hh_le.c
+++ b/components/bt/host/bluedroid/bta/hh/bta_hh_le.c
@@ -498,7 +498,7 @@ tBTA_HH_LE_RPT *bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT *p_head, UINT8 mode,
UINT8 i;
#if BTA_HH_DEBUG == TRUE
- APPL_TRACE_DEBUG("bta_hh_le_find_rpt_by_idtype: r_type: %d rpt_id: %d", r_type, rpt_id);
+ :required:("bta_hh_le_find_rpt_by_idtype: r_type: %d rpt_id: %d", r_type, rpt_id);
#endif
for (i = 0 ; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt++) {
diff --git a/components/esp_hid/include/esp_hidh.h b/components/esp_hid/include/esp_hidh.h
index b1a8264307..bedcb42b65 100644
--- a/components/esp_hid/include/esp_hidh.h
+++ b/components/esp_hid/include/esp_hidh.h
@@ -100,6 +100,7 @@ typedef union {
typedef struct {
esp_event_handler_t callback;
+ uint16_t event_stack_size;
} esp_hidh_config_t;
/**
diff --git a/components/esp_hid/src/ble_hidh.c b/components/esp_hid/src/ble_hidh.c
index 5fe54f2fa7..28cc35e295 100644
--- a/components/esp_hid/src/ble_hidh.c
+++ b/components/esp_hid/src/ble_hidh.c
@@ -617,7 +617,7 @@ esp_err_t esp_ble_hidh_init(const esp_hidh_config_t *config)
.queue_size = 5,
.task_name = "esp_ble_hidh_events",
.task_priority = uxTaskPriorityGet(NULL),
- .task_stack_size = 2048,
+ .task_stack_size = config->event_stack_size > 0 ? config->event_stack_size : 2048,
.task_core_id = tskNO_AFFINITY
};
ret = esp_event_loop_create(&event_task_args, &event_loop_handle);
diff --git a/components/esp_hid/src/bt_hidh.c b/components/esp_hid/src/bt_hidh.c
index 1a17e6aa35..6ae12958ff 100644
index 6f0410e302..59dfc0b07f 100644
--- a/components/esp_hid/src/bt_hidh.c
+++ b/components/esp_hid/src/bt_hidh.c
@@ -320,7 +320,7 @@ esp_err_t esp_bt_hidh_init(const esp_hidh_config_t *config)
.queue_size = 5,
.task_name = "esp_bt_hidh_events",
.task_priority = uxTaskPriorityGet(NULL),
- .task_stack_size = 2048,
+ .task_stack_size = config->event_stack_size > 0 ? config->event_stack_size : 2048,
.task_core_id = tskNO_AFFINITY
};
esp_err_t ret = esp_event_loop_create(&event_task_args, &event_loop_handle);
@@ -386,6 +386,23 @@ void bta_hh_co_data(uint8_t handle, uint8_t *p_rpt, uint16_t len, tBTA_HH_PROTO_
ESP_LOGE(TAG, "Device Not Found: handle %u", handle);
return;
}
+
+ /*
+ * quack patch: mode is always ESP_HID_PROTOCOL_MODE_BOOT even if the device is in BOOT mode
+ * BTA_HH_PROTO_RPT_MODE from Bluedroid is 0
+ * BOOT report id is also questionable, assume than an REPORT mode with a lengh of 3 or 4 is a BOOT packet
+ */
+ if (len >= 2 + 1 && p_rpt[0] == 2 && mode == 0) {
+ esp_hidh_event_data_t p = {0};
+ p.input.dev = dev;
+ p.feature.report_id = 2;
+ p.feature.usage = ESP_HID_USAGE_MOUSE;
+ p.feature.data = p_rpt + 1;
+ p.input.length = len - 1;
+ esp_event_post_to(event_loop_handle, ESP_HIDH_EVENTS, ESP_HIDH_INPUT_EVENT, &p, sizeof(esp_hidh_event_data_t), portMAX_DELAY);
+ return ;
+ }
+
report = esp_hidh_dev_get_input_report_by_id_and_proto(dev, p_rpt[0], mode ? ESP_HID_PROTOCOL_MODE_BOOT : ESP_HID_PROTOCOL_MODE_REPORT);
if (report == NULL) {
ESP_LOGE(TAG, "Report Not Found: %d mode: %s", p_rpt[0], mode ? "BOOT" : "REPORT");
@@ -673,7 +673,7 @@ static void esp_hh_cb(esp_hidh_cb_event_t event, esp_hidh_cb_param_t *param)
if (param->data_ind.len == 9 && *(param->data_ind.data) == 1) {
has_report_id = true;
_usage = ESP_HID_USAGE_KEYBOARD;
- } else if (param->data_ind.len == 4 && *(param->data_ind.data) == 2) {
+ } else if (param->data_ind.len >= 4 && *(param->data_ind.data) == 2) {
has_report_id = true;
_usage = ESP_HID_USAGE_MOUSE;
} else {

View File

@ -24,12 +24,13 @@
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "esp_chip_info.h"
#include "esp_private/periph_ctrl.h"
#include "driver/rmt.h"
#include "driver/periph_ctrl.h"
#include "soc/periph_defs.h"
#include "soc/rmt_reg.h"
@ -402,9 +403,9 @@ static inline void adb_rx_setup() {
static inline void adb_tx_as() {
/* send attention (800 µs low) + sync (70 µs high) */
gpio_set_level(GPIO_ADB, 0);
ets_delay_us(800-1);
esp_rom_delay_us(800-1);
gpio_set_level(GPIO_ADB, 1);
ets_delay_us(70-1);
esp_rom_delay_us(70-1);
}
void IRAM_ATTR adb_tx_cmd(unsigned char cmd) {
@ -458,16 +459,16 @@ void adb_tx_listen(unsigned char cmd, uint16_t data) {
adb_tx_cmd(cmd);
/* Stop to start is between 160-240µS. Go for around 160 + time for GPIO setup */
ets_delay_us(160);
esp_rom_delay_us(160);
adb_tx_data(data);
}
static inline void adb_tx_one() {
/* values from AN591 Datasheet minus the estimated call to ets_delay_us */
/* values from AN591 Datasheet minus the estimated call to esp_rom_delay_us */
gpio_set_level(GPIO_ADB, 0);
ets_delay_us(ADB_1_LOW - 1);
esp_rom_delay_us(ADB_1_LOW - 1);
gpio_set_level(GPIO_ADB, 1);
ets_delay_us(ADB_1_HIGH - 1);
esp_rom_delay_us(ADB_1_HIGH - 1);
}
void adb_tx_reset() {
@ -478,9 +479,9 @@ void adb_tx_reset() {
*/
gpio_set_level(GPIO_ADB, 0);
ets_delay_us(ADB_RESET);
esp_rom_delay_us(ADB_RESET);
gpio_set_level(GPIO_ADB, 1);
ets_delay_us(500);
esp_rom_delay_us(500);
}
static inline void adb_tx_setup() {
@ -489,9 +490,9 @@ static inline void adb_tx_setup() {
}
static inline void adb_tx_zero() {
/* values from AN591 Datasheet minus the estimated call to ets_delay_us */
/* values from AN591 Datasheet minus the estimated call to esp_rom_delay_us */
gpio_set_level(GPIO_ADB, 0);
ets_delay_us(ADB_0_LOW - 1);
esp_rom_delay_us(ADB_0_LOW - 1);
gpio_set_level(GPIO_ADB, 1);
ets_delay_us(ADB_0_HIGH - 1);
esp_rom_delay_us(ADB_0_HIGH - 1);
}

View File

@ -25,6 +25,7 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/event_groups.h"
#include "esp_system.h"
#include "esp_wifi.h"
@ -38,7 +39,9 @@
#include "esp_gatt_defs.h"
#include "esp_bt_main.h"
#include "esp_bt_device.h"
#include "esp_timer.h"
#include "esp_hid_common.h"
#include "esp_hidd.h"
#include "esp_hidh.h"
#include "esp_hid_gap.h"
@ -170,7 +173,7 @@ void blue_adb2hid(void *pvParameters) {
uint16_t data = 0;
uint8_t buffer[3] = {0, 0, 0};
int8_t move = 0;
unsigned int tmp;
long unsigned int tmp;
ESP_LOGD(TAG, "ADB2BT started on core %d", xPortGetCoreID());
@ -373,6 +376,7 @@ void blue_h_input(esp_hidh_dev_t *dev, uint8_t *data, uint16_t length) {
uint8_t i;
int8_t x, y;
//ESP_LOG_BUFFER_HEX(TAG, data, length);
buttons = data[0];
/*
@ -580,56 +584,8 @@ void blue_scan(void *pvParameters) {
void blue_set_boot_protocol(esp_hidh_dev_t *dev) {
configASSERT(dev != NULL);
/*
* /!\ Disclaimer /!\
* This is ugly. We are accessing directly bluedroid and need the hidden handle to do that
* Extract it from a private esp_hidh_dev_s struct and call BTA_HhSetProtoMode directly.
*/
struct decoy_dev_s {
struct esp_hidh_dev_s *next;
esp_hid_device_config_t config;
esp_hid_usage_t usage;
esp_hid_transport_t transport;
bool connected;
bool opened;
int status;
size_t reports_len;
void *reports;
void *tmp;
size_t tmp_len;
xSemaphoreHandle semaphore;
esp_err_t (*close) (esp_hidh_dev_t *dev);
esp_err_t (*report_write) (esp_hidh_dev_t *dev, size_t map_index, size_t report_id, int report_type, uint8_t *data, size_t len);
esp_err_t (*report_read) (esp_hidh_dev_t *dev, size_t map_index, size_t report_id, int report_type, size_t max_length, uint8_t *value, size_t *value_len);
void (*dump) (esp_hidh_dev_t *dev, FILE *fp);
esp_bd_addr_t bda;
struct {
esp_bt_cod_t cod;
int handle;
uint8_t sub_class;
uint8_t app_id;
uint16_t attr_mask;
} bt;
TAILQ_ENTRY(esp_hidh_dev_s) devices;
};
struct decoy_dev_s *pass_that_handle;
pass_that_handle = (struct decoy_dev_s *)dev;
ESP_LOGI(TAG, "switching " ESP_BD_ADDR_STR " (%i) to protocol mode boot" ,
ESP_BD_ADDR_HEX(pass_that_handle->bda), pass_that_handle->bt.handle);
//ESP_LOG_BUFFER_HEX(TAG, dev, sizeof(struct decoy_dev_s));
/* bluedroid/bta/include/bta_hh_api.h */
BTA_HhSetProtoMode(pass_that_handle->bt.handle, 0x01);
ESP_LOGI(TAG, "switching " ESP_BD_ADDR_STR " to protocol mode boot", ESP_BD_ADDR_HEX(esp_hidh_dev_bda_get(dev)));
esp_hidh_dev_set_protocol(dev, ESP_HID_PROTOCOL_MODE_BOOT);
}
static bool blue_support_boot(esp_hidh_dev_t *dev) {

View File

@ -1,19 +1,13 @@
// Copyright 2017-2019 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
/*
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <string.h>
#include <stdbool.h>
#include <inttypes.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
@ -24,8 +18,11 @@
static const char *TAG = "ESP_HID_GAP";
// uncomment to print all devices that were seen during a scan
#define GAP_DBG_PRINTF(...) //printf(__VA_ARGS__)
//static const char * gap_bt_prop_type_names[5] = {"","BDNAME","COD","RSSI","EIR"};
#define GAP_DBG_PRINTF(...) printf(__VA_ARGS__)
#if CONFIG_BT_HID_HOST_ENABLED
static const char * gap_bt_prop_type_names[5] = {"","BDNAME","COD","RSSI","EIR"};
#endif
static esp_hid_scan_result_t *bt_scan_results = NULL;
static size_t num_bt_scan_results = 0;
@ -33,11 +30,11 @@ static size_t num_bt_scan_results = 0;
static esp_hid_scan_result_t *ble_scan_results = NULL;
static size_t num_ble_scan_results = 0;
static xSemaphoreHandle bt_hidh_cb_semaphore = NULL;
static SemaphoreHandle_t bt_hidh_cb_semaphore = NULL;
#define WAIT_BT_CB() xSemaphoreTake(bt_hidh_cb_semaphore, portMAX_DELAY)
#define SEND_BT_CB() xSemaphoreGive(bt_hidh_cb_semaphore)
static xSemaphoreHandle ble_hidh_cb_semaphore = NULL;
static SemaphoreHandle_t ble_hidh_cb_semaphore = NULL;
#define WAIT_BLE_CB() xSemaphoreTake(ble_hidh_cb_semaphore, portMAX_DELAY)
#define SEND_BLE_CB() xSemaphoreGive(ble_hidh_cb_semaphore)
@ -71,6 +68,7 @@ const char *bt_gap_evt_str(uint8_t event)
return bt_gap_evt_names[event];
}
#if CONFIG_BT_BLE_ENABLED
const char *esp_ble_key_type_str(esp_ble_key_type_t key_type)
{
const char *key_str = NULL;
@ -109,6 +107,7 @@ const char *esp_ble_key_type_str(esp_ble_key_type_t key_type)
}
return key_str;
}
#endif /* CONFIG_BT_BLE_ENABLED */
void esp_hid_scan_results_free(esp_hid_scan_result_t *results)
{
@ -123,6 +122,7 @@ void esp_hid_scan_results_free(esp_hid_scan_result_t *results)
}
}
#if (CONFIG_BT_HID_HOST_ENABLED || CONFIG_BT_BLE_ENABLED)
static esp_hid_scan_result_t *find_scan_result(esp_bd_addr_t bda, esp_hid_scan_result_t *results)
{
esp_hid_scan_result_t *r = results;
@ -134,7 +134,9 @@ static esp_hid_scan_result_t *find_scan_result(esp_bd_addr_t bda, esp_hid_scan_r
}
return NULL;
}
#endif /* (CONFIG_BT_HID_HOST_ENABLED || CONFIG_BT_BLE_ENABLED) */
#if CONFIG_BT_HID_HOST_ENABLED
static void add_bt_scan_result(esp_bd_addr_t bda, esp_bt_cod_t *cod, esp_bt_uuid_t *uuid, uint8_t *name, uint8_t name_len, int rssi)
{
esp_hid_scan_result_t *r = find_scan_result(bda, bt_scan_results);
@ -186,7 +188,9 @@ static void add_bt_scan_result(esp_bd_addr_t bda, esp_bt_cod_t *cod, esp_bt_uuid
bt_scan_results = r;
num_bt_scan_results++;
}
#endif
#if CONFIG_BT_BLE_ENABLED
static void add_ble_scan_result(esp_bd_addr_t bda, esp_ble_addr_type_t addr_type, uint16_t appearance, uint8_t *name, uint8_t name_len, int rssi)
{
if (find_scan_result(bda, ble_scan_results)) {
@ -220,13 +224,14 @@ static void add_ble_scan_result(esp_bd_addr_t bda, esp_ble_addr_type_t addr_type
ble_scan_results = r;
num_ble_scan_results++;
}
#endif /* CONFIG_BT_BLE_ENABLED */
void print_uuid(esp_bt_uuid_t *uuid)
{
if (uuid->len == ESP_UUID_LEN_16) {
GAP_DBG_PRINTF("UUID16: 0x%04x", uuid->uuid.uuid16);
} else if (uuid->len == ESP_UUID_LEN_32) {
GAP_DBG_PRINTF("UUID32: 0x%08x", uuid->uuid.uuid32);
GAP_DBG_PRINTF("UUID32: 0x%08"PRIx32, uuid->uuid.uuid32);
} else if (uuid->len == ESP_UUID_LEN_128) {
GAP_DBG_PRINTF("UUID128: %02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x", uuid->uuid.uuid128[0],
uuid->uuid.uuid128[1], uuid->uuid.uuid128[2], uuid->uuid.uuid128[3],
@ -237,6 +242,7 @@ void print_uuid(esp_bt_uuid_t *uuid)
}
}
#if CONFIG_BT_HID_HOST_ENABLED
static void handle_bt_device_result(struct disc_res_param *disc_res)
{
GAP_DBG_PRINTF("BT : " ESP_BD_ADDR_STR, ESP_BD_ADDR_HEX(disc_res->bda));
@ -325,7 +331,9 @@ static void handle_bt_device_result(struct disc_res_param *disc_res)
add_bt_scan_result(disc_res->bda, cod, &uuid, name, name_len, rssi);
}
}
#endif
#if CONFIG_BT_BLE_ENABLED
static void handle_ble_device_result(struct ble_scan_result_evt_param *scan_rst)
{
@ -371,8 +379,9 @@ static void handle_ble_device_result(struct ble_scan_result_evt_param *scan_rst)
add_ble_scan_result(scan_rst->bda, scan_rst->ble_addr_type, appearance, adv_name, adv_name_len, scan_rst->rssi);
}
}
#endif /* CONFIG_BT_BLE_ENABLED */
#if CONFIG_BT_HID_HOST_ENABLED
/*
* BT GAP
* */
@ -392,10 +401,10 @@ static void bt_gap_event_handler(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_para
break;
}
case ESP_BT_GAP_KEY_NOTIF_EVT:
ESP_LOGI(TAG, "BT GAP KEY_NOTIF passkey:%d", param->key_notif.passkey);
ESP_LOGI(TAG, "BT GAP KEY_NOTIF passkey:%"PRIu32, param->key_notif.passkey);
break;
default:
ESP_LOGV(TAG, "BT GAP EVENT %s", bt_gap_evt_str(event));
ESP_LOGW(TAG, "BT GAP EVENT %s", bt_gap_evt_str(event));
break;
}
}
@ -403,9 +412,12 @@ static void bt_gap_event_handler(esp_bt_gap_cb_event_t event, esp_bt_gap_cb_para
static esp_err_t init_bt_gap(void)
{
esp_err_t ret;
#if (CONFIG_BT_SSP_ENABLED)
/* Set default parameters for Secure Simple Pairing */
esp_bt_sp_param_t param_type = ESP_BT_SP_IOCAP_MODE;
esp_bt_io_cap_t iocap = ESP_BT_IO_CAP_IO;
esp_bt_gap_set_security_param(param_type, &iocap, sizeof(uint8_t));
#endif
/*
* Set default parameters for Legacy Pairing
* Use fixed pin code
@ -440,7 +452,9 @@ static esp_err_t start_bt_scan(uint32_t seconds)
}
return ret;
}
#endif
#if CONFIG_BT_BLE_ENABLED
/*
* BLE GAP
* */
@ -506,13 +520,13 @@ static void ble_gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_p
case ESP_GAP_BLE_PASSKEY_NOTIF_EVT: // ESP_IO_CAP_OUT
// The app will receive this evt when the IO has Output capability and the peer device IO has Input capability.
// Show the passkey number to the user to input it in the peer device.
ESP_LOGI(TAG, "BLE GAP PASSKEY_NOTIF passkey:%d", param->ble_security.key_notif.passkey);
ESP_LOGI(TAG, "BLE GAP PASSKEY_NOTIF passkey:%"PRIu32, param->ble_security.key_notif.passkey);
break;
case ESP_GAP_BLE_NC_REQ_EVT: // ESP_IO_CAP_IO
// The app will receive this event when the IO has DisplayYesNO capability and the peer device IO also has DisplayYesNo capability.
// show the passkey number to the user to confirm it with the number displayed by peer device.
ESP_LOGI(TAG, "BLE GAP NC_REQ passkey:%d", param->ble_security.key_notif.passkey);
ESP_LOGI(TAG, "BLE GAP NC_REQ passkey:%"PRIu32, param->ble_security.key_notif.passkey);
esp_ble_confirm_reply(param->ble_security.key_notif.bd_addr, true);
break;
@ -662,6 +676,7 @@ esp_err_t esp_hid_ble_gap_adv_start(void)
};
return esp_ble_gap_start_advertising(&hidd_adv_params);
}
#endif /* CONFIG_BT_BLE_ENABLED */
/*
* CONTROLLER INIT
@ -671,11 +686,16 @@ static esp_err_t init_low_level(uint8_t mode)
{
esp_err_t ret;
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
#if CONFIG_IDF_TARGET_ESP32
bt_cfg.mode = mode;
#endif
#if CONFIG_BT_HID_HOST_ENABLED
if (mode & ESP_BT_MODE_CLASSIC_BT) {
bt_cfg.mode = mode;
bt_cfg.bt_max_acl_conn = 3;
bt_cfg.bt_max_sync_conn = 3;
} else {
} else
#endif
{
ret = esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT);
if (ret) {
ESP_LOGE(TAG, "esp_bt_controller_mem_release failed: %d", ret);
@ -705,26 +725,25 @@ static esp_err_t init_low_level(uint8_t mode)
ESP_LOGE(TAG, "esp_bluedroid_enable failed: %d", ret);
return ret;
}
#if CONFIG_BT_HID_HOST_ENABLED
if (mode & ESP_BT_MODE_CLASSIC_BT) {
ret = init_bt_gap();
if (ret) {
return ret;
}
}
#endif
#if CONFIG_BT_BLE_ENABLED
if (mode & ESP_BT_MODE_BLE) {
ret = init_ble_gap();
if (ret) {
return ret;
}
}
#endif /* CONFIG_BT_BLE_ENABLED */
return ret;
}
esp_err_t esp_hid_gap_init(uint8_t mode)
{
esp_err_t ret;
@ -771,14 +790,21 @@ esp_err_t esp_hid_scan(uint32_t seconds, size_t *num_results, esp_hid_scan_resul
return ESP_FAIL;
}
#if CONFIG_BT_BLE_ENABLED
if (start_ble_scan(seconds) == ESP_OK) {
if (start_bt_scan(seconds) == ESP_OK) {
WAIT_BT_CB();
}
WAIT_BLE_CB();
} else {
return ESP_FAIL;
}
#endif /* CONFIG_BT_BLE_ENABLED */
#if CONFIG_BT_HID_HOST_ENABLED
if (start_bt_scan(seconds) == ESP_OK) {
WAIT_BT_CB();
} else {
return ESP_FAIL;
}
#endif
*num_results = num_bt_scan_results + num_ble_scan_results;
*results = bt_scan_results;

View File

@ -25,7 +25,6 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "gpio.h"

View File

@ -27,7 +27,6 @@
#include "freertos/task.h"
#include "esp_log.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "led.h"
#include "gpio.h"
@ -164,7 +163,7 @@ const char *led_gpio_name(uint8_t id) {
}
void led_init(void) {
/* blink allds LEDs once */
/* blink alls LEDs once */
gpio_set_level(GPIO_GREENLED, 1);
gpio_set_level(GPIO_BLUELED, 1);
gpio_set_level(GPIO_YELLOWLED, 1);
@ -185,7 +184,7 @@ void led_init(void) {
void led_task(void *pvParameters) {
unsigned int color = (unsigned int)pvParameters;
unsigned int mode = LED_OFF;
long unsigned int mode = LED_OFF;
TickType_t wait = portMAX_DELAY;
/* start only if there is a led specified */

View File

@ -24,10 +24,11 @@
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_flash.h"
#include "esp_hidh.h"
#include "esp_log.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "esp_chip_info.h"
#include "adb.h"
#include "blue.h"
@ -40,20 +41,22 @@ static const char* TAG = "quack";
void app_main(void)
{
uint32_t flash_size;
esp_flash_get_size(NULL, &flash_size);
/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
ESP_LOGI(TAG, "This is %s chip with %d CPU cores, WiFi%s%s, "
"revision %d, %dMB %s flash",
"revision %d, %" PRIu32 "MB %s flash",
CONFIG_IDF_TARGET,
chip_info.cores,
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "",
chip_info.revision,
spi_flash_get_chip_size() / (1024 * 1024),
chip_info.revision, flash_size / (1024 * 1024),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
ESP_LOGI(TAG, "Minimum free heap size: %d bytes", esp_get_minimum_free_heap_size());
ESP_LOGI(TAG, "Minimum free heap size: %" PRIu32 " bytes", esp_get_minimum_free_heap_size());
ESP_LOGI(TAG, "");
ESP_LOGI(TAG, "\\_o< \\_o< \\_o< \\_O<");
ESP_LOGI(TAG, "");

View File

@ -28,7 +28,6 @@
#include "esp_system.h"
#include "esp_err.h"
#include "esp_log.h"
#include "driver/timer.h"
#include "esp_timer.h"
#include "quad.h"
@ -40,8 +39,8 @@ esp_timer_handle_t quad_qx, quad_qy;
QueueHandle_t q_qx, q_qy;
/* static functions */
static void IRAM_ATTR quad_timer(void* arg);
/* ISR functions */
static void IRAM_ATTR quad_isr(void* arg);
/* phases */
const bool q1[] = {true, false, false, true};
@ -51,6 +50,10 @@ const bool q2[] = {true, true, false, false};
void quad_init(void) {
esp_timer_create_args_t args;
/* create quadrature queues */
q_qx = xQueueCreate(4, sizeof(int8_t));
q_qy = xQueueCreate(4, sizeof(int8_t));
/* create quadrature tasks */
xTaskCreate(quad_click, "CLICK", 1024, NULL, tskIDLE_PRIORITY + 1, &t_click);
xTaskCreate(quad_move_x, "QX", 4 * 1024, NULL, tskIDLE_PRIORITY + 1, &t_qx);
@ -66,23 +69,23 @@ void quad_init(void) {
gpio_set_level(GPIO_QY2, q2[0]);
/* create timers for quadrature phases */
args.callback = quad_timer;
args.callback = quad_isr;
args.arg = t_qx;
args.name = "quad_qx";
args.dispatch_method = ESP_TIMER_ISR;
ESP_ERROR_CHECK(esp_timer_create(&args, &quad_qx));
args.callback = quad_timer;
args.callback = quad_isr;
args.arg = t_qy;
args.name = "quad_qy";
args.dispatch_method = ESP_TIMER_ISR;
ESP_ERROR_CHECK(esp_timer_create(&args, &quad_qy));
q_qx = xQueueCreate(4, sizeof(int8_t));
q_qy = xQueueCreate(4, sizeof(int8_t));
ESP_LOGI("quad", "Quadrature tasks started on core %d", xPortGetCoreID());
}
void quad_click(void *pvParameters) {
unsigned int click = 0;
long unsigned int click = 0;
(void)pvParameters;
@ -165,7 +168,7 @@ void IRAM_ATTR quad_move_y(void *pvParameters) {
}
/* simple ISR function. Resume the task that called the oneshot timer */
static void IRAM_ATTR quad_timer(void* arg) {
static void IRAM_ATTR quad_isr(void* arg) {
BaseType_t pxHigherPriorityTaskWoken = pdFALSE;
vTaskNotifyGiveFromISR(arg, &pxHigherPriorityTaskWoken);

1502
sdkconfig

File diff suppressed because it is too large Load Diff