Tabs replaced by spaces.
This commit is contained in:
parent
f0eeb38c49
commit
5a0e74de7a
5 changed files with 436 additions and 847 deletions
|
@ -1951,432 +1951,21 @@
|
|||
(zone (net 1) (net_name GND) (layer F.Cu) (tstamp 579A43AE) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.508))
|
||||
(min_thickness 0.254)
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.508) (thermal_bridge_width 0.508))
|
||||
(fill (arc_segments 16) (thermal_gap 0.508) (thermal_bridge_width 0.508))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 124.46 91.44) (xy 124.46 116.84) (xy 190.246 116.84) (xy 190.246 91.44)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 151.004673 92.233301) (xy 150.908 92.46669) (xy 150.908 92.93225) (xy 151.06675 93.091) (xy 152.166 93.091)
|
||||
(xy 152.166 93.071) (xy 152.42 93.071) (xy 152.42 93.091) (xy 152.44 93.091) (xy 152.44 93.345)
|
||||
(xy 152.42 93.345) (xy 152.42 93.365) (xy 152.166 93.365) (xy 152.166 93.345) (xy 151.06675 93.345)
|
||||
(xy 150.908 93.50375) (xy 150.908 93.96931) (xy 150.940429 94.0476) (xy 147.337142 94.0476) (xy 147.337362 93.794833)
|
||||
(xy 147.195317 93.451057) (xy 146.932527 93.187808) (xy 146.588999 93.045162) (xy 146.217033 93.044838) (xy 145.873257 93.186883)
|
||||
(xy 145.840082 93.22) (xy 138.512038 93.22) (xy 138.493162 93.119683) (xy 138.35409 92.903559) (xy 138.14189 92.758569)
|
||||
(xy 137.89 92.70756) (xy 136.39 92.70756) (xy 136.154683 92.751838) (xy 135.938559 92.89091) (xy 135.890866 92.960711)
|
||||
(xy 135.85409 92.903559) (xy 135.64189 92.758569) (xy 135.39 92.70756) (xy 133.89 92.70756) (xy 133.654683 92.751838)
|
||||
(xy 133.438559 92.89091) (xy 133.293569 93.10311) (xy 133.269898 93.22) (xy 133.075689 93.22) (xy 133.061622 93.145243)
|
||||
(xy 132.92255 92.929119) (xy 132.71035 92.784129) (xy 132.45846 92.73312) (xy 131.25958 92.73312) (xy 131.024263 92.777398)
|
||||
(xy 130.808139 92.91647) (xy 130.807457 92.917467) (xy 130.61231 92.784129) (xy 130.36042 92.73312) (xy 129.16154 92.73312)
|
||||
(xy 128.926223 92.777398) (xy 128.710099 92.91647) (xy 128.565109 93.12867) (xy 128.5141 93.38056) (xy 128.5141 94.57944)
|
||||
(xy 128.558378 94.814757) (xy 128.69745 95.030881) (xy 128.90965 95.175871) (xy 129.001 95.19437) (xy 129.001 95.303328)
|
||||
(xy 128.926223 95.317398) (xy 128.710099 95.45647) (xy 128.565109 95.66867) (xy 128.5141 95.92056) (xy 128.5141 97.11944)
|
||||
(xy 128.558378 97.354757) (xy 128.69745 97.570881) (xy 128.90965 97.715871) (xy 129.16154 97.76688) (xy 130.36042 97.76688)
|
||||
(xy 130.595737 97.722602) (xy 130.811861 97.58353) (xy 130.812543 97.582533) (xy 131.00769 97.715871) (xy 131.25958 97.76688)
|
||||
(xy 132.45846 97.76688) (xy 132.693777 97.722602) (xy 132.909901 97.58353) (xy 133.054891 97.37133) (xy 133.073386 97.28)
|
||||
(xy 133.267962 97.28) (xy 133.286838 97.380317) (xy 133.42591 97.596441) (xy 133.63811 97.741431) (xy 133.89 97.79244)
|
||||
(xy 135.39 97.79244) (xy 135.625317 97.748162) (xy 135.841441 97.60909) (xy 135.889134 97.539289) (xy 135.92591 97.596441)
|
||||
(xy 136.13811 97.741431) (xy 136.39 97.79244) (xy 137.89 97.79244) (xy 138.125317 97.748162) (xy 138.341441 97.60909)
|
||||
(xy 138.44671 97.455023) (xy 138.606067 97.455162) (xy 138.949843 97.313117) (xy 139.039774 97.223342) (xy 139.240773 97.424692)
|
||||
(xy 139.584301 97.567338) (xy 139.956267 97.567662) (xy 140.300043 97.425617) (xy 140.563292 97.162827) (xy 140.663904 96.920529)
|
||||
(xy 140.75011 96.979431) (xy 141.002 97.03044) (xy 142.502 97.03044) (xy 142.595033 97.012935) (xy 143.467199 97.885101)
|
||||
(xy 143.713761 98.049848) (xy 144.0046 98.1077) (xy 148.08245 98.1077) (xy 148.14575 98.171) (xy 149.245 98.171)
|
||||
(xy 149.245 98.151) (xy 149.499 98.151) (xy 149.499 98.171) (xy 149.519 98.171) (xy 149.519 98.425)
|
||||
(xy 149.499 98.425) (xy 149.499 98.445) (xy 149.245 98.445) (xy 149.245 98.425) (xy 148.14575 98.425)
|
||||
(xy 147.987 98.58375) (xy 147.987 98.808) (xy 145.624038 98.808) (xy 145.605162 98.707683) (xy 145.46609 98.491559)
|
||||
(xy 145.25389 98.346569) (xy 145.002 98.29556) (xy 143.502 98.29556) (xy 143.266683 98.339838) (xy 143.050559 98.47891)
|
||||
(xy 143.002866 98.548711) (xy 142.96609 98.491559) (xy 142.75389 98.346569) (xy 142.502 98.29556) (xy 141.002 98.29556)
|
||||
(xy 140.766683 98.339838) (xy 140.550559 98.47891) (xy 140.405569 98.69111) (xy 140.35456 98.943) (xy 140.35456 100.193)
|
||||
(xy 140.398534 100.4267) (xy 137.658 100.4267) (xy 137.658 100.38175) (xy 137.49925 100.223) (xy 136.525 100.223)
|
||||
(xy 136.525 100.243) (xy 136.271 100.243) (xy 136.271 100.223) (xy 135.29675 100.223) (xy 135.138 100.38175)
|
||||
(xy 135.138 100.4267) (xy 134.26694 100.4267) (xy 134.26694 99.97567) (xy 134.10819 99.81692) (xy 132.50926 99.81692)
|
||||
(xy 132.50926 99.83692) (xy 132.25526 99.83692) (xy 132.25526 99.81692) (xy 130.65633 99.81692) (xy 130.49758 99.97567)
|
||||
(xy 130.49758 100.81572) (xy 130.594253 101.049109) (xy 130.772882 101.227737) (xy 130.815294 101.245304) (xy 130.76838 101.292218)
|
||||
(xy 130.498067 101.021434) (xy 130.099583 100.855969) (xy 129.66811 100.855592) (xy 129.269337 101.020362) (xy 128.963974 101.325193)
|
||||
(xy 128.798509 101.723677) (xy 128.798132 102.15515) (xy 128.962902 102.553923) (xy 129.267733 102.859286) (xy 129.666217 103.024751)
|
||||
(xy 130.09769 103.025128) (xy 130.2454 102.964095) (xy 130.2454 104.14) (xy 130.303252 104.430839) (xy 130.467999 104.677401)
|
||||
(xy 130.68326 104.821233) (xy 130.68326 105.19029) (xy 130.709583 105.330184) (xy 130.6957 105.3637) (xy 130.6957 105.456355)
|
||||
(xy 130.8405 105.601155) (xy 130.848249 105.613198) (xy 130.6957 105.613198) (xy 130.6957 105.618692) (xy 130.498067 105.420714)
|
||||
(xy 130.099583 105.255249) (xy 129.66811 105.254872) (xy 129.269337 105.419642) (xy 128.963974 105.724473) (xy 128.798509 106.122957)
|
||||
(xy 128.798132 106.55443) (xy 128.962902 106.953203) (xy 129.267733 107.258566) (xy 129.666217 107.424031) (xy 130.09769 107.424408)
|
||||
(xy 130.496463 107.259638) (xy 130.801826 106.954807) (xy 130.967291 106.556323) (xy 130.967318 106.525033) (xy 130.971002 106.528717)
|
||||
(xy 131.204391 106.62539) (xy 132.19557 106.62539) (xy 132.35432 106.46664) (xy 132.35432 105.865295) (xy 132.60832 105.865295)
|
||||
(xy 132.60832 106.46664) (xy 132.76707 106.62539) (xy 133.758249 106.62539) (xy 133.991638 106.528717) (xy 134.170267 106.350089)
|
||||
(xy 134.26694 106.1167) (xy 134.26694 106.024045) (xy 134.10819 105.865295) (xy 132.60832 105.865295) (xy 132.35432 105.865295)
|
||||
(xy 132.33432 105.865295) (xy 132.33432 105.83773) (xy 133.63194 105.83773) (xy 133.867257 105.793452) (xy 134.083381 105.65438)
|
||||
(xy 134.114588 105.608707) (xy 134.26694 105.456355) (xy 134.26694 105.3637) (xy 134.25171 105.326931) (xy 134.27938 105.19029)
|
||||
(xy 134.27938 104.68991) (xy 134.250147 104.534548) (xy 134.27938 104.39019) (xy 134.27938 104.218019) (xy 134.328767 104.218062)
|
||||
(xy 134.672543 104.076017) (xy 134.935792 103.813227) (xy 135.078438 103.469699) (xy 135.078537 103.356) (xy 135.127442 103.356)
|
||||
(xy 135.169838 103.581317) (xy 135.30891 103.797441) (xy 135.52111 103.942431) (xy 135.707967 103.98027) (xy 135.860599 104.208701)
|
||||
(xy 135.938458 104.28656) (xy 135.773 104.28656) (xy 135.537683 104.330838) (xy 135.321559 104.46991) (xy 135.176569 104.68211)
|
||||
(xy 135.12556 104.934) (xy 135.12556 106.434) (xy 135.169838 106.669317) (xy 135.30891 106.885441) (xy 135.377006 106.931969)
|
||||
(xy 135.234673 107.074302) (xy 135.138 107.307691) (xy 135.138 107.89825) (xy 135.29675 108.057) (xy 136.271 108.057)
|
||||
(xy 136.271 108.037) (xy 136.525 108.037) (xy 136.525 108.057) (xy 137.49925 108.057) (xy 137.658 107.89825)
|
||||
(xy 137.658 107.307691) (xy 137.561327 107.074302) (xy 137.42009 106.933064) (xy 137.474441 106.89809) (xy 137.479778 106.89028)
|
||||
(xy 137.761199 107.171701) (xy 138.007761 107.336448) (xy 138.2986 107.3943) (xy 141.950798 107.3943) (xy 144.225394 109.668896)
|
||||
(xy 144.183569 109.73011) (xy 144.145457 109.918314) (xy 144.113162 109.746683) (xy 143.97409 109.530559) (xy 143.76189 109.385569)
|
||||
(xy 143.51 109.33456) (xy 142.494 109.33456) (xy 142.258683 109.378838) (xy 142.042559 109.51791) (xy 141.897569 109.73011)
|
||||
(xy 141.859 109.920569) (xy 141.859 109.85569) (xy 141.762327 109.622301) (xy 141.583698 109.443673) (xy 141.350309 109.347)
|
||||
(xy 141.00175 109.347) (xy 140.843 109.50575) (xy 140.843 110.871) (xy 140.863 110.871) (xy 140.863 111.125)
|
||||
(xy 140.843 111.125) (xy 140.843 112.49025) (xy 141.00175 112.649) (xy 141.113995 112.649) (xy 141.030767 112.77356)
|
||||
(xy 140.962 112.77356) (xy 140.726683 112.817838) (xy 140.510559 112.95691) (xy 140.464031 113.025006) (xy 140.321698 112.882673)
|
||||
(xy 140.088309 112.786) (xy 139.49775 112.786) (xy 139.339 112.94475) (xy 139.339 113.919) (xy 139.359 113.919)
|
||||
(xy 139.359 114.173) (xy 139.339 114.173) (xy 139.339 115.14725) (xy 139.49775 115.306) (xy 140.088309 115.306)
|
||||
(xy 140.321698 115.209327) (xy 140.462936 115.06809) (xy 140.49791 115.122441) (xy 140.71011 115.267431) (xy 140.962 115.31844)
|
||||
(xy 142.462 115.31844) (xy 142.697317 115.274162) (xy 142.913441 115.13509) (xy 142.996538 115.013474) (xy 143.003673 115.030699)
|
||||
(xy 143.182302 115.209327) (xy 143.415691 115.306) (xy 144.00625 115.306) (xy 144.165 115.14725) (xy 144.165 114.173)
|
||||
(xy 144.145 114.173) (xy 144.145 113.919) (xy 144.165 113.919) (xy 144.165 113.899) (xy 144.419 113.899)
|
||||
(xy 144.419 113.919) (xy 144.439 113.919) (xy 144.439 114.173) (xy 144.419 114.173) (xy 144.419 115.14725)
|
||||
(xy 144.57775 115.306) (xy 145.136998 115.306) (xy 145.364799 115.533801) (xy 145.61136 115.698548) (xy 145.659614 115.708146)
|
||||
(xy 145.9022 115.7564) (xy 154.3594 115.7564) (xy 154.650239 115.698548) (xy 154.896801 115.533801) (xy 155.810801 114.619801)
|
||||
(xy 155.86145 114.544) (xy 156.41225 114.544) (xy 156.571 114.38525) (xy 156.571 113.411) (xy 156.825 113.411)
|
||||
(xy 156.825 114.38525) (xy 156.98375 114.544) (xy 157.574309 114.544) (xy 157.807698 114.447327) (xy 157.986327 114.268699)
|
||||
(xy 158.083 114.03531) (xy 158.083 113.56975) (xy 157.92425 113.411) (xy 156.825 113.411) (xy 156.571 113.411)
|
||||
(xy 156.551 113.411) (xy 156.551 113.157) (xy 156.571 113.157) (xy 156.571 113.137) (xy 156.825 113.137)
|
||||
(xy 156.825 113.157) (xy 157.92425 113.157) (xy 158.083 112.99825) (xy 158.083 112.78775) (xy 158.506 112.78775)
|
||||
(xy 158.506 113.378309) (xy 158.602673 113.611698) (xy 158.781301 113.790327) (xy 159.01469 113.887) (xy 159.48025 113.887)
|
||||
(xy 159.639 113.72825) (xy 159.639 112.629) (xy 158.66475 112.629) (xy 158.506 112.78775) (xy 158.083 112.78775)
|
||||
(xy 158.083 112.53269) (xy 157.986327 112.299301) (xy 157.807698 112.120673) (xy 157.574309 112.024) (xy 157.189102 112.024)
|
||||
(xy 157.235401 111.977701) (xy 157.379233 111.76244) (xy 157.448 111.76244) (xy 157.683317 111.718162) (xy 157.899441 111.57909)
|
||||
(xy 158.044431 111.36689) (xy 158.09544 111.115) (xy 158.09544 110.356543) (xy 158.278298 110.539401) (xy 158.404221 110.623539)
|
||||
(xy 158.49356 110.683233) (xy 158.49356 110.752) (xy 158.537838 110.987317) (xy 158.67691 111.203441) (xy 158.745006 111.249969)
|
||||
(xy 158.602673 111.392302) (xy 158.506 111.625691) (xy 158.506 112.21625) (xy 158.66475 112.375) (xy 159.639 112.375)
|
||||
(xy 159.639 112.355) (xy 159.893 112.355) (xy 159.893 112.375) (xy 159.913 112.375) (xy 159.913 112.629)
|
||||
(xy 159.893 112.629) (xy 159.893 113.72825) (xy 160.05175 113.887) (xy 160.51731 113.887) (xy 160.750699 113.790327)
|
||||
(xy 160.929327 113.611698) (xy 161.026 113.378309) (xy 161.026 113.087754) (xy 161.20644 113.20832) (xy 161.20644 113.41608)
|
||||
(xy 161.250718 113.651397) (xy 161.38979 113.867521) (xy 161.463777 113.918074) (xy 161.378559 113.97291) (xy 161.233569 114.18511)
|
||||
(xy 161.18256 114.437) (xy 161.18256 115.687) (xy 161.226838 115.922317) (xy 161.36591 116.138441) (xy 161.390145 116.155)
|
||||
(xy 125.145 116.155) (xy 125.145 114.33175) (xy 137.827 114.33175) (xy 137.827 114.79731) (xy 137.923673 115.030699)
|
||||
(xy 138.102302 115.209327) (xy 138.335691 115.306) (xy 138.92625 115.306) (xy 139.085 115.14725) (xy 139.085 114.173)
|
||||
(xy 137.98575 114.173) (xy 137.827 114.33175) (xy 125.145 114.33175) (xy 125.145 113.29469) (xy 137.827 113.29469)
|
||||
(xy 137.827 113.76025) (xy 137.98575 113.919) (xy 139.085 113.919) (xy 139.085 112.94475) (xy 138.92625 112.786)
|
||||
(xy 138.335691 112.786) (xy 138.102302 112.882673) (xy 137.923673 113.061301) (xy 137.827 113.29469) (xy 125.145 113.29469)
|
||||
(xy 125.145 111.28375) (xy 139.573 111.28375) (xy 139.573 112.14031) (xy 139.669673 112.373699) (xy 139.848302 112.552327)
|
||||
(xy 140.081691 112.649) (xy 140.43025 112.649) (xy 140.589 112.49025) (xy 140.589 111.125) (xy 139.73175 111.125)
|
||||
(xy 139.573 111.28375) (xy 125.145 111.28375) (xy 125.145 109.999116) (xy 125.273782 110.127897) (xy 125.507171 110.22457)
|
||||
(xy 126.59741 110.22457) (xy 126.75616 110.06582) (xy 126.75616 108.71708) (xy 127.01016 108.71708) (xy 127.01016 110.06582)
|
||||
(xy 127.16891 110.22457) (xy 128.259149 110.22457) (xy 128.492538 110.127897) (xy 128.671167 109.949269) (xy 128.76784 109.71588)
|
||||
(xy 128.76784 108.87583) (xy 130.49758 108.87583) (xy 130.49758 109.71588) (xy 130.594253 109.949269) (xy 130.772882 110.127897)
|
||||
(xy 131.006271 110.22457) (xy 132.09651 110.22457) (xy 132.25526 110.06582) (xy 132.25526 108.71708) (xy 132.50926 108.71708)
|
||||
(xy 132.50926 110.06582) (xy 132.66801 110.22457) (xy 133.758249 110.22457) (xy 133.991638 110.127897) (xy 134.170267 109.949269)
|
||||
(xy 134.209028 109.85569) (xy 139.573 109.85569) (xy 139.573 110.71225) (xy 139.73175 110.871) (xy 140.589 110.871)
|
||||
(xy 140.589 109.50575) (xy 140.43025 109.347) (xy 140.081691 109.347) (xy 139.848302 109.443673) (xy 139.669673 109.622301)
|
||||
(xy 139.573 109.85569) (xy 134.209028 109.85569) (xy 134.26694 109.71588) (xy 134.26694 108.87583) (xy 134.10819 108.71708)
|
||||
(xy 132.50926 108.71708) (xy 132.25526 108.71708) (xy 130.65633 108.71708) (xy 130.49758 108.87583) (xy 128.76784 108.87583)
|
||||
(xy 128.60909 108.71708) (xy 127.01016 108.71708) (xy 126.75616 108.71708) (xy 126.73616 108.71708) (xy 126.73616 108.46975)
|
||||
(xy 135.138 108.46975) (xy 135.138 109.060309) (xy 135.234673 109.293698) (xy 135.413301 109.472327) (xy 135.64669 109.569)
|
||||
(xy 136.11225 109.569) (xy 136.271 109.41025) (xy 136.271 108.311) (xy 136.525 108.311) (xy 136.525 109.41025)
|
||||
(xy 136.68375 109.569) (xy 137.14931 109.569) (xy 137.382699 109.472327) (xy 137.561327 109.293698) (xy 137.658 109.060309)
|
||||
(xy 137.658 108.46975) (xy 137.49925 108.311) (xy 136.525 108.311) (xy 136.271 108.311) (xy 135.29675 108.311)
|
||||
(xy 135.138 108.46975) (xy 126.73616 108.46975) (xy 126.73616 108.46308) (xy 126.75616 108.46308) (xy 126.75616 107.11434)
|
||||
(xy 127.01016 107.11434) (xy 127.01016 108.46308) (xy 128.60909 108.46308) (xy 128.76784 108.30433) (xy 128.76784 107.46428)
|
||||
(xy 130.49758 107.46428) (xy 130.49758 108.30433) (xy 130.65633 108.46308) (xy 132.25526 108.46308) (xy 132.25526 107.11434)
|
||||
(xy 132.50926 107.11434) (xy 132.50926 108.46308) (xy 134.10819 108.46308) (xy 134.26694 108.30433) (xy 134.26694 107.46428)
|
||||
(xy 134.170267 107.230891) (xy 133.991638 107.052263) (xy 133.758249 106.95559) (xy 132.66801 106.95559) (xy 132.50926 107.11434)
|
||||
(xy 132.25526 107.11434) (xy 132.09651 106.95559) (xy 131.006271 106.95559) (xy 130.772882 107.052263) (xy 130.594253 107.230891)
|
||||
(xy 130.49758 107.46428) (xy 128.76784 107.46428) (xy 128.671167 107.230891) (xy 128.492538 107.052263) (xy 128.259149 106.95559)
|
||||
(xy 127.16891 106.95559) (xy 127.01016 107.11434) (xy 126.75616 107.11434) (xy 126.59741 106.95559) (xy 125.507171 106.95559)
|
||||
(xy 125.273782 107.052263) (xy 125.145 107.181044) (xy 125.145 101.098956) (xy 125.273782 101.227737) (xy 125.507171 101.32441)
|
||||
(xy 126.59741 101.32441) (xy 126.75616 101.16566) (xy 126.75616 99.81692) (xy 127.01016 99.81692) (xy 127.01016 101.16566)
|
||||
(xy 127.16891 101.32441) (xy 128.259149 101.32441) (xy 128.492538 101.227737) (xy 128.671167 101.049109) (xy 128.76784 100.81572)
|
||||
(xy 128.76784 99.97567) (xy 128.60909 99.81692) (xy 127.01016 99.81692) (xy 126.75616 99.81692) (xy 126.73616 99.81692)
|
||||
(xy 126.73616 99.56292) (xy 126.75616 99.56292) (xy 126.75616 98.21418) (xy 127.01016 98.21418) (xy 127.01016 99.56292)
|
||||
(xy 128.60909 99.56292) (xy 128.76784 99.40417) (xy 128.76784 98.56412) (xy 130.49758 98.56412) (xy 130.49758 99.40417)
|
||||
(xy 130.65633 99.56292) (xy 132.25526 99.56292) (xy 132.25526 98.21418) (xy 132.50926 98.21418) (xy 132.50926 99.56292)
|
||||
(xy 134.10819 99.56292) (xy 134.26694 99.40417) (xy 134.26694 99.219691) (xy 135.138 99.219691) (xy 135.138 99.81025)
|
||||
(xy 135.29675 99.969) (xy 136.271 99.969) (xy 136.271 98.86975) (xy 136.525 98.86975) (xy 136.525 99.969)
|
||||
(xy 137.49925 99.969) (xy 137.658 99.81025) (xy 137.658 99.219691) (xy 137.561327 98.986302) (xy 137.382699 98.807673)
|
||||
(xy 137.14931 98.711) (xy 136.68375 98.711) (xy 136.525 98.86975) (xy 136.271 98.86975) (xy 136.11225 98.711)
|
||||
(xy 135.64669 98.711) (xy 135.413301 98.807673) (xy 135.234673 98.986302) (xy 135.138 99.219691) (xy 134.26694 99.219691)
|
||||
(xy 134.26694 98.56412) (xy 134.170267 98.330731) (xy 133.991638 98.152103) (xy 133.758249 98.05543) (xy 132.66801 98.05543)
|
||||
(xy 132.50926 98.21418) (xy 132.25526 98.21418) (xy 132.09651 98.05543) (xy 131.006271 98.05543) (xy 130.772882 98.152103)
|
||||
(xy 130.594253 98.330731) (xy 130.49758 98.56412) (xy 128.76784 98.56412) (xy 128.671167 98.330731) (xy 128.492538 98.152103)
|
||||
(xy 128.259149 98.05543) (xy 127.16891 98.05543) (xy 127.01016 98.21418) (xy 126.75616 98.21418) (xy 126.59741 98.05543)
|
||||
(xy 125.507171 98.05543) (xy 125.273782 98.152103) (xy 125.145 98.280884) (xy 125.145 92.125) (xy 151.112975 92.125)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 189.561 116.155) (xy 171.086025 116.155) (xy 171.089327 116.151698) (xy 171.186 115.918309) (xy 171.186 115.32775)
|
||||
(xy 171.02725 115.169) (xy 170.053 115.169) (xy 170.053 115.189) (xy 169.799 115.189) (xy 169.799 115.169)
|
||||
(xy 168.82475 115.169) (xy 168.666 115.32775) (xy 168.666 115.918309) (xy 168.762673 116.151698) (xy 168.765975 116.155)
|
||||
(xy 166.260025 116.155) (xy 166.368327 116.046699) (xy 166.465 115.81331) (xy 166.465 115.34775) (xy 166.30625 115.189)
|
||||
(xy 165.207 115.189) (xy 165.207 115.209) (xy 164.953 115.209) (xy 164.953 115.189) (xy 164.933 115.189)
|
||||
(xy 164.933 114.935) (xy 164.953 114.935) (xy 164.953 114.915) (xy 165.207 114.915) (xy 165.207 114.935)
|
||||
(xy 166.30625 114.935) (xy 166.465 114.77625) (xy 166.465 114.31069) (xy 166.368327 114.077301) (xy 166.354546 114.06352)
|
||||
(xy 168.09212 114.06352) (xy 168.327437 114.019242) (xy 168.543561 113.88017) (xy 168.688551 113.66797) (xy 168.712439 113.550008)
|
||||
(xy 168.83691 113.743441) (xy 168.905006 113.789969) (xy 168.762673 113.932302) (xy 168.666 114.165691) (xy 168.666 114.75625)
|
||||
(xy 168.82475 114.915) (xy 169.799 114.915) (xy 169.799 114.895) (xy 170.053 114.895) (xy 170.053 114.915)
|
||||
(xy 171.02725 114.915) (xy 171.186 114.75625) (xy 171.186 114.165691) (xy 171.089327 113.932302) (xy 170.94809 113.791064)
|
||||
(xy 171.002441 113.75609) (xy 171.147431 113.54389) (xy 171.19844 113.292) (xy 171.19844 111.792) (xy 171.154162 111.556683)
|
||||
(xy 171.01509 111.340559) (xy 170.80289 111.195569) (xy 170.551 111.14456) (xy 169.7357 111.14456) (xy 169.7357 110.7892)
|
||||
(xy 169.677848 110.498361) (xy 169.677848 110.49836) (xy 169.513101 110.251799) (xy 168.954801 109.693499) (xy 168.73956 109.54968)
|
||||
(xy 168.73956 109.34192) (xy 168.718831 109.23175) (xy 170.444 109.23175) (xy 170.444 109.822309) (xy 170.540673 110.055698)
|
||||
(xy 170.719301 110.234327) (xy 170.95269 110.331) (xy 171.41825 110.331) (xy 171.577 110.17225) (xy 171.577 109.073)
|
||||
(xy 170.60275 109.073) (xy 170.444 109.23175) (xy 168.718831 109.23175) (xy 168.695282 109.106603) (xy 168.634762 109.012553)
|
||||
(xy 168.784201 108.912701) (xy 169.066302 108.6306) (xy 170.444 108.6306) (xy 170.444 108.66025) (xy 170.60275 108.819)
|
||||
(xy 171.577 108.819) (xy 171.577 108.799) (xy 171.831 108.799) (xy 171.831 108.819) (xy 171.851 108.819)
|
||||
(xy 171.851 109.073) (xy 171.831 109.073) (xy 171.831 110.17225) (xy 171.98975 110.331) (xy 172.45531 110.331)
|
||||
(xy 172.688699 110.234327) (xy 172.867327 110.055698) (xy 172.964 109.822309) (xy 172.964 109.324502) (xy 173.650058 110.01056)
|
||||
(xy 173.522 110.01056) (xy 173.286683 110.054838) (xy 173.070559 110.19391) (xy 172.925569 110.40611) (xy 172.87456 110.658)
|
||||
(xy 172.87456 112.158) (xy 172.899918 112.292763) (xy 172.812162 112.504101) (xy 172.811838 112.876067) (xy 172.953883 113.219843)
|
||||
(xy 173.216673 113.483092) (xy 173.560201 113.625738) (xy 173.932167 113.626062) (xy 174.275943 113.484017) (xy 174.299449 113.460551)
|
||||
(xy 176.040899 115.202001) (xy 176.287461 115.366748) (xy 176.5783 115.4246) (xy 184.9572 115.4246) (xy 185.248039 115.366748)
|
||||
(xy 185.494601 115.202001) (xy 186.59612 114.100482) (xy 186.66792 114.325259) (xy 187.223279 114.526718) (xy 187.813458 114.500315)
|
||||
(xy 188.23608 114.325259) (xy 188.316353 114.073958) (xy 187.452 113.209605) (xy 187.437858 113.223748) (xy 187.258253 113.044143)
|
||||
(xy 187.272395 113.03) (xy 187.631605 113.03) (xy 188.495958 113.894353) (xy 188.747259 113.81408) (xy 188.948718 113.258721)
|
||||
(xy 188.922315 112.668542) (xy 188.747259 112.24592) (xy 188.495958 112.165647) (xy 187.631605 113.03) (xy 187.272395 113.03)
|
||||
(xy 187.258253 113.015858) (xy 187.437858 112.836253) (xy 187.452 112.850395) (xy 188.316353 111.986042) (xy 188.244148 111.76)
|
||||
(xy 188.316353 111.533958) (xy 187.452 110.669605) (xy 187.437858 110.683748) (xy 187.258253 110.504143) (xy 187.272395 110.49)
|
||||
(xy 187.631605 110.49) (xy 188.495958 111.354353) (xy 188.747259 111.27408) (xy 188.948718 110.718721) (xy 188.922315 110.128542)
|
||||
(xy 188.747259 109.70592) (xy 188.495958 109.625647) (xy 187.631605 110.49) (xy 187.272395 110.49) (xy 186.408042 109.625647)
|
||||
(xy 186.19036 109.695181) (xy 186.171656 109.649914) (xy 185.754283 109.231812) (xy 185.726443 109.220252) (xy 185.752086 109.209656)
|
||||
(xy 185.96816 108.993958) (xy 186.587647 108.993958) (xy 186.659852 109.22) (xy 186.587647 109.446042) (xy 187.452 110.310395)
|
||||
(xy 188.316353 109.446042) (xy 188.244148 109.22) (xy 188.316353 108.993958) (xy 187.452 108.129605) (xy 186.587647 108.993958)
|
||||
(xy 185.96816 108.993958) (xy 186.170188 108.792283) (xy 186.189951 108.744688) (xy 186.408042 108.814353) (xy 187.272395 107.95)
|
||||
(xy 187.631605 107.95) (xy 188.495958 108.814353) (xy 188.747259 108.73408) (xy 188.948718 108.178721) (xy 188.922315 107.588542)
|
||||
(xy 188.747259 107.16592) (xy 188.495958 107.085647) (xy 187.631605 107.95) (xy 187.272395 107.95) (xy 186.408042 107.085647)
|
||||
(xy 186.19036 107.155181) (xy 186.171656 107.109914) (xy 185.754283 106.691812) (xy 185.726443 106.680252) (xy 185.752086 106.669656)
|
||||
(xy 185.96816 106.453958) (xy 186.587647 106.453958) (xy 186.659852 106.68) (xy 186.587647 106.906042) (xy 187.452 107.770395)
|
||||
(xy 188.316353 106.906042) (xy 188.244148 106.68) (xy 188.316353 106.453958) (xy 187.452 105.589605) (xy 186.587647 106.453958)
|
||||
(xy 185.96816 106.453958) (xy 186.170188 106.252283) (xy 186.189951 106.204688) (xy 186.408042 106.274353) (xy 187.272395 105.41)
|
||||
(xy 187.631605 105.41) (xy 188.495958 106.274353) (xy 188.747259 106.19408) (xy 188.948718 105.638721) (xy 188.922315 105.048542)
|
||||
(xy 188.747259 104.62592) (xy 188.495958 104.545647) (xy 187.631605 105.41) (xy 187.272395 105.41) (xy 186.408042 104.545647)
|
||||
(xy 186.19036 104.615181) (xy 186.171656 104.569914) (xy 185.754283 104.151812) (xy 185.726443 104.140252) (xy 185.752086 104.129656)
|
||||
(xy 185.96816 103.913958) (xy 186.587647 103.913958) (xy 186.659852 104.14) (xy 186.587647 104.366042) (xy 187.452 105.230395)
|
||||
(xy 188.316353 104.366042) (xy 188.244148 104.14) (xy 188.316353 103.913958) (xy 187.452 103.049605) (xy 186.587647 103.913958)
|
||||
(xy 185.96816 103.913958) (xy 186.170188 103.712283) (xy 186.189951 103.664688) (xy 186.408042 103.734353) (xy 187.272395 102.87)
|
||||
(xy 187.631605 102.87) (xy 188.495958 103.734353) (xy 188.747259 103.65408) (xy 188.948718 103.098721) (xy 188.922315 102.508542)
|
||||
(xy 188.747259 102.08592) (xy 188.495958 102.005647) (xy 187.631605 102.87) (xy 187.272395 102.87) (xy 186.408042 102.005647)
|
||||
(xy 186.19036 102.075181) (xy 186.171656 102.029914) (xy 186.070011 101.928091) (xy 186.596483 101.401619) (xy 186.659852 101.6)
|
||||
(xy 186.587647 101.826042) (xy 187.452 102.690395) (xy 188.316353 101.826042) (xy 188.244148 101.6) (xy 188.316353 101.373958)
|
||||
(xy 187.452 100.509605) (xy 187.437858 100.523748) (xy 187.258253 100.344143) (xy 187.272395 100.33) (xy 187.631605 100.33)
|
||||
(xy 188.495958 101.194353) (xy 188.747259 101.11408) (xy 188.948718 100.558721) (xy 188.922315 99.968542) (xy 188.747259 99.54592)
|
||||
(xy 188.495958 99.465647) (xy 187.631605 100.33) (xy 187.272395 100.33) (xy 187.258253 100.315858) (xy 187.437858 100.136253)
|
||||
(xy 187.452 100.150395) (xy 188.316353 99.286042) (xy 188.23608 99.034741) (xy 188.162462 99.008036) (xy 188.175923 99.00246)
|
||||
(xy 188.243912 98.761517) (xy 187.452 97.969605) (xy 187.437858 97.983748) (xy 187.258253 97.804143) (xy 187.272395 97.79)
|
||||
(xy 187.631605 97.79) (xy 188.423517 98.581912) (xy 188.66446 98.513923) (xy 188.849201 97.994829) (xy 188.82123 97.444552)
|
||||
(xy 188.66446 97.066077) (xy 188.423517 96.998088) (xy 187.631605 97.79) (xy 187.272395 97.79) (xy 187.258253 97.775858)
|
||||
(xy 187.437858 97.596253) (xy 187.452 97.610395) (xy 188.243912 96.818483) (xy 188.175923 96.57754) (xy 188.166362 96.574137)
|
||||
(xy 188.23608 96.545259) (xy 188.316353 96.293958) (xy 187.452 95.429605) (xy 187.437858 95.443748) (xy 187.258253 95.264143)
|
||||
(xy 187.272395 95.25) (xy 187.631605 95.25) (xy 188.495958 96.114353) (xy 188.747259 96.03408) (xy 188.948718 95.478721)
|
||||
(xy 188.922315 94.888542) (xy 188.747259 94.46592) (xy 188.495958 94.385647) (xy 187.631605 95.25) (xy 187.272395 95.25)
|
||||
(xy 187.258253 95.235858) (xy 187.437858 95.056253) (xy 187.452 95.070395) (xy 188.316353 94.206042) (xy 188.23608 93.954741)
|
||||
(xy 187.680721 93.753282) (xy 187.090542 93.779685) (xy 186.66792 93.954741) (xy 186.596919 94.177017) (xy 185.918701 93.498799)
|
||||
(xy 185.672139 93.334052) (xy 185.3813 93.2762) (xy 181.4149 93.2762) (xy 181.124061 93.334052) (xy 180.877499 93.498799)
|
||||
(xy 179.16944 95.206858) (xy 179.16944 93.709) (xy 179.125162 93.473683) (xy 178.98609 93.257559) (xy 178.77389 93.112569)
|
||||
(xy 178.560605 93.069378) (xy 178.560662 93.003833) (xy 178.418617 92.660057) (xy 178.155827 92.396808) (xy 177.812299 92.254162)
|
||||
(xy 177.440333 92.253838) (xy 177.096557 92.395883) (xy 177.031913 92.460414) (xy 176.7845 92.4112) (xy 176.517063 92.4112)
|
||||
(xy 176.484927 92.379008) (xy 176.141399 92.236362) (xy 175.769433 92.236038) (xy 175.425657 92.378083) (xy 175.162408 92.640873)
|
||||
(xy 175.019762 92.984401) (xy 175.019695 93.06156) (xy 174.822 93.06156) (xy 174.718329 93.081067) (xy 174.622 93.06156)
|
||||
(xy 174.172 93.06156) (xy 174.068329 93.081067) (xy 173.972 93.06156) (xy 173.522 93.06156) (xy 173.286683 93.105838)
|
||||
(xy 173.070559 93.24491) (xy 172.925569 93.45711) (xy 172.87456 93.709) (xy 172.87456 94.322167) (xy 172.79309 94.195559)
|
||||
(xy 172.58089 94.050569) (xy 172.329 93.99956) (xy 171.079 93.99956) (xy 170.843683 94.043838) (xy 170.627559 94.18291)
|
||||
(xy 170.482569 94.39511) (xy 170.43156 94.647) (xy 170.43156 96.147) (xy 170.475838 96.382317) (xy 170.61491 96.598441)
|
||||
(xy 170.683006 96.644969) (xy 170.540673 96.787302) (xy 170.444 97.020691) (xy 170.444 97.61125) (xy 170.60275 97.77)
|
||||
(xy 171.577 97.77) (xy 171.577 97.75) (xy 171.831 97.75) (xy 171.831 97.77) (xy 172.80525 97.77)
|
||||
(xy 172.964 97.61125) (xy 172.964 97.020691) (xy 172.867327 96.787302) (xy 172.72609 96.646064) (xy 172.780441 96.61109)
|
||||
(xy 172.925431 96.39889) (xy 172.946611 96.2943) (xy 173.388598 96.2943) (xy 175.167698 98.0734) (xy 173.1103 98.0734)
|
||||
(xy 172.897065 98.115815) (xy 172.80525 98.024) (xy 171.831 98.024) (xy 171.831 98.044) (xy 171.577 98.044)
|
||||
(xy 171.577 98.024) (xy 170.60275 98.024) (xy 170.444 98.18275) (xy 170.444 98.773309) (xy 170.540673 99.006698)
|
||||
(xy 170.719301 99.185327) (xy 170.95269 99.282) (xy 171.41825 99.282) (xy 171.576998 99.123252) (xy 171.576998 99.282)
|
||||
(xy 171.586898 99.282) (xy 171.006896 99.862002) (xy 171.006962 99.786233) (xy 170.864917 99.442457) (xy 170.602127 99.179208)
|
||||
(xy 170.258599 99.036562) (xy 169.886633 99.036238) (xy 169.542857 99.178283) (xy 169.509682 99.2114) (xy 168.8279 99.2114)
|
||||
(xy 168.53706 99.269252) (xy 168.50095 99.29338) (xy 168.415527 99.207808) (xy 168.071999 99.065162) (xy 167.700033 99.064838)
|
||||
(xy 167.356257 99.206883) (xy 167.323082 99.24) (xy 167.24444 99.24) (xy 167.24444 98.925) (xy 167.220056 98.795411)
|
||||
(xy 167.24444 98.675) (xy 167.24444 98.125) (xy 167.220056 97.995411) (xy 167.24444 97.875) (xy 167.24444 97.325)
|
||||
(xy 167.200162 97.089683) (xy 167.06109 96.873559) (xy 166.84889 96.728569) (xy 166.597 96.67756) (xy 165.097 96.67756)
|
||||
(xy 165.062546 96.684043) (xy 165.06944 96.65) (xy 165.06944 95.15) (xy 165.042053 95.004449) (xy 165.230802 94.8157)
|
||||
(xy 165.628 94.8157) (xy 165.918839 94.757848) (xy 166.165401 94.593101) (xy 166.233997 94.49044) (xy 166.378 94.49044)
|
||||
(xy 166.613317 94.446162) (xy 166.829441 94.30709) (xy 166.875969 94.238994) (xy 167.018302 94.381327) (xy 167.251691 94.478)
|
||||
(xy 167.84225 94.478) (xy 168.001 94.31925) (xy 168.001 93.345) (xy 168.255 93.345) (xy 168.255 94.31925)
|
||||
(xy 168.41375 94.478) (xy 169.004309 94.478) (xy 169.237698 94.381327) (xy 169.416327 94.202699) (xy 169.513 93.96931)
|
||||
(xy 169.513 93.50375) (xy 169.35425 93.345) (xy 168.255 93.345) (xy 168.001 93.345) (xy 167.981 93.345)
|
||||
(xy 167.981 93.091) (xy 168.001 93.091) (xy 168.001 93.071) (xy 168.255 93.071) (xy 168.255 93.091)
|
||||
(xy 169.35425 93.091) (xy 169.513 92.93225) (xy 169.513 92.46669) (xy 169.416327 92.233301) (xy 169.308025 92.125)
|
||||
(xy 189.561 92.125)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 147.987 100.55225) (xy 148.14575 100.711) (xy 149.245 100.711) (xy 149.245 100.691) (xy 149.499 100.691)
|
||||
(xy 149.499 100.711) (xy 149.519 100.711) (xy 149.519 100.965) (xy 149.499 100.965) (xy 149.499 101.93925)
|
||||
(xy 149.65775 102.098) (xy 150.248309 102.098) (xy 150.481698 102.001327) (xy 150.622936 101.86009) (xy 150.65791 101.914441)
|
||||
(xy 150.87011 102.059431) (xy 151.109509 102.10791) (xy 150.886683 102.149838) (xy 150.670559 102.28891) (xy 150.624031 102.357006)
|
||||
(xy 150.481698 102.214673) (xy 150.248309 102.118) (xy 149.65775 102.118) (xy 149.499 102.27675) (xy 149.499 103.251)
|
||||
(xy 149.519 103.251) (xy 149.519 103.505) (xy 149.499 103.505) (xy 149.499 104.47925) (xy 149.65775 104.638)
|
||||
(xy 150.220198 104.638) (xy 150.200198 104.658) (xy 149.65775 104.658) (xy 149.499 104.81675) (xy 149.499 105.791)
|
||||
(xy 149.519 105.791) (xy 149.519 106.045) (xy 149.499 106.045) (xy 149.499 106.065) (xy 149.245 106.065)
|
||||
(xy 149.245 106.045) (xy 148.14575 106.045) (xy 147.987 106.20375) (xy 147.987 106.66931) (xy 148.083673 106.902699)
|
||||
(xy 148.262302 107.081327) (xy 148.495691 107.178) (xy 148.923198 107.178) (xy 147.204498 108.8967) (xy 145.602802 108.8967)
|
||||
(xy 142.803001 106.096899) (xy 142.743946 106.05744) (xy 144.8308 106.05744) (xy 145.066117 106.013162) (xy 145.282241 105.87409)
|
||||
(xy 145.427231 105.66189) (xy 145.47824 105.41) (xy 145.47824 105.16669) (xy 147.987 105.16669) (xy 147.987 105.63225)
|
||||
(xy 148.14575 105.791) (xy 149.245 105.791) (xy 149.245 104.81675) (xy 149.08625 104.658) (xy 148.495691 104.658)
|
||||
(xy 148.262302 104.754673) (xy 148.083673 104.933301) (xy 147.987 105.16669) (xy 145.47824 105.16669) (xy 145.47824 103.66375)
|
||||
(xy 147.987 103.66375) (xy 147.987 104.12931) (xy 148.083673 104.362699) (xy 148.262302 104.541327) (xy 148.495691 104.638)
|
||||
(xy 149.08625 104.638) (xy 149.245 104.47925) (xy 149.245 103.505) (xy 148.14575 103.505) (xy 147.987 103.66375)
|
||||
(xy 145.47824 103.66375) (xy 145.47824 103.378) (xy 145.433962 103.142683) (xy 145.29489 102.926559) (xy 145.08269 102.781569)
|
||||
(xy 144.8308 102.73056) (xy 141.1732 102.73056) (xy 140.937883 102.774838) (xy 140.721759 102.91391) (xy 140.576769 103.12611)
|
||||
(xy 140.52576 103.378) (xy 140.52576 105.41) (xy 140.570038 105.645317) (xy 140.70911 105.861441) (xy 140.72793 105.8743)
|
||||
(xy 138.613402 105.8743) (xy 137.885701 105.146599) (xy 137.67044 105.002767) (xy 137.67044 104.934) (xy 137.6332 104.736087)
|
||||
(xy 137.6332 104.1465) (xy 137.63088 104.134838) (xy 137.575348 103.85566) (xy 137.510063 103.757955) (xy 137.619431 103.59789)
|
||||
(xy 137.67044 103.346) (xy 137.67044 102.62669) (xy 147.987 102.62669) (xy 147.987 103.09225) (xy 148.14575 103.251)
|
||||
(xy 149.245 103.251) (xy 149.245 102.27675) (xy 149.08625 102.118) (xy 148.495691 102.118) (xy 148.262302 102.214673)
|
||||
(xy 148.083673 102.393301) (xy 147.987 102.62669) (xy 137.67044 102.62669) (xy 137.67044 101.9467) (xy 141.0836 101.9467)
|
||||
(xy 141.374439 101.888848) (xy 141.621001 101.724101) (xy 142.221352 101.12375) (xy 147.987 101.12375) (xy 147.987 101.58931)
|
||||
(xy 148.083673 101.822699) (xy 148.262302 102.001327) (xy 148.495691 102.098) (xy 149.08625 102.098) (xy 149.245 101.93925)
|
||||
(xy 149.245 100.965) (xy 148.14575 100.965) (xy 147.987 101.12375) (xy 142.221352 101.12375) (xy 142.289401 101.055701)
|
||||
(xy 142.433234 100.84044) (xy 142.502 100.84044) (xy 142.737317 100.796162) (xy 142.953441 100.65709) (xy 143.001134 100.587289)
|
||||
(xy 143.03791 100.644441) (xy 143.25011 100.789431) (xy 143.502 100.84044) (xy 145.002 100.84044) (xy 145.237317 100.796162)
|
||||
(xy 145.453441 100.65709) (xy 145.598431 100.44489) (xy 145.622102 100.328) (xy 147.987 100.328)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 170.586862 100.872101) (xy 170.586538 101.244067) (xy 170.617703 101.319492) (xy 170.495108 101.441873) (xy 170.352462 101.785401)
|
||||
(xy 170.352138 102.157367) (xy 170.494183 102.501143) (xy 170.756973 102.764392) (xy 171.100501 102.907038) (xy 171.472467 102.907362)
|
||||
(xy 171.816243 102.765317) (xy 172.079492 102.502527) (xy 172.097044 102.460258) (xy 172.796601 101.760701) (xy 172.820942 101.724272)
|
||||
(xy 172.820838 101.843867) (xy 172.962883 102.187643) (xy 173.225673 102.450892) (xy 173.372452 102.51184) (xy 173.372338 102.642367)
|
||||
(xy 173.508252 102.971305) (xy 173.400499 102.926562) (xy 173.028533 102.926238) (xy 172.684757 103.068283) (xy 172.421508 103.331073)
|
||||
(xy 172.278862 103.674601) (xy 172.278538 104.046567) (xy 172.420583 104.390343) (xy 172.683373 104.653592) (xy 172.879234 104.734921)
|
||||
(xy 172.87456 104.758) (xy 172.87456 105.371167) (xy 172.79309 105.244559) (xy 172.58089 105.099569) (xy 172.329 105.04856)
|
||||
(xy 171.079 105.04856) (xy 170.843683 105.092838) (xy 170.627559 105.23191) (xy 170.622222 105.23972) (xy 170.3663 104.983798)
|
||||
(xy 170.3663 104.628) (xy 170.308448 104.337161) (xy 170.143701 104.090599) (xy 169.92844 103.946767) (xy 169.92844 103.878)
|
||||
(xy 169.884162 103.642683) (xy 169.74509 103.426559) (xy 169.676994 103.380031) (xy 169.819327 103.237698) (xy 169.916 103.004309)
|
||||
(xy 169.916 102.41375) (xy 169.75725 102.255) (xy 168.783 102.255) (xy 168.783 102.275) (xy 168.529 102.275)
|
||||
(xy 168.529 102.255) (xy 168.509 102.255) (xy 168.509 102.001) (xy 168.529 102.001) (xy 168.529 101.981)
|
||||
(xy 168.783 101.981) (xy 168.783 102.001) (xy 169.75725 102.001) (xy 169.916 101.84225) (xy 169.916 101.251691)
|
||||
(xy 169.819327 101.018302) (xy 169.640699 100.839673) (xy 169.40731 100.743) (xy 169.131102 100.743) (xy 169.142702 100.7314)
|
||||
(xy 169.509337 100.7314) (xy 169.541473 100.763592) (xy 169.885001 100.906238) (xy 170.256967 100.906562) (xy 170.600743 100.764517)
|
||||
(xy 170.653335 100.712016)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 164.426559 92.12891) (xy 164.281569 92.34111) (xy 164.23056 92.593) (xy 164.23056 93.666338) (xy 163.832198 94.0647)
|
||||
(xy 161.599488 94.0647) (xy 161.639 93.96931) (xy 161.639 93.50375) (xy 161.48025 93.345) (xy 160.381 93.345)
|
||||
(xy 160.381 93.365) (xy 160.127 93.365) (xy 160.127 93.345) (xy 160.107 93.345) (xy 160.107 93.091)
|
||||
(xy 160.127 93.091) (xy 160.127 93.071) (xy 160.381 93.071) (xy 160.381 93.091) (xy 161.48025 93.091)
|
||||
(xy 161.639 92.93225) (xy 161.639 92.46669) (xy 161.542327 92.233301) (xy 161.434025 92.125) (xy 164.432635 92.125)
|
||||
)
|
||||
)
|
||||
)
|
||||
(zone (net 1) (net_name GND) (layer B.Cu) (tstamp 579A43CA) (hatch edge 0.508)
|
||||
(connect_pads (clearance 0.508))
|
||||
(min_thickness 0.254)
|
||||
(fill yes (arc_segments 16) (thermal_gap 0.508) (thermal_bridge_width 0.508))
|
||||
(fill (arc_segments 16) (thermal_gap 0.508) (thermal_bridge_width 0.508))
|
||||
(polygon
|
||||
(pts
|
||||
(xy 190.246 91.44) (xy 124.46 91.44) (xy 124.46 116.84) (xy 190.246 116.84)
|
||||
)
|
||||
)
|
||||
(filled_polygon
|
||||
(pts
|
||||
(xy 166.563299 99.343899) (xy 166.398552 99.590461) (xy 166.3407 99.8813) (xy 166.3407 100.178137) (xy 166.308508 100.210273)
|
||||
(xy 166.165862 100.553801) (xy 166.165538 100.925767) (xy 166.307583 101.269543) (xy 166.570373 101.532792) (xy 166.913901 101.675438)
|
||||
(xy 167.285867 101.675762) (xy 167.629643 101.533717) (xy 167.892892 101.270927) (xy 168.032328 100.935129) (xy 168.070367 100.935162)
|
||||
(xy 168.414143 100.793117) (xy 168.447318 100.76) (xy 168.810998 100.76) (xy 169.185199 101.134201) (xy 169.431761 101.298948)
|
||||
(xy 169.7226 101.3568) (xy 170.4898 101.3568) (xy 170.602858 101.334311) (xy 170.495108 101.441873) (xy 170.352462 101.785401)
|
||||
(xy 170.352138 102.157367) (xy 170.41222 102.302778) (xy 167.46712 105.247878) (xy 167.421633 105.247838) (xy 167.077857 105.389883)
|
||||
(xy 166.814608 105.652673) (xy 166.671962 105.996201) (xy 166.671884 106.0858) (xy 159.620502 106.0858) (xy 158.960822 105.42612)
|
||||
(xy 158.960862 105.380633) (xy 158.818817 105.036857) (xy 158.556027 104.773608) (xy 158.212499 104.630962) (xy 157.840533 104.630638)
|
||||
(xy 157.496757 104.772683) (xy 157.233508 105.035473) (xy 157.090862 105.379001) (xy 157.090538 105.750967) (xy 157.232583 106.094743)
|
||||
(xy 157.495373 106.357992) (xy 157.838901 106.500638) (xy 157.885777 106.500679) (xy 158.768299 107.383201) (xy 159.01486 107.547948)
|
||||
(xy 159.3057 107.6058) (xy 172.718 107.6058) (xy 172.742521 107.600923) (xy 175.405178 110.26358) (xy 175.405138 110.309067)
|
||||
(xy 175.547183 110.652843) (xy 175.809973 110.916092) (xy 176.153501 111.058738) (xy 176.525467 111.059062) (xy 176.869243 110.917017)
|
||||
(xy 177.132492 110.654227) (xy 177.275138 110.310699) (xy 177.275462 109.938733) (xy 177.133417 109.594957) (xy 176.870627 109.331708)
|
||||
(xy 176.527099 109.189062) (xy 176.480223 109.189021) (xy 173.6501 106.358898) (xy 173.6501 105.382902) (xy 180.920489 112.653291)
|
||||
(xy 180.887258 112.733319) (xy 180.886743 113.324089) (xy 180.953189 113.4849) (xy 175.615802 113.4849) (xy 174.682122 112.55122)
|
||||
(xy 174.682162 112.505733) (xy 174.540117 112.161957) (xy 174.277327 111.898708) (xy 173.933799 111.756062) (xy 173.561833 111.755738)
|
||||
(xy 173.218057 111.897783) (xy 172.954808 112.160573) (xy 172.812162 112.504101) (xy 172.811838 112.876067) (xy 172.953883 113.219843)
|
||||
(xy 173.216673 113.483092) (xy 173.560201 113.625738) (xy 173.607077 113.625779) (xy 174.763599 114.782301) (xy 175.010161 114.947048)
|
||||
(xy 175.301 115.0049) (xy 182.8528 115.0049) (xy 183.143639 114.947048) (xy 183.390201 114.782301) (xy 183.977096 114.195406)
|
||||
(xy 184.069717 114.288188) (xy 184.615319 114.514742) (xy 185.206089 114.515257) (xy 185.752086 114.289656) (xy 185.96816 114.073958)
|
||||
(xy 186.587647 114.073958) (xy 186.66792 114.325259) (xy 187.223279 114.526718) (xy 187.813458 114.500315) (xy 188.23608 114.325259)
|
||||
(xy 188.316353 114.073958) (xy 187.452 113.209605) (xy 186.587647 114.073958) (xy 185.96816 114.073958) (xy 186.170188 113.872283)
|
||||
(xy 186.189951 113.824688) (xy 186.408042 113.894353) (xy 187.272395 113.03) (xy 187.631605 113.03) (xy 188.495958 113.894353)
|
||||
(xy 188.747259 113.81408) (xy 188.948718 113.258721) (xy 188.922315 112.668542) (xy 188.747259 112.24592) (xy 188.495958 112.165647)
|
||||
(xy 187.631605 113.03) (xy 187.272395 113.03) (xy 186.408042 112.165647) (xy 186.19036 112.235181) (xy 186.171656 112.189914)
|
||||
(xy 185.754283 111.771812) (xy 185.726443 111.760252) (xy 185.752086 111.749656) (xy 185.96816 111.533958) (xy 186.587647 111.533958)
|
||||
(xy 186.659852 111.76) (xy 186.587647 111.986042) (xy 187.452 112.850395) (xy 188.316353 111.986042) (xy 188.244148 111.76)
|
||||
(xy 188.316353 111.533958) (xy 187.452 110.669605) (xy 186.587647 111.533958) (xy 185.96816 111.533958) (xy 186.170188 111.332283)
|
||||
(xy 186.189951 111.284688) (xy 186.408042 111.354353) (xy 187.272395 110.49) (xy 187.631605 110.49) (xy 188.495958 111.354353)
|
||||
(xy 188.747259 111.27408) (xy 188.948718 110.718721) (xy 188.922315 110.128542) (xy 188.747259 109.70592) (xy 188.495958 109.625647)
|
||||
(xy 187.631605 110.49) (xy 187.272395 110.49) (xy 186.408042 109.625647) (xy 186.19036 109.695181) (xy 186.171656 109.649914)
|
||||
(xy 186.079852 109.55795) (xy 186.601252 109.03655) (xy 186.659852 109.22) (xy 186.587647 109.446042) (xy 187.452 110.310395)
|
||||
(xy 188.316353 109.446042) (xy 188.244148 109.22) (xy 188.316353 108.993958) (xy 187.452 108.129605) (xy 187.437858 108.143748)
|
||||
(xy 187.258253 107.964143) (xy 187.272395 107.95) (xy 187.631605 107.95) (xy 188.495958 108.814353) (xy 188.747259 108.73408)
|
||||
(xy 188.948718 108.178721) (xy 188.922315 107.588542) (xy 188.747259 107.16592) (xy 188.495958 107.085647) (xy 187.631605 107.95)
|
||||
(xy 187.272395 107.95) (xy 187.258253 107.935858) (xy 187.437858 107.756253) (xy 187.452 107.770395) (xy 188.316353 106.906042)
|
||||
(xy 188.244148 106.68) (xy 188.316353 106.453958) (xy 187.452 105.589605) (xy 187.437858 105.603748) (xy 187.258253 105.424143)
|
||||
(xy 187.272395 105.41) (xy 187.631605 105.41) (xy 188.495958 106.274353) (xy 188.747259 106.19408) (xy 188.948718 105.638721)
|
||||
(xy 188.922315 105.048542) (xy 188.747259 104.62592) (xy 188.495958 104.545647) (xy 187.631605 105.41) (xy 187.272395 105.41)
|
||||
(xy 186.408042 104.545647) (xy 186.19036 104.615181) (xy 186.171656 104.569914) (xy 186.061818 104.459884) (xy 186.592512 103.92919)
|
||||
(xy 186.659852 104.14) (xy 186.587647 104.366042) (xy 187.452 105.230395) (xy 188.316353 104.366042) (xy 188.244148 104.14)
|
||||
(xy 188.316353 103.913958) (xy 187.452 103.049605) (xy 187.437858 103.063748) (xy 187.258253 102.884143) (xy 187.272395 102.87)
|
||||
(xy 187.631605 102.87) (xy 188.495958 103.734353) (xy 188.747259 103.65408) (xy 188.948718 103.098721) (xy 188.922315 102.508542)
|
||||
(xy 188.747259 102.08592) (xy 188.495958 102.005647) (xy 187.631605 102.87) (xy 187.272395 102.87) (xy 187.258253 102.855858)
|
||||
(xy 187.437858 102.676253) (xy 187.452 102.690395) (xy 188.316353 101.826042) (xy 188.244148 101.6) (xy 188.316353 101.373958)
|
||||
(xy 187.452 100.509605) (xy 187.437858 100.523748) (xy 187.258253 100.344143) (xy 187.272395 100.33) (xy 187.631605 100.33)
|
||||
(xy 188.495958 101.194353) (xy 188.747259 101.11408) (xy 188.948718 100.558721) (xy 188.922315 99.968542) (xy 188.747259 99.54592)
|
||||
(xy 188.495958 99.465647) (xy 187.631605 100.33) (xy 187.272395 100.33) (xy 186.408042 99.465647) (xy 186.19036 99.535181)
|
||||
(xy 186.171656 99.489914) (xy 185.96814 99.286042) (xy 186.587647 99.286042) (xy 187.452 100.150395) (xy 188.316353 99.286042)
|
||||
(xy 188.23608 99.034741) (xy 188.162462 99.008036) (xy 188.175923 99.00246) (xy 188.243912 98.761517) (xy 187.452 97.969605)
|
||||
(xy 186.660088 98.761517) (xy 186.728077 99.00246) (xy 186.737638 99.005863) (xy 186.66792 99.034741) (xy 186.587647 99.286042)
|
||||
(xy 185.96814 99.286042) (xy 185.754283 99.071812) (xy 185.726443 99.060252) (xy 185.752086 99.049656) (xy 186.170188 98.632283)
|
||||
(xy 186.22945 98.489564) (xy 186.23954 98.513923) (xy 186.480483 98.581912) (xy 187.272395 97.79) (xy 187.631605 97.79)
|
||||
(xy 188.423517 98.581912) (xy 188.66446 98.513923) (xy 188.849201 97.994829) (xy 188.82123 97.444552) (xy 188.66446 97.066077)
|
||||
(xy 188.423517 96.998088) (xy 187.631605 97.79) (xy 187.272395 97.79) (xy 186.480483 96.998088) (xy 186.23954 97.066077)
|
||||
(xy 186.230338 97.091934) (xy 186.171656 96.949914) (xy 185.754283 96.531812) (xy 185.726443 96.520252) (xy 185.752086 96.509656)
|
||||
(xy 185.96816 96.293958) (xy 186.587647 96.293958) (xy 186.66792 96.545259) (xy 186.741538 96.571964) (xy 186.728077 96.57754)
|
||||
(xy 186.660088 96.818483) (xy 187.452 97.610395) (xy 188.243912 96.818483) (xy 188.175923 96.57754) (xy 188.166362 96.574137)
|
||||
(xy 188.23608 96.545259) (xy 188.316353 96.293958) (xy 187.452 95.429605) (xy 186.587647 96.293958) (xy 185.96816 96.293958)
|
||||
(xy 186.170188 96.092283) (xy 186.189951 96.044688) (xy 186.408042 96.114353) (xy 187.272395 95.25) (xy 187.631605 95.25)
|
||||
(xy 188.495958 96.114353) (xy 188.747259 96.03408) (xy 188.948718 95.478721) (xy 188.922315 94.888542) (xy 188.747259 94.46592)
|
||||
(xy 188.495958 94.385647) (xy 187.631605 95.25) (xy 187.272395 95.25) (xy 186.408042 94.385647) (xy 186.19036 94.455181)
|
||||
(xy 186.171656 94.409914) (xy 185.96814 94.206042) (xy 186.587647 94.206042) (xy 187.452 95.070395) (xy 188.316353 94.206042)
|
||||
(xy 188.23608 93.954741) (xy 187.680721 93.753282) (xy 187.090542 93.779685) (xy 186.66792 93.954741) (xy 186.587647 94.206042)
|
||||
(xy 185.96814 94.206042) (xy 185.754283 93.991812) (xy 185.208681 93.765258) (xy 184.617911 93.764743) (xy 184.071914 93.990344)
|
||||
(xy 183.653812 94.407717) (xy 183.642252 94.435557) (xy 183.631656 94.409914) (xy 183.214283 93.991812) (xy 182.668681 93.765258)
|
||||
(xy 182.077911 93.764743) (xy 181.531914 93.990344) (xy 181.113812 94.407717) (xy 180.887258 94.953319) (xy 180.886743 95.544089)
|
||||
(xy 181.112344 96.090086) (xy 181.529717 96.508188) (xy 181.557557 96.519748) (xy 181.531914 96.530344) (xy 181.113812 96.947717)
|
||||
(xy 180.887258 97.493319) (xy 180.886743 98.084089) (xy 181.112344 98.630086) (xy 181.529717 99.048188) (xy 181.557557 99.059748)
|
||||
(xy 181.531914 99.070344) (xy 181.113812 99.487717) (xy 180.887258 100.033319) (xy 180.886743 100.624089) (xy 181.112344 101.170086)
|
||||
(xy 181.175323 101.233175) (xy 180.203199 102.205299) (xy 180.038452 102.451861) (xy 179.9806 102.7427) (xy 179.9806 104.406337)
|
||||
(xy 179.948408 104.438473) (xy 179.805762 104.782001) (xy 179.80569 104.8643) (xy 179.051249 104.8643) (xy 179.148892 104.766827)
|
||||
(xy 179.291538 104.423299) (xy 179.291862 104.051333) (xy 179.149817 103.707557) (xy 179.036661 103.594203) (xy 179.140638 103.343799)
|
||||
(xy 179.140744 103.2216) (xy 179.153948 103.201839) (xy 179.2118 102.911) (xy 179.2118 94.0153) (xy 179.153948 93.724461)
|
||||
(xy 178.989201 93.477899) (xy 178.560622 93.04932) (xy 178.560662 93.003833) (xy 178.418617 92.660057) (xy 178.155827 92.396808)
|
||||
(xy 177.812299 92.254162) (xy 177.765423 92.254121) (xy 177.636302 92.125) (xy 189.561 92.125) (xy 189.561 116.155)
|
||||
(xy 125.145 116.155) (xy 125.145 106.55443) (xy 128.798132 106.55443) (xy 128.962902 106.953203) (xy 129.267733 107.258566)
|
||||
(xy 129.666217 107.424031) (xy 130.09769 107.424408) (xy 130.496463 107.259638) (xy 130.801826 106.954807) (xy 130.967291 106.556323)
|
||||
(xy 130.967668 106.12485) (xy 130.802898 105.726077) (xy 130.498067 105.420714) (xy 130.099583 105.255249) (xy 129.66811 105.254872)
|
||||
(xy 129.269337 105.419642) (xy 128.963974 105.724473) (xy 128.798509 106.122957) (xy 128.798132 106.55443) (xy 125.145 106.55443)
|
||||
(xy 125.145 103.468067) (xy 133.208438 103.468067) (xy 133.350483 103.811843) (xy 133.613273 104.075092) (xy 133.956801 104.217738)
|
||||
(xy 134.328767 104.218062) (xy 134.672543 104.076017) (xy 134.935792 103.813227) (xy 135.078438 103.469699) (xy 135.078762 103.097733)
|
||||
(xy 134.936717 102.753957) (xy 134.9036 102.720782) (xy 134.9036 102.574802) (xy 139.91078 97.567622) (xy 139.956267 97.567662)
|
||||
(xy 140.300043 97.425617) (xy 140.563292 97.162827) (xy 140.705938 96.819299) (xy 140.705983 96.7671) (xy 144.851798 96.7671)
|
||||
(xy 152.224378 104.13968) (xy 152.224338 104.185167) (xy 152.366383 104.528943) (xy 152.629173 104.792192) (xy 152.972701 104.934838)
|
||||
(xy 153.344667 104.935162) (xy 153.688443 104.793117) (xy 153.951692 104.530327) (xy 154.094338 104.186799) (xy 154.094662 103.814833)
|
||||
(xy 153.952617 103.471057) (xy 153.689827 103.207808) (xy 153.346299 103.065162) (xy 153.299423 103.065121) (xy 145.704001 95.469699)
|
||||
(xy 145.457439 95.304952) (xy 145.1666 95.2471) (xy 138.9338 95.2471) (xy 138.642961 95.304952) (xy 138.396399 95.469699)
|
||||
(xy 138.28122 95.584878) (xy 138.235733 95.584838) (xy 137.891957 95.726883) (xy 137.628708 95.989673) (xy 137.486062 96.333201)
|
||||
(xy 137.485738 96.705167) (xy 137.627783 97.048943) (xy 137.890573 97.312192) (xy 137.979627 97.349171) (xy 133.606199 101.722599)
|
||||
(xy 133.441452 101.969161) (xy 133.3836 102.26) (xy 133.3836 102.720437) (xy 133.351408 102.752573) (xy 133.208762 103.096101)
|
||||
(xy 133.208438 103.468067) (xy 125.145 103.468067) (xy 125.145 102.15515) (xy 128.798132 102.15515) (xy 128.962902 102.553923)
|
||||
(xy 129.267733 102.859286) (xy 129.666217 103.024751) (xy 130.09769 103.025128) (xy 130.496463 102.860358) (xy 130.801826 102.555527)
|
||||
(xy 130.967291 102.157043) (xy 130.967668 101.72557) (xy 130.802898 101.326797) (xy 130.498067 101.021434) (xy 130.099583 100.855969)
|
||||
(xy 129.66811 100.855592) (xy 129.269337 101.020362) (xy 128.963974 101.325193) (xy 128.798509 101.723677) (xy 128.798132 102.15515)
|
||||
(xy 125.145 102.15515) (xy 125.145 94.165167) (xy 145.467038 94.165167) (xy 145.609083 94.508943) (xy 145.871873 94.772192)
|
||||
(xy 146.215401 94.914838) (xy 146.262277 94.914879) (xy 154.822327 103.474929) (xy 154.927283 103.728943) (xy 155.190073 103.992192)
|
||||
(xy 155.533601 104.134838) (xy 155.905567 104.135162) (xy 156.249343 103.993117) (xy 156.512592 103.730327) (xy 156.655238 103.386799)
|
||||
(xy 156.655562 103.014833) (xy 156.513517 102.671057) (xy 156.250727 102.407808) (xy 155.907199 102.265162) (xy 155.762038 102.265036)
|
||||
(xy 147.337322 93.84032) (xy 147.337362 93.794833) (xy 147.195317 93.451057) (xy 146.932527 93.187808) (xy 146.588999 93.045162)
|
||||
(xy 146.217033 93.044838) (xy 145.873257 93.186883) (xy 145.610008 93.449673) (xy 145.467362 93.793201) (xy 145.467038 94.165167)
|
||||
(xy 125.145 94.165167) (xy 125.145 92.125) (xy 173.782198 92.125)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -45,24 +45,24 @@
|
|||
*/
|
||||
const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
|
||||
|
||||
.USBSpecification = VERSION_BCD(1,1,0),
|
||||
.Class = USB_CSCP_IADDeviceClass,
|
||||
.SubClass = USB_CSCP_IADDeviceSubclass,
|
||||
.Protocol = USB_CSCP_IADDeviceProtocol,
|
||||
.USBSpecification = VERSION_BCD(1,1,0),
|
||||
.Class = USB_CSCP_IADDeviceClass,
|
||||
.SubClass = USB_CSCP_IADDeviceSubclass,
|
||||
.Protocol = USB_CSCP_IADDeviceProtocol,
|
||||
|
||||
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
|
||||
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
|
||||
|
||||
.VendorID = 0x03EB,
|
||||
.ProductID = 0x204E,
|
||||
.ReleaseNumber = VERSION_BCD(0,0,1),
|
||||
.VendorID = 0x03EB,
|
||||
.ProductID = 0x204E,
|
||||
.ReleaseNumber = VERSION_BCD(0,0,1),
|
||||
|
||||
.ManufacturerStrIndex = STRING_ID_Manufacturer,
|
||||
.ProductStrIndex = STRING_ID_Product,
|
||||
.SerialNumStrIndex = USE_INTERNAL_SERIAL,
|
||||
.ManufacturerStrIndex = STRING_ID_Manufacturer,
|
||||
.ProductStrIndex = STRING_ID_Product,
|
||||
.SerialNumStrIndex = USE_INTERNAL_SERIAL,
|
||||
|
||||
.NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
|
||||
.NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
|
||||
};
|
||||
|
||||
/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
|
||||
|
@ -72,222 +72,222 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
|
|||
*/
|
||||
const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
|
||||
{
|
||||
.Config =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
|
||||
.Config =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
|
||||
|
||||
.TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
|
||||
.TotalInterfaces = 4,
|
||||
.TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
|
||||
.TotalInterfaces = 4,
|
||||
|
||||
.ConfigurationNumber = 1,
|
||||
.ConfigurationStrIndex = NO_DESCRIPTOR,
|
||||
.ConfigurationNumber = 1,
|
||||
.ConfigurationStrIndex = NO_DESCRIPTOR,
|
||||
|
||||
.ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
|
||||
.ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
|
||||
|
||||
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
|
||||
},
|
||||
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
|
||||
},
|
||||
|
||||
.CDC1_IAD =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
|
||||
.CDC1_IAD =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
|
||||
|
||||
.FirstInterfaceIndex = INTERFACE_ID_CDC1_CCI,
|
||||
.TotalInterfaces = 2,
|
||||
.FirstInterfaceIndex = INTERFACE_ID_CDC1_CCI,
|
||||
.TotalInterfaces = 2,
|
||||
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
|
||||
.IADStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.IADStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
|
||||
.CDC1_CCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
.CDC1_CCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
|
||||
.InterfaceNumber = INTERFACE_ID_CDC1_CCI,
|
||||
.AlternateSetting = 0,
|
||||
.InterfaceNumber = INTERFACE_ID_CDC1_CCI,
|
||||
.AlternateSetting = 0,
|
||||
|
||||
.TotalEndpoints = 1,
|
||||
.TotalEndpoints = 1,
|
||||
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
|
||||
.CDC1_Functional_Header =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Header,
|
||||
.CDC1_Functional_Header =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Header,
|
||||
|
||||
.CDCSpecification = VERSION_BCD(1,1,0),
|
||||
},
|
||||
.CDCSpecification = VERSION_BCD(1,1,0),
|
||||
},
|
||||
|
||||
.CDC1_Functional_ACM =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_ACM,
|
||||
.CDC1_Functional_ACM =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_ACM,
|
||||
|
||||
.Capabilities = 0x06,
|
||||
},
|
||||
.Capabilities = 0x06,
|
||||
},
|
||||
|
||||
.CDC1_Functional_Union =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Union,
|
||||
.CDC1_Functional_Union =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Union,
|
||||
|
||||
.MasterInterfaceNumber = INTERFACE_ID_CDC1_CCI,
|
||||
.SlaveInterfaceNumber = INTERFACE_ID_CDC1_DCI,
|
||||
},
|
||||
.MasterInterfaceNumber = INTERFACE_ID_CDC1_CCI,
|
||||
.SlaveInterfaceNumber = INTERFACE_ID_CDC1_DCI,
|
||||
},
|
||||
|
||||
.CDC1_ManagementEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
.CDC1_ManagementEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
|
||||
.EndpointAddress = CDC1_NOTIFICATION_EPADDR,
|
||||
.Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_NOTIFICATION_EPSIZE,
|
||||
.PollingIntervalMS = 0xFF
|
||||
},
|
||||
.EndpointAddress = CDC1_NOTIFICATION_EPADDR,
|
||||
.Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_NOTIFICATION_EPSIZE,
|
||||
.PollingIntervalMS = 0xFF
|
||||
},
|
||||
|
||||
.CDC1_DCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
.CDC1_DCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
|
||||
.InterfaceNumber = INTERFACE_ID_CDC1_DCI,
|
||||
.AlternateSetting = 0,
|
||||
.InterfaceNumber = INTERFACE_ID_CDC1_DCI,
|
||||
.AlternateSetting = 0,
|
||||
|
||||
.TotalEndpoints = 2,
|
||||
.TotalEndpoints = 2,
|
||||
|
||||
.Class = CDC_CSCP_CDCDataClass,
|
||||
.SubClass = CDC_CSCP_NoDataSubclass,
|
||||
.Protocol = CDC_CSCP_NoDataProtocol,
|
||||
.Class = CDC_CSCP_CDCDataClass,
|
||||
.SubClass = CDC_CSCP_NoDataSubclass,
|
||||
.Protocol = CDC_CSCP_NoDataProtocol,
|
||||
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
|
||||
.CDC1_DataOutEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
.CDC1_DataOutEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
|
||||
.EndpointAddress = CDC1_RX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
},
|
||||
.EndpointAddress = CDC1_RX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
},
|
||||
|
||||
.CDC1_DataInEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
.CDC1_DataInEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
|
||||
.EndpointAddress = CDC1_TX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
},
|
||||
.EndpointAddress = CDC1_TX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
},
|
||||
|
||||
.CDC2_IAD =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
|
||||
.CDC2_IAD =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
|
||||
|
||||
.FirstInterfaceIndex = INTERFACE_ID_CDC2_CCI,
|
||||
.TotalInterfaces = 2,
|
||||
.FirstInterfaceIndex = INTERFACE_ID_CDC2_CCI,
|
||||
.TotalInterfaces = 2,
|
||||
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
|
||||
.IADStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.IADStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
|
||||
.CDC2_CCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
.CDC2_CCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
|
||||
.InterfaceNumber = INTERFACE_ID_CDC2_CCI,
|
||||
.AlternateSetting = 0,
|
||||
.InterfaceNumber = INTERFACE_ID_CDC2_CCI,
|
||||
.AlternateSetting = 0,
|
||||
|
||||
.TotalEndpoints = 1,
|
||||
.TotalEndpoints = 1,
|
||||
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
.Class = CDC_CSCP_CDCClass,
|
||||
.SubClass = CDC_CSCP_ACMSubclass,
|
||||
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
|
||||
.CDC2_Functional_Header =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Header,
|
||||
.CDC2_Functional_Header =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Header,
|
||||
|
||||
.CDCSpecification = VERSION_BCD(1,1,0),
|
||||
},
|
||||
.CDCSpecification = VERSION_BCD(1,1,0),
|
||||
},
|
||||
|
||||
.CDC2_Functional_ACM =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_ACM,
|
||||
.CDC2_Functional_ACM =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_ACM,
|
||||
|
||||
.Capabilities = 0x06,
|
||||
},
|
||||
.Capabilities = 0x06,
|
||||
},
|
||||
|
||||
.CDC2_Functional_Union =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Union,
|
||||
.CDC2_Functional_Union =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
|
||||
.Subtype = CDC_DSUBTYPE_CSInterface_Union,
|
||||
|
||||
.MasterInterfaceNumber = INTERFACE_ID_CDC2_CCI,
|
||||
.SlaveInterfaceNumber = INTERFACE_ID_CDC2_DCI,
|
||||
},
|
||||
.MasterInterfaceNumber = INTERFACE_ID_CDC2_CCI,
|
||||
.SlaveInterfaceNumber = INTERFACE_ID_CDC2_DCI,
|
||||
},
|
||||
|
||||
.CDC2_ManagementEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
.CDC2_ManagementEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
|
||||
.EndpointAddress = CDC2_NOTIFICATION_EPADDR,
|
||||
.Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_NOTIFICATION_EPSIZE,
|
||||
.PollingIntervalMS = 0xFF
|
||||
},
|
||||
.EndpointAddress = CDC2_NOTIFICATION_EPADDR,
|
||||
.Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_NOTIFICATION_EPSIZE,
|
||||
.PollingIntervalMS = 0xFF
|
||||
},
|
||||
|
||||
.CDC2_DCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
.CDC2_DCI_Interface =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||
|
||||
.InterfaceNumber = INTERFACE_ID_CDC2_DCI,
|
||||
.AlternateSetting = 0,
|
||||
.InterfaceNumber = INTERFACE_ID_CDC2_DCI,
|
||||
.AlternateSetting = 0,
|
||||
|
||||
.TotalEndpoints = 2,
|
||||
.TotalEndpoints = 2,
|
||||
|
||||
.Class = CDC_CSCP_CDCDataClass,
|
||||
.SubClass = CDC_CSCP_NoDataSubclass,
|
||||
.Protocol = CDC_CSCP_NoDataProtocol,
|
||||
.Class = CDC_CSCP_CDCDataClass,
|
||||
.SubClass = CDC_CSCP_NoDataSubclass,
|
||||
.Protocol = CDC_CSCP_NoDataProtocol,
|
||||
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||
},
|
||||
|
||||
.CDC2_DataOutEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
.CDC2_DataOutEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
|
||||
.EndpointAddress = CDC2_RX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
},
|
||||
.EndpointAddress = CDC2_RX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
},
|
||||
|
||||
.CDC2_DataInEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
.CDC2_DataInEndpoint =
|
||||
{
|
||||
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||
|
||||
.EndpointAddress = CDC2_TX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
}
|
||||
.EndpointAddress = CDC2_TX_EPADDR,
|
||||
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||
.EndpointSize = CDC_TXRX_EPSIZE,
|
||||
.PollingIntervalMS = 0x05
|
||||
}
|
||||
};
|
||||
|
||||
/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
|
||||
|
@ -318,43 +318,43 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
|
|||
const uint16_t wIndex,
|
||||
const void** const DescriptorAddress)
|
||||
{
|
||||
const uint8_t DescriptorType = (wValue >> 8);
|
||||
const uint8_t DescriptorNumber = (wValue & 0xFF);
|
||||
const uint8_t DescriptorType = (wValue >> 8);
|
||||
const uint8_t DescriptorNumber = (wValue & 0xFF);
|
||||
|
||||
const void* Address = NULL;
|
||||
uint16_t Size = NO_DESCRIPTOR;
|
||||
const void* Address = NULL;
|
||||
uint16_t Size = NO_DESCRIPTOR;
|
||||
|
||||
switch (DescriptorType)
|
||||
{
|
||||
case DTYPE_Device:
|
||||
Address = &DeviceDescriptor;
|
||||
Size = sizeof(USB_Descriptor_Device_t);
|
||||
break;
|
||||
case DTYPE_Configuration:
|
||||
Address = &ConfigurationDescriptor;
|
||||
Size = sizeof(USB_Descriptor_Configuration_t);
|
||||
break;
|
||||
case DTYPE_String:
|
||||
switch (DescriptorNumber)
|
||||
{
|
||||
case STRING_ID_Language:
|
||||
Address = &LanguageString;
|
||||
Size = pgm_read_byte(&LanguageString.Header.Size);
|
||||
break;
|
||||
case STRING_ID_Manufacturer:
|
||||
Address = &ManufacturerString;
|
||||
Size = pgm_read_byte(&ManufacturerString.Header.Size);
|
||||
break;
|
||||
case STRING_ID_Product:
|
||||
Address = &ProductString;
|
||||
Size = pgm_read_byte(&ProductString.Header.Size);
|
||||
break;
|
||||
}
|
||||
switch (DescriptorType)
|
||||
{
|
||||
case DTYPE_Device:
|
||||
Address = &DeviceDescriptor;
|
||||
Size = sizeof(USB_Descriptor_Device_t);
|
||||
break;
|
||||
case DTYPE_Configuration:
|
||||
Address = &ConfigurationDescriptor;
|
||||
Size = sizeof(USB_Descriptor_Configuration_t);
|
||||
break;
|
||||
case DTYPE_String:
|
||||
switch (DescriptorNumber)
|
||||
{
|
||||
case STRING_ID_Language:
|
||||
Address = &LanguageString;
|
||||
Size = pgm_read_byte(&LanguageString.Header.Size);
|
||||
break;
|
||||
case STRING_ID_Manufacturer:
|
||||
Address = &ManufacturerString;
|
||||
Size = pgm_read_byte(&ManufacturerString.Header.Size);
|
||||
break;
|
||||
case STRING_ID_Product:
|
||||
Address = &ProductString;
|
||||
Size = pgm_read_byte(&ProductString.Header.Size);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
*DescriptorAddress = Address;
|
||||
return Size;
|
||||
*DescriptorAddress = Address;
|
||||
return Size;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,100 +36,100 @@
|
|||
#ifndef _DESCRIPTORS_H_
|
||||
#define _DESCRIPTORS_H_
|
||||
|
||||
/* Includes: */
|
||||
#include <LUFA/Drivers/USB/USB.h>
|
||||
/* Includes: */
|
||||
#include <LUFA/Drivers/USB/USB.h>
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
/* Macros: */
|
||||
/** Endpoint address of the first CDC interface's device-to-host data IN endpoint. */
|
||||
#define CDC1_TX_EPADDR (ENDPOINT_DIR_IN | 1)
|
||||
/* Macros: */
|
||||
/** Endpoint address of the first CDC interface's device-to-host data IN endpoint. */
|
||||
#define CDC1_TX_EPADDR (ENDPOINT_DIR_IN | 1)
|
||||
|
||||
/** Endpoint address of the first CDC interface's host-to-device data OUT endpoint. */
|
||||
#define CDC1_RX_EPADDR (ENDPOINT_DIR_OUT | 2)
|
||||
/** Endpoint address of the first CDC interface's host-to-device data OUT endpoint. */
|
||||
#define CDC1_RX_EPADDR (ENDPOINT_DIR_OUT | 2)
|
||||
|
||||
/** Endpoint address of the first CDC interface's device-to-host notification IN endpoint. */
|
||||
#define CDC1_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 3)
|
||||
/** Endpoint address of the first CDC interface's device-to-host notification IN endpoint. */
|
||||
#define CDC1_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 3)
|
||||
|
||||
/** Endpoint address of the second CDC interface's device-to-host data IN endpoint. */
|
||||
#define CDC2_TX_EPADDR (ENDPOINT_DIR_IN | 4)
|
||||
/** Endpoint address of the second CDC interface's device-to-host data IN endpoint. */
|
||||
#define CDC2_TX_EPADDR (ENDPOINT_DIR_IN | 4)
|
||||
|
||||
/** Endpoint address of the second CDC interface's host-to-device data OUT endpoint. */
|
||||
#define CDC2_RX_EPADDR (ENDPOINT_DIR_OUT | 5)
|
||||
/** Endpoint address of the second CDC interface's host-to-device data OUT endpoint. */
|
||||
#define CDC2_RX_EPADDR (ENDPOINT_DIR_OUT | 5)
|
||||
|
||||
/** Endpoint address of the second CDC interface's device-to-host notification IN endpoint. */
|
||||
#define CDC2_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 6)
|
||||
/** Endpoint address of the second CDC interface's device-to-host notification IN endpoint. */
|
||||
#define CDC2_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 6)
|
||||
|
||||
/** Size in bytes of the CDC device-to-host notification IN endpoints. */
|
||||
#define CDC_NOTIFICATION_EPSIZE 8
|
||||
/** Size in bytes of the CDC device-to-host notification IN endpoints. */
|
||||
#define CDC_NOTIFICATION_EPSIZE 8
|
||||
|
||||
/** Size in bytes of the CDC data IN and OUT endpoints. */
|
||||
#define CDC_TXRX_EPSIZE 16
|
||||
/** Size in bytes of the CDC data IN and OUT endpoints. */
|
||||
#define CDC_TXRX_EPSIZE 16
|
||||
|
||||
/* Type Defines: */
|
||||
/** Type define for the device configuration descriptor structure. This must be defined in the
|
||||
* application code, as the configuration descriptor contains several sub-descriptors which
|
||||
* vary between devices, and which describe the device's usage to the host.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
USB_Descriptor_Configuration_Header_t Config;
|
||||
/* Type Defines: */
|
||||
/** Type define for the device configuration descriptor structure. This must be defined in the
|
||||
* application code, as the configuration descriptor contains several sub-descriptors which
|
||||
* vary between devices, and which describe the device's usage to the host.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
USB_Descriptor_Configuration_Header_t Config;
|
||||
|
||||
// First CDC Control Interface
|
||||
USB_Descriptor_Interface_Association_t CDC1_IAD;
|
||||
USB_Descriptor_Interface_t CDC1_CCI_Interface;
|
||||
USB_CDC_Descriptor_FunctionalHeader_t CDC1_Functional_Header;
|
||||
USB_CDC_Descriptor_FunctionalACM_t CDC1_Functional_ACM;
|
||||
USB_CDC_Descriptor_FunctionalUnion_t CDC1_Functional_Union;
|
||||
USB_Descriptor_Endpoint_t CDC1_ManagementEndpoint;
|
||||
// First CDC Control Interface
|
||||
USB_Descriptor_Interface_Association_t CDC1_IAD;
|
||||
USB_Descriptor_Interface_t CDC1_CCI_Interface;
|
||||
USB_CDC_Descriptor_FunctionalHeader_t CDC1_Functional_Header;
|
||||
USB_CDC_Descriptor_FunctionalACM_t CDC1_Functional_ACM;
|
||||
USB_CDC_Descriptor_FunctionalUnion_t CDC1_Functional_Union;
|
||||
USB_Descriptor_Endpoint_t CDC1_ManagementEndpoint;
|
||||
|
||||
// First CDC Data Interface
|
||||
USB_Descriptor_Interface_t CDC1_DCI_Interface;
|
||||
USB_Descriptor_Endpoint_t CDC1_DataOutEndpoint;
|
||||
USB_Descriptor_Endpoint_t CDC1_DataInEndpoint;
|
||||
// First CDC Data Interface
|
||||
USB_Descriptor_Interface_t CDC1_DCI_Interface;
|
||||
USB_Descriptor_Endpoint_t CDC1_DataOutEndpoint;
|
||||
USB_Descriptor_Endpoint_t CDC1_DataInEndpoint;
|
||||
|
||||
// Second CDC Control Interface
|
||||
USB_Descriptor_Interface_Association_t CDC2_IAD;
|
||||
USB_Descriptor_Interface_t CDC2_CCI_Interface;
|
||||
USB_CDC_Descriptor_FunctionalHeader_t CDC2_Functional_Header;
|
||||
USB_CDC_Descriptor_FunctionalACM_t CDC2_Functional_ACM;
|
||||
USB_CDC_Descriptor_FunctionalUnion_t CDC2_Functional_Union;
|
||||
USB_Descriptor_Endpoint_t CDC2_ManagementEndpoint;
|
||||
// Second CDC Control Interface
|
||||
USB_Descriptor_Interface_Association_t CDC2_IAD;
|
||||
USB_Descriptor_Interface_t CDC2_CCI_Interface;
|
||||
USB_CDC_Descriptor_FunctionalHeader_t CDC2_Functional_Header;
|
||||
USB_CDC_Descriptor_FunctionalACM_t CDC2_Functional_ACM;
|
||||
USB_CDC_Descriptor_FunctionalUnion_t CDC2_Functional_Union;
|
||||
USB_Descriptor_Endpoint_t CDC2_ManagementEndpoint;
|
||||
|
||||
// Second CDC Data Interface
|
||||
USB_Descriptor_Interface_t CDC2_DCI_Interface;
|
||||
USB_Descriptor_Endpoint_t CDC2_DataOutEndpoint;
|
||||
USB_Descriptor_Endpoint_t CDC2_DataInEndpoint;
|
||||
} USB_Descriptor_Configuration_t;
|
||||
// Second CDC Data Interface
|
||||
USB_Descriptor_Interface_t CDC2_DCI_Interface;
|
||||
USB_Descriptor_Endpoint_t CDC2_DataOutEndpoint;
|
||||
USB_Descriptor_Endpoint_t CDC2_DataInEndpoint;
|
||||
} USB_Descriptor_Configuration_t;
|
||||
|
||||
/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
|
||||
* should have a unique ID index associated with it, which can be used to refer to the
|
||||
* interface from other descriptors.
|
||||
*/
|
||||
enum InterfaceDescriptors_t
|
||||
{
|
||||
INTERFACE_ID_CDC1_CCI = 0, /**< CDC1 CCI interface descriptor ID */
|
||||
INTERFACE_ID_CDC1_DCI = 1, /**< CDC1 DCI interface descriptor ID */
|
||||
INTERFACE_ID_CDC2_CCI = 2, /**< CDC2 CCI interface descriptor ID */
|
||||
INTERFACE_ID_CDC2_DCI = 3, /**< CDC2 DCI interface descriptor ID */
|
||||
};
|
||||
/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
|
||||
* should have a unique ID index associated with it, which can be used to refer to the
|
||||
* interface from other descriptors.
|
||||
*/
|
||||
enum InterfaceDescriptors_t
|
||||
{
|
||||
INTERFACE_ID_CDC1_CCI = 0, /**< CDC1 CCI interface descriptor ID */
|
||||
INTERFACE_ID_CDC1_DCI = 1, /**< CDC1 DCI interface descriptor ID */
|
||||
INTERFACE_ID_CDC2_CCI = 2, /**< CDC2 CCI interface descriptor ID */
|
||||
INTERFACE_ID_CDC2_DCI = 3, /**< CDC2 DCI interface descriptor ID */
|
||||
};
|
||||
|
||||
/** Enum for the device string descriptor IDs within the device. Each string descriptor should
|
||||
* have a unique ID index associated with it, which can be used to refer to the string from
|
||||
* other descriptors.
|
||||
*/
|
||||
enum StringDescriptors_t
|
||||
{
|
||||
STRING_ID_Language = 0, /**< Supported Languages string descriptor ID (must be zero) */
|
||||
STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
|
||||
STRING_ID_Product = 2, /**< Product string ID */
|
||||
};
|
||||
/** Enum for the device string descriptor IDs within the device. Each string descriptor should
|
||||
* have a unique ID index associated with it, which can be used to refer to the string from
|
||||
* other descriptors.
|
||||
*/
|
||||
enum StringDescriptors_t
|
||||
{
|
||||
STRING_ID_Language = 0, /**< Supported Languages string descriptor ID (must be zero) */
|
||||
STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
|
||||
STRING_ID_Product = 2, /**< Product string ID */
|
||||
};
|
||||
|
||||
/* Function Prototypes: */
|
||||
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
|
||||
const uint16_t wIndex,
|
||||
const void** const DescriptorAddress)
|
||||
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
|
||||
/* Function Prototypes: */
|
||||
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
|
||||
const uint16_t wIndex,
|
||||
const void** const DescriptorAddress)
|
||||
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -68,51 +68,51 @@ static CDC_LineEncoding_t LineEncoding2 = { .BaudRateBPS = 0,
|
|||
*/
|
||||
int main(void)
|
||||
{
|
||||
SetupHardware();
|
||||
SetupHardware();
|
||||
|
||||
|
||||
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
|
||||
|
||||
SET_ERR_MASK(ERRMASK_USB_NOTREADY);
|
||||
GlobalInterruptEnable();
|
||||
SET_ERR_MASK(ERRMASK_USB_NOTREADY);
|
||||
GlobalInterruptEnable();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
CDC1_Task();
|
||||
CDC2_Task();
|
||||
for (;;)
|
||||
{
|
||||
CDC1_Task();
|
||||
CDC2_Task();
|
||||
|
||||
USB_USBTask();
|
||||
}
|
||||
USB_USBTask();
|
||||
}
|
||||
}
|
||||
|
||||
/** Configures the board hardware and chip peripherals for the demo's functionality. */
|
||||
void SetupHardware(void)
|
||||
{
|
||||
#if (ARCH == ARCH_AVR8)
|
||||
/* Disable watchdog if enabled by bootloader/fuses */
|
||||
MCUSR &= ~(1 << WDRF);
|
||||
wdt_disable();
|
||||
/* Disable watchdog if enabled by bootloader/fuses */
|
||||
MCUSR &= ~(1 << WDRF);
|
||||
wdt_disable();
|
||||
|
||||
/* Disable clock division */
|
||||
clock_prescale_set(clock_div_1);
|
||||
/* Disable clock division */
|
||||
clock_prescale_set(clock_div_1);
|
||||
|
||||
#elif (ARCH == ARCH_XMEGA)
|
||||
/* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */
|
||||
XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU);
|
||||
XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL);
|
||||
/* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */
|
||||
XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU);
|
||||
XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL);
|
||||
|
||||
/* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */
|
||||
XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
|
||||
XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB);
|
||||
/* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */
|
||||
XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
|
||||
XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB);
|
||||
|
||||
PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
|
||||
PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
|
||||
#endif
|
||||
|
||||
/* UART Hardware Initialization */
|
||||
/* UART Hardware Initialization */
|
||||
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
|
||||
|
||||
/* USB Hardware Initialization */
|
||||
USB_Init();
|
||||
/* USB Hardware Initialization */
|
||||
USB_Init();
|
||||
}
|
||||
|
||||
/** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs and
|
||||
|
@ -120,8 +120,8 @@ void SetupHardware(void)
|
|||
*/
|
||||
void EVENT_USB_Device_Connect(void)
|
||||
{
|
||||
/* Indicate USB enumerating */
|
||||
SET_ERR_MASK(ERRMASK_USB_ENUMERATING);
|
||||
/* Indicate USB enumerating */
|
||||
SET_ERR_MASK(ERRMASK_USB_ENUMERATING);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via
|
||||
|
@ -129,8 +129,8 @@ void EVENT_USB_Device_Connect(void)
|
|||
*/
|
||||
void EVENT_USB_Device_Disconnect(void)
|
||||
{
|
||||
/* Indicate USB not ready */
|
||||
SET_ERR_MASK(ERRMASK_USB_NOTREADY);
|
||||
/* Indicate USB not ready */
|
||||
SET_ERR_MASK(ERRMASK_USB_NOTREADY);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_ConfigurationChanged event. This is fired when the host set the current configuration
|
||||
|
@ -138,24 +138,24 @@ void EVENT_USB_Device_Disconnect(void)
|
|||
*/
|
||||
void EVENT_USB_Device_ConfigurationChanged(void)
|
||||
{
|
||||
bool ConfigSuccess = true;
|
||||
bool ConfigSuccess = true;
|
||||
|
||||
/* Setup first CDC Interface's Endpoints */
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_TX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_RX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, 1);
|
||||
/* Setup first CDC Interface's Endpoints */
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_TX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_RX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, 1);
|
||||
|
||||
/* Setup second CDC Interface's Endpoints */
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_TX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_RX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, 1);
|
||||
/* Setup second CDC Interface's Endpoints */
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_TX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_RX_EPADDR, EP_TYPE_BULK, CDC_TXRX_EPSIZE, 1);
|
||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, 1);
|
||||
|
||||
/* Reset line encoding baud rates so that the host knows to send new values */
|
||||
LineEncoding1.BaudRateBPS = 0;
|
||||
LineEncoding2.BaudRateBPS = 0;
|
||||
/* Reset line encoding baud rates so that the host knows to send new values */
|
||||
LineEncoding1.BaudRateBPS = 0;
|
||||
LineEncoding2.BaudRateBPS = 0;
|
||||
|
||||
/* Indicate endpoint configuration success or failure */
|
||||
SET_ERR_MASK(ConfigSuccess ? ERRMASK_USB_READY : ERRMASK_USB_ERROR);
|
||||
/* Indicate endpoint configuration success or failure */
|
||||
SET_ERR_MASK(ConfigSuccess ? ERRMASK_USB_READY : ERRMASK_USB_ERROR);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_ControlRequest event. This is used to catch and process control requests sent to
|
||||
|
@ -164,43 +164,43 @@ void EVENT_USB_Device_ConfigurationChanged(void)
|
|||
*/
|
||||
void EVENT_USB_Device_ControlRequest(void)
|
||||
{
|
||||
/* Determine which interface's Line Coding data is being set from the wIndex parameter */
|
||||
void* LineEncodingData = (USB_ControlRequest.wIndex == 0) ? &LineEncoding1 : &LineEncoding2;
|
||||
/* Determine which interface's Line Coding data is being set from the wIndex parameter */
|
||||
void* LineEncodingData = (USB_ControlRequest.wIndex == 0) ? &LineEncoding1 : &LineEncoding2;
|
||||
|
||||
/* Process CDC specific control requests */
|
||||
switch (USB_ControlRequest.bRequest)
|
||||
{
|
||||
case CDC_REQ_GetLineEncoding:
|
||||
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
|
||||
{
|
||||
Endpoint_ClearSETUP();
|
||||
/* Process CDC specific control requests */
|
||||
switch (USB_ControlRequest.bRequest)
|
||||
{
|
||||
case CDC_REQ_GetLineEncoding:
|
||||
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
|
||||
{
|
||||
Endpoint_ClearSETUP();
|
||||
|
||||
/* Write the line coding data to the control endpoint */
|
||||
Endpoint_Write_Control_Stream_LE(LineEncodingData, sizeof(CDC_LineEncoding_t));
|
||||
Endpoint_ClearOUT();
|
||||
}
|
||||
/* Write the line coding data to the control endpoint */
|
||||
Endpoint_Write_Control_Stream_LE(LineEncodingData, sizeof(CDC_LineEncoding_t));
|
||||
Endpoint_ClearOUT();
|
||||
}
|
||||
|
||||
break;
|
||||
case CDC_REQ_SetLineEncoding:
|
||||
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
|
||||
{
|
||||
Endpoint_ClearSETUP();
|
||||
break;
|
||||
case CDC_REQ_SetLineEncoding:
|
||||
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
|
||||
{
|
||||
Endpoint_ClearSETUP();
|
||||
|
||||
/* Read the line coding data in from the host into the global struct */
|
||||
Endpoint_Read_Control_Stream_LE(LineEncodingData, sizeof(CDC_LineEncoding_t));
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
/* Read the line coding data in from the host into the global struct */
|
||||
Endpoint_Read_Control_Stream_LE(LineEncodingData, sizeof(CDC_LineEncoding_t));
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
|
||||
break;
|
||||
case CDC_REQ_SetControlLineState:
|
||||
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
|
||||
{
|
||||
Endpoint_ClearSETUP();
|
||||
Endpoint_ClearStatusStage();
|
||||
}
|
||||
break;
|
||||
case CDC_REQ_SetControlLineState:
|
||||
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
|
||||
{
|
||||
Endpoint_ClearSETUP();
|
||||
Endpoint_ClearStatusStage();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** Function to manage CDC data transmission and reception to and from the host for the first CDC interface,
|
||||
|
@ -208,33 +208,33 @@ void EVENT_USB_Device_ControlRequest(void)
|
|||
*/
|
||||
void CDC1_Task(void)
|
||||
{
|
||||
char* ReportString = NULL;
|
||||
static bool ActionSent = false;
|
||||
char* ReportString = NULL;
|
||||
static bool ActionSent = false;
|
||||
|
||||
/* Device must be connected and configured for the task to run */
|
||||
if (USB_DeviceState != DEVICE_STATE_Configured)
|
||||
return;
|
||||
/* Device must be connected and configured for the task to run */
|
||||
if (USB_DeviceState != DEVICE_STATE_Configured)
|
||||
return;
|
||||
|
||||
//===========================================================================
|
||||
/* Select the Serial Rx Endpoint */
|
||||
Endpoint_SelectEndpoint(CDC1_RX_EPADDR);
|
||||
Endpoint_SelectEndpoint(CDC1_RX_EPADDR);
|
||||
|
||||
if (Endpoint_IsOUTReceived())
|
||||
if (Endpoint_IsOUTReceived())
|
||||
{
|
||||
// TODO disable this line if data should be received
|
||||
Endpoint_ClearOUT(); // Throw away any received data from the host at this point
|
||||
Endpoint_ClearOUT(); // Throw away any received data from the host at this point
|
||||
|
||||
/* Create a temp buffer big enough to hold the incoming endpoint packet */
|
||||
uint8_t Buffer[Endpoint_BytesInEndpoint()];
|
||||
/* Create a temp buffer big enough to hold the incoming endpoint packet */
|
||||
uint8_t Buffer[Endpoint_BytesInEndpoint()];
|
||||
|
||||
/* Remember how large the incoming packet is */
|
||||
uint16_t DataLength = Endpoint_BytesInEndpoint();
|
||||
/* Remember how large the incoming packet is */
|
||||
uint16_t DataLength = Endpoint_BytesInEndpoint();
|
||||
|
||||
/* Read in the incoming packet into the buffer */
|
||||
Endpoint_Read_Stream_LE(&Buffer, DataLength, NULL);
|
||||
/* Read in the incoming packet into the buffer */
|
||||
Endpoint_Read_Stream_LE(&Buffer, DataLength, NULL);
|
||||
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
Endpoint_ClearOUT();
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
Endpoint_ClearOUT();
|
||||
|
||||
// TODO Read the data from the host
|
||||
// process the received data and descide to do an action
|
||||
|
@ -246,30 +246,30 @@ void CDC1_Task(void)
|
|||
}
|
||||
|
||||
//===========================================================================
|
||||
/* Determine if data/answeres should be sent to the host
|
||||
/* Determine if data/answeres should be sent to the host
|
||||
* the previous RX section should be clarify that behaviour.
|
||||
*/
|
||||
|
||||
/* Flag management - Only allow one string to be sent per action */
|
||||
if ((ReportString != NULL) && (ActionSent == false) && LineEncoding1.BaudRateBPS)
|
||||
{
|
||||
ActionSent = true;
|
||||
/* Flag management - Only allow one string to be sent per action */
|
||||
if ((ReportString != NULL) && (ActionSent == false) && LineEncoding1.BaudRateBPS)
|
||||
{
|
||||
ActionSent = true;
|
||||
|
||||
/* Select the Serial Tx Endpoint */
|
||||
Endpoint_SelectEndpoint(CDC1_TX_EPADDR);
|
||||
/* Select the Serial Tx Endpoint */
|
||||
Endpoint_SelectEndpoint(CDC1_TX_EPADDR);
|
||||
|
||||
/* Write the String to the Endpoint */
|
||||
Endpoint_Write_Stream_LE(ReportString, strlen(ReportString), NULL);
|
||||
/* Write the String to the Endpoint */
|
||||
Endpoint_Write_Stream_LE(ReportString, strlen(ReportString), NULL);
|
||||
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
Endpoint_ClearIN();
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
Endpoint_ClearIN();
|
||||
|
||||
/* Wait until the endpoint is ready for another packet */
|
||||
Endpoint_WaitUntilReady();
|
||||
/* Wait until the endpoint is ready for another packet */
|
||||
Endpoint_WaitUntilReady();
|
||||
|
||||
/* Send an empty packet to ensure that the host does not buffer data sent to it */
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
/* Send an empty packet to ensure that the host does not buffer data sent to it */
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -278,28 +278,28 @@ void CDC1_Task(void)
|
|||
*/
|
||||
void CDC2_Task(void)
|
||||
{
|
||||
/* Device must be connected and configured for the task to run */
|
||||
if (USB_DeviceState != DEVICE_STATE_Configured)
|
||||
return;
|
||||
/* Device must be connected and configured for the task to run */
|
||||
if (USB_DeviceState != DEVICE_STATE_Configured)
|
||||
return;
|
||||
|
||||
//===========================================================================
|
||||
/* Select the Serial Rx Endpoint */
|
||||
Endpoint_SelectEndpoint(CDC2_RX_EPADDR);
|
||||
/* Select the Serial Rx Endpoint */
|
||||
Endpoint_SelectEndpoint(CDC2_RX_EPADDR);
|
||||
|
||||
/* Check to see if any data has been received */
|
||||
if (Endpoint_IsOUTReceived())
|
||||
{
|
||||
/* Create a temp buffer big enough to hold the incoming endpoint packet */
|
||||
uint8_t Buffer[Endpoint_BytesInEndpoint()];
|
||||
/* Check to see if any data has been received */
|
||||
if (Endpoint_IsOUTReceived())
|
||||
{
|
||||
/* Create a temp buffer big enough to hold the incoming endpoint packet */
|
||||
uint8_t Buffer[Endpoint_BytesInEndpoint()];
|
||||
|
||||
/* Remember how large the incoming packet is */
|
||||
uint16_t DataLength = Endpoint_BytesInEndpoint();
|
||||
/* Remember how large the incoming packet is */
|
||||
uint16_t DataLength = Endpoint_BytesInEndpoint();
|
||||
|
||||
/* Read in the incoming packet into the buffer */
|
||||
Endpoint_Read_Stream_LE(&Buffer, DataLength, NULL);
|
||||
/* Read in the incoming packet into the buffer */
|
||||
Endpoint_Read_Stream_LE(&Buffer, DataLength, NULL);
|
||||
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
Endpoint_ClearOUT();
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
Endpoint_ClearOUT();
|
||||
|
||||
// TODO at this point send the data to the USART
|
||||
// Send USART &Buffer
|
||||
|
@ -307,7 +307,7 @@ void CDC2_Task(void)
|
|||
{
|
||||
uart_putc(Buffer[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
uint8_t outBuffer[OUTPUT_BUFFER_SIZE];
|
||||
|
@ -315,7 +315,7 @@ void CDC2_Task(void)
|
|||
// Fill &Buffer with USART data or send the USART input buffer direct
|
||||
uint16_t cnt = 0;
|
||||
uint8_t c = uart_getc();
|
||||
while (c != UART_NO_DATA && cnt < OUTPUT_BUFFER_SIZE)
|
||||
while (!(c & UART_NO_DATA) && cnt < OUTPUT_BUFFER_SIZE)
|
||||
{
|
||||
outBuffer[cnt] = c;
|
||||
c = uart_getc();
|
||||
|
|
|
@ -36,53 +36,53 @@
|
|||
#ifndef _DUAL_VIRTUALSERIAL_H_
|
||||
#define _DUAL_VIRTUALSERIAL_H_
|
||||
|
||||
/* Includes: */
|
||||
#include <avr/io.h>
|
||||
#include <avr/wdt.h>
|
||||
#include <avr/power.h>
|
||||
#include <avr/interrupt.h>
|
||||
/* Includes: */
|
||||
#include <avr/io.h>
|
||||
#include <avr/wdt.h>
|
||||
#include <avr/power.h>
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "Descriptors.h"
|
||||
#include "Descriptors.h"
|
||||
|
||||
#include <LUFA/Drivers/USB/USB.h>
|
||||
#include <LUFA/Platform/Platform.h>
|
||||
#include <LUFA/Drivers/USB/USB.h>
|
||||
#include <LUFA/Platform/Platform.h>
|
||||
|
||||
uint8_t error_mask = 0x00;
|
||||
|
||||
/* UART definitions: */
|
||||
/* UART definitions: */
|
||||
|
||||
#define UART_BAUD_RATE 115200
|
||||
#define OUTPUT_BUFFER_SIZE 100
|
||||
|
||||
#include "uart/uart.h" // include after the definition
|
||||
|
||||
/* Macros: */
|
||||
/* Macros: */
|
||||
|
||||
#define SET_ERR_MASK(m) error_mask = m
|
||||
|
||||
/** Error mask, to indicate that the USB interface is not ready. */
|
||||
#define ERRMASK_USB_NOTREADY (1 << 0)
|
||||
/** Error mask, to indicate that the USB interface is not ready. */
|
||||
#define ERRMASK_USB_NOTREADY (1 << 0)
|
||||
|
||||
/** Error mask, to indicate that the USB interface is enumerating. */
|
||||
#define ERRMASK_USB_ENUMERATING ((1 << 1) | (1 << 2))
|
||||
/** Error mask, to indicate that the USB interface is enumerating. */
|
||||
#define ERRMASK_USB_ENUMERATING ((1 << 1) | (1 << 2))
|
||||
|
||||
/** Error mask, to indicate that the USB interface is ready. */
|
||||
#define ERRMASK_USB_READY ((1 << 1) | (1 << 3))
|
||||
/** Error mask, to indicate that the USB interface is ready. */
|
||||
#define ERRMASK_USB_READY ((1 << 1) | (1 << 3))
|
||||
|
||||
/** Error mask, to indicate that an error has occurred in the USB interface. */
|
||||
#define ERRMASK_USB_ERROR ((1 << 0) | (1 << 2))
|
||||
/** Error mask, to indicate that an error has occurred in the USB interface. */
|
||||
#define ERRMASK_USB_ERROR ((1 << 0) | (1 << 2))
|
||||
|
||||
/* Function Prototypes: */
|
||||
void CDC1_Task(void);
|
||||
void CDC2_Task(void);
|
||||
void SetupHardware(void);
|
||||
/* Function Prototypes: */
|
||||
void CDC1_Task(void);
|
||||
void CDC2_Task(void);
|
||||
void SetupHardware(void);
|
||||
|
||||
void EVENT_USB_Device_Connect(void);
|
||||
void EVENT_USB_Device_Disconnect(void);
|
||||
void EVENT_USB_Device_ConfigurationChanged(void);
|
||||
void EVENT_USB_Device_ControlRequest(void);
|
||||
void EVENT_USB_Device_Connect(void);
|
||||
void EVENT_USB_Device_Disconnect(void);
|
||||
void EVENT_USB_Device_ConfigurationChanged(void);
|
||||
void EVENT_USB_Device_ControlRequest(void);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue