From 5a0e74de7a91ad2ce05e2143c0fcbec67638712a Mon Sep 17 00:00:00 2001 From: klaute Date: Wed, 17 Aug 2016 19:47:39 +0200 Subject: [PATCH] Tabs replaced by spaces. --- pcb/USB2SerialMux.kicad_pcb | 415 +----------------------------------- src/Descriptors.c | 414 +++++++++++++++++------------------ src/Descriptors.h | 154 ++++++------- src/USB2SerialMux.c | 246 ++++++++++----------- src/USB2SerialMux.h | 54 ++--- 5 files changed, 436 insertions(+), 847 deletions(-) diff --git a/pcb/USB2SerialMux.kicad_pcb b/pcb/USB2SerialMux.kicad_pcb index c5f2cac..ac5788f 100755 --- a/pcb/USB2SerialMux.kicad_pcb +++ b/pcb/USB2SerialMux.kicad_pcb @@ -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) - ) - ) ) ) diff --git a/src/Descriptors.c b/src/Descriptors.c index 612bcd6..b7c9020 100755 --- a/src/Descriptors.c +++ b/src/Descriptors.c @@ -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; } diff --git a/src/Descriptors.h b/src/Descriptors.h index bc96ef4..9acbc0e 100755 --- a/src/Descriptors.h +++ b/src/Descriptors.h @@ -36,100 +36,100 @@ #ifndef _DESCRIPTORS_H_ #define _DESCRIPTORS_H_ - /* Includes: */ - #include + /* Includes: */ + #include - #include + #include - /* 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 diff --git a/src/USB2SerialMux.c b/src/USB2SerialMux.c index 16f3d84..27e7092 100755 --- a/src/USB2SerialMux.c +++ b/src/USB2SerialMux.c @@ -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(); diff --git a/src/USB2SerialMux.h b/src/USB2SerialMux.h index 5701436..eea9774 100755 --- a/src/USB2SerialMux.h +++ b/src/USB2SerialMux.h @@ -36,53 +36,53 @@ #ifndef _DUAL_VIRTUALSERIAL_H_ #define _DUAL_VIRTUALSERIAL_H_ - /* Includes: */ - #include - #include - #include - #include + /* Includes: */ + #include + #include + #include + #include - #include + #include - #include "Descriptors.h" + #include "Descriptors.h" - #include - #include + #include + #include 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