diff --git a/Doc/Schematic_RP2350-MIDI-Lighter_Core_LDO_2025-08-27.pdf b/Doc/Schematic_RP2350-MIDI-Lighter_Core_LDO_2025-08-27.pdf new file mode 100644 index 0000000..30fe17b --- /dev/null +++ b/Doc/Schematic_RP2350-MIDI-Lighter_Core_LDO_2025-08-27.pdf @@ -0,0 +1,23498 @@ +%PDF-1.4 +%ºß¬à +3 0 obj +<> +endobj +4 0 obj +<< +/Length 57079 +>> +stream +0.20 w +0 G +2 J +0 j +100 M +1.00 g +[] 0 d +0.00 827.20 1169.00 -827.20 re +f +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +216.000 806.500 m +216.000 816.500 l +216.000 20.500 m +216.000 10.500 l +412.000 806.500 m +412.000 816.500 l +412.000 20.500 m +412.000 10.500 l +608.000 806.500 m +608.000 816.500 l +608.000 20.500 m +608.000 10.500 l +804.000 806.500 m +804.000 816.500 l +804.000 20.500 m +804.000 10.500 l +1000.000 806.500 m +1000.000 816.500 l +1000.000 20.500 m +1000.000 10.500 l +20.000 610.500 m +10.000 610.500 l +1149.000 610.500 m +1159.000 610.500 l +20.000 414.500 m +10.000 414.500 l +1149.000 414.500 m +1159.000 414.500 l +20.000 218.500 m +10.000 218.500 l +1149.000 218.500 m +1159.000 218.500 l +20.000 22.500 m +10.000 22.500 l +1149.000 22.500 m +1159.000 22.500 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 708.50 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 708.50 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 512.50 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 512.50 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 316.50 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 316.50 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 120.50 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 120.50 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 808.00 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 12.00 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 808.00 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 12.00 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 808.00 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 12.00 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 808.00 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 12.00 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 808.00 Td +(5) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 12.00 Td +(5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +20.00 806.50 1129.00 -786.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +10.00 816.50 1149.00 -806.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.00 100.50 444.00 -80.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +705.100 61.250 m +1148.630 61.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 41.250 m +1148.630 41.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.610 100.430 m +1069.630 61.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.630 61.250 m +1069.630 41.250 l +S +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +710.00 87.50 Td +(TITLE:) Tj +ET +10.00 w +BT +/F1 13 Tf +13.00 TL +0.000 0.000 1.000 rg +767.62 74.91 Td +(01 Power) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1074.62 74.25 Td +(REV:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1112.62 74.25 Td +(1.0) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 25.50 Td +(Date:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +861.62 25.02 Td +(2025-05-28) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1073.62 45.50 Td +(Sheet:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1118.62 45.02 Td +(1/5) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +953.62 25.25 Td +(Drawn By:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1018.63 25.25 Td +(chros) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 47.25 Td +(Company:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +881.25 47.14 Td +(Your Company) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 61.250 m +809.630 21.250 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +396.000 209.500 m +404.000 201.500 l +404.000 209.500 m +396.000 201.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +396.000 269.500 m +404.000 261.500 l +404.000 269.500 m +396.000 261.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +410.05 597.34 Td +(B5819WS_C22624) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +410.05 588.34 Td +(D3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +430.000 621.500 m +440.000 615.500 l +430.000 608.500 l +h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +443.000 621.500 m +443.000 622.500 l +441.000 622.500 l +441.000 607.500 l +439.000 607.500 l +439.000 608.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +455.000 615.500 m +440.000 615.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 615.500 m +430.000 615.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +650.00 533.25 Td +(10u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +650.00 542.25 Td +(C4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +632.000 543.500 m +648.000 543.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +632.000 547.500 m +648.000 547.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +640.000 530.500 m +640.000 540.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +640.000 560.500 m +640.000 550.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +640.000 540.500 m +640.000 543.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +640.000 547.500 m +640.000 550.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +409.04 645.69 Td +(SS24_C908678) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +409.04 636.71 Td +(D1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +430.000 671.500 m +440.000 665.500 l +430.000 658.500 l +h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +443.000 671.500 m +443.000 672.500 l +441.000 672.500 l +441.000 657.500 l +439.000 657.500 l +439.000 658.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +455.000 665.500 m +440.000 665.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 665.500 m +430.000 665.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 570.500 m +680.000 580.500 l +705.000 580.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +720.000 580.500 m +705.000 580.500 l +705.000 570.500 l +720.000 570.500 l +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +585.00 405.50 Td +(USB ESD Protection) Tj +ET +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +585.00 400.50 410.00 -290.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +815.000 170.500 m +815.000 165.500 l +825.000 165.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +815.000 290.500 m +815.000 295.500 l +825.000 295.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +745.000 290.500 m +745.000 295.500 l +735.000 295.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +735.000 165.500 m +745.000 165.500 l +745.000 170.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 847.03 292.01 Tm +(USB_MCU_D+) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +825.000 295.500 m +830.000 300.500 l +845.000 300.500 l +845.000 290.500 l +830.000 290.500 l +825.000 295.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 646.02 291.81 Tm +(USB_MCU_D-) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +735.000 295.500 m +730.000 290.500 l +715.000 290.500 l +715.000 300.500 l +730.000 300.500 l +735.000 295.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 640.09 161.86 Tm +(USB_CONN_D-) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +735.000 165.500 m +730.000 160.500 l +715.000 160.500 l +715.000 170.500 l +730.000 170.500 l +735.000 165.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 847.04 161.96 Tm +(USB_CONN_D+) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +825.000 165.500 m +830.000 170.500 l +845.000 170.500 l +845.000 160.500 l +830.000 160.500 l +825.000 165.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +780.000 170.500 m +780.000 160.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +345.000 345.500 m +780.000 345.500 l +780.000 300.500 l +780.000 290.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +770.00 150.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +780.000 160.500 m +780.000 150.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +827.00 218.14 Td +(USBLC6-2SC6Y) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +827.00 227.29 Td +(U4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +745.000 170.500 m +745.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +780.000 170.500 m +780.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +770.000 210.500 m +760.000 220.500 l +750.000 210.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +750.000 220.500 m +770.000 220.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +770.000 240.500 m +760.000 250.500 l +750.000 240.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +750.000 250.500 m +770.000 250.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +810.000 210.500 m +800.000 220.500 l +790.000 210.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +790.000 220.500 m +810.000 220.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +810.000 240.500 m +800.000 250.500 l +790.000 240.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +790.000 250.500 m +810.000 250.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +790.000 225.500 m +780.000 235.500 l +770.000 225.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +770.000 235.500 m +790.000 235.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +745.000 200.500 m +745.000 200.500 l +815.000 200.500 l +815.000 200.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +815.000 260.500 m +815.000 260.500 l +745.000 260.500 l +745.000 260.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +760.000 250.500 m +760.000 260.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +760.000 240.500 m +760.000 220.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +760.000 210.500 m +760.000 200.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +780.000 225.500 m +780.000 200.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +780.000 235.500 m +780.000 260.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +800.000 260.500 m +800.000 250.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +800.000 240.500 m +800.000 220.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +800.000 210.500 m +800.000 200.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +760.000 230.500 m +745.000 230.500 l +745.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +815.000 230.500 m +815.000 225.500 l +815.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +800.000 230.500 m +815.000 230.500 l +815.000 270.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +780.000 260.500 m +780.000 270.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +780.000 200.500 m +780.000 190.500 l +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +761.00 230.50 m 761.00 231.05 760.55 231.50 760.00 231.50 c +759.45 231.50 759.00 231.05 759.00 230.50 c +759.00 229.95 759.45 229.50 760.00 229.50 c +760.55 229.50 761.00 229.95 761.00 230.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +761.00 200.50 m 761.00 201.05 760.55 201.50 760.00 201.50 c +759.45 201.50 759.00 201.05 759.00 200.50 c +759.00 199.95 759.45 199.50 760.00 199.50 c +760.55 199.50 761.00 199.95 761.00 200.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +761.00 260.50 m 761.00 261.05 760.55 261.50 760.00 261.50 c +759.45 261.50 759.00 261.05 759.00 260.50 c +759.00 259.95 759.45 259.50 760.00 259.50 c +760.55 259.50 761.00 259.95 761.00 260.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +801.00 260.50 m 801.00 261.05 800.55 261.50 800.00 261.50 c +799.45 261.50 799.00 261.05 799.00 260.50 c +799.00 259.95 799.45 259.50 800.00 259.50 c +800.55 259.50 801.00 259.95 801.00 260.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +801.00 200.50 m 801.00 201.05 800.55 201.50 800.00 201.50 c +799.45 201.50 799.00 201.05 799.00 200.50 c +799.00 199.95 799.45 199.50 800.00 199.50 c +800.55 199.50 801.00 199.95 801.00 200.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +801.00 230.50 m 801.00 231.05 800.55 231.50 800.00 231.50 c +799.45 231.50 799.00 231.05 799.00 230.50 c +799.00 229.95 799.45 229.50 800.00 229.50 c +800.55 229.50 801.00 229.95 801.00 230.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +781.00 260.50 m 781.00 261.05 780.55 261.50 780.00 261.50 c +779.45 261.50 779.00 261.05 779.00 260.50 c +779.00 259.95 779.45 259.50 780.00 259.50 c +780.55 259.50 781.00 259.95 781.00 260.50 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +781.00 200.50 m 781.00 201.05 780.55 201.50 780.00 201.50 c +779.45 201.50 779.00 201.05 779.00 200.50 c +779.00 199.95 779.45 199.50 780.00 199.50 c +780.55 199.50 781.00 199.95 781.00 200.50 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +790.000 235.500 m +790.000 232.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +770.000 235.500 m +770.000 238.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +815.000 170.500 m +815.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +815.000 290.500 m +815.000 270.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +780.000 290.500 m +780.000 270.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +745.000 290.500 m +745.000 270.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +737.000 270.500 m +823.000 270.500 l +824.105 270.500 825.000 269.605 825.000 268.500 c +825.000 192.500 l +825.000 191.395 823.895 190.500 823.000 190.500 c +737.000 190.500 l +735.895 190.500 735.000 191.605 735.000 192.500 c +735.000 268.500 l +735.000 269.605 736.105 270.500 737.000 270.500 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +742.50 195.50 m 742.50 196.88 741.38 198.00 740.00 198.00 c +738.62 198.00 737.50 196.88 737.50 195.50 c +737.50 194.12 738.62 193.00 740.00 193.00 c +741.38 193.00 742.50 194.12 742.50 195.50 c +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +745.000 270.500 m +745.000 230.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +495.00 130.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +505.000 140.500 m +505.000 130.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 215.500 m +370.000 215.500 l +370.000 235.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 245.500 m +385.000 245.500 l +385.000 225.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 255.500 m +280.000 255.500 l +280.000 190.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 195.500 m +330.000 195.500 l +330.000 190.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +305.000 145.500 m +330.000 145.500 l +330.000 150.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 185.500 m +345.000 185.500 l +345.000 275.500 l +400.000 275.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +874.81 587.83 Td +(4.7u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +874.81 596.87 Td +(L1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +900.000 580.500 m +897.000 580.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +860.000 580.500 m +863.000 580.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +863.117 580.568 m +862.91 582.71 864.53 584.61 866.73 584.81 c +868.93 585.01 870.88 583.44 871.08 581.29 c +871.11 581.05 871.11 580.81 871.08 580.56 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +871.600 580.571 m +871.40 582.72 873.01 584.62 875.21 584.82 c +877.41 585.02 879.36 583.44 879.57 581.29 c +879.59 581.05 879.59 580.81 879.57 580.57 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +880.067 580.571 m +879.86 582.72 881.48 584.62 883.68 584.82 c +885.88 585.02 887.83 583.44 888.03 581.29 c +888.06 581.05 888.06 580.81 888.03 580.57 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +888.700 580.569 m +888.50 582.71 890.11 584.61 892.31 584.81 c +894.51 585.01 896.46 583.44 896.67 581.29 c +896.69 581.05 896.69 580.81 896.66 580.56 c +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +585.00 735.50 Td +(Step-Down \(Buck\) Converter) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +70.00 405.50 Td +(USB-C Connector) Tj +ET +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +797.00 583.00 Td +(Buck_SW) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +795.000 581.500 m +795.000 579.500 l +794.000 580.500 m +796.000 580.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +790.000 570.500 m +795.000 570.500 l +795.000 520.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +728.97 602.25 Td +(AP63203WU-7) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +728.97 611.23 Td +(U2) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +732.000 600.500 m +778.000 600.500 l +779.105 600.500 780.000 599.605 780.000 598.500 c +780.000 562.500 l +780.000 561.395 778.895 560.500 778.000 560.500 c +732.000 560.500 l +730.895 560.500 730.000 561.605 730.000 562.500 c +730.000 598.500 l +730.000 599.605 731.105 600.500 732.000 600.500 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +736.50 595.50 m 736.50 596.33 735.83 597.00 735.00 597.00 c +734.17 597.00 733.50 596.33 733.50 595.50 c +733.50 594.67 734.17 594.00 735.00 594.00 c +735.83 594.00 736.50 594.67 736.50 595.50 c +B +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 733.70 586.50 Tm +(FB) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 723.78 591.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 590.500 m +730.000 590.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 733.70 576.50 Tm +(EN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 723.78 581.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 580.500 m +730.000 580.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 733.70 566.50 Tm +(VIN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 723.78 571.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 570.500 m +730.000 570.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 755.66 566.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 780.50 571.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +790.000 570.500 m +780.000 570.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 761.26 576.50 Tm +(SW) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 780.50 581.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +790.000 580.500 m +780.000 580.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 758.44 586.50 Tm +(BST) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 780.50 591.50 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +790.000 590.500 m +780.000 590.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +819.01 611.50 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +819.01 620.40 Td +(C1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +823.000 608.500 m +823.000 592.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +827.000 608.500 m +827.000 592.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +810.000 600.500 m +820.000 600.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +840.000 600.500 m +830.000 600.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +820.000 600.500 m +823.000 600.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +827.000 600.500 m +830.000 600.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 530.500 m +680.000 520.500 l +640.000 520.500 l +640.000 530.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 560.500 m +680.000 570.500 l +640.000 570.500 l +640.000 560.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 520.500 m +810.000 520.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +720.000 590.500 m +715.000 590.500 l +715.000 640.500 l +910.000 640.500 l +910.000 580.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +790.000 580.500 m +850.000 580.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +790.000 590.500 m +795.000 590.500 l +795.000 600.500 l +810.000 600.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +840.000 600.500 m +850.000 600.500 l +850.000 580.500 l +860.000 580.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +690.00 533.25 Td +(10u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +690.00 542.25 Td +(C5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +672.000 543.500 m +688.000 543.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +672.000 547.500 m +688.000 547.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +680.000 530.500 m +680.000 540.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +680.000 560.500 m +680.000 550.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +680.000 540.500 m +680.000 543.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +680.000 547.500 m +680.000 550.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +920.000 530.500 m +920.000 520.500 l +960.000 520.500 l +960.000 530.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +960.000 570.500 m +960.000 580.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +970.00 538.25 Td +(22u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +970.00 547.25 Td +(C3) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +968.000 548.500 m +952.000 548.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +960.000 540.500 m +960.000 530.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +960.000 560.500 m +960.000 552.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +952.000 552.500 m +968.000 552.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +960.000 560.500 m +960.000 570.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +960.000 548.500 m +960.000 540.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +930.00 538.25 Td +(22u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +930.00 547.25 Td +(C2) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +928.000 548.500 m +912.000 548.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +920.000 540.500 m +920.000 530.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +920.000 560.500 m +920.000 552.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +912.000 552.500 m +928.000 552.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +920.000 560.500 m +920.000 570.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +920.000 548.500 m +920.000 540.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 946.28 653.59 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +960.000 650.500 m +960.000 640.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +955.000 650.500 m +965.000 650.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 669.28 608.59 Tm +(VSYS) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +680.000 605.500 m +680.000 595.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +675.000 605.500 m +685.000 605.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +920.000 520.500 m +810.000 520.500 l +810.000 510.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +800.00 500.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +810.000 510.500 m +810.000 500.500 l +S +1 J +1 j +1.00 w +0.29 0.65 0.29 RG +0.00 g +[] 0 d +920.000 580.500 m +960.000 580.500 l +960.000 640.500 l +S +1 J +1 j +1.00 w +0.29 0.65 0.29 RG +0.00 g +[] 0 d +900.000 580.500 m +920.000 580.500 l +920.000 570.500 l +S +1 J +1 j +1.00 w +0.29 0.65 0.29 RG +0.00 g +[] 0 d +680.000 580.500 m +680.000 595.500 l +S +10.00 w +BT +/F1 7 Tf +7.00 TL +0.514 g +715.00 650.50 Td +(VIN: 3.8 - 32V) Tj +T* (Iout: 2A Max) Tj +ET +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +585.00 730.50 490.00 -300.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 150.500 m +280.000 145.500 l +305.000 145.500 l +305.000 140.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +295.00 130.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +305.000 140.500 m +305.000 130.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +337.00 158.31 Td +(5.1k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +337.00 167.29 Td +(R5) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +325.00 180.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +330.000 180.500 m +330.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +330.000 160.500 m +330.000 150.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.00 158.31 Td +(5.1k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.00 167.29 Td +(R4) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +275.00 180.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 180.500 m +280.000 190.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 160.500 m +280.000 150.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +70.00 400.50 490.00 -290.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +285.000 345.500 m +200.000 345.500 l +200.000 360.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 474.28 693.59 Tm +(VSYS) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +485.000 690.500 m +485.000 680.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +480.000 690.500 m +490.000 690.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 225.500 m +235.000 225.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 235.500 m +235.000 235.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 138.20 221.95 Tm +(USB_CONN_D-) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +235.000 225.500 m +230.000 220.500 l +215.000 220.500 l +215.000 230.500 l +230.000 230.500 l +235.000 225.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 135.67 231.95 Tm +(USB_CONN_D+) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +235.000 235.500 m +230.000 230.500 l +215.000 230.500 l +215.000 240.500 l +230.000 240.500 l +235.000 235.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 188.00 372.50 Tm +(VBUS) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +200.000 370.500 m +200.000 360.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +195.000 370.500 m +205.000 370.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +112.54 678.68 Td +(DC-005H-D020) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +112.54 687.72 Td +(U1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 130.00 666.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +140.000 665.500 m +130.000 665.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 130.00 636.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +140.000 635.500 m +130.000 635.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 130.00 646.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +140.000 645.500 m +130.000 645.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +112.000 667.500 m +113.000 668.500 l +115.000 668.500 l +115.000 662.500 l +113.000 662.500 l +112.000 663.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +112.000 667.500 m +112.000 663.500 l +98.000 663.500 l +95.000 665.500 l +98.000 667.500 l +112.000 667.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +107.000 645.500 m +102.000 650.500 l +97.000 645.500 l +97.000 645.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +107.000 645.500 m +130.000 645.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +115.000 665.500 m +130.000 665.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +150.00 580.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +160.000 590.500 m +160.000 580.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +140.000 635.500 m +150.000 635.500 l +150.000 645.500 l +140.000 645.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 244.28 688.59 Tm +(VEXT) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +255.000 685.500 m +255.000 675.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +250.000 685.500 m +260.000 685.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +140.000 665.500 m +255.000 665.500 l +255.000 675.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +255.000 665.500 m +295.000 665.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +455.000 665.500 m +485.000 665.500 l +485.000 680.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +455.000 615.500 m +485.000 615.500 l +485.000 665.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +70.00 730.50 490.00 -300.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +70.00 735.50 Td +(Power Plug & Voltage Feedback) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +300.75 651.76 Td +(2920L125/60GR) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +300.75 642.88 Td +(F1) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +302.100 668.500 m +327.900 668.500 l +327.955 668.500 328.000 668.455 328.000 668.400 c +328.000 662.600 l +328.000 662.545 327.945 662.500 327.900 662.500 c +302.100 662.500 l +302.045 662.500 302.000 662.555 302.000 662.600 c +302.000 668.400 l +302.000 668.455 302.055 668.500 302.100 668.500 c +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +295.000 665.500 m +305.000 665.500 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +335.000 665.500 m +325.000 665.500 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +305.000 665.500 m +325.000 665.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +301.64 601.76 Td +(SMD1206-100C-30V) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +301.64 592.88 Td +(F2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +305.000 615.500 m +325.000 615.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +305.000 615.500 m +295.000 615.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +325.000 615.500 m +335.000 615.500 l +S +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +305.00 619.50 20.00 -8.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +335.000 665.500 m +415.000 665.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +335.000 615.500 m +415.000 615.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +330.25 477.24 Td +(MCP6001M5/TR) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +330.25 486.24 Td +(U3) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 356.29 521.50 Tm +(VDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 380.50 526.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +390.000 525.500 m +380.000 525.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 361.70 501.50 Tm +(IN-) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 380.50 506.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 505.500 m +380.000 505.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 333.70 501.50 Tm +(IN+) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 323.79 506.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +320.000 505.500 m +330.000 505.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 333.70 511.50 Tm +(VSS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 323.79 516.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +320.000 515.500 m +330.000 515.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 333.70 521.50 Tm +(OUT) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 323.79 526.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +320.000 525.500 m +330.000 525.500 l +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +336.50 530.50 m 336.50 531.33 335.83 532.00 335.00 532.00 c +334.17 532.00 333.50 531.33 333.50 530.50 c +333.50 529.67 334.17 529.00 335.00 529.00 c +335.83 529.00 336.50 529.67 336.50 530.50 c +B +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +332.000 535.500 m +378.000 535.500 l +379.105 535.500 380.000 534.605 380.000 533.500 c +380.000 497.500 l +380.000 496.395 378.895 495.500 378.000 495.500 c +332.000 495.500 l +330.895 495.500 330.000 496.605 330.000 497.500 c +330.000 533.500 l +330.000 534.605 331.105 535.500 332.000 535.500 c +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +300.00 440.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +310.000 450.500 m +310.000 440.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +320.000 515.500 m +310.000 515.500 l +310.000 450.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 401.28 568.59 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +415.000 565.500 m +415.000 555.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +410.000 565.500 m +420.000 565.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +390.000 525.500 m +415.000 525.500 l +415.000 555.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +320.000 525.500 m +310.000 525.500 l +310.000 545.500 l +400.000 545.500 l +400.000 505.500 l +390.000 505.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +425.00 468.31 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +425.00 477.29 Td +(C6) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +423.000 478.500 m +407.000 478.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 470.500 m +415.000 460.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +415.000 490.500 m +415.000 482.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +407.000 482.500 m +423.000 482.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 490.500 m +415.000 500.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +415.000 478.500 m +415.000 470.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +405.00 440.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +415.000 450.500 m +415.000 440.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 507.00 501.93 Tm +(FB_VEXT) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +485.000 505.500 m +490.000 510.500 l +505.000 510.500 l +505.000 500.500 l +490.000 500.500 l +485.000 505.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +415.000 500.500 m +415.000 525.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +425.000 505.500 m +400.000 505.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +415.000 450.500 m +415.000 460.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +270.00 440.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +280.000 450.500 m +280.000 440.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 495.500 m +280.000 505.500 l +320.000 505.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 515.500 m +280.000 510.500 l +280.000 505.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 555.500 m +280.000 665.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 455.500 m +280.000 450.500 l +S +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +75.00 650.50 Td +(DNP) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.00 523.32 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.00 532.21 Td +(R1) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +275.00 545.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 545.500 m +280.000 555.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 525.500 m +280.000 515.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.00 463.34 Td +(1k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.00 472.24 Td +(R3) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +275.00 485.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 485.500 m +280.000 495.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 465.500 m +280.000 455.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +179.00 623.26 Td +(SM6T36A) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +179.00 632.17 Td +(D2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 615.500 m +170.000 630.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 655.500 m +170.000 640.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +176.000 643.500 m +177.000 643.500 l +177.000 641.500 l +162.000 641.500 l +162.000 639.500 l +163.000 639.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +176.000 630.500 m +170.000 640.500 l +163.000 630.500 l +h +B +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +170.000 655.500 m +170.000 665.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +485.00 468.31 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +485.00 477.29 Td +(C7) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +483.000 478.500 m +467.000 478.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +475.000 470.500 m +475.000 460.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +475.000 490.500 m +475.000 482.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +467.000 482.500 m +483.000 482.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +475.000 490.500 m +475.000 500.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +475.000 478.500 m +475.000 470.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +465.000 505.500 m +485.000 505.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +475.000 500.500 m +475.000 505.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +465.00 440.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +475.000 450.500 m +475.000 440.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +475.000 460.500 m +475.000 450.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +436.44 513.50 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +436.44 522.43 Td +(R2) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +435.00 510.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +435.000 505.500 m +425.000 505.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +455.000 505.500 m +465.000 505.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +423.01 299.02 Td +(GT-USB-7004) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +423.01 307.93 Td +(USB1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 447.70 281.50 Tm +(SHELL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 480.50 286.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +490.000 285.500 m +480.000 285.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 447.70 271.50 Tm +(SHELL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 480.50 276.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +490.000 275.500 m +480.000 275.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 447.70 181.50 Tm +(SHELL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 480.50 186.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +490.000 185.500 m +480.000 185.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 447.70 171.50 Tm +(SHELL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 480.50 176.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +490.000 175.500 m +480.000 175.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 413.70 171.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 380.04 176.50 Tm +(B1A12) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +400.000 175.500 m +410.000 175.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 181.50 Tm +(VBUS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 385.76 186.50 Tm +(B4A9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 185.500 m +410.000 185.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 191.50 Tm +(CC2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.62 196.50 Tm +(B5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 195.500 m +410.000 195.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 201.50 Tm +(SBU1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.64 206.50 Tm +(A8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 205.500 m +410.000 205.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 211.50 Tm +(DP2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.62 216.50 Tm +(B6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 215.500 m +410.000 215.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 221.50 Tm +(DN1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.64 226.50 Tm +(A7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 225.500 m +410.000 225.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 231.50 Tm +(DP1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.64 236.50 Tm +(A6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 235.500 m +410.000 235.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 241.50 Tm +(DN2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.62 246.50 Tm +(B7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 245.500 m +410.000 245.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 251.50 Tm +(CC1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.64 256.50 Tm +(A5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 255.500 m +410.000 255.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 261.50 Tm +(SBU2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 397.62 266.50 Tm +(B8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 265.500 m +410.000 265.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 413.70 271.50 Tm +(VBUS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 385.76 276.50 Tm +(A4B9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 275.500 m +410.000 275.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 413.70 281.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 380.04 286.50 Tm +(A1B12) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +400.000 285.500 m +410.000 285.500 l +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +416.50 290.50 m 416.50 291.33 415.83 292.00 415.00 292.00 c +414.17 292.00 413.50 291.33 413.50 290.50 c +413.50 289.67 414.17 289.00 415.00 289.00 c +415.83 289.00 416.50 289.67 416.50 290.50 c +B +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +412.000 295.500 m +478.000 295.500 l +479.105 295.500 480.000 294.605 480.000 293.500 c +480.000 167.500 l +480.000 166.395 478.895 165.500 478.000 165.500 c +412.000 165.500 l +410.895 165.500 410.000 166.605 410.000 167.500 c +410.000 293.500 l +410.000 294.605 411.105 295.500 412.000 295.500 c +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +350.00 130.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +360.000 140.500 m +360.000 130.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +400.000 285.500 m +360.000 285.500 l +360.000 175.500 l +400.000 175.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +360.000 140.500 m +360.000 175.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +505.000 185.500 m +505.000 175.500 l +490.000 175.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +505.000 275.500 m +505.000 185.500 l +490.000 185.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +505.000 140.500 m +505.000 175.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +284.31 352.34 Td +(BLM18PG121SN1D_C14709) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +284.31 361.34 Td +(L3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +325.000 345.500 m +322.000 345.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +285.000 345.500 m +288.000 345.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +288.117 345.568 m +287.91 347.71 289.53 349.61 291.73 349.81 c +293.93 350.01 295.88 348.44 296.08 346.29 c +296.11 346.05 296.11 345.81 296.08 345.56 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +296.600 345.571 m +296.40 347.72 298.01 349.62 300.21 349.82 c +302.41 350.02 304.36 348.44 304.57 346.29 c +304.59 346.05 304.59 345.81 304.56 345.57 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +305.067 345.571 m +304.86 347.72 306.48 349.62 308.68 349.82 c +310.88 350.02 312.83 348.44 313.03 346.29 c +313.06 346.05 313.06 345.81 313.03 345.57 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +313.700 345.569 m +313.50 347.71 315.11 349.61 317.31 349.81 c +319.51 350.01 321.46 348.44 321.67 346.29 c +321.69 346.05 321.69 345.81 321.67 345.56 c +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +255.000 345.500 m +255.000 615.500 l +295.000 615.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +490.000 285.500 m +505.000 285.500 l +505.000 275.500 l +490.000 275.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +325.000 345.500 m +345.000 345.500 l +345.000 275.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +617.00 348.00 Td +(VBUS_UNFILTERED) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +615.000 346.500 m +615.000 344.500 l +614.000 345.500 m +616.000 345.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +245.00 308.25 Td +(10u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +245.00 317.25 Td +(C32) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +227.000 318.500 m +243.000 318.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +227.000 322.500 m +243.000 322.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +235.000 305.500 m +235.000 315.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +235.000 335.500 m +235.000 325.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +235.000 315.500 m +235.000 318.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +235.000 322.500 m +235.000 325.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +225.00 285.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +235.000 295.500 m +235.000 285.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +235.000 335.500 m +235.000 345.500 l +235.000 345.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +235.000 305.500 m +235.000 295.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +230.00 543.31 Td +(10uF) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +230.00 552.17 Td +(C33) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +228.000 553.500 m +212.000 553.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +220.000 545.500 m +220.000 535.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +220.000 565.500 m +220.000 557.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +212.000 557.500 m +228.000 557.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +220.000 565.500 m +220.000 575.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +220.000 553.500 m +220.000 545.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +190.00 543.31 Td +(10uF) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +190.00 552.17 Td +(C34) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +188.000 553.500 m +172.000 553.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +180.000 545.500 m +180.000 535.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +180.000 565.500 m +180.000 557.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +172.000 557.500 m +188.000 557.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +180.000 565.500 m +180.000 575.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +180.000 553.500 m +180.000 545.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +160.000 590.500 m +160.000 600.500 l +170.000 600.500 l +170.000 615.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +150.000 635.500 m +150.000 600.500 l +160.000 600.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +180.000 575.500 m +180.000 580.500 l +220.000 580.500 l +220.000 575.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +230.000 665.500 m +230.000 580.500 l +220.000 580.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +170.00 515.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +180.000 525.500 m +180.000 515.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +210.00 515.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +220.000 525.500 m +220.000 515.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +220.000 535.500 m +220.000 525.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +180.000 535.500 m +180.000 525.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1004.29 623.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1004.29 632.51 Td +(P8) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1010.000 620.660 m +1005.000 615.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1005.000 615.660 m +1010.000 610.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1010.000 610.660 m +1015.000 615.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1015.000 615.660 m +1010.000 620.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1007.500 615.657 m +1007.50 614.28 1008.62 613.16 1010.00 613.16 c +1011.38 613.15 1012.50 614.27 1012.50 615.65 c +1012.50 617.03 1011.38 618.15 1010.00 618.16 c +1008.79 618.16 1007.76 617.29 1007.54 616.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1010.000 600.500 m +1010.000 610.342 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1010.000 600.500 m +1010.000 595.500 l +960.000 595.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1004.29 543.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1004.29 552.51 Td +(P9) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1010.000 540.660 m +1005.000 535.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1005.000 535.660 m +1010.000 530.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1010.000 530.660 m +1015.000 535.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1015.000 535.660 m +1010.000 540.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1007.500 535.657 m +1007.50 534.28 1008.62 533.16 1010.00 533.16 c +1011.38 533.15 1012.50 534.27 1012.50 535.65 c +1012.50 537.03 1011.38 538.15 1010.00 538.16 c +1008.79 538.16 1007.76 537.29 1007.54 536.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1010.000 520.500 m +1010.000 530.342 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +1000.00 500.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1010.000 510.500 m +1010.000 500.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1010.000 520.500 m +1010.000 510.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +347.00 668.00 Td +(VEXT_FUSED) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +345.000 666.500 m +345.000 664.500 l +344.000 665.500 m +346.000 665.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +347.00 618.00 Td +(VBUS_FUSED) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +345.000 616.500 m +345.000 614.500 l +344.000 615.500 m +346.000 615.500 l +S +0.80 0.00 0.00 rg +682.50 580.50 m 682.50 581.88 681.38 583.00 680.00 583.00 c +678.62 583.00 677.50 581.88 677.50 580.50 c +677.50 579.12 678.62 578.00 680.00 578.00 c +681.38 578.00 682.50 579.12 682.50 580.50 c +f +0.80 0.00 0.00 rg +682.50 570.50 m 682.50 571.88 681.38 573.00 680.00 573.00 c +678.62 573.00 677.50 571.88 677.50 570.50 c +677.50 569.12 678.62 568.00 680.00 568.00 c +681.38 568.00 682.50 569.12 682.50 570.50 c +f +0.80 0.00 0.00 rg +707.50 580.50 m 707.50 581.88 706.38 583.00 705.00 583.00 c +703.62 583.00 702.50 581.88 702.50 580.50 c +702.50 579.12 703.62 578.00 705.00 578.00 c +706.38 578.00 707.50 579.12 707.50 580.50 c +f +0.80 0.00 0.00 rg +682.50 520.50 m 682.50 521.88 681.38 523.00 680.00 523.00 c +678.62 523.00 677.50 521.88 677.50 520.50 c +677.50 519.12 678.62 518.00 680.00 518.00 c +681.38 518.00 682.50 519.12 682.50 520.50 c +f +0.80 0.00 0.00 rg +372.50 235.50 m 372.50 236.88 371.38 238.00 370.00 238.00 c +368.62 238.00 367.50 236.88 367.50 235.50 c +367.50 234.12 368.62 233.00 370.00 233.00 c +371.38 233.00 372.50 234.12 372.50 235.50 c +f +0.80 0.00 0.00 rg +387.50 225.50 m 387.50 226.88 386.38 228.00 385.00 228.00 c +383.62 228.00 382.50 226.88 382.50 225.50 c +382.50 224.12 383.62 223.00 385.00 223.00 c +386.38 223.00 387.50 224.12 387.50 225.50 c +f +0.80 0.00 0.00 rg +912.50 580.50 m 912.50 581.88 911.38 583.00 910.00 583.00 c +908.62 583.00 907.50 581.88 907.50 580.50 c +907.50 579.12 908.62 578.00 910.00 578.00 c +911.38 578.00 912.50 579.12 912.50 580.50 c +f +0.80 0.00 0.00 rg +852.50 580.50 m 852.50 581.88 851.38 583.00 850.00 583.00 c +848.62 583.00 847.50 581.88 847.50 580.50 c +847.50 579.12 848.62 578.00 850.00 578.00 c +851.38 578.00 852.50 579.12 852.50 580.50 c +f +0.80 0.00 0.00 rg +922.50 520.50 m 922.50 521.88 921.38 523.00 920.00 523.00 c +918.62 523.00 917.50 521.88 917.50 520.50 c +917.50 519.12 918.62 518.00 920.00 518.00 c +921.38 518.00 922.50 519.12 922.50 520.50 c +f +0.80 0.00 0.00 rg +797.50 520.50 m 797.50 521.88 796.38 523.00 795.00 523.00 c +793.62 523.00 792.50 521.88 792.50 520.50 c +792.50 519.12 793.62 518.00 795.00 518.00 c +796.38 518.00 797.50 519.12 797.50 520.50 c +f +0.80 0.00 0.00 rg +812.50 520.50 m 812.50 521.88 811.38 523.00 810.00 523.00 c +808.62 523.00 807.50 521.88 807.50 520.50 c +807.50 519.12 808.62 518.00 810.00 518.00 c +811.38 518.00 812.50 519.12 812.50 520.50 c +f +0.80 0.00 0.00 rg +962.50 580.50 m 962.50 581.88 961.38 583.00 960.00 583.00 c +958.62 583.00 957.50 581.88 957.50 580.50 c +957.50 579.12 958.62 578.00 960.00 578.00 c +961.38 578.00 962.50 579.12 962.50 580.50 c +f +0.80 0.00 0.00 rg +922.50 580.50 m 922.50 581.88 921.38 583.00 920.00 583.00 c +918.62 583.00 917.50 581.88 917.50 580.50 c +917.50 579.12 918.62 578.00 920.00 578.00 c +921.38 578.00 922.50 579.12 922.50 580.50 c +f +0.80 0.00 0.00 rg +487.50 665.50 m 487.50 666.88 486.38 668.00 485.00 668.00 c +483.62 668.00 482.50 666.88 482.50 665.50 c +482.50 664.12 483.62 663.00 485.00 663.00 c +486.38 663.00 487.50 664.12 487.50 665.50 c +f +0.80 0.00 0.00 rg +402.50 505.50 m 402.50 506.88 401.38 508.00 400.00 508.00 c +398.62 508.00 397.50 506.88 397.50 505.50 c +397.50 504.12 398.62 503.00 400.00 503.00 c +401.38 503.00 402.50 504.12 402.50 505.50 c +f +0.80 0.00 0.00 rg +282.50 665.50 m 282.50 666.88 281.38 668.00 280.00 668.00 c +278.62 668.00 277.50 666.88 277.50 665.50 c +277.50 664.12 278.62 663.00 280.00 663.00 c +281.38 663.00 282.50 664.12 282.50 665.50 c +f +0.80 0.00 0.00 rg +257.50 665.50 m 257.50 666.88 256.38 668.00 255.00 668.00 c +253.62 668.00 252.50 666.88 252.50 665.50 c +252.50 664.12 253.62 663.00 255.00 663.00 c +256.38 663.00 257.50 664.12 257.50 665.50 c +f +0.80 0.00 0.00 rg +417.50 525.50 m 417.50 526.88 416.38 528.00 415.00 528.00 c +413.62 528.00 412.50 526.88 412.50 525.50 c +412.50 524.12 413.62 523.00 415.00 523.00 c +416.38 523.00 417.50 524.12 417.50 525.50 c +f +0.80 0.00 0.00 rg +172.50 665.50 m 172.50 666.88 171.38 668.00 170.00 668.00 c +168.62 668.00 167.50 666.88 167.50 665.50 c +167.50 664.12 168.62 663.00 170.00 663.00 c +171.38 663.00 172.50 664.12 172.50 665.50 c +f +0.80 0.00 0.00 rg +477.50 505.50 m 477.50 506.88 476.38 508.00 475.00 508.00 c +473.62 508.00 472.50 506.88 472.50 505.50 c +472.50 504.12 473.62 503.00 475.00 503.00 c +476.38 503.00 477.50 504.12 477.50 505.50 c +f +0.80 0.00 0.00 rg +307.50 145.50 m 307.50 146.88 306.38 148.00 305.00 148.00 c +303.62 148.00 302.50 146.88 302.50 145.50 c +302.50 144.12 303.62 143.00 305.00 143.00 c +306.38 143.00 307.50 144.12 307.50 145.50 c +f +0.80 0.00 0.00 rg +507.50 275.50 m 507.50 276.88 506.38 278.00 505.00 278.00 c +503.62 278.00 502.50 276.88 502.50 275.50 c +502.50 274.12 503.62 273.00 505.00 273.00 c +506.38 273.00 507.50 274.12 507.50 275.50 c +f +0.80 0.00 0.00 rg +507.50 185.50 m 507.50 186.88 506.38 188.00 505.00 188.00 c +503.62 188.00 502.50 186.88 502.50 185.50 c +502.50 184.12 503.62 183.00 505.00 183.00 c +506.38 183.00 507.50 184.12 507.50 185.50 c +f +0.80 0.00 0.00 rg +507.50 175.50 m 507.50 176.88 506.38 178.00 505.00 178.00 c +503.62 178.00 502.50 176.88 502.50 175.50 c +502.50 174.12 503.62 173.00 505.00 173.00 c +506.38 173.00 507.50 174.12 507.50 175.50 c +f +0.80 0.00 0.00 rg +347.50 275.50 m 347.50 276.88 346.38 278.00 345.00 278.00 c +343.62 278.00 342.50 276.88 342.50 275.50 c +342.50 274.12 343.62 273.00 345.00 273.00 c +346.38 273.00 347.50 274.12 347.50 275.50 c +f +0.80 0.00 0.00 rg +362.50 175.50 m 362.50 176.88 361.38 178.00 360.00 178.00 c +358.62 178.00 357.50 176.88 357.50 175.50 c +357.50 174.12 358.62 173.00 360.00 173.00 c +361.38 173.00 362.50 174.12 362.50 175.50 c +f +0.80 0.00 0.00 rg +257.50 345.50 m 257.50 346.88 256.38 348.00 255.00 348.00 c +253.62 348.00 252.50 346.88 252.50 345.50 c +252.50 344.12 253.62 343.00 255.00 343.00 c +256.38 343.00 257.50 344.12 257.50 345.50 c +f +0.80 0.00 0.00 rg +347.50 345.50 m 347.50 346.88 346.38 348.00 345.00 348.00 c +343.62 348.00 342.50 346.88 342.50 345.50 c +342.50 344.12 343.62 343.00 345.00 343.00 c +346.38 343.00 347.50 344.12 347.50 345.50 c +f +0.80 0.00 0.00 rg +282.50 505.50 m 282.50 506.88 281.38 508.00 280.00 508.00 c +278.62 508.00 277.50 506.88 277.50 505.50 c +277.50 504.12 278.62 503.00 280.00 503.00 c +281.38 503.00 282.50 504.12 282.50 505.50 c +f +0.80 0.00 0.00 rg +237.50 345.50 m 237.50 346.88 236.38 348.00 235.00 348.00 c +233.62 348.00 232.50 346.88 232.50 345.50 c +232.50 344.12 233.62 343.00 235.00 343.00 c +236.38 343.00 237.50 344.12 237.50 345.50 c +f +0.80 0.00 0.00 rg +152.50 635.50 m 152.50 636.88 151.38 638.00 150.00 638.00 c +148.62 638.00 147.50 636.88 147.50 635.50 c +147.50 634.12 148.62 633.00 150.00 633.00 c +151.38 633.00 152.50 634.12 152.50 635.50 c +f +0.80 0.00 0.00 rg +162.50 600.50 m 162.50 601.88 161.38 603.00 160.00 603.00 c +158.62 603.00 157.50 601.88 157.50 600.50 c +157.50 599.12 158.62 598.00 160.00 598.00 c +161.38 598.00 162.50 599.12 162.50 600.50 c +f +0.80 0.00 0.00 rg +232.50 665.50 m 232.50 666.88 231.38 668.00 230.00 668.00 c +228.62 668.00 227.50 666.88 227.50 665.50 c +227.50 664.12 228.62 663.00 230.00 663.00 c +231.38 663.00 232.50 664.12 232.50 665.50 c +f +0.80 0.00 0.00 rg +222.50 580.50 m 222.50 581.88 221.38 583.00 220.00 583.00 c +218.62 583.00 217.50 581.88 217.50 580.50 c +217.50 579.12 218.62 578.00 220.00 578.00 c +221.38 578.00 222.50 579.12 222.50 580.50 c +f +0.80 0.00 0.00 rg +962.50 595.50 m 962.50 596.88 961.38 598.00 960.00 598.00 c +958.62 598.00 957.50 596.88 957.50 595.50 c +957.50 594.12 958.62 593.00 960.00 593.00 c +961.38 593.00 962.50 594.12 962.50 595.50 c +f +q +102.00 0 0 20.00 706.00 31.00 cm +/I0 Do +Q +endstream +endobj +5 0 obj +<> +endobj +6 0 obj +<< +/Length 77667 +>> +stream +0.20 w +0.00 G +1 J +1 j +2 J +0 j +100 M +1.00 g +[] 0 d +0.00 827.30 1169.00 -827.30 re +f +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +216.000 806.300 m +216.000 816.300 l +216.000 20.300 m +216.000 10.300 l +412.000 806.300 m +412.000 816.300 l +412.000 20.300 m +412.000 10.300 l +608.000 806.300 m +608.000 816.300 l +608.000 20.300 m +608.000 10.300 l +804.000 806.300 m +804.000 816.300 l +804.000 20.300 m +804.000 10.300 l +1000.000 806.300 m +1000.000 816.300 l +1000.000 20.300 m +1000.000 10.300 l +20.000 610.300 m +10.000 610.300 l +1149.000 610.300 m +1159.000 610.300 l +20.000 414.300 m +10.000 414.300 l +1149.000 414.300 m +1159.000 414.300 l +20.000 218.300 m +10.000 218.300 l +1149.000 218.300 m +1159.000 218.300 l +20.000 22.300 m +10.000 22.300 l +1149.000 22.300 m +1159.000 22.300 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 708.30 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 708.30 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 512.30 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 512.30 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 316.30 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 316.30 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 120.30 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 120.30 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 807.80 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 11.80 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 807.80 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 11.80 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 807.80 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 11.80 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 807.80 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 11.80 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 807.80 Td +(5) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 11.80 Td +(5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +20.00 806.30 1129.00 -786.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +10.00 816.30 1149.00 -806.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.00 100.30 444.00 -80.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +705.100 61.050 m +1148.630 61.050 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 41.050 m +1148.630 41.050 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.610 100.230 m +1069.630 61.050 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.630 61.050 m +1069.630 41.050 l +S +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +710.00 87.30 Td +(TITLE:) Tj +ET +10.00 w +BT +/F1 13 Tf +13.00 TL +0.000 0.000 1.000 rg +767.62 74.71 Td +(02 MCU) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1074.62 74.05 Td +(REV:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1112.62 74.05 Td +(1.0) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 25.30 Td +(Date:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +861.62 24.82 Td +(2025-05-28) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1073.62 45.30 Td +(Sheet:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1118.62 44.82 Td +(2/5) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +953.62 25.05 Td +(Drawn By:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1018.63 25.05 Td +(chros) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 47.05 Td +(Company:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +881.25 46.94 Td +(Your Company) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 61.050 m +809.630 21.050 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +679.34 227.30 Td +(RP2350A_C42411118) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +679.34 235.63 Td +(U5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +527.000 650.300 m +673.000 650.300 l +674.105 650.300 675.000 649.405 675.000 648.300 c +675.000 202.300 l +675.000 201.195 673.895 200.300 673.000 200.300 c +527.000 200.300 l +525.895 200.300 525.000 201.405 525.000 202.300 c +525.000 648.300 l +525.000 649.405 526.105 650.300 527.000 650.300 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +531.50 645.30 m 531.50 646.13 530.83 646.80 530.00 646.80 c +529.17 646.80 528.50 646.13 528.50 645.30 c +528.50 644.47 529.17 643.80 530.00 643.80 c +530.83 643.80 531.50 644.47 531.50 645.30 c +B +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 546.30 Tm +(RUN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 551.30 Tm +(26) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 550.300 m +525.000 550.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 516.30 Tm +(SWCLK) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 521.30 Tm +(24) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 520.300 m +525.000 520.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 506.30 Tm +(SWDIO) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 511.30 Tm +(25) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 510.300 m +525.000 510.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 476.30 Tm +(USB_DM) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 481.30 Tm +(51) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 480.300 m +525.000 480.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 466.30 Tm +(USB_DP) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 471.30 Tm +(52) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 470.300 m +525.000 470.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 436.30 Tm +(XIN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 441.30 Tm +(21) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 440.300 m +525.000 440.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 426.30 Tm +(XOUT) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 431.30 Tm +(22) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 430.300 m +525.000 430.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 396.30 Tm +(VREG_FB) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 401.30 Tm +(50) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 400.300 m +525.000 400.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 386.30 Tm +(VREG_LX) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 391.30 Tm +(48) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 390.300 m +525.000 390.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 376.30 Tm +(VREG_VIN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 381.30 Tm +(49) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 380.300 m +525.000 380.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 346.30 Tm +(QSPI_SCLK) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 351.30 Tm +(56) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 350.300 m +525.000 350.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 336.30 Tm +(QSPI_SD0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 341.30 Tm +(57) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 340.300 m +525.000 340.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 326.30 Tm +(QSPI_SD1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 331.30 Tm +(59) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 330.300 m +525.000 330.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 316.30 Tm +(QSPI_SD2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 321.30 Tm +(58) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 320.300 m +525.000 320.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 306.30 Tm +(QSPI_SD3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 311.30 Tm +(55) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 310.300 m +525.000 310.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 528.70 296.30 Tm +(QSPI_SS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 513.07 301.30 Tm +(60) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +515.000 300.300 m +525.000 300.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 605.82 276.30 Tm +(GPIO29_ADC3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 281.30 Tm +(43) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 280.300 m +675.000 280.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 605.82 286.30 Tm +(GPIO28_ADC2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 291.30 Tm +(42) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 290.300 m +675.000 290.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 605.82 296.30 Tm +(GPIO27_ADC1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 301.30 Tm +(41) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 300.300 m +675.000 300.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 605.82 306.30 Tm +(GPIO26_ADC0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 311.30 Tm +(40) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 310.300 m +675.000 310.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 316.30 Tm +(GPIO25) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 321.30 Tm +(37) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 320.300 m +675.000 320.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 326.30 Tm +(GPIO24) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 331.30 Tm +(36) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 330.300 m +675.000 330.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 336.30 Tm +(GPIO23) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 341.30 Tm +(35) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 340.300 m +675.000 340.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 346.30 Tm +(GPIO22) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 351.30 Tm +(34) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 350.300 m +675.000 350.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 356.30 Tm +(GPIO21) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 361.30 Tm +(33) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 360.300 m +675.000 360.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 366.30 Tm +(GPIO20) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 371.30 Tm +(32) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 370.300 m +675.000 370.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 376.30 Tm +(GPIO19) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 381.30 Tm +(31) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 380.300 m +675.000 380.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 386.30 Tm +(GPIO18) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 391.30 Tm +(29) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 390.300 m +675.000 390.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 396.30 Tm +(GPIO17) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 401.30 Tm +(28) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 400.300 m +675.000 400.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 406.30 Tm +(GPIO16) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 411.30 Tm +(27) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 410.300 m +675.000 410.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 416.30 Tm +(GPIO15) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 421.30 Tm +(19) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 420.300 m +675.000 420.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 426.30 Tm +(GPIO14) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 431.30 Tm +(18) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 430.300 m +675.000 430.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 436.30 Tm +(GPIO13) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 441.30 Tm +(17) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 440.300 m +675.000 440.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 446.30 Tm +(GPIO12) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 451.30 Tm +(16) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 450.300 m +675.000 450.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 456.30 Tm +(GPIO11) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 461.30 Tm +(15) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 460.300 m +675.000 460.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 636.60 466.30 Tm +(GPIO10) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 471.30 Tm +(14) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 470.300 m +675.000 470.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 476.30 Tm +(GPIO9) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 481.30 Tm +(13) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 480.300 m +675.000 480.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 486.30 Tm +(GPIO8) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 491.30 Tm +(12) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 490.300 m +675.000 490.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 496.30 Tm +(GPIO7) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 501.30 Tm +(10) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 500.300 m +675.000 500.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 506.30 Tm +(GPIO6) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 511.30 Tm +(9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 510.300 m +675.000 510.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 516.30 Tm +(GPIO5) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 521.30 Tm +(8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 520.300 m +675.000 520.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 526.30 Tm +(GPIO4) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 531.30 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 530.300 m +675.000 530.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 536.30 Tm +(GPIO3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 541.30 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 540.300 m +675.000 540.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 546.30 Tm +(GPIO2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 551.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 550.300 m +675.000 550.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 556.30 Tm +(GPIO1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 561.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 560.300 m +675.000 560.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 642.32 566.30 Tm +(GPIO0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 675.50 571.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 570.300 m +675.000 570.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 598.00 203.30 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 594.00 189.37 Tm +(61) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +595.000 190.300 m +595.000 200.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 608.00 203.30 Tm +(VREG_PGND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 604.00 189.37 Tm +(47) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +605.000 190.300 m +605.000 200.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 662.00 589.67 Tm +(VREG_AVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 659.00 650.80 Tm +(46) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +660.000 660.300 m +660.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 652.00 578.22 Tm +(USB_OTP_VDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 649.00 650.80 Tm +(53) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +650.000 660.300 m +650.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 642.00 587.58 Tm +(QSPI_IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 639.00 650.80 Tm +(54) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +640.000 660.300 m +640.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 632.00 615.73 Tm +(IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 629.00 650.80 Tm +(45) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +630.000 660.300 m +630.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 622.00 615.73 Tm +(IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 619.00 650.80 Tm +(38) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +620.000 660.300 m +620.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 612.00 615.73 Tm +(IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 609.00 650.80 Tm +(30) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +610.000 660.300 m +610.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 602.00 615.73 Tm +(IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 599.00 650.80 Tm +(20) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +600.000 660.300 m +600.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 592.00 615.73 Tm +(IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 589.00 650.80 Tm +(11) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +590.000 660.300 m +590.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 582.00 615.73 Tm +(IOVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 579.00 650.80 Tm +(1) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +580.000 660.300 m +580.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 572.00 619.66 Tm +(DVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 569.00 650.80 Tm +(39) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +570.000 660.300 m +570.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 562.00 619.66 Tm +(DVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 559.00 650.80 Tm +(23) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +560.000 660.300 m +560.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 552.00 619.66 Tm +(DVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 549.00 650.80 Tm +(6) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +550.000 660.300 m +550.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 542.00 595.37 Tm +(ADC_AVDD) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +0.00 1.00 -1.00 0.00 539.00 650.80 Tm +(44) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +540.000 660.300 m +540.000 650.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +585.00 170.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +595.000 180.300 m +595.000 170.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +432.00 487.80 Td +(USB_MCU_R_D-) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +430.000 486.300 m +430.000 484.300 l +429.000 485.300 m +431.000 485.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +432.00 460.80 Td +(USB_MCU_R_D+) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +430.000 471.300 m +430.000 469.300 l +429.000 470.300 m +431.000 470.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +396.44 455.30 Td +(27) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +396.44 446.30 Td +(R10) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +395.00 475.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 470.300 m +425.000 470.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +395.000 470.300 m +385.000 470.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +396.44 493.30 Td +(27) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +396.44 502.30 Td +(R9) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +395.00 490.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +395.000 485.300 m +385.000 485.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 485.300 m +425.000 485.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +425.000 485.300 m +465.000 485.300 l +465.000 480.300 l +515.000 480.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +425.000 470.300 m +515.000 470.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 264.07 467.15 Tm +(USB_MCU_D+) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +355.000 470.300 m +350.000 465.300 l +335.000 465.300 l +335.000 475.300 l +350.000 475.300 l +355.000 470.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 266.53 482.15 Tm +(USB_MCU_D-) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +355.000 485.300 m +350.000 480.300 l +335.000 480.300 l +335.000 490.300 l +350.000 490.300 l +355.000 485.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +385.000 485.300 m +355.000 485.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +385.000 470.300 m +355.000 470.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +920.000 750.300 m +920.000 755.300 l +880.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +880.000 750.300 m +880.000 755.300 l +840.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +840.000 750.300 m +840.000 755.300 l +800.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +800.000 750.300 m +800.000 755.300 l +760.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +760.000 750.300 m +760.000 755.300 l +720.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +720.000 750.300 m +720.000 755.300 l +680.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +650.000 765.300 m +650.000 755.300 l +680.000 755.300 l +680.000 750.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +910.00 685.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +920.000 695.300 m +920.000 685.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +920.000 710.300 m +920.000 705.300 l +880.000 705.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +880.000 710.300 m +880.000 705.300 l +840.000 705.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +840.000 710.300 m +840.000 705.300 l +800.000 705.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +800.000 710.300 m +800.000 705.300 l +760.000 705.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +760.000 710.300 m +760.000 705.300 l +720.000 705.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 710.300 m +680.000 705.300 l +720.000 705.300 l +720.000 710.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +930.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +930.00 726.97 Td +(C17) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +928.000 728.300 m +912.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +920.000 720.300 m +920.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +920.000 740.300 m +920.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +912.000 732.300 m +928.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +920.000 740.300 m +920.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +920.000 728.300 m +920.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +890.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +890.00 726.97 Td +(C16) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +888.000 728.300 m +872.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +880.000 720.300 m +880.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +880.000 740.300 m +880.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +872.000 732.300 m +888.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +880.000 740.300 m +880.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +880.000 728.300 m +880.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +850.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +850.00 726.97 Td +(C15) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +848.000 728.300 m +832.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +840.000 720.300 m +840.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +840.000 740.300 m +840.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +832.000 732.300 m +848.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +840.000 740.300 m +840.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +840.000 728.300 m +840.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +810.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +810.00 726.97 Td +(C14) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +808.000 728.300 m +792.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +800.000 720.300 m +800.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +800.000 740.300 m +800.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +792.000 732.300 m +808.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +800.000 740.300 m +800.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +800.000 728.300 m +800.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +770.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +770.00 726.97 Td +(C13) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +768.000 728.300 m +752.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +760.000 720.300 m +760.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +760.000 740.300 m +760.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +752.000 732.300 m +768.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +760.000 740.300 m +760.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +760.000 728.300 m +760.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +730.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +730.00 726.97 Td +(C12) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +728.000 728.300 m +712.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 720.300 m +720.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +720.000 740.300 m +720.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +712.000 732.300 m +728.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 740.300 m +720.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +720.000 728.300 m +720.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +690.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +690.00 726.97 Td +(C11) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +688.000 728.300 m +672.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +680.000 720.300 m +680.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +680.000 740.300 m +680.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +672.000 732.300 m +688.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +680.000 740.300 m +680.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +680.000 728.300 m +680.000 720.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 634.80 781.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +650.000 775.300 m +650.000 765.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +645.000 775.300 m +655.000 775.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +920.000 695.300 m +920.000 700.300 l +920.000 705.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +640.000 690.300 m +650.000 690.300 l +650.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +630.000 690.300 m +640.000 690.300 l +640.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +620.000 690.300 m +630.000 690.300 l +630.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +610.000 690.300 m +620.000 690.300 l +620.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +600.000 690.300 m +610.000 690.300 l +610.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +590.000 690.300 m +600.000 690.300 l +600.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +580.000 690.300 m +590.000 690.300 l +590.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +540.000 690.300 m +580.000 690.300 l +580.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +540.000 660.300 m +540.000 690.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +650.000 755.300 m +650.000 690.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 726.97 Td +(C8) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +403.000 728.300 m +387.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +395.000 720.300 m +395.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +395.000 740.300 m +395.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +387.000 732.300 m +403.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +395.000 740.300 m +395.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +395.000 728.300 m +395.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +495.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +495.00 726.97 Td +(C10) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +493.000 728.300 m +477.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +485.000 720.300 m +485.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +485.000 740.300 m +485.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +477.000 732.300 m +493.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +485.000 740.300 m +485.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +485.000 728.300 m +485.000 720.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 531.30 781.22 Tm +(+1V1) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +550.000 775.300 m +550.000 765.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +545.000 775.300 m +555.000 775.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +395.000 750.300 m +395.000 755.300 l +550.000 755.300 l +550.000 765.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +485.000 750.300 m +485.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +440.000 710.300 m +440.000 705.300 l +485.000 705.300 l +485.000 710.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +385.00 680.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +395.000 690.300 m +395.000 680.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +440.000 705.300 m +395.000 705.300 l +395.000 690.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +550.000 755.300 m +550.000 700.300 l +560.000 700.300 l +570.000 700.300 l +570.000 660.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +560.000 660.300 m +560.000 700.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +550.000 660.300 m +550.000 700.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 463.53 436.75 Tm +(XIN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 440.300 m +500.000 435.300 l +485.000 435.300 l +485.000 445.300 l +500.000 445.300 l +505.000 440.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 452.53 426.75 Tm +(XOUT) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 430.300 m +500.000 425.300 l +485.000 425.300 l +485.000 435.300 l +500.000 435.300 l +505.000 430.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 425.91 346.75 Tm +(QSPI_SCLK) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 350.300 m +500.000 345.300 l +485.000 345.300 l +485.000 355.300 l +500.000 355.300 l +505.000 350.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 434.38 336.75 Tm +(QSPI_SD0) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 340.300 m +500.000 335.300 l +485.000 335.300 l +485.000 345.300 l +500.000 345.300 l +505.000 340.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 434.38 326.75 Tm +(QSPI_SD1) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 330.300 m +500.000 325.300 l +485.000 325.300 l +485.000 335.300 l +500.000 335.300 l +505.000 330.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 434.38 316.75 Tm +(QSPI_SD2) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 320.300 m +500.000 315.300 l +485.000 315.300 l +485.000 325.300 l +500.000 325.300 l +505.000 320.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 434.38 306.75 Tm +(QSPI_SD3) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 310.300 m +500.000 305.300 l +485.000 305.300 l +485.000 315.300 l +500.000 315.300 l +505.000 310.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 441.75 296.75 Tm +(QSPI_SS) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +505.000 300.300 m +500.000 295.300 l +485.000 295.300 l +485.000 305.300 l +500.000 305.300 l +505.000 300.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 440.300 m +505.000 440.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 430.300 m +505.000 430.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +705.00 627.94 Td +(4.7u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +705.00 637.09 Td +(C18) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +703.000 638.300 m +687.000 638.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +695.000 630.300 m +695.000 620.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +695.000 650.300 m +695.000 642.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +687.000 642.300 m +703.000 642.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +695.000 650.300 m +695.000 660.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +695.000 638.300 m +695.000 630.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 296.30 416.22 Tm +(+1V1) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +315.000 410.300 m +315.000 400.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +310.000 410.300 m +320.000 410.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +724.03 656.30 Td +(33) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +724.03 647.16 Td +(R6) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +750.000 670.300 m +740.000 670.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +710.000 670.300 m +720.000 670.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.00 674.30 20.00 -8.00 re +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +685.00 605.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +695.000 615.300 m +695.000 605.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 744.80 691.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +760.000 685.300 m +760.000 675.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +755.000 685.300 m +765.000 685.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +660.000 660.300 m +660.000 670.300 l +710.000 670.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +695.000 660.300 m +695.000 670.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +695.000 615.300 m +695.000 620.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +750.000 670.300 m +760.000 670.300 l +760.000 675.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 350.300 m +505.000 350.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 340.300 m +505.000 340.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 330.300 m +505.000 330.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 320.300 m +505.000 320.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 310.300 m +505.000 310.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 300.300 m +505.000 300.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +440.000 750.300 m +440.000 755.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +395.000 710.300 m +395.000 705.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +166.000 594.300 m +174.000 586.300 l +174.000 594.300 m +166.000 586.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +189.89 603.48 Td +(SKRPACE010) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +189.89 612.52 Td +(RESET1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +190.000 590.300 m +210.000 590.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +190.000 570.300 m +210.000 570.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +200.000 590.300 m +200.000 586.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +200.000 570.300 m +200.000 577.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +200.000 586.300 m +200.000 583.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +197.000 585.300 m +197.000 576.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +197.000 581.300 m +196.000 581.300 l +196.000 580.300 l +197.000 580.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 179.28 591.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 590.300 m +190.000 590.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 215.00 591.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +230.000 590.300 m +210.000 590.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 179.28 571.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 570.300 m +190.000 570.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 215.00 571.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +230.000 570.300 m +210.000 570.300 l +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +135.00 635.30 Td +(RP2350 Reset Button) Tj +ET +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +135.00 630.30 130.00 -85.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 550.300 m +495.000 550.300 l +495.000 590.300 l +230.000 590.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +170.000 570.300 m +160.000 570.300 l +155.000 570.300 l +155.000 565.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +230.000 570.300 m +240.000 570.300 l +245.000 570.300 l +245.000 565.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +235.00 555.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +245.000 565.300 m +245.000 555.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +145.00 555.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +155.000 565.300 m +155.000 555.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +367.00 592.80 Td +(RP2350_RUN) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +365.000 591.300 m +365.000 589.300 l +364.000 590.300 m +366.000 590.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.00 336.73 Tm +(SWITCH) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 340.300 m +715.000 345.300 l +730.000 345.300 l +730.000 335.300 l +715.000 335.300 l +710.000 340.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.71 316.72 Tm +(RotaryEncoder_A) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 320.300 m +715.000 325.300 l +730.000 325.300 l +730.000 315.300 l +715.000 315.300 l +710.000 320.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.00 326.72 Tm +(RotaryEncoder_B) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 330.300 m +715.000 335.300 l +730.000 335.300 l +730.000 325.300 l +715.000 325.300 l +710.000 330.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.94 296.62 Tm +(RotaryEncoder_SW) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 300.300 m +715.000 305.300 l +730.000 305.300 l +730.000 295.300 l +715.000 295.300 l +710.000 300.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1052.00 496.73 Tm +(I2C_SCL) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1030.000 500.300 m +1035.000 505.300 l +1050.000 505.300 l +1050.000 495.300 l +1035.000 495.300 l +1030.000 500.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1052.00 506.73 Tm +(I2C_SDA) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1030.000 510.300 m +1035.000 515.300 l +1050.000 515.300 l +1050.000 505.300 l +1035.000 505.300 l +1030.000 510.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.01 356.79 Tm +(DISP_CS) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 360.300 m +715.000 365.300 l +730.000 365.300 l +730.000 355.300 l +715.000 355.300 l +710.000 360.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.01 366.79 Tm +(DISP_DC) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 370.300 m +715.000 375.300 l +730.000 375.300 l +730.000 365.300 l +715.000 365.300 l +710.000 370.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.94 406.79 Tm +(DISP_RESET) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 410.300 m +715.000 415.300 l +730.000 415.300 l +730.000 405.300 l +715.000 405.300 l +710.000 410.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.80 376.79 Tm +(DISP_MOSI) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 380.300 m +715.000 385.300 l +730.000 385.300 l +730.000 375.300 l +715.000 375.300 l +710.000 380.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 911.23 346.79 Tm +(DISP_SCK) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +890.000 350.300 m +895.000 355.300 l +910.000 355.300 l +910.000 345.300 l +895.000 345.300 l +890.000 350.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.71 566.72 Tm +(LED_PWR_EN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 570.300 m +715.000 575.300 l +730.000 575.300 l +730.000 565.300 l +715.000 565.300 l +710.000 570.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.60 546.84 Tm +(LED_CH3_PWM) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 550.300 m +715.000 555.300 l +730.000 555.300 l +730.000 545.300 l +715.000 545.300 l +710.000 550.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.60 536.84 Tm +(LED_CH2_PWM) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 540.300 m +715.000 545.300 l +730.000 545.300 l +730.000 535.300 l +715.000 535.300 l +710.000 540.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.60 556.84 Tm +(LED_CH1_PWM) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 560.300 m +715.000 565.300 l +730.000 565.300 l +730.000 555.300 l +715.000 555.300 l +710.000 560.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.99 396.62 Tm +(MIDI_IN_MCU) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 400.300 m +715.000 405.300 l +730.000 405.300 l +730.000 395.300 l +715.000 395.300 l +710.000 400.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +906.00 528.10 Td +(1.2k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +906.00 537.10 Td +(R7) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +900.000 560.300 m +900.000 550.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +900.000 520.300 m +900.000 530.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +896.00 550.30 8.00 -20.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +956.00 528.10 Td +(1.2k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +956.00 537.10 Td +(R8) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +950.000 560.300 m +950.000 550.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +950.000 520.300 m +950.000 530.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +946.00 550.30 8.00 -20.00 re +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 909.80 596.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +925.000 590.300 m +925.000 580.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +920.000 590.300 m +930.000 590.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.00 276.73 Tm +(FB_VEXT) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 280.300 m +715.000 285.300 l +730.000 285.300 l +730.000 275.300 l +715.000 275.300 l +710.000 280.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1030.000 510.300 m +685.000 510.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 500.300 m +1030.000 500.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +950.000 570.300 m +925.000 570.300 l +900.000 570.300 l +900.000 560.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +950.000 560.300 m +950.000 570.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 580.300 m +925.000 570.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +900.000 520.300 m +900.000 510.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +950.000 520.300 m +950.000 500.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 570.300 m +710.000 570.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 560.300 m +690.000 560.300 l +710.000 560.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 400.300 m +710.000 400.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 330.300 m +710.000 330.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +100.04 113.30 Td +(Screw-M3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +100.04 122.01 Td +(SCREW1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +120.000 85.300 m +120.000 87.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +[] 0 d +130.000 105.300 m +125.86 110.82 118.02 111.94 112.50 107.80 c +111.55 107.09 110.71 106.25 110.00 105.30 c +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +125.000 105.300 m +125.000 91.300 l +125.000 91.300 l +120.000 86.300 l +120.000 86.300 l +115.000 91.300 l +115.000 91.300 l +115.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +130.000 105.300 m +110.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +125.000 96.300 m +115.000 91.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +125.000 101.300 m +115.000 96.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +125.000 105.300 m +115.000 101.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +150.04 113.30 Td +(Screw-M3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +150.04 122.01 Td +(SCREW2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 85.300 m +170.000 87.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +[] 0 d +180.000 105.300 m +175.86 110.82 168.02 111.94 162.50 107.80 c +161.55 107.09 160.71 106.25 160.00 105.30 c +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +175.000 105.300 m +175.000 91.300 l +175.000 91.300 l +170.000 86.300 l +170.000 86.300 l +165.000 91.300 l +165.000 91.300 l +165.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +180.000 105.300 m +160.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +175.000 96.300 m +165.000 91.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +175.000 101.300 m +165.000 96.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +175.000 105.300 m +165.000 101.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +200.04 113.30 Td +(Screw-M3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +200.04 122.01 Td +(SCREW3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +220.000 85.300 m +220.000 87.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +[] 0 d +230.000 105.300 m +225.86 110.82 218.02 111.94 212.50 107.80 c +211.55 107.09 210.71 106.25 210.00 105.30 c +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +225.000 105.300 m +225.000 91.300 l +225.000 91.300 l +220.000 86.300 l +220.000 86.300 l +215.000 91.300 l +215.000 91.300 l +215.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +230.000 105.300 m +210.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +225.000 96.300 m +215.000 91.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +225.000 101.300 m +215.000 96.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +225.000 105.300 m +215.000 101.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +250.04 113.30 Td +(Screw-M3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +250.04 122.01 Td +(SCREW4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +270.000 85.300 m +270.000 87.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +[] 0 d +280.000 105.300 m +275.86 110.82 268.02 111.94 262.50 107.80 c +261.55 107.09 260.71 106.25 260.00 105.30 c +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +275.000 105.300 m +275.000 91.300 l +275.000 91.300 l +270.000 86.300 l +270.000 86.300 l +265.000 91.300 l +265.000 91.300 l +265.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +280.000 105.300 m +260.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +275.000 96.300 m +265.000 91.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +275.000 101.300 m +265.000 96.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +275.000 105.300 m +265.000 101.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 534.300 m +689.000 526.300 l +689.000 534.300 m +681.000 526.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 524.300 m +689.000 516.300 l +689.000 524.300 m +681.000 516.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 494.300 m +689.000 486.300 l +689.000 494.300 m +681.000 486.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 314.300 m +689.000 306.300 l +689.000 314.300 m +681.000 306.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 424.300 m +689.000 416.300 l +689.000 424.300 m +681.000 416.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 550.300 m +710.000 550.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +710.000 540.300 m +685.000 540.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +710.000 320.300 m +685.000 320.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +300.04 113.30 Td +(Screw-M3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +300.04 122.01 Td +(SCREW5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +320.000 85.300 m +320.000 87.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +[] 0 d +330.000 105.300 m +325.86 110.82 318.02 111.94 312.50 107.80 c +311.55 107.09 310.71 106.25 310.00 105.30 c +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +325.000 105.300 m +325.000 91.300 l +325.000 91.300 l +320.000 86.300 l +320.000 86.300 l +315.000 91.300 l +315.000 91.300 l +315.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +330.000 105.300 m +310.000 105.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +325.000 96.300 m +315.000 91.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +325.000 101.300 m +315.000 96.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +325.000 105.300 m +315.000 101.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +710.000 340.300 m +685.000 340.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 380.300 m +710.000 380.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 370.300 m +710.000 370.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 360.300 m +710.000 360.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 434.300 m +689.000 426.300 l +689.000 434.300 m +681.000 426.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 357.30 Td +(22) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +854.03 366.30 Td +(R11) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +880.000 350.300 m +870.000 350.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +840.000 350.300 m +850.000 350.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +850.00 354.30 20.00 -8.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +880.000 350.300 m +890.000 350.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 350.300 m +840.000 350.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +782.00 352.80 Td +(DISP_SCK_R) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +780.000 351.300 m +780.000 349.300 l +779.000 350.300 m +781.000 350.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +316.000 89.300 m +324.000 81.300 l +324.000 89.300 m +316.000 81.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +266.000 89.300 m +274.000 81.300 l +274.000 89.300 m +266.000 81.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +216.000 89.300 m +224.000 81.300 l +224.000 89.300 m +216.000 81.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +166.000 89.300 m +174.000 81.300 l +174.000 89.300 m +166.000 81.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +116.000 89.300 m +124.000 81.300 l +124.000 89.300 m +116.000 81.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +662.00 672.80 Td +(AVDD) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +660.000 671.300 m +660.000 669.300 l +659.000 670.300 m +661.000 670.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.00 456.73 Tm +(LED_RED) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 460.300 m +715.000 465.300 l +730.000 465.300 l +730.000 455.300 l +715.000 455.300 l +710.000 460.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 732.00 446.73 Tm +(LED_GREEN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 450.300 m +715.000 455.300 l +730.000 455.300 l +730.000 445.300 l +715.000 445.300 l +710.000 450.300 l +S +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +105.00 70.30 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +155.00 70.30 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +205.00 70.30 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +255.00 70.30 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +305.00 70.30 Td +(DNP) Tj +ET +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +865.00 615.30 125.00 -130.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +865.00 620.30 Td +(I2C Pullup-Resistors) Tj +ET +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 731.94 436.75 Tm +(INA260_ALERT) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +710.000 440.300 m +715.000 445.300 l +730.000 445.300 l +730.000 435.300 l +715.000 435.300 l +710.000 440.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +995.000 390.300 m +685.000 390.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +975.00 365.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +985.000 375.300 m +985.000 365.300 l +S +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +1010.00 360.30 Td +(DNP) Tj +ET +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +892.00 392.80 Td +(TriggerPin) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +890.000 391.300 m +890.000 389.300 l +889.000 390.300 m +891.000 390.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +970.00 425.30 165.00 -85.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +970.00 430.30 Td +(Debug Pin Header) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1009.29 538.46 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1009.29 547.31 Td +(P1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1015.000 535.460 m +1010.000 530.460 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1010.000 530.460 m +1015.000 525.460 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1015.000 525.460 m +1020.000 530.460 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1020.000 530.460 m +1015.000 535.460 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1012.500 530.457 m +1012.50 529.08 1013.62 527.96 1015.00 527.96 c +1016.38 527.95 1017.50 529.07 1017.50 530.45 c +1017.50 531.83 1016.38 532.95 1015.00 532.96 c +1013.79 532.96 1012.76 532.09 1012.54 530.90 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1015.000 515.300 m +1015.000 525.142 l +S +1.00 w +0.00 G +[] 0 d +1016.00 512.80 m 1016.00 514.18 1015.55 515.30 1015.00 515.30 c +1014.45 515.30 1014.00 514.18 1014.00 512.80 c +1014.00 511.42 1014.45 510.30 1015.00 510.30 c +1015.55 510.30 1016.00 511.42 1016.00 512.80 c +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1015.000 515.300 m +1015.000 510.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1022.00 474.03 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1022.00 482.89 Td +(P2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1015.000 475.140 m +1020.000 480.140 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1020.000 480.140 m +1015.000 485.140 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1015.000 485.140 m +1010.000 480.140 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +1010.000 480.140 m +1015.000 475.140 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1017.500 480.143 m +1017.50 481.52 1016.38 482.64 1015.00 482.64 c +1013.62 482.65 1012.50 481.53 1012.50 480.15 c +1012.50 478.77 1013.62 477.65 1015.00 477.64 c +1016.21 477.64 1017.24 478.51 1017.46 479.70 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +1015.000 495.300 m +1015.000 485.458 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1015.000 495.300 m +1015.000 500.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1003.70 402.14 Td +(HDR-M-2.54_2x2) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1004.07 411.14 Td +(J1) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1007.000 400.300 m +1043.000 400.300 l +1044.105 400.300 1045.000 399.405 1045.000 398.300 c +1045.000 372.300 l +1045.000 371.195 1043.895 370.300 1043.000 370.300 c +1007.000 370.300 l +1005.895 370.300 1005.000 371.405 1005.000 372.300 c +1005.000 398.300 l +1005.000 399.405 1006.105 400.300 1007.000 400.300 c +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1010.00 377.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +995.000 380.300 m +1005.000 380.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1034.29 377.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +1055.000 380.300 m +1045.000 380.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1010.00 387.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +995.000 390.300 m +1005.000 390.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1034.29 387.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +1055.000 390.300 m +1045.000 390.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +985.000 375.300 m +985.000 380.300 l +995.000 380.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 410.300 m +710.000 410.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +374.04 547.30 Td +(100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +374.04 556.28 Td +(R40) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +400.000 540.300 m +390.000 540.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +360.000 540.300 m +370.000 540.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +370.00 544.30 20.00 -8.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +374.04 511.30 Td +(100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +374.04 502.32 Td +(R41) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +400.000 525.300 m +390.000 525.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +360.000 525.300 m +370.000 525.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +370.00 529.30 20.00 -8.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 520.300 m +495.000 520.300 l +495.000 540.300 l +400.000 540.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +515.000 510.300 m +485.000 510.300 l +485.000 525.300 l +400.000 525.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +360.000 540.300 m +355.000 540.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +360.000 525.300 m +355.000 525.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +422.00 542.80 Td +(SWCLK_R) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +420.000 541.300 m +420.000 539.300 l +419.000 540.300 m +421.000 540.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +422.00 527.80 Td +(SWDIO_R) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +420.000 526.300 m +420.000 524.300 l +419.000 525.300 m +421.000 525.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 294.72 536.75 Tm +(SWCLK) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +355.000 540.300 m +350.000 535.300 l +335.000 535.300 l +335.000 545.300 l +350.000 545.300 l +355.000 540.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 297.14 521.74 Tm +(SWDIO) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +355.000 525.300 m +350.000 520.300 l +335.000 520.300 l +335.000 530.300 l +350.000 530.300 l +355.000 525.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1090.71 386.85 Tm +(SWCLK) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1070.000 390.300 m +1075.000 395.300 l +1090.000 395.300 l +1090.000 385.300 l +1075.000 385.300 l +1070.000 390.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1091.70 376.85 Tm +(SWDIO) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1070.000 380.300 m +1075.000 385.300 l +1090.000 385.300 l +1090.000 375.300 l +1075.000 375.300 l +1070.000 380.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1055.000 390.300 m +1070.000 390.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1070.000 380.300 m +1055.000 380.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +218.08 373.06 Td +(TLV74311PDBVR) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +218.08 381.97 Td +(U15) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 247.09 356.30 Tm +(OUT) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 270.50 361.30 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 360.300 m +270.000 360.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 253.29 336.30 Tm +(NC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 270.50 341.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +280.000 340.300 m +270.000 340.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 223.70 336.30 Tm +(EN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 213.78 341.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +210.000 340.300 m +220.000 340.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 223.70 346.30 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 213.78 351.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +210.000 350.300 m +220.000 350.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 223.70 356.30 Tm +(IN) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 213.78 361.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +210.000 360.300 m +220.000 360.300 l +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +226.50 365.30 m 226.50 366.13 225.83 366.80 225.00 366.80 c +224.17 366.80 223.50 366.13 223.50 365.30 c +223.50 364.47 224.17 363.80 225.00 363.80 c +225.83 363.80 226.50 364.47 226.50 365.30 c +B +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +222.000 370.300 m +268.000 370.300 l +269.105 370.300 270.000 369.405 270.000 368.300 c +270.000 332.300 l +270.000 331.195 268.895 330.300 268.000 330.300 c +222.000 330.300 l +220.895 330.300 220.000 331.405 220.000 332.300 c +220.000 368.300 l +220.000 369.405 221.105 370.300 222.000 370.300 c +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +276.000 344.300 m +284.000 336.300 l +284.000 344.300 m +276.000 336.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 300.300 m +710.000 300.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 119.80 416.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +135.000 410.300 m +135.000 400.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +130.000 410.300 m +140.000 410.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 360.300 m +315.000 360.300 l +315.000 400.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +135.000 400.300 m +135.000 360.300 l +210.000 360.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +107.49 312.94 Td +(4.7u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +108.49 322.09 Td +(C19) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +127.000 323.300 m +143.000 323.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +135.000 315.300 m +135.000 305.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +135.000 335.300 m +135.000 327.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +143.000 327.300 m +127.000 327.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +135.000 335.300 m +135.000 345.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +135.000 323.300 m +135.000 315.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +287.49 312.94 Td +(4.7u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +288.49 322.09 Td +(C20) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +307.000 323.300 m +323.000 323.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +315.000 315.300 m +315.000 305.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +315.000 335.300 m +315.000 327.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +323.000 327.300 m +307.000 327.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +315.000 335.300 m +315.000 345.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +315.000 323.300 m +315.000 315.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +190.00 285.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +200.000 295.300 m +200.000 285.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +305.00 285.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +315.000 295.300 m +315.000 285.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +210.000 350.300 m +200.000 350.300 l +200.000 295.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +135.000 345.300 m +135.000 360.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +315.000 345.300 m +315.000 360.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +315.000 305.300 m +315.000 295.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +450.00 718.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +450.00 726.97 Td +(C9) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +448.000 728.300 m +432.000 728.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +440.000 720.300 m +440.000 710.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +440.000 740.300 m +440.000 732.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +432.000 732.300 m +448.000 732.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +440.000 740.300 m +440.000 750.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +440.000 728.300 m +440.000 720.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +148.49 323.12 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +146.49 332.05 Td +(R42) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +165.00 345.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 345.300 m +170.000 355.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 325.300 m +170.000 315.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +125.00 285.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +135.000 295.300 m +135.000 285.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +135.000 305.300 m +135.000 295.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +170.000 355.300 m +170.000 360.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +170.000 315.300 m +170.000 310.300 l +185.000 310.300 l +185.000 340.300 l +210.000 340.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +511.000 404.300 m +519.000 396.300 l +519.000 404.300 m +511.000 396.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +511.000 394.300 m +519.000 386.300 l +519.000 394.300 m +511.000 386.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 474.80 406.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +490.000 400.300 m +490.000 390.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +485.000 400.300 m +495.000 400.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +490.000 390.300 m +490.000 380.300 l +515.000 380.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +100.00 440.30 240.00 -175.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +100.00 445.30 Td +(RP2350 Core Voltage LDO) Tj +ET +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 280.300 m +710.000 280.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 294.300 m +689.000 286.300 l +689.000 294.300 m +681.000 286.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +595.000 190.300 m +595.000 180.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +601.000 194.300 m +609.000 186.300 l +609.000 194.300 m +601.000 186.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 440.300 m +710.000 440.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 450.300 m +710.000 450.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 460.300 m +710.000 460.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 474.300 m +689.000 466.300 l +689.000 474.300 m +681.000 466.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 484.300 m +689.000 476.300 l +689.000 484.300 m +681.000 476.300 l +S +0.80 0.00 0.00 rg +882.50 755.30 m 882.50 756.68 881.38 757.80 880.00 757.80 c +878.62 757.80 877.50 756.68 877.50 755.30 c +877.50 753.92 878.62 752.80 880.00 752.80 c +881.38 752.80 882.50 753.92 882.50 755.30 c +f +0.80 0.00 0.00 rg +842.50 755.30 m 842.50 756.68 841.38 757.80 840.00 757.80 c +838.62 757.80 837.50 756.68 837.50 755.30 c +837.50 753.92 838.62 752.80 840.00 752.80 c +841.38 752.80 842.50 753.92 842.50 755.30 c +f +0.80 0.00 0.00 rg +802.50 755.30 m 802.50 756.68 801.38 757.80 800.00 757.80 c +798.62 757.80 797.50 756.68 797.50 755.30 c +797.50 753.92 798.62 752.80 800.00 752.80 c +801.38 752.80 802.50 753.92 802.50 755.30 c +f +0.80 0.00 0.00 rg +762.50 755.30 m 762.50 756.68 761.38 757.80 760.00 757.80 c +758.62 757.80 757.50 756.68 757.50 755.30 c +757.50 753.92 758.62 752.80 760.00 752.80 c +761.38 752.80 762.50 753.92 762.50 755.30 c +f +0.80 0.00 0.00 rg +722.50 755.30 m 722.50 756.68 721.38 757.80 720.00 757.80 c +718.62 757.80 717.50 756.68 717.50 755.30 c +717.50 753.92 718.62 752.80 720.00 752.80 c +721.38 752.80 722.50 753.92 722.50 755.30 c +f +0.80 0.00 0.00 rg +682.50 755.30 m 682.50 756.68 681.38 757.80 680.00 757.80 c +678.62 757.80 677.50 756.68 677.50 755.30 c +677.50 753.92 678.62 752.80 680.00 752.80 c +681.38 752.80 682.50 753.92 682.50 755.30 c +f +0.80 0.00 0.00 rg +882.50 705.30 m 882.50 706.68 881.38 707.80 880.00 707.80 c +878.62 707.80 877.50 706.68 877.50 705.30 c +877.50 703.92 878.62 702.80 880.00 702.80 c +881.38 702.80 882.50 703.92 882.50 705.30 c +f +0.80 0.00 0.00 rg +842.50 705.30 m 842.50 706.68 841.38 707.80 840.00 707.80 c +838.62 707.80 837.50 706.68 837.50 705.30 c +837.50 703.92 838.62 702.80 840.00 702.80 c +841.38 702.80 842.50 703.92 842.50 705.30 c +f +0.80 0.00 0.00 rg +802.50 705.30 m 802.50 706.68 801.38 707.80 800.00 707.80 c +798.62 707.80 797.50 706.68 797.50 705.30 c +797.50 703.92 798.62 702.80 800.00 702.80 c +801.38 702.80 802.50 703.92 802.50 705.30 c +f +0.80 0.00 0.00 rg +762.50 705.30 m 762.50 706.68 761.38 707.80 760.00 707.80 c +758.62 707.80 757.50 706.68 757.50 705.30 c +757.50 703.92 758.62 702.80 760.00 702.80 c +761.38 702.80 762.50 703.92 762.50 705.30 c +f +0.80 0.00 0.00 rg +722.50 705.30 m 722.50 706.68 721.38 707.80 720.00 707.80 c +718.62 707.80 717.50 706.68 717.50 705.30 c +717.50 703.92 718.62 702.80 720.00 702.80 c +721.38 702.80 722.50 703.92 722.50 705.30 c +f +0.80 0.00 0.00 rg +922.50 705.30 m 922.50 706.68 921.38 707.80 920.00 707.80 c +918.62 707.80 917.50 706.68 917.50 705.30 c +917.50 703.92 918.62 702.80 920.00 702.80 c +921.38 702.80 922.50 703.92 922.50 705.30 c +f +0.80 0.00 0.00 rg +582.50 690.30 m 582.50 691.68 581.38 692.80 580.00 692.80 c +578.62 692.80 577.50 691.68 577.50 690.30 c +577.50 688.92 578.62 687.80 580.00 687.80 c +581.38 687.80 582.50 688.92 582.50 690.30 c +f +0.80 0.00 0.00 rg +592.50 690.30 m 592.50 691.68 591.38 692.80 590.00 692.80 c +588.62 692.80 587.50 691.68 587.50 690.30 c +587.50 688.92 588.62 687.80 590.00 687.80 c +591.38 687.80 592.50 688.92 592.50 690.30 c +f +0.80 0.00 0.00 rg +602.50 690.30 m 602.50 691.68 601.38 692.80 600.00 692.80 c +598.62 692.80 597.50 691.68 597.50 690.30 c +597.50 688.92 598.62 687.80 600.00 687.80 c +601.38 687.80 602.50 688.92 602.50 690.30 c +f +0.80 0.00 0.00 rg +612.50 690.30 m 612.50 691.68 611.38 692.80 610.00 692.80 c +608.62 692.80 607.50 691.68 607.50 690.30 c +607.50 688.92 608.62 687.80 610.00 687.80 c +611.38 687.80 612.50 688.92 612.50 690.30 c +f +0.80 0.00 0.00 rg +622.50 690.30 m 622.50 691.68 621.38 692.80 620.00 692.80 c +618.62 692.80 617.50 691.68 617.50 690.30 c +617.50 688.92 618.62 687.80 620.00 687.80 c +621.38 687.80 622.50 688.92 622.50 690.30 c +f +0.80 0.00 0.00 rg +632.50 690.30 m 632.50 691.68 631.38 692.80 630.00 692.80 c +628.62 692.80 627.50 691.68 627.50 690.30 c +627.50 688.92 628.62 687.80 630.00 687.80 c +631.38 687.80 632.50 688.92 632.50 690.30 c +f +0.80 0.00 0.00 rg +642.50 690.30 m 642.50 691.68 641.38 692.80 640.00 692.80 c +638.62 692.80 637.50 691.68 637.50 690.30 c +637.50 688.92 638.62 687.80 640.00 687.80 c +641.38 687.80 642.50 688.92 642.50 690.30 c +f +0.80 0.00 0.00 rg +652.50 755.30 m 652.50 756.68 651.38 757.80 650.00 757.80 c +648.62 757.80 647.50 756.68 647.50 755.30 c +647.50 753.92 648.62 752.80 650.00 752.80 c +651.38 752.80 652.50 753.92 652.50 755.30 c +f +0.80 0.00 0.00 rg +652.50 690.30 m 652.50 691.68 651.38 692.80 650.00 692.80 c +648.62 692.80 647.50 691.68 647.50 690.30 c +647.50 688.92 648.62 687.80 650.00 687.80 c +651.38 687.80 652.50 688.92 652.50 690.30 c +f +0.80 0.00 0.00 rg +487.50 755.30 m 487.50 756.68 486.38 757.80 485.00 757.80 c +483.62 757.80 482.50 756.68 482.50 755.30 c +482.50 753.92 483.62 752.80 485.00 752.80 c +486.38 752.80 487.50 753.92 487.50 755.30 c +f +0.80 0.00 0.00 rg +562.50 700.30 m 562.50 701.68 561.38 702.80 560.00 702.80 c +558.62 702.80 557.50 701.68 557.50 700.30 c +557.50 698.92 558.62 697.80 560.00 697.80 c +561.38 697.80 562.50 698.92 562.50 700.30 c +f +0.80 0.00 0.00 rg +552.50 755.30 m 552.50 756.68 551.38 757.80 550.00 757.80 c +548.62 757.80 547.50 756.68 547.50 755.30 c +547.50 753.92 548.62 752.80 550.00 752.80 c +551.38 752.80 552.50 753.92 552.50 755.30 c +f +0.80 0.00 0.00 rg +552.50 700.30 m 552.50 701.68 551.38 702.80 550.00 702.80 c +548.62 702.80 547.50 701.68 547.50 700.30 c +547.50 698.92 548.62 697.80 550.00 697.80 c +551.38 697.80 552.50 698.92 552.50 700.30 c +f +0.80 0.00 0.00 rg +697.50 670.30 m 697.50 671.68 696.38 672.80 695.00 672.80 c +693.62 672.80 692.50 671.68 692.50 670.30 c +692.50 668.92 693.62 667.80 695.00 667.80 c +696.38 667.80 697.50 668.92 697.50 670.30 c +f +0.80 0.00 0.00 rg +442.50 755.30 m 442.50 756.68 441.38 757.80 440.00 757.80 c +438.62 757.80 437.50 756.68 437.50 755.30 c +437.50 753.92 438.62 752.80 440.00 752.80 c +441.38 752.80 442.50 753.92 442.50 755.30 c +f +0.80 0.00 0.00 rg +442.50 705.30 m 442.50 706.68 441.38 707.80 440.00 707.80 c +438.62 707.80 437.50 706.68 437.50 705.30 c +437.50 703.92 438.62 702.80 440.00 702.80 c +441.38 702.80 442.50 703.92 442.50 705.30 c +f +0.80 0.00 0.00 rg +397.50 705.30 m 397.50 706.68 396.38 707.80 395.00 707.80 c +393.62 707.80 392.50 706.68 392.50 705.30 c +392.50 703.92 393.62 702.80 395.00 702.80 c +396.38 702.80 397.50 703.92 397.50 705.30 c +f +0.80 0.00 0.00 rg +927.50 570.30 m 927.50 571.68 926.38 572.80 925.00 572.80 c +923.62 572.80 922.50 571.68 922.50 570.30 c +922.50 568.92 923.62 567.80 925.00 567.80 c +926.38 567.80 927.50 568.92 927.50 570.30 c +f +0.80 0.00 0.00 rg +902.50 510.30 m 902.50 511.68 901.38 512.80 900.00 512.80 c +898.62 512.80 897.50 511.68 897.50 510.30 c +897.50 508.92 898.62 507.80 900.00 507.80 c +901.38 507.80 902.50 508.92 902.50 510.30 c +f +0.80 0.00 0.00 rg +952.50 500.30 m 952.50 501.68 951.38 502.80 950.00 502.80 c +948.62 502.80 947.50 501.68 947.50 500.30 c +947.50 498.92 948.62 497.80 950.00 497.80 c +951.38 497.80 952.50 498.92 952.50 500.30 c +f +0.80 0.00 0.00 rg +1017.50 510.30 m 1017.50 511.68 1016.38 512.80 1015.00 512.80 c +1013.62 512.80 1012.50 511.68 1012.50 510.30 c +1012.50 508.92 1013.62 507.80 1015.00 507.80 c +1016.38 507.80 1017.50 508.92 1017.50 510.30 c +f +0.80 0.00 0.00 rg +1017.50 500.30 m 1017.50 501.68 1016.38 502.80 1015.00 502.80 c +1013.62 502.80 1012.50 501.68 1012.50 500.30 c +1012.50 498.92 1013.62 497.80 1015.00 497.80 c +1016.38 497.80 1017.50 498.92 1017.50 500.30 c +f +0.80 0.00 0.00 rg +137.50 360.30 m 137.50 361.68 136.38 362.80 135.00 362.80 c +133.62 362.80 132.50 361.68 132.50 360.30 c +132.50 358.92 133.62 357.80 135.00 357.80 c +136.38 357.80 137.50 358.92 137.50 360.30 c +f +0.80 0.00 0.00 rg +317.50 360.30 m 317.50 361.68 316.38 362.80 315.00 362.80 c +313.62 362.80 312.50 361.68 312.50 360.30 c +312.50 358.92 313.62 357.80 315.00 357.80 c +316.38 357.80 317.50 358.92 317.50 360.30 c +f +0.80 0.00 0.00 rg +172.50 360.30 m 172.50 361.68 171.38 362.80 170.00 362.80 c +168.62 362.80 167.50 361.68 167.50 360.30 c +167.50 358.92 168.62 357.80 170.00 357.80 c +171.38 357.80 172.50 358.92 172.50 360.30 c +f +q +102.00 0 0 20.00 706.00 30.80 cm +/I0 Do +Q +endstream +endobj +7 0 obj +<> +endobj +8 0 obj +<< +/Length 57140 +>> +stream +0.20 w +0.20 0.80 0.20 RG +1 J +1 j +2 J +0 j +100 M +1.00 g +[] 0 d +0.00 827.30 1169.00 -827.30 re +f +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +216.000 806.300 m +216.000 816.300 l +216.000 20.300 m +216.000 10.300 l +412.000 806.300 m +412.000 816.300 l +412.000 20.300 m +412.000 10.300 l +608.000 806.300 m +608.000 816.300 l +608.000 20.300 m +608.000 10.300 l +804.000 806.300 m +804.000 816.300 l +804.000 20.300 m +804.000 10.300 l +1000.000 806.300 m +1000.000 816.300 l +1000.000 20.300 m +1000.000 10.300 l +20.000 610.300 m +10.000 610.300 l +1149.000 610.300 m +1159.000 610.300 l +20.000 414.300 m +10.000 414.300 l +1149.000 414.300 m +1159.000 414.300 l +20.000 218.300 m +10.000 218.300 l +1149.000 218.300 m +1159.000 218.300 l +20.000 22.300 m +10.000 22.300 l +1149.000 22.300 m +1159.000 22.300 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 708.30 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 708.30 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 512.30 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 512.30 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 316.30 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 316.30 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 120.30 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 120.30 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 807.80 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 11.80 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 807.80 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 11.80 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 807.80 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 11.80 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 807.80 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 11.80 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 807.80 Td +(5) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 11.80 Td +(5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +20.00 806.30 1129.00 -786.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +10.00 816.30 1149.00 -806.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.00 100.30 444.00 -80.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +705.100 61.050 m +1148.630 61.050 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 41.050 m +1148.630 41.050 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.610 100.230 m +1069.630 61.050 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.630 61.050 m +1069.630 41.050 l +S +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +710.00 87.30 Td +(TITLE:) Tj +ET +10.00 w +BT +/F1 13 Tf +13.00 TL +0.000 0.000 1.000 rg +767.62 74.71 Td +(03 Peripherals) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1074.62 74.05 Td +(REV:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1112.62 74.05 Td +(1.0) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 25.30 Td +(Date:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +861.62 24.82 Td +(2025-05-28) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1073.62 45.30 Td +(Sheet:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1118.62 44.82 Td +(3/5) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +953.62 25.05 Td +(Drawn By:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1018.63 25.05 Td +(chros) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 47.05 Td +(Company:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +881.25 46.94 Td +(Your Company) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 61.050 m +809.630 21.050 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +705.000 580.300 m +705.000 570.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +665.000 580.300 m +665.000 570.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +655.00 560.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +665.000 570.300 m +665.000 560.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +695.00 560.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +705.000 570.300 m +705.000 560.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 625.300 m +665.000 625.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 665.300 m +705.000 665.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 553.91 621.82 Tm +(RotaryEncoder_B) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +655.000 625.300 m +650.000 620.300 l +635.000 620.300 l +635.000 630.300 l +650.000 630.300 l +655.000 625.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 553.25 661.82 Tm +(RotaryEncoder_A) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +655.000 665.300 m +650.000 660.300 l +635.000 660.300 l +635.000 670.300 l +650.000 670.300 l +655.000 665.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +710.000 625.300 m +665.000 625.300 l +665.000 620.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +710.000 665.300 m +705.000 665.300 l +705.000 620.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +795.000 710.300 m +795.000 715.300 l +775.000 715.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +775.000 720.300 m +775.000 715.300 l +755.000 715.300 l +755.000 710.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 760.00 735.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +775.000 730.300 m +775.000 720.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +770.000 730.300 m +780.000 730.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +750.000 625.300 m +755.000 625.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +795.000 670.300 m +795.000 665.300 l +750.000 665.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 625.300 m +755.000 625.300 l +755.000 670.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 665.300 m +795.000 665.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +965.000 720.300 m +965.000 710.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 950.00 735.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +965.000 730.300 m +965.000 720.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +960.000 730.300 m +970.000 730.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1000.000 665.300 m +965.000 665.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1021.94 661.62 Tm +(RotaryEncoder_SW) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1000.000 665.300 m +1005.000 670.300 l +1020.000 670.300 l +1020.000 660.300 l +1005.000 660.300 l +1000.000 665.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +900.000 665.300 m +965.000 665.300 l +965.000 670.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 645.300 m +810.000 645.300 l +810.000 610.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +800.00 600.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +810.000 610.300 m +810.000 600.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +900.000 635.300 m +910.000 635.300 l +910.000 610.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +900.00 600.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +910.000 610.300 m +910.000 600.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +849.82 678.63 Td +(PEC11R-4015F-S0024) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +849.82 687.63 Td +(SW1) Tj +ET +2 J +0 j +100 M +1.00 w +0.55 0.14 0.14 RG +[] 0 d +830.00 675.30 60.00 -60.00 re +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +840.000 645.300 m +840.000 655.300 l +S +1.00 w +0.55 0.14 0.14 RG +[] 0 d +841.00 645.30 m 841.00 645.85 840.55 646.30 840.00 646.30 c +839.45 646.30 839.00 645.85 839.00 645.30 c +839.00 644.75 839.45 644.30 840.00 644.30 c +840.55 644.30 841.00 644.75 841.00 645.30 c +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 822.84 626.30 Tm +(B) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +820.000 625.300 m +840.000 625.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 822.72 646.30 Tm +(C) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +820.000 645.300 m +840.000 645.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 822.85 666.30 Tm +(A) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +820.000 665.300 m +840.000 665.300 l +S +2 J +0 j +100 M +1.00 w +0.55 0.14 0.14 RG +[] 0 d +879.00 663.30 1.00 -26.00 re +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +879.000 646.300 m +875.000 646.300 l +875.000 654.300 l +879.000 654.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 891.00 665.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +900.000 665.300 m +890.000 665.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 891.00 635.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +900.000 635.300 m +890.000 635.300 l +S +1.00 w +0.55 0.14 0.14 RG +[] 0 d +888.00 639.30 m 888.00 640.40 887.10 641.30 886.00 641.30 c +884.90 641.30 884.00 640.40 884.00 639.30 c +884.00 638.20 884.90 637.30 886.00 637.30 c +887.10 637.30 888.00 638.20 888.00 639.30 c +S +1.00 w +0.55 0.14 0.14 RG +[] 0 d +888.00 661.30 m 888.00 662.40 887.10 663.30 886.00 663.30 c +884.90 663.30 884.00 662.40 884.00 661.30 c +884.00 660.20 884.90 659.30 886.00 659.30 c +887.10 659.30 888.00 660.20 888.00 661.30 c +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +886.000 635.300 m +886.000 637.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +886.000 663.300 m +886.000 665.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +850.000 605.300 m +850.000 615.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +[] 0 d +870.000 605.300 m +870.000 615.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +840.000 645.300 m +840.000 635.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +840.000 655.300 m +843.000 660.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +840.000 660.300 m +840.000 665.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +840.000 625.300 m +840.000 630.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +840.000 635.300 m +843.000 630.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +[] 0 d +858.000 633.300 m +864.63 633.30 870.00 638.67 870.00 645.30 c +870.00 651.93 864.63 657.30 858.00 657.30 c +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +[] 0 d +865.500 645.300 m +865.50 649.44 862.14 652.80 858.00 652.80 c +853.86 652.80 850.50 649.44 850.50 645.30 c +850.50 641.16 853.86 637.80 858.00 637.80 c +862.01 637.80 865.31 640.96 865.49 644.97 c +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +857.000 638.300 m +857.000 652.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +858.000 633.300 m +860.000 631.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +858.000 633.300 m +860.000 635.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +858.000 638.300 m +858.000 652.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +858.000 657.300 m +860.000 655.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +859.000 652.300 m +859.000 638.300 l +S +1 J +1 j +1.00 w +0.52 0.00 0.00 RG +0.00 g +[] 0 d +860.000 659.300 m +858.000 657.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +890.000 665.300 m +886.000 665.300 l +S +1 J +1 j +1.00 w +0.55 0.14 0.14 RG +0.00 g +[] 0 d +890.000 635.300 m +886.000 635.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +535.00 765.30 590.00 -235.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +535.00 770.30 Td +(Rotary Encoder) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +313.96 538.97 Td +(W25Q128JVPIQTR) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +313.96 547.30 Td +(U6) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +237.000 605.300 m +403.000 605.300 l +404.105 605.300 405.000 604.405 405.000 603.300 c +405.000 557.300 l +405.000 556.195 403.895 555.300 403.000 555.300 c +237.000 555.300 l +235.895 555.300 235.000 556.405 235.000 557.300 c +235.000 603.300 l +235.000 604.405 236.105 605.300 237.000 605.300 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +241.50 600.30 m 241.50 601.13 240.83 601.80 240.00 601.80 c +239.17 601.80 238.50 601.13 238.50 600.30 c +238.50 599.47 239.17 598.80 240.00 598.80 c +240.83 598.80 241.50 599.47 241.50 600.30 c +B +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 238.70 591.30 Tm +(#CS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 228.78 596.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +225.000 595.300 m +235.000 595.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 238.70 581.30 Tm +(DO/IO1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 228.78 586.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +225.000 585.300 m +235.000 585.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 238.70 571.30 Tm +(#WP/IO2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 228.78 576.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +225.000 575.300 m +235.000 575.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 238.70 561.30 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 228.78 566.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +225.000 565.300 m +235.000 565.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 369.93 561.30 Tm +(DI/IO0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 405.50 566.30 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 565.300 m +405.000 565.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 383.79 571.30 Tm +(CLK) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 405.50 576.30 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 575.300 m +405.000 575.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 294.99 581.30 Tm +(#HOLD-OR-#REST/IO3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 405.50 586.30 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +415.000 585.300 m +405.000 585.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 382.59 591.30 Tm +(VCC) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 405.50 596.30 Tm +(8) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +415.000 595.300 m +405.000 595.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 328.00 592.18 Tm +(EP) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 324.00 610.30 Tm +(9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +325.000 625.300 m +325.000 605.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +210.00 545.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +220.000 555.300 m +220.000 545.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 409.80 701.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +425.000 695.300 m +425.000 685.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +420.000 695.300 m +430.000 695.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +425.000 685.300 m +425.000 595.300 l +415.000 595.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +225.000 565.300 m +220.000 565.300 l +220.000 555.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +455.00 638.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +455.00 647.09 Td +(C21) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +453.000 648.300 m +437.000 648.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +445.000 640.300 m +445.000 630.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +445.000 660.300 m +445.000 652.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +437.000 652.300 m +453.000 652.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +445.000 660.300 m +445.000 670.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +445.000 648.300 m +445.000 640.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +445.000 670.300 m +445.000 675.300 l +425.000 675.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +435.00 615.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +445.000 625.300 m +445.000 615.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +445.000 630.300 m +445.000 625.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 447.00 581.90 Tm +(QSPI_SD3) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +425.000 585.300 m +430.000 590.300 l +445.000 590.300 l +445.000 580.300 l +430.000 580.300 l +425.000 585.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 446.70 571.90 Tm +(QSPI_SCLK) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +425.000 575.300 m +430.000 580.300 l +445.000 580.300 l +445.000 570.300 l +430.000 570.300 l +425.000 575.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 446.84 561.90 Tm +(QSPI_SD0) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +425.000 565.300 m +430.000 570.300 l +445.000 570.300 l +445.000 560.300 l +430.000 560.300 l +425.000 565.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 213.81 707.30 Tm +(QSPI_SS) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +210.000 685.300 m +205.000 690.300 l +205.000 705.300 l +215.000 705.300 l +215.000 690.300 l +210.000 685.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 134.38 581.70 Tm +(QSPI_SD1) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +205.000 585.300 m +200.000 580.300 l +185.000 580.300 l +185.000 590.300 l +200.000 590.300 l +205.000 585.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 134.38 571.70 Tm +(QSPI_SD2) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +205.000 575.300 m +200.000 570.300 l +185.000 570.300 l +185.000 580.300 l +200.000 580.300 l +205.000 575.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +415.000 565.300 m +425.000 565.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +415.000 575.300 m +425.000 575.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +415.000 585.300 m +425.000 585.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +136.000 664.300 m +144.000 656.300 l +144.000 664.300 m +136.000 656.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +80.000 660.300 m +65.000 660.300 l +65.000 675.300 l +160.000 675.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +80.000 640.300 m +65.000 640.300 l +65.000 635.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +155.000 635.300 m +155.000 640.300 l +140.000 640.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +80.36 623.01 Td +(SKRPACE010) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +80.36 632.05 Td +(BOOTSEL1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +100.000 660.300 m +120.000 660.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +100.000 640.300 m +120.000 640.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +110.000 660.300 m +110.000 656.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +110.000 640.300 m +110.000 647.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +110.000 656.300 m +110.000 653.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +107.000 655.300 m +107.000 646.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +107.000 651.300 m +106.000 651.300 l +106.000 650.300 l +107.000 650.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 89.28 661.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +80.000 660.300 m +100.000 660.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 125.00 661.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +140.000 660.300 m +120.000 660.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 89.28 641.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +80.000 640.300 m +100.000 640.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 125.00 641.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +140.000 640.300 m +120.000 640.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +55.00 625.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +65.000 635.300 m +65.000 625.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +145.00 625.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +155.000 635.300 m +155.000 625.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +174.04 683.30 Td +(1k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +174.04 692.28 Td +(R15) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +170.00 680.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +190.000 675.300 m +200.000 675.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +170.000 675.300 m +160.000 675.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +234.04 683.30 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +234.04 692.28 Td +(R16) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +230.00 680.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +250.000 675.300 m +260.000 675.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +230.000 675.300 m +220.000 675.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +225.000 595.300 m +210.000 595.300 l +210.000 675.300 l +210.000 685.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +200.000 675.300 m +210.000 675.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +220.000 675.300 m +210.000 675.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 254.80 701.23 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +270.000 695.300 m +270.000 685.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +265.000 695.300 m +275.000 695.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +260.000 675.300 m +270.000 675.300 l +270.000 685.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +225.000 585.300 m +205.000 585.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +225.000 575.300 m +205.000 575.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +40.00 765.30 480.00 -235.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +40.00 770.30 Td +(RP2350 External Flash & Bootsel Button) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +229.43 462.10 Td +(ABM8-272-T3_C20625731) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +229.43 471.10 Td +(U7) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 220.28 431.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +220.000 430.300 m +230.000 430.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 274.00 451.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +280.000 450.300 m +270.000 450.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 220.28 451.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +220.000 450.300 m +230.000 450.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 274.00 431.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +280.000 430.300 m +270.000 430.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +232.000 460.300 m +268.000 460.300 l +269.105 460.300 270.000 459.405 270.000 458.300 c +270.000 422.300 l +270.000 421.195 268.895 420.300 268.000 420.300 c +232.000 420.300 l +230.895 420.300 230.000 421.405 230.000 422.300 c +230.000 458.300 l +230.000 459.405 231.105 460.300 232.000 460.300 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +236.50 425.30 m 236.50 426.13 235.83 426.80 235.00 426.80 c +234.17 426.80 233.50 426.13 233.50 425.30 c +233.50 424.47 234.17 423.80 235.00 423.80 c +235.83 423.80 236.50 424.47 236.50 425.30 c +B +1 J +1 j +1.00 w +0.53 0.07 0.00 RG +0.00 g +[] 0 d +245.000 433.300 m +245.000 447.300 l +S +1 J +1 j +1.00 w +0.53 0.07 0.00 RG +0.00 g +[] 0 d +255.000 433.300 m +255.000 447.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +230.000 430.300 m +240.000 430.300 l +240.000 440.300 l +245.000 440.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +270.000 450.300 m +260.000 450.300 l +260.000 440.300 l +255.000 440.300 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +248.00 447.30 4.00 -14.00 re +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +200.00 375.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +210.000 385.300 m +210.000 375.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +280.00 375.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +290.000 385.300 m +290.000 375.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +220.000 450.300 m +210.000 450.300 l +210.000 385.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 430.300 m +290.000 430.300 l +290.000 385.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +384.04 435.30 Td +(1k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +384.04 426.32 Td +(R19) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +380.00 455.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 450.300 m +410.000 450.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +380.000 450.300 m +370.000 450.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +280.000 450.300 m +370.000 450.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 447.23 446.48 Tm +(XOUT) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +425.000 450.300 m +430.000 455.300 l +445.000 455.300 l +445.000 445.300 l +430.000 445.300 l +425.000 450.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +410.000 450.300 m +425.000 450.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 118.53 426.70 Tm +(XIN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +160.000 430.300 m +155.000 425.300 l +140.000 425.300 l +140.000 435.300 l +155.000 435.300 l +160.000 430.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +220.000 430.300 m +160.000 430.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +154.99 393.10 Td +(15p) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +153.49 402.10 Td +(C26) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +172.000 407.300 m +188.000 407.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +172.000 403.300 m +188.000 403.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +180.000 420.300 m +180.000 410.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +180.000 390.300 m +180.000 400.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +180.000 410.300 m +180.000 407.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +180.000 403.300 m +180.000 400.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +360.00 398.10 Td +(15p) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +360.00 407.10 Td +(C25) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +358.000 412.300 m +342.000 412.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +358.000 408.300 m +342.000 408.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +350.000 425.300 m +350.000 415.300 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +350.000 395.300 m +350.000 405.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +350.000 415.300 m +350.000 412.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +350.000 408.300 m +350.000 405.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +350.000 425.300 m +350.000 450.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +180.000 420.300 m +180.000 430.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +170.00 375.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +180.000 385.300 m +180.000 375.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +340.00 375.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +350.000 385.300 m +350.000 375.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +350.000 385.300 m +350.000 395.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +180.000 385.300 m +180.000 390.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +40.00 500.30 480.00 -145.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +40.00 505.30 Td +(RP2350 Crystal Oscillator) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +764.03 363.33 Td +(M24C64-FMC6TG) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +764.03 372.04 Td +(U8) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +767.000 430.300 m +823.000 430.300 l +824.105 430.300 825.000 429.405 825.000 428.300 c +825.000 382.300 l +825.000 381.195 823.895 380.300 823.000 380.300 c +767.000 380.300 l +765.895 380.300 765.000 381.405 765.000 382.300 c +765.000 428.300 l +765.000 429.405 766.105 430.300 767.000 430.300 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +769.00 427.80 m 769.00 428.63 768.33 429.30 767.50 429.30 c +766.67 429.30 766.00 428.63 766.00 427.80 c +766.00 426.97 766.67 426.30 767.50 426.30 c +768.33 426.30 769.00 426.97 769.00 427.80 c +B +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 768.70 416.30 Tm +(E0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 758.78 421.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +755.000 420.300 m +765.000 420.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 768.70 406.30 Tm +(E1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 758.78 411.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +755.000 410.300 m +765.000 410.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 768.70 396.30 Tm +(E2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 758.78 401.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +755.000 400.300 m +765.000 400.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 768.70 386.30 Tm +(VSS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 758.78 391.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +755.000 390.300 m +765.000 390.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 802.08 386.30 Tm +(SDA) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 825.50 391.30 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 390.300 m +825.000 390.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 803.87 396.30 Tm +(SCL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 825.50 401.30 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 400.300 m +825.000 400.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 798.76 406.30 Tm +(#WC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 825.50 411.30 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 410.300 m +825.000 410.300 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 802.59 416.30 Tm +(VCC) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 825.50 421.30 Tm +(8) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +835.000 420.300 m +825.000 420.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 798.00 417.18 Tm +(EP) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 794.00 435.30 Tm +(9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +795.000 450.300 m +795.000 430.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +735.00 370.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +745.000 380.300 m +745.000 370.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +745.000 380.300 m +745.000 390.300 l +755.000 390.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +745.000 390.300 m +745.000 400.300 l +755.000 400.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +745.000 400.300 m +745.000 410.300 l +755.000 410.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +745.000 410.300 m +745.000 420.300 l +755.000 420.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 835.00 485.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +850.000 480.300 m +850.000 470.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +845.000 480.300 m +855.000 480.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 420.300 m +850.000 420.300 l +850.000 470.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +880.00 428.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +880.00 437.09 Td +(C24) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +878.000 438.300 m +862.000 438.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +870.000 430.300 m +870.000 420.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +870.000 450.300 m +870.000 442.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +862.000 442.300 m +878.000 442.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +870.000 450.300 m +870.000 460.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +870.000 438.300 m +870.000 430.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +860.00 370.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +870.000 380.300 m +870.000 370.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +870.000 460.300 m +870.000 465.300 l +850.000 465.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +870.000 420.300 m +870.000 380.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 410.300 m +870.000 410.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 912.00 396.73 Tm +(I2C_SCL) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +890.000 400.300 m +895.000 405.300 l +910.000 405.300 l +910.000 395.300 l +895.000 395.300 l +890.000 400.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 912.00 386.73 Tm +(I2C_SDA) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +890.000 390.300 m +895.000 395.300 l +910.000 395.300 l +910.000 385.300 l +895.000 385.300 l +890.000 390.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 400.300 m +890.000 400.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 390.300 m +890.000 390.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +535.00 500.30 590.00 -145.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +535.00 505.30 Td +(External NVM \(EEPROM\)) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +832.34 302.04 Td +(GC9A01 TFT DISPLAY COPY) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +832.34 311.17 Td +(U9) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +866.00 242.30 Td +(GC9A01 display) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 207.30 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 211.30 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 210.300 m +830.000 210.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 217.30 Tm +(VCC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 221.30 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 220.300 m +830.000 220.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 227.30 Tm +(SCL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 231.30 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 230.300 m +830.000 230.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 237.30 Tm +(SDA) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 241.30 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 240.300 m +830.000 240.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 247.30 Tm +(RES) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 251.30 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 250.300 m +830.000 250.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 257.30 Tm +(DC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 261.30 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 260.300 m +830.000 260.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 267.30 Tm +(CS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 271.30 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 270.300 m +830.000 270.300 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 832.00 277.30 Tm +(BLK) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 819.28 281.30 Tm +(8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +810.000 280.300 m +830.000 280.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +830.00 300.30 120.00 -110.00 re +S +1.00 w +0.00 G +[] 0 d +940.00 245.30 m 940.00 267.39 922.09 285.30 900.00 285.30 c +877.91 285.30 860.00 267.39 860.00 245.30 c +860.00 223.21 877.91 205.30 900.00 205.30 c +922.09 205.30 940.00 223.21 940.00 245.30 c +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 785.00 310.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +800.000 305.300 m +800.000 295.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +795.000 305.300 m +805.000 305.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +800.000 295.300 m +800.000 280.300 l +810.000 280.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 220.300 m +800.000 220.300 l +800.000 280.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +780.00 150.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +790.000 160.300 m +790.000 150.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 700.54 266.74 Tm +(DISP_CS) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +765.000 270.300 m +760.000 265.300 l +745.000 265.300 l +745.000 275.300 l +760.000 275.300 l +765.000 270.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 698.67 256.74 Tm +(DISP_DC) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +765.000 260.300 m +760.000 255.300 l +745.000 255.300 l +745.000 265.300 l +760.000 265.300 l +765.000 260.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 680.41 246.74 Tm +(DISP_RESET) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +765.000 250.300 m +760.000 245.300 l +745.000 245.300 l +745.000 255.300 l +760.000 255.300 l +765.000 250.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 686.46 236.74 Tm +(DISP_MOSI) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +765.000 240.300 m +760.000 235.300 l +745.000 235.300 l +745.000 245.300 l +760.000 245.300 l +765.000 240.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 692.62 226.74 Tm +(DISP_SCK) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +765.000 230.300 m +760.000 225.300 l +745.000 225.300 l +745.000 235.300 l +760.000 235.300 l +765.000 230.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 270.300 m +765.000 270.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 260.300 m +765.000 260.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 250.300 m +765.000 250.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 240.300 m +765.000 240.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 230.300 m +805.000 230.300 l +765.000 230.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +749.98 178.11 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +753.49 187.09 Td +(C28) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +772.000 188.300 m +788.000 188.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +780.000 180.300 m +780.000 170.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +780.000 200.300 m +780.000 192.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +788.000 192.300 m +772.000 192.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +780.000 200.300 m +780.000 210.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +780.000 188.300 m +780.000 180.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +790.000 160.300 m +790.000 165.300 l +780.000 165.300 l +780.000 170.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +780.000 210.300 m +780.000 220.300 l +800.000 220.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +810.000 210.300 m +800.000 210.300 l +800.000 165.300 l +790.000 165.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +535.00 325.30 590.00 -185.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +535.00 330.30 Td +(Display 1.28" \(240x240\)) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +254.29 88.30 Td +(B3F-3100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +254.29 97.18 Td +(S1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +239.690 85.300 m +279.690 85.300 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +279.690 55.300 m +279.690 85.300 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +279.690 55.300 m +239.690 55.300 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +239.690 85.300 m +239.690 55.300 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 249.21 72.35 Tm +(3) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 223.75 77.27 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +220.000 75.300 m +239.685 75.300 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 249.21 62.35 Tm +(1) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 223.75 67.27 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +220.000 65.300 m +239.685 65.300 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 266.35 72.35 Tm +(4) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 291.81 77.27 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +300.000 75.300 m +280.315 75.300 l +S +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 266.35 62.35 Tm +(2) Tj +ET +BT +/F1 6 Tf +6.00 TL +0.647 0.294 0.294 rg +1.00 -0.00 0.00 1.00 291.81 67.27 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +300.000 65.300 m +280.315 65.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +179.00 41.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +189.000 51.300 m +189.000 41.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 427.00 61.73 Tm +(SWITCH) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +405.000 65.300 m +410.000 70.300 l +425.000 70.300 l +425.000 60.300 l +410.000 60.300 l +405.000 65.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +220.000 65.300 m +189.000 65.300 l +189.000 51.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +300.000 65.300 m +405.000 65.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +40.00 325.30 480.00 -155.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +40.00 330.30 Td +(Status LEDs) Tj +ET +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +40.00 145.30 480.00 -110.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +40.00 150.30 Td +(User Switch) Tj +ET +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 185.00 305.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +200.000 300.300 m +200.000 290.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +195.000 300.300 m +205.000 300.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 237.00 191.73 Tm +(LED_RED) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +215.000 195.300 m +220.000 200.300 l +235.000 200.300 l +235.000 190.300 l +220.000 190.300 l +215.000 195.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +216.000 79.300 m +224.000 71.300 l +224.000 79.300 m +216.000 71.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +296.000 79.300 m +304.000 71.300 l +304.000 79.300 m +296.000 71.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +866.000 609.300 m +874.000 601.300 l +874.000 609.300 m +866.000 601.300 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +846.000 609.300 m +854.000 601.300 l +854.000 609.300 m +846.000 601.300 l +S +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +870.00 175.30 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +245.00 45.30 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +845.00 590.30 Td +(DNP) Tj +ET +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +297.00 452.80 Td +(XOUT_R) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +295.000 451.300 m +295.000 449.300 l +294.000 450.300 m +296.000 450.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +340.00 615.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +350.000 625.300 m +350.000 615.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +325.000 625.300 m +325.000 635.300 l +350.000 635.300 l +350.000 625.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +795.000 450.300 m +795.000 455.300 l +745.000 455.300 l +745.000 420.300 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +87.00 677.80 Td +(BOOTSEL) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +85.000 676.300 m +85.000 674.300 l +84.000 675.300 m +86.000 675.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +972.00 678.12 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +972.00 687.05 Td +(R14) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +960.00 700.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +965.000 700.300 m +965.000 710.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +965.000 680.300 m +965.000 670.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +762.00 678.12 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +762.00 687.05 Td +(R12) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +750.00 700.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +755.000 700.300 m +755.000 710.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +755.000 680.300 m +755.000 670.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +802.00 678.12 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +802.00 687.05 Td +(R13) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +790.00 700.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +795.000 700.300 m +795.000 710.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +795.000 680.300 m +795.000 670.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +721.44 673.30 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +721.44 682.23 Td +(R17) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +720.00 670.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 665.300 m +710.000 665.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +740.000 665.300 m +750.000 665.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +721.44 633.30 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +721.44 642.23 Td +(R18) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +720.00 630.30 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +720.000 625.300 m +710.000 625.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +740.000 625.300 m +750.000 625.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +675.00 588.13 Td +(100p) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +675.00 597.13 Td +(C22) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +673.000 598.300 m +657.000 598.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +665.000 590.300 m +665.000 580.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +665.000 610.300 m +665.000 602.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +657.000 602.300 m +673.000 602.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +665.000 610.300 m +665.000 620.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +665.000 598.300 m +665.000 590.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +715.00 588.13 Td +(100p) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +715.00 597.13 Td +(C23) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +713.000 598.300 m +697.000 598.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.000 590.300 m +705.000 580.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +705.000 610.300 m +705.000 602.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +697.000 602.300 m +713.000 602.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.000 610.300 m +705.000 620.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +705.000 598.300 m +705.000 590.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 295.00 305.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +310.000 300.300 m +310.000 290.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +305.000 300.300 m +315.000 300.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +207.00 208.10 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +207.00 217.10 Td +(R35) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +195.00 230.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 210.300 m +200.000 200.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 230.300 m +200.000 240.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +317.00 208.11 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +317.00 217.04 Td +(R36) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +305.00 230.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +310.000 210.300 m +310.000 200.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +310.000 230.300 m +310.000 240.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +200.000 290.300 m +200.000 285.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +200.000 245.300 m +200.000 240.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +310.000 245.300 m +310.000 240.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +310.000 290.300 m +310.000 285.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +200.000 200.300 m +200.000 195.300 l +215.000 195.300 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 347.00 191.73 Tm +(LED_GREEN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +325.000 195.300 m +330.000 200.300 l +345.000 200.300 l +345.000 190.300 l +330.000 190.300 l +325.000 195.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +310.000 200.300 m +310.000 195.300 l +325.000 195.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +209.00 252.97 Td +(LTST-C281KRKT) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +209.00 262.04 Td +(LED1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +190.000 260.300 m +183.000 253.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +186.000 264.300 m +179.000 257.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +183.000 253.300 m +185.000 257.300 l +187.000 255.300 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +179.000 257.300 m +181.000 261.300 l +183.000 259.300 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 285.300 m +200.000 270.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 245.300 m +200.000 260.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +206.000 270.300 m +200.000 260.300 l +193.000 270.300 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +207.000 260.300 m +193.000 260.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +319.00 252.97 Td +(XL-1005UGC) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +319.00 262.04 Td +(LED2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +297.000 249.300 m +299.000 253.300 l +301.000 251.300 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +293.000 253.300 m +295.000 257.300 l +297.000 255.300 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +304.000 256.300 m +300.000 252.300 l +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +300.000 260.300 m +296.000 256.300 l +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +310.000 260.300 m +310.000 255.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +310.000 275.300 m +310.000 270.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +303.000 260.300 m +317.000 260.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +303.000 270.300 m +310.000 260.300 l +317.000 270.300 l +h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +310.000 245.300 m +310.000 255.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +310.000 285.300 m +310.000 275.300 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +362.00 78.12 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +362.00 87.05 Td +(R37) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +350.00 100.30 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +355.000 100.300 m +355.000 110.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +355.000 80.300 m +355.000 70.300 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 340.00 130.30 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +355.000 125.300 m +355.000 115.300 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +350.000 125.300 m +360.000 125.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +355.000 70.300 m +355.000 65.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +355.000 110.300 m +355.000 115.300 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +745.00 465.30 Td +(I2C: 0b1010000) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +712.49 177.94 Td +(4.7u) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +713.49 187.09 Td +(C35) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +732.000 188.300 m +748.000 188.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +740.000 180.300 m +740.000 170.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +740.000 200.300 m +740.000 192.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +748.000 192.300 m +732.000 192.300 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +740.000 200.300 m +740.000 210.300 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +740.000 188.300 m +740.000 180.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +740.000 210.300 m +740.000 220.300 l +780.000 220.300 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +730.00 150.30 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +740.000 160.300 m +740.000 150.300 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +740.000 170.300 m +740.000 160.300 l +S +0.80 0.00 0.00 rg +667.50 625.30 m 667.50 626.68 666.38 627.80 665.00 627.80 c +663.62 627.80 662.50 626.68 662.50 625.30 c +662.50 623.92 663.62 622.80 665.00 622.80 c +666.38 622.80 667.50 623.92 667.50 625.30 c +f +0.80 0.00 0.00 rg +757.50 625.30 m 757.50 626.68 756.38 627.80 755.00 627.80 c +753.62 627.80 752.50 626.68 752.50 625.30 c +752.50 623.92 753.62 622.80 755.00 622.80 c +756.38 622.80 757.50 623.92 757.50 625.30 c +f +0.80 0.00 0.00 rg +707.50 665.30 m 707.50 666.68 706.38 667.80 705.00 667.80 c +703.62 667.80 702.50 666.68 702.50 665.30 c +702.50 663.92 703.62 662.80 705.00 662.80 c +706.38 662.80 707.50 663.92 707.50 665.30 c +f +0.80 0.00 0.00 rg +777.50 715.30 m 777.50 716.68 776.38 717.80 775.00 717.80 c +773.62 717.80 772.50 716.68 772.50 715.30 c +772.50 713.92 773.62 712.80 775.00 712.80 c +776.38 712.80 777.50 713.92 777.50 715.30 c +f +0.80 0.00 0.00 rg +967.50 665.30 m 967.50 666.68 966.38 667.80 965.00 667.80 c +963.62 667.80 962.50 666.68 962.50 665.30 c +962.50 663.92 963.62 662.80 965.00 662.80 c +966.38 662.80 967.50 663.92 967.50 665.30 c +f +0.80 0.00 0.00 rg +427.50 675.30 m 427.50 676.68 426.38 677.80 425.00 677.80 c +423.62 677.80 422.50 676.68 422.50 675.30 c +422.50 673.92 423.62 672.80 425.00 672.80 c +426.38 672.80 427.50 673.92 427.50 675.30 c +f +0.80 0.00 0.00 rg +212.50 675.30 m 212.50 676.68 211.38 677.80 210.00 677.80 c +208.62 677.80 207.50 676.68 207.50 675.30 c +207.50 673.92 208.62 672.80 210.00 672.80 c +211.38 672.80 212.50 673.92 212.50 675.30 c +f +0.80 0.00 0.00 rg +352.50 450.30 m 352.50 451.68 351.38 452.80 350.00 452.80 c +348.62 452.80 347.50 451.68 347.50 450.30 c +347.50 448.92 348.62 447.80 350.00 447.80 c +351.38 447.80 352.50 448.92 352.50 450.30 c +f +0.80 0.00 0.00 rg +182.50 430.30 m 182.50 431.68 181.38 432.80 180.00 432.80 c +178.62 432.80 177.50 431.68 177.50 430.30 c +177.50 428.92 178.62 427.80 180.00 427.80 c +181.38 427.80 182.50 428.92 182.50 430.30 c +f +0.80 0.00 0.00 rg +747.50 390.30 m 747.50 391.68 746.38 392.80 745.00 392.80 c +743.62 392.80 742.50 391.68 742.50 390.30 c +742.50 388.92 743.62 387.80 745.00 387.80 c +746.38 387.80 747.50 388.92 747.50 390.30 c +f +0.80 0.00 0.00 rg +747.50 400.30 m 747.50 401.68 746.38 402.80 745.00 402.80 c +743.62 402.80 742.50 401.68 742.50 400.30 c +742.50 398.92 743.62 397.80 745.00 397.80 c +746.38 397.80 747.50 398.92 747.50 400.30 c +f +0.80 0.00 0.00 rg +747.50 410.30 m 747.50 411.68 746.38 412.80 745.00 412.80 c +743.62 412.80 742.50 411.68 742.50 410.30 c +742.50 408.92 743.62 407.80 745.00 407.80 c +746.38 407.80 747.50 408.92 747.50 410.30 c +f +0.80 0.00 0.00 rg +852.50 465.30 m 852.50 466.68 851.38 467.80 850.00 467.80 c +848.62 467.80 847.50 466.68 847.50 465.30 c +847.50 463.92 848.62 462.80 850.00 462.80 c +851.38 462.80 852.50 463.92 852.50 465.30 c +f +0.80 0.00 0.00 rg +872.50 410.30 m 872.50 411.68 871.38 412.80 870.00 412.80 c +868.62 412.80 867.50 411.68 867.50 410.30 c +867.50 408.92 868.62 407.80 870.00 407.80 c +871.38 407.80 872.50 408.92 872.50 410.30 c +f +0.80 0.00 0.00 rg +802.50 280.30 m 802.50 281.68 801.38 282.80 800.00 282.80 c +798.62 282.80 797.50 281.68 797.50 280.30 c +797.50 278.92 798.62 277.80 800.00 277.80 c +801.38 277.80 802.50 278.92 802.50 280.30 c +f +0.80 0.00 0.00 rg +802.50 220.30 m 802.50 221.68 801.38 222.80 800.00 222.80 c +798.62 222.80 797.50 221.68 797.50 220.30 c +797.50 218.92 798.62 217.80 800.00 217.80 c +801.38 217.80 802.50 218.92 802.50 220.30 c +f +0.80 0.00 0.00 rg +792.50 165.30 m 792.50 166.68 791.38 167.80 790.00 167.80 c +788.62 167.80 787.50 166.68 787.50 165.30 c +787.50 163.92 788.62 162.80 790.00 162.80 c +791.38 162.80 792.50 163.92 792.50 165.30 c +f +0.80 0.00 0.00 rg +797.50 665.30 m 797.50 666.68 796.38 667.80 795.00 667.80 c +793.62 667.80 792.50 666.68 792.50 665.30 c +792.50 663.92 793.62 662.80 795.00 662.80 c +796.38 662.80 797.50 663.92 797.50 665.30 c +f +0.80 0.00 0.00 rg +747.50 420.30 m 747.50 421.68 746.38 422.80 745.00 422.80 c +743.62 422.80 742.50 421.68 742.50 420.30 c +742.50 418.92 743.62 417.80 745.00 417.80 c +746.38 417.80 747.50 418.92 747.50 420.30 c +f +0.80 0.00 0.00 rg +357.50 65.30 m 357.50 66.68 356.38 67.80 355.00 67.80 c +353.62 67.80 352.50 66.68 352.50 65.30 c +352.50 63.92 353.62 62.80 355.00 62.80 c +356.38 62.80 357.50 63.92 357.50 65.30 c +f +0.80 0.00 0.00 rg +782.50 220.30 m 782.50 221.68 781.38 222.80 780.00 222.80 c +778.62 222.80 777.50 221.68 777.50 220.30 c +777.50 218.92 778.62 217.80 780.00 217.80 c +781.38 217.80 782.50 218.92 782.50 220.30 c +f +q +102.00 0 0 20.00 706.00 30.80 cm +/I0 Do +Q +endstream +endobj +9 0 obj +<> +endobj +10 0 obj +<< +/Length 47929 +>> +stream +0.20 w +0.00 0.53 0.00 RG +1 J +1 j +2 J +0 j +100 M +1.00 g +[] 0 d +0.00 827.50 1169.00 -827.50 re +f +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +216.000 806.500 m +216.000 816.500 l +216.000 20.500 m +216.000 10.500 l +412.000 806.500 m +412.000 816.500 l +412.000 20.500 m +412.000 10.500 l +608.000 806.500 m +608.000 816.500 l +608.000 20.500 m +608.000 10.500 l +804.000 806.500 m +804.000 816.500 l +804.000 20.500 m +804.000 10.500 l +1000.000 806.500 m +1000.000 816.500 l +1000.000 20.500 m +1000.000 10.500 l +20.000 610.500 m +10.000 610.500 l +1149.000 610.500 m +1159.000 610.500 l +20.000 414.500 m +10.000 414.500 l +1149.000 414.500 m +1159.000 414.500 l +20.000 218.500 m +10.000 218.500 l +1149.000 218.500 m +1159.000 218.500 l +20.000 22.500 m +10.000 22.500 l +1149.000 22.500 m +1159.000 22.500 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 708.50 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 708.50 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 512.50 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 512.50 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 316.50 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 316.50 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 120.50 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 120.50 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 808.00 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 12.00 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 808.00 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 12.00 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 808.00 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 12.00 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 808.00 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 12.00 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 808.00 Td +(5) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 12.00 Td +(5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +20.00 806.50 1129.00 -786.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +10.00 816.50 1149.00 -806.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.00 100.50 444.00 -80.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +705.100 61.250 m +1148.630 61.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 41.250 m +1148.630 41.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.610 100.430 m +1069.630 61.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.630 61.250 m +1069.630 41.250 l +S +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +710.00 87.50 Td +(TITLE:) Tj +ET +10.00 w +BT +/F1 13 Tf +13.00 TL +0.000 0.000 1.000 rg +767.62 74.91 Td +(04 LED Interface) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1074.62 74.25 Td +(REV:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1112.62 74.25 Td +(1.0) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 25.50 Td +(Date:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +861.62 25.02 Td +(2025-05-28) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1073.62 45.50 Td +(Sheet:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1118.62 45.02 Td +(4/5) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +953.62 25.25 Td +(Drawn By:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1018.63 25.25 Td +(chros) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 47.25 Td +(Company:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +881.25 47.14 Td +(Your Company) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 61.250 m +809.630 21.250 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +365.000 445.500 m +390.000 445.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +320.000 480.500 m +320.000 445.500 l +325.000 445.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 468.26 Td +(IRLML2502) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 477.17 Td +(Q2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +1.00 g +[] 0 d +380.000 480.500 m +386.000 478.500 l +386.000 482.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 482.500 m +397.000 477.500 l +403.000 477.500 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 487.500 m +390.000 487.500 l +390.000 490.500 l +400.000 490.500 l +400.000 482.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 480.500 m +390.000 480.500 l +390.000 470.500 l +400.000 470.500 l +400.000 477.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +390.000 473.500 m +380.000 473.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +378.000 489.500 m +378.000 471.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 489.500 m +380.000 485.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 478.500 m +380.000 482.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 471.500 m +380.000 475.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +403.000 482.500 m +402.000 482.500 l +398.000 482.500 l +397.000 482.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 500.500 m +390.000 490.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +370.000 480.500 m +378.000 480.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 460.500 m +390.000 470.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +210.000 590.500 m +210.000 585.500 l +245.000 585.500 l +245.000 615.500 l +255.000 615.500 l +265.000 615.500 l +390.000 615.500 l +390.000 540.500 l +390.000 500.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +380.00 415.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +390.000 425.500 m +390.000 415.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +390.000 460.500 m +390.000 425.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +365.000 480.500 m +370.000 480.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 153.80 476.90 Tm +(LED_CH3_PWM) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +255.000 480.500 m +250.000 475.500 l +235.000 475.500 l +235.000 485.500 l +250.000 485.500 l +255.000 480.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +325.000 480.500 m +255.000 480.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +720.000 320.500 m +725.000 320.500 l +725.000 285.500 l +720.000 285.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 285.500 m +655.000 285.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +325.000 375.500 m +255.000 375.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 153.80 371.90 Tm +(LED_CH2_PWM) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +255.000 375.500 m +250.000 370.500 l +235.000 370.500 l +235.000 380.500 l +250.000 380.500 l +255.000 375.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +365.000 375.500 m +370.000 375.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +390.000 355.500 m +390.000 320.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +380.00 310.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +390.000 320.500 m +390.000 310.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +200.000 590.500 m +200.000 575.500 l +230.000 575.500 l +230.000 625.500 l +470.000 625.500 l +470.000 400.500 l +390.000 400.500 l +390.000 395.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 363.26 Td +(IRLML2502) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 372.17 Td +(Q3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +1.00 g +[] 0 d +380.000 375.500 m +386.000 373.500 l +386.000 377.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 377.500 m +397.000 372.500 l +403.000 372.500 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 382.500 m +390.000 382.500 l +390.000 385.500 l +400.000 385.500 l +400.000 377.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 375.500 m +390.000 375.500 l +390.000 365.500 l +400.000 365.500 l +400.000 372.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +390.000 368.500 m +380.000 368.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +378.000 384.500 m +378.000 366.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 384.500 m +380.000 380.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 373.500 m +380.000 377.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 366.500 m +380.000 370.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +403.000 377.500 m +402.000 377.500 l +398.000 377.500 l +397.000 377.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 395.500 m +390.000 385.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +370.000 375.500 m +378.000 375.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 355.500 m +390.000 365.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +320.000 375.500 m +320.000 340.500 l +325.000 340.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +365.000 340.500 m +390.000 340.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +365.000 230.500 m +390.000 230.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +320.000 265.500 m +320.000 230.500 l +325.000 230.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 253.26 Td +(IRLML2502) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +405.00 262.17 Td +(Q4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +1.00 g +[] 0 d +380.000 265.500 m +386.000 263.500 l +386.000 267.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +400.000 267.500 m +397.000 262.500 l +403.000 262.500 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 272.500 m +390.000 272.500 l +390.000 275.500 l +400.000 275.500 l +400.000 267.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 265.500 m +390.000 265.500 l +390.000 255.500 l +400.000 255.500 l +400.000 262.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +390.000 258.500 m +380.000 258.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +378.000 274.500 m +378.000 256.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 274.500 m +380.000 270.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 263.500 m +380.000 267.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +380.000 256.500 m +380.000 260.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +403.000 267.500 m +402.000 267.500 l +398.000 267.500 l +397.000 267.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 285.500 m +390.000 275.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +370.000 265.500 m +378.000 265.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +390.000 245.500 m +390.000 255.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +380.00 200.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +390.000 210.500 m +390.000 200.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +390.000 245.500 m +390.000 210.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +365.000 265.500 m +370.000 265.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 153.80 261.90 Tm +(LED_CH1_PWM) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +255.000 265.500 m +250.000 260.500 l +235.000 260.500 l +235.000 270.500 l +250.000 270.500 l +255.000 265.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +325.000 265.500 m +255.000 265.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +635.000 605.500 m +625.000 605.500 l +625.000 595.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +635.000 595.500 m +625.000 595.500 l +625.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +635.000 575.500 m +625.000 575.500 l +625.000 585.500 l +635.000 585.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1031.93 326.57 Tm +(LED_PWR_EN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1010.000 330.500 m +1015.000 335.500 l +1030.000 335.500 l +1030.000 325.500 l +1015.000 325.500 l +1010.000 330.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +680.000 320.500 m +675.000 320.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +675.000 595.500 m +695.000 595.500 l +695.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +675.000 585.500 m +695.000 585.500 l +695.000 575.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +675.000 575.500 m +695.000 575.500 l +695.000 565.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +695.000 525.500 m +695.000 520.500 l +655.000 520.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 300.500 m +655.000 265.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +645.00 255.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +655.000 265.500 m +655.000 255.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +655.000 545.500 m +655.000 340.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +593.48 308.26 Td +(IRLML2502) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +627.99 317.17 Td +(Q1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +1.00 g +[] 0 d +665.000 320.500 m +659.000 318.500 l +659.000 322.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +645.000 322.500 m +648.000 317.500 l +642.000 317.500 l + h +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +665.000 327.500 m +655.000 327.500 l +655.000 330.500 l +645.000 330.500 l +645.000 322.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +665.000 320.500 m +655.000 320.500 l +655.000 310.500 l +645.000 310.500 l +645.000 317.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +655.000 313.500 m +665.000 313.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +667.000 329.500 m +667.000 311.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +665.000 329.500 m +665.000 325.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +665.000 318.500 m +665.000 322.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +665.000 311.500 m +665.000 315.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +642.000 322.500 m +643.000 322.500 l +647.000 322.500 l +648.000 322.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +655.000 340.500 m +655.000 330.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +675.000 320.500 m +667.000 320.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +655.000 300.500 m +655.000 310.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +649.01 610.50 Td +(IRF7416T) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +649.01 619.40 Td +(U10) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +635.000 605.500 m +645.000 605.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +635.000 595.500 m +645.000 595.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +635.000 585.500 m +645.000 585.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +675.000 595.500 m +665.000 595.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +675.000 585.500 m +665.000 585.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +655.000 575.500 m +653.000 569.500 l +657.000 569.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +658.000 585.500 m +653.000 582.500 l +653.000 588.500 l + h +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +665.000 575.500 m +665.000 595.500 l +665.000 585.500 l +657.000 585.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +648.000 575.500 m +645.000 575.500 l +645.000 605.500 l +645.000 585.500 l +655.000 585.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +648.000 575.500 m +648.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +655.000 565.500 m +655.000 575.500 l +665.000 575.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +662.000 575.500 m +662.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +646.000 563.500 m +664.000 563.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +650.000 565.500 m +646.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +657.000 565.500 m +653.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +664.000 565.500 m +660.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +655.000 555.500 m +655.000 563.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +658.000 582.500 m +658.000 583.500 l +658.000 587.500 l +658.000 588.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +635.000 575.500 m +645.000 575.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +655.000 545.500 m +655.000 555.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +675.000 575.500 m +665.000 575.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 924.28 653.59 Tm +(VEXT) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +935.000 650.500 m +935.000 640.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +930.000 650.500 m +940.000 650.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +701.00 533.33 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +701.00 542.33 Td +(R20) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +695.000 565.500 m +695.000 555.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +695.000 525.500 m +695.000 535.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +691.00 555.50 8.00 -20.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +336.44 453.50 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +336.44 462.43 Td +(R24) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +335.00 450.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +335.000 445.500 m +325.000 445.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +355.000 445.500 m +365.000 445.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +336.44 348.50 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +336.44 357.43 Td +(R26) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +335.00 345.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +335.000 340.500 m +325.000 340.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +355.000 340.500 m +365.000 340.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +336.44 238.50 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +336.44 247.43 Td +(R28) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +335.00 235.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +335.000 230.500 m +325.000 230.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +355.000 230.500 m +365.000 230.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +339.04 487.50 Td +(100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +339.04 496.48 Td +(R22) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +365.000 480.500 m +355.000 480.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +325.000 480.500 m +335.000 480.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +335.00 484.50 20.00 -8.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +339.04 382.50 Td +(100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +339.04 391.48 Td +(R25) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +365.000 375.500 m +355.000 375.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +325.000 375.500 m +335.000 375.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +335.00 379.50 20.00 -8.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +339.04 272.50 Td +(100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +339.04 281.48 Td +(R27) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +365.000 265.500 m +355.000 265.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +325.000 265.500 m +335.000 265.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +335.00 269.50 20.00 -8.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +690.95 327.50 Td +(100) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +689.45 336.48 Td +(R21) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +680.000 320.500 m +690.000 320.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +720.000 320.500 m +710.000 320.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +690.00 324.50 20.00 -8.00 re +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +694.05 293.50 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +692.05 302.43 Td +(R23) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +690.00 290.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +710.000 285.500 m +720.000 285.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +690.000 285.500 m +680.000 285.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +134.05 631.75 Td +(0430450400) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +134.05 622.75 Td +(CN2) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +192.000 650.500 m +218.000 650.500 l +219.105 650.500 220.000 649.605 220.000 648.500 c +220.000 612.500 l +220.000 611.395 218.895 610.500 218.000 610.500 c +192.000 610.500 l +190.895 610.500 190.000 611.605 190.000 612.500 c +190.000 648.500 l +190.000 649.605 191.105 650.500 192.000 650.500 c +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 203.00 642.78 Tm +(4) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 199.00 655.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 670.500 m +200.000 650.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 203.00 612.50 Tm +(3) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 199.00 599.78 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 590.500 m +200.000 610.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 213.00 642.78 Tm +(2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 209.00 655.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +210.000 670.500 m +210.000 650.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 213.00 612.50 Tm +(1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +0.00 1.00 -1.00 0.00 209.00 599.78 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +210.000 590.500 m +210.000 610.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +297.00 648.00 Td +(LED+) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +295.000 646.500 m +295.000 644.500 l +294.000 645.500 m +296.000 645.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +297.00 638.00 Td +(LED_PWM1) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +295.000 636.500 m +295.000 634.500 l +294.000 635.500 m +296.000 635.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +297.00 628.00 Td +(LED_PWM2) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +295.000 626.500 m +295.000 624.500 l +294.000 625.500 m +296.000 625.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +297.00 618.00 Td +(LED_PWM3) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +295.000 616.500 m +295.000 614.500 l +294.000 615.500 m +296.000 615.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +846.34 607.27 Td +(INA260AIPWR) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +845.05 616.27 Td +(U13) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +847.000 605.500 m +913.000 605.500 l +914.105 605.500 915.000 604.605 915.000 603.500 c +915.000 517.500 l +915.000 516.395 913.895 515.500 913.000 515.500 c +847.000 515.500 l +845.895 515.500 845.000 516.605 845.000 517.500 c +845.000 603.500 l +845.000 604.605 846.105 605.500 847.000 605.500 c +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +911.50 600.50 m 911.50 601.33 910.83 602.00 910.00 602.00 c +909.17 602.00 908.50 601.33 908.50 600.50 c +908.50 599.67 909.17 599.00 910.00 599.00 c +910.83 599.00 911.50 599.67 911.50 600.50 c +B +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 893.43 591.50 Tm +(IN+) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 596.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 595.500 m +915.000 595.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 893.43 581.50 Tm +(IN+) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 586.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 585.500 m +915.000 585.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 893.43 571.50 Tm +(IN+) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 576.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 575.500 m +915.000 575.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 899.44 561.50 Tm +(A1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 566.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 565.500 m +915.000 565.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 899.44 551.50 Tm +(A0) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 556.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 555.500 m +915.000 555.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 890.66 541.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 915.50 546.50 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +925.000 545.500 m +915.000 545.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 882.66 531.50 Tm +(ALERT) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 536.50 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 535.500 m +915.000 535.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 892.08 521.50 Tm +(SDA) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 915.50 526.50 Tm +(8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 525.500 m +915.000 525.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 521.50 Tm +(SCL) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 838.78 526.50 Tm +(9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 525.500 m +845.000 525.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 531.50 Tm +(VS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.07 536.50 Tm +(10) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 535.500 m +845.000 535.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 848.70 541.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 833.07 546.50 Tm +(11) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +835.000 545.500 m +845.000 545.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 551.50 Tm +(VBUS) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.07 556.50 Tm +(12) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 555.500 m +845.000 555.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 561.50 Tm +(NC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.07 566.50 Tm +(13) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 565.500 m +845.000 565.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 571.50 Tm +(IN-) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.07 576.50 Tm +(14) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 575.500 m +845.000 575.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 581.50 Tm +(IN-) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.07 586.50 Tm +(15) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 585.500 m +845.000 585.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 848.70 591.50 Tm +(IN-) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.07 596.50 Tm +(16) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +835.000 595.500 m +845.000 595.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +935.000 640.500 m +935.000 595.500 l +925.000 595.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 585.500 m +935.000 585.500 l +935.000 595.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 575.500 m +935.000 575.500 l +935.000 585.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +925.00 470.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +935.000 480.500 m +935.000 470.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 545.500 m +935.000 545.500 l +935.000 480.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +810.00 470.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +820.000 480.500 m +820.000 470.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 545.500 m +820.000 545.500 l +820.000 480.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1032.00 511.93 Tm +(I2C_SCL) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1010.000 515.500 m +1015.000 520.500 l +1030.000 520.500 l +1030.000 510.500 l +1015.000 510.500 l +1010.000 515.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1032.00 521.93 Tm +(I2C_SDA) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1010.000 525.500 m +1015.000 530.500 l +1030.000 530.500 l +1030.000 520.500 l +1015.000 520.500 l +1010.000 525.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +210.000 670.500 m +210.000 675.500 l +245.000 675.500 l +245.000 645.500 l +625.000 645.500 l +625.000 605.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 809.28 653.59 Tm +(VEXT) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +820.000 650.500 m +820.000 640.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +815.000 650.500 m +825.000 650.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 640.500 m +820.000 555.500 l +835.000 555.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 775.00 565.50 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +790.000 560.500 m +790.000 550.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +785.000 560.500 m +795.000 560.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 535.500 m +790.000 535.500 l +790.000 550.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +759.98 493.31 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +763.49 502.29 Td +(C27) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +782.000 503.500 m +798.000 503.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +790.000 495.500 m +790.000 485.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +790.000 515.500 m +790.000 507.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +798.000 507.500 m +782.000 507.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +790.000 515.500 m +790.000 525.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +790.000 503.500 m +790.000 495.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +790.000 525.500 m +790.000 535.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +780.00 470.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +790.000 480.500 m +790.000 470.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +790.000 480.500 m +790.000 485.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 575.500 m +830.000 575.500 l +830.000 585.500 l +835.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 595.500 m +830.000 595.500 l +830.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +695.000 585.500 m +830.000 585.500 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +840.00 495.50 Td +(I2C: 0b1000000) Tj +ET +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 555.500 m +935.000 555.500 l +935.000 545.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 565.500 m +935.000 565.500 l +935.000 555.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 1031.94 531.95 Tm +(INA260_ALERT) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +1010.000 535.500 m +1015.000 540.500 l +1030.000 540.500 l +1030.000 530.500 l +1015.000 530.500 l +1010.000 535.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 535.500 m +1010.000 535.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 525.500 m +1010.000 525.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +835.000 525.500 m +830.000 525.500 l +830.000 510.500 l +925.000 510.500 l +925.000 515.500 l +1010.000 515.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +831.000 569.500 m +839.000 561.500 l +839.000 569.500 m +831.000 561.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +841.51 352.26 Td +(SN74LVC1G08DCKR) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +839.05 361.26 Td +(U14) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 843.70 316.50 Tm +(Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 833.78 321.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +830.000 320.500 m +840.000 320.500 l +S +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 843.70 336.50 Tm +(VCC) Tj +ET +BT +/F1 9 Tf +9.00 TL +1.000 0.000 0.000 rg +1.00 -0.00 0.00 1.00 833.78 341.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +1.00 0.00 0.00 RG +[] 0 d +830.000 340.500 m +840.000 340.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 875.66 316.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 900.50 321.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +910.000 320.500 m +900.000 320.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 890.13 326.50 Tm +(B) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 900.50 331.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +910.000 330.500 m +900.000 330.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 890.15 336.50 Tm +(A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 900.50 341.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +910.000 340.500 m +900.000 340.500 l +S +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +896.50 345.50 m 896.50 346.33 895.83 347.00 895.00 347.00 c +894.17 347.00 893.50 346.33 893.50 345.50 c +893.50 344.67 894.17 344.00 895.00 344.00 c +895.83 344.00 896.50 344.67 896.50 345.50 c +B +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +842.000 350.500 m +898.000 350.500 l +899.105 350.500 900.000 349.605 900.000 348.500 c +900.000 312.500 l +900.000 311.395 898.895 310.500 898.000 310.500 c +842.000 310.500 l +840.895 310.500 840.000 311.605 840.000 312.500 c +840.000 348.500 l +840.000 349.605 841.105 350.500 842.000 350.500 c +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 805.00 390.50 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +820.000 385.500 m +820.000 375.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +815.000 385.500 m +825.000 385.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +789.98 283.31 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +793.49 292.29 Td +(C31) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +812.000 293.500 m +828.000 293.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +820.000 285.500 m +820.000 275.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +820.000 305.500 m +820.000 297.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +828.000 297.500 m +812.000 297.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +820.000 305.500 m +820.000 315.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +820.000 293.500 m +820.000 285.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +810.00 255.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +820.000 265.500 m +820.000 255.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 275.500 m +820.000 265.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +820.000 315.500 m +820.000 375.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +910.00 255.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +920.000 265.500 m +920.000 255.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +830.000 340.500 m +820.000 340.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +910.000 320.500 m +920.000 320.500 l +920.000 265.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +732.00 323.00 Td +(PWR_EN_&_ALERT) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +730.000 321.500 m +730.000 319.500 l +729.000 320.500 m +731.000 320.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +910.000 330.500 m +1010.000 330.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +910.000 340.500 m +960.000 340.500 l +960.000 535.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +830.000 320.500 m +725.000 320.500 l +S +10.00 w +BT +9.00 TL +0.000 0.000 0.502 rg +991.00 578.31 Td +/F2 9 Tf +(4.7k) Tj +/F5 9 Tf +<03a9> Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +991.00 587.17 Td +(R38) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +985.000 610.500 m +985.000 600.500 l +S +1 J +1 j +1.00 w +0.00 G +[] 0 d +985.000 570.500 m +985.000 580.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +981.00 600.50 8.00 -20.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +985.000 640.500 m +985.000 610.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 969.80 656.43 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +985.000 650.500 m +985.000 640.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +980.000 650.500 m +990.000 650.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +985.000 570.500 m +985.000 535.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +200.000 670.500 m +200.000 685.500 l +230.000 685.500 l +230.000 635.500 l +485.000 635.500 l +485.000 295.500 l +390.000 295.500 l +390.000 285.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +967.87 288.25 Td +(10k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +967.61 297.25 Td +(R39) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +955.00 310.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +960.000 310.500 m +960.000 320.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +960.000 290.500 m +960.000 280.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +950.00 255.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +960.000 265.500 m +960.000 255.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +960.000 280.500 m +960.000 265.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +960.000 320.500 m +960.000 330.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +269.29 508.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +269.29 517.51 Td +(P3) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +275.000 505.660 m +270.000 500.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +270.000 500.660 m +275.000 495.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +275.000 495.660 m +280.000 500.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +280.000 500.660 m +275.000 505.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +272.500 500.657 m +272.50 499.28 273.62 498.16 275.00 498.16 c +276.38 498.15 277.50 499.27 277.50 500.65 c +277.50 502.03 276.38 503.15 275.00 503.16 c +273.79 503.16 272.76 502.29 272.54 501.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +275.000 485.500 m +275.000 495.342 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +269.29 403.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +269.29 412.51 Td +(P4) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +275.000 400.660 m +270.000 395.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +270.000 395.660 m +275.000 390.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +275.000 390.660 m +280.000 395.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +280.000 395.660 m +275.000 400.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +272.500 395.657 m +272.50 394.28 273.62 393.16 275.00 393.16 c +276.38 393.15 277.50 394.27 277.50 395.65 c +277.50 397.03 276.38 398.15 275.00 398.16 c +273.79 398.16 272.76 397.29 272.54 396.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +275.000 380.500 m +275.000 390.342 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +269.29 293.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +269.29 302.51 Td +(P5) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +275.000 290.660 m +270.000 285.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +270.000 285.660 m +275.000 280.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +275.000 280.660 m +280.000 285.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +280.000 285.660 m +275.000 290.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +272.500 285.657 m +272.50 284.28 273.62 283.16 275.00 283.16 c +276.38 283.15 277.50 284.27 277.50 285.65 c +277.50 287.03 276.38 288.15 275.00 288.16 c +273.79 288.16 272.76 287.29 272.54 286.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +275.000 270.500 m +275.000 280.342 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +275.000 270.500 m +275.000 265.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +275.000 380.500 m +275.000 375.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +275.000 485.500 m +275.000 480.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +984.29 413.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +984.29 422.51 Td +(P6) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +990.000 410.660 m +985.000 405.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +985.000 405.660 m +990.000 400.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +990.000 400.660 m +995.000 405.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +995.000 405.660 m +990.000 410.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +987.500 405.657 m +987.50 404.28 988.62 403.16 990.00 403.16 c +991.38 403.15 992.50 404.27 992.50 405.65 c +992.50 407.03 991.38 408.15 990.00 408.16 c +988.79 408.16 987.76 407.29 987.54 406.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +990.000 390.500 m +990.000 400.342 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +984.29 358.66 Td +(TESTPAD50) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +984.29 367.51 Td +(P7) Tj +ET +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +990.000 355.660 m +985.000 350.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +985.000 350.660 m +990.000 345.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +990.000 345.660 m +995.000 350.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +0.00 g +[] 0 d +995.000 350.660 m +990.000 355.660 l +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +987.500 350.657 m +987.50 349.28 988.62 348.16 990.00 348.16 c +991.38 348.15 992.50 349.27 992.50 350.65 c +992.50 352.03 991.38 353.15 990.00 353.16 c +988.79 353.16 987.76 352.29 987.54 351.10 c +S +1 J +1 j +1.00 w +0.65 0.29 0.29 RG +[] 0 d +990.000 335.500 m +990.000 345.342 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +990.000 335.500 m +990.000 330.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +990.000 390.500 m +990.000 385.500 l +960.000 385.500 l +S +0.80 0.00 0.00 rg +392.50 445.50 m 392.50 446.88 391.38 448.00 390.00 448.00 c +388.62 448.00 387.50 446.88 387.50 445.50 c +387.50 444.12 388.62 443.00 390.00 443.00 c +391.38 443.00 392.50 444.12 392.50 445.50 c +f +0.80 0.00 0.00 rg +322.50 480.50 m 322.50 481.88 321.38 483.00 320.00 483.00 c +318.62 483.00 317.50 481.88 317.50 480.50 c +317.50 479.12 318.62 478.00 320.00 478.00 c +321.38 478.00 322.50 479.12 322.50 480.50 c +f +0.80 0.00 0.00 rg +657.50 285.50 m 657.50 286.88 656.38 288.00 655.00 288.00 c +653.62 288.00 652.50 286.88 652.50 285.50 c +652.50 284.12 653.62 283.00 655.00 283.00 c +656.38 283.00 657.50 284.12 657.50 285.50 c +f +0.80 0.00 0.00 rg +322.50 375.50 m 322.50 376.88 321.38 378.00 320.00 378.00 c +318.62 378.00 317.50 376.88 317.50 375.50 c +317.50 374.12 318.62 373.00 320.00 373.00 c +321.38 373.00 322.50 374.12 322.50 375.50 c +f +0.80 0.00 0.00 rg +392.50 340.50 m 392.50 341.88 391.38 343.00 390.00 343.00 c +388.62 343.00 387.50 341.88 387.50 340.50 c +387.50 339.12 388.62 338.00 390.00 338.00 c +391.38 338.00 392.50 339.12 392.50 340.50 c +f +0.80 0.00 0.00 rg +392.50 230.50 m 392.50 231.88 391.38 233.00 390.00 233.00 c +388.62 233.00 387.50 231.88 387.50 230.50 c +387.50 229.12 388.62 228.00 390.00 228.00 c +391.38 228.00 392.50 229.12 392.50 230.50 c +f +0.80 0.00 0.00 rg +322.50 265.50 m 322.50 266.88 321.38 268.00 320.00 268.00 c +318.62 268.00 317.50 266.88 317.50 265.50 c +317.50 264.12 318.62 263.00 320.00 263.00 c +321.38 263.00 322.50 264.12 322.50 265.50 c +f +0.80 0.00 0.00 rg +627.50 595.50 m 627.50 596.88 626.38 598.00 625.00 598.00 c +623.62 598.00 622.50 596.88 622.50 595.50 c +622.50 594.12 623.62 593.00 625.00 593.00 c +626.38 593.00 627.50 594.12 627.50 595.50 c +f +0.80 0.00 0.00 rg +627.50 585.50 m 627.50 586.88 626.38 588.00 625.00 588.00 c +623.62 588.00 622.50 586.88 622.50 585.50 c +622.50 584.12 623.62 583.00 625.00 583.00 c +626.38 583.00 627.50 584.12 627.50 585.50 c +f +0.80 0.00 0.00 rg +697.50 585.50 m 697.50 586.88 696.38 588.00 695.00 588.00 c +693.62 588.00 692.50 586.88 692.50 585.50 c +692.50 584.12 693.62 583.00 695.00 583.00 c +696.38 583.00 697.50 584.12 697.50 585.50 c +f +0.80 0.00 0.00 rg +697.50 575.50 m 697.50 576.88 696.38 578.00 695.00 578.00 c +693.62 578.00 692.50 576.88 692.50 575.50 c +692.50 574.12 693.62 573.00 695.00 573.00 c +696.38 573.00 697.50 574.12 697.50 575.50 c +f +0.80 0.00 0.00 rg +657.50 520.50 m 657.50 521.88 656.38 523.00 655.00 523.00 c +653.62 523.00 652.50 521.88 652.50 520.50 c +652.50 519.12 653.62 518.00 655.00 518.00 c +656.38 518.00 657.50 519.12 657.50 520.50 c +f +0.80 0.00 0.00 rg +937.50 585.50 m 937.50 586.88 936.38 588.00 935.00 588.00 c +933.62 588.00 932.50 586.88 932.50 585.50 c +932.50 584.12 933.62 583.00 935.00 583.00 c +936.38 583.00 937.50 584.12 937.50 585.50 c +f +0.80 0.00 0.00 rg +627.50 605.50 m 627.50 606.88 626.38 608.00 625.00 608.00 c +623.62 608.00 622.50 606.88 622.50 605.50 c +622.50 604.12 623.62 603.00 625.00 603.00 c +626.38 603.00 627.50 604.12 627.50 605.50 c +f +0.80 0.00 0.00 rg +792.50 535.50 m 792.50 536.88 791.38 538.00 790.00 538.00 c +788.62 538.00 787.50 536.88 787.50 535.50 c +787.50 534.12 788.62 533.00 790.00 533.00 c +791.38 533.00 792.50 534.12 792.50 535.50 c +f +0.80 0.00 0.00 rg +832.50 585.50 m 832.50 586.88 831.38 588.00 830.00 588.00 c +828.62 588.00 827.50 586.88 827.50 585.50 c +827.50 584.12 828.62 583.00 830.00 583.00 c +831.38 583.00 832.50 584.12 832.50 585.50 c +f +0.80 0.00 0.00 rg +937.50 595.50 m 937.50 596.88 936.38 598.00 935.00 598.00 c +933.62 598.00 932.50 596.88 932.50 595.50 c +932.50 594.12 933.62 593.00 935.00 593.00 c +936.38 593.00 937.50 594.12 937.50 595.50 c +f +0.80 0.00 0.00 rg +937.50 545.50 m 937.50 546.88 936.38 548.00 935.00 548.00 c +933.62 548.00 932.50 546.88 932.50 545.50 c +932.50 544.12 933.62 543.00 935.00 543.00 c +936.38 543.00 937.50 544.12 937.50 545.50 c +f +0.80 0.00 0.00 rg +937.50 555.50 m 937.50 556.88 936.38 558.00 935.00 558.00 c +933.62 558.00 932.50 556.88 932.50 555.50 c +932.50 554.12 933.62 553.00 935.00 553.00 c +936.38 553.00 937.50 554.12 937.50 555.50 c +f +0.80 0.00 0.00 rg +727.50 320.50 m 727.50 321.88 726.38 323.00 725.00 323.00 c +723.62 323.00 722.50 321.88 722.50 320.50 c +722.50 319.12 723.62 318.00 725.00 318.00 c +726.38 318.00 727.50 319.12 727.50 320.50 c +f +0.80 0.00 0.00 rg +822.50 340.50 m 822.50 341.88 821.38 343.00 820.00 343.00 c +818.62 343.00 817.50 341.88 817.50 340.50 c +817.50 339.12 818.62 338.00 820.00 338.00 c +821.38 338.00 822.50 339.12 822.50 340.50 c +f +0.80 0.00 0.00 rg +987.50 535.50 m 987.50 536.88 986.38 538.00 985.00 538.00 c +983.62 538.00 982.50 536.88 982.50 535.50 c +982.50 534.12 983.62 533.00 985.00 533.00 c +986.38 533.00 987.50 534.12 987.50 535.50 c +f +0.80 0.00 0.00 rg +962.50 535.50 m 962.50 536.88 961.38 538.00 960.00 538.00 c +958.62 538.00 957.50 536.88 957.50 535.50 c +957.50 534.12 958.62 533.00 960.00 533.00 c +961.38 533.00 962.50 534.12 962.50 535.50 c +f +0.80 0.00 0.00 rg +962.50 330.50 m 962.50 331.88 961.38 333.00 960.00 333.00 c +958.62 333.00 957.50 331.88 957.50 330.50 c +957.50 329.12 958.62 328.00 960.00 328.00 c +961.38 328.00 962.50 329.12 962.50 330.50 c +f +0.80 0.00 0.00 rg +277.50 265.50 m 277.50 266.88 276.38 268.00 275.00 268.00 c +273.62 268.00 272.50 266.88 272.50 265.50 c +272.50 264.12 273.62 263.00 275.00 263.00 c +276.38 263.00 277.50 264.12 277.50 265.50 c +f +0.80 0.00 0.00 rg +277.50 375.50 m 277.50 376.88 276.38 378.00 275.00 378.00 c +273.62 378.00 272.50 376.88 272.50 375.50 c +272.50 374.12 273.62 373.00 275.00 373.00 c +276.38 373.00 277.50 374.12 277.50 375.50 c +f +0.80 0.00 0.00 rg +277.50 480.50 m 277.50 481.88 276.38 483.00 275.00 483.00 c +273.62 483.00 272.50 481.88 272.50 480.50 c +272.50 479.12 273.62 478.00 275.00 478.00 c +276.38 478.00 277.50 479.12 277.50 480.50 c +f +0.80 0.00 0.00 rg +992.50 330.50 m 992.50 331.88 991.38 333.00 990.00 333.00 c +988.62 333.00 987.50 331.88 987.50 330.50 c +987.50 329.12 988.62 328.00 990.00 328.00 c +991.38 328.00 992.50 329.12 992.50 330.50 c +f +0.80 0.00 0.00 rg +962.50 385.50 m 962.50 386.88 961.38 388.00 960.00 388.00 c +958.62 388.00 957.50 386.88 957.50 385.50 c +957.50 384.12 958.62 383.00 960.00 383.00 c +961.38 383.00 962.50 384.12 962.50 385.50 c +f +q +102.00 0 0 20.00 706.00 31.00 cm +/I0 Do +Q +endstream +endobj +11 0 obj +<> +endobj +12 0 obj +<< +/Length 31575 +>> +stream +0.20 w +0.00 0.53 0.00 RG +1 J +1 j +2 J +0 j +100 M +1.00 g +[] 0 d +0.00 827.50 1169.00 -827.50 re +f +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +216.000 806.500 m +216.000 816.500 l +216.000 20.500 m +216.000 10.500 l +412.000 806.500 m +412.000 816.500 l +412.000 20.500 m +412.000 10.500 l +608.000 806.500 m +608.000 816.500 l +608.000 20.500 m +608.000 10.500 l +804.000 806.500 m +804.000 816.500 l +804.000 20.500 m +804.000 10.500 l +1000.000 806.500 m +1000.000 816.500 l +1000.000 20.500 m +1000.000 10.500 l +20.000 610.500 m +10.000 610.500 l +1149.000 610.500 m +1159.000 610.500 l +20.000 414.500 m +10.000 414.500 l +1149.000 414.500 m +1159.000 414.500 l +20.000 218.500 m +10.000 218.500 l +1149.000 218.500 m +1159.000 218.500 l +20.000 22.500 m +10.000 22.500 l +1149.000 22.500 m +1159.000 22.500 l +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 708.50 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 708.50 Td +(A) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 512.50 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 512.50 Td +(B) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 316.50 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 316.50 Td +(C) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +11.50 120.50 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +1150.50 120.50 Td +(D) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 808.00 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +118.00 12.00 Td +(1) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 808.00 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +314.00 12.00 Td +(2) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 808.00 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +510.00 12.00 Td +(3) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 808.00 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +706.00 12.00 Td +(4) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 808.00 Td +(5) Tj +ET +10.00 w +BT +/F1 9 Tf +9.00 TL +0.533 0.000 0.000 rg +902.00 12.00 Td +(5) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +20.00 806.50 1129.00 -786.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +10.00 816.50 1149.00 -806.00 re +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +705.00 100.50 444.00 -80.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +705.100 61.250 m +1148.630 61.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 41.250 m +1148.630 41.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.610 100.430 m +1069.630 61.250 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +1069.630 61.250 m +1069.630 41.250 l +S +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +710.00 87.50 Td +(TITLE:) Tj +ET +10.00 w +BT +/F1 13 Tf +13.00 TL +0.000 0.000 1.000 rg +767.62 74.91 Td +(05 MIDI) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1074.62 74.25 Td +(REV:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1112.62 74.25 Td +(1.0) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 25.50 Td +(Date:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +861.62 25.02 Td +(2025-05-28) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +1073.62 45.50 Td +(Sheet:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1118.62 45.02 Td +(5/5) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +953.62 25.25 Td +(Drawn By:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +1018.63 25.25 Td +(chros) Tj +ET +10.00 w +BT +/F1 11 Tf +11.00 TL +0.533 0.000 0.000 rg +814.62 47.25 Td +(Company:) Tj +ET +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +881.25 47.14 Td +(Your Company) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +809.630 61.250 m +809.630 21.250 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +958.69 588.50 Td +(DIN_PLUG_5_PINS) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +959.75 597.63 Td +(X2) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 987.28 552.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1005.000 555.500 m +995.000 555.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +965.000 515.500 m +965.000 525.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 937.00 552.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +925.000 555.500 m +935.000 555.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 978.28 532.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +995.000 535.500 m +988.000 535.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 946.00 532.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +935.000 535.500 m +942.000 535.500 l +S +1.00 w +0.00 G +[] 0 d +995.00 555.50 m 995.00 572.07 981.57 585.50 965.00 585.50 c +948.43 585.50 935.00 572.07 935.00 555.50 c +935.00 538.93 948.43 525.50 965.00 525.50 c +981.57 525.50 995.00 538.93 995.00 555.50 c +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +962.14 527.50 Td +(2) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +108.69 638.50 Td +(DIN_PLUG_5_PINS) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +109.75 647.63 Td +(X1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 137.28 602.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +155.000 605.500 m +145.000 605.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +115.000 565.500 m +115.000 575.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 87.00 602.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +75.000 605.500 m +85.000 605.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 128.28 582.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +145.000 585.500 m +138.000 585.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 96.00 582.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +85.000 585.500 m +92.000 585.500 l +S +1.00 w +0.00 G +[] 0 d +145.00 605.50 m 145.00 622.07 131.57 635.50 115.00 635.50 c +98.43 635.50 85.00 622.07 85.00 605.50 c +85.00 588.93 98.43 575.50 115.00 575.50 c +131.57 575.50 145.00 588.93 145.00 605.50 c +S +10.00 w +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +112.14 577.50 Td +(2) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +307.71 597.25 Td +(H11L1M) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +307.71 606.38 Td +(U11) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +305.000 585.500 m +325.000 585.500 l +325.000 555.500 l +305.000 555.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.53 0.00 0.00 rg +[] 0 d +320.000 575.500 m +330.000 575.500 l +325.000 565.500 l +320.000 575.500 l +320.000 575.500 l +B +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +320.000 565.500 m +330.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +345.000 575.500 m +345.000 565.500 l +355.000 565.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +345.000 575.500 m +355.000 575.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +355.000 575.500 m +360.000 570.500 360.000 570.500 355.000 565.500 c +S +1.00 w +0.53 0.00 0.00 RG +[] 0 d +361.50 570.50 m 361.50 571.33 360.83 572.00 360.00 572.00 c +359.17 572.00 358.50 571.33 358.50 570.50 c +358.50 569.67 359.17 569.00 360.00 569.00 c +360.83 569.00 361.50 569.67 361.50 570.50 c +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +360.000 570.500 m +365.000 570.500 l +365.000 530.500 l +385.000 530.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +385.000 585.500 m +350.000 585.500 l +350.000 575.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +350.000 565.500 m +350.000 555.500 l +385.000 555.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +332.000 574.500 m +341.000 574.500 l +332.000 567.500 l +342.000 567.500 l +339.000 568.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +342.000 567.500 m +339.000 566.500 l +S +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +307.000 595.500 m +383.000 595.500 l +384.105 595.500 385.000 594.605 385.000 593.500 c +385.000 522.500 l +385.000 521.395 383.895 520.500 383.000 520.500 c +307.000 520.500 l +305.895 520.500 305.000 521.605 305.000 522.500 c +305.000 593.500 l +305.000 594.605 306.105 595.500 307.000 595.500 c +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 294.29 586.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +285.000 585.500 m +305.000 585.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 294.29 556.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +285.000 555.500 m +305.000 555.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 307.00 527.50 Tm +(NC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 294.29 531.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +285.000 530.500 m +305.000 530.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 390.00 531.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +405.000 530.500 m +385.000 530.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 390.00 556.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +405.000 555.500 m +385.000 555.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 390.00 586.50 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +405.000 585.500 m +385.000 585.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 410.00 620.50 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +425.000 615.500 m +425.000 605.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +420.000 615.500 m +430.000 615.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +400.00 495.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +410.000 505.500 m +410.000 495.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +870.00 588.31 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +870.00 597.29 Td +(C29) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +868.000 598.500 m +852.000 598.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +860.000 590.500 m +860.000 580.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +860.000 610.500 m +860.000 602.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +852.000 602.500 m +868.000 602.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +860.000 610.500 m +860.000 620.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +860.000 598.500 m +860.000 590.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +205.99 528.34 Td +(1N914W) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +229.50 537.24 Td +(D4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +250.000 520.500 m +250.000 530.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +250.000 560.500 m +250.000 550.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +250.000 545.500 m +250.000 550.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +250.000 530.500 m +250.000 535.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +243.000 545.500 m +257.000 545.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +243.000 535.500 m +250.000 545.500 l +257.000 535.500 l +h +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +84.98 528.31 Td +(100n) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +88.49 537.29 Td +(C30) Tj +ET +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +107.000 538.500 m +123.000 538.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +115.000 530.500 m +115.000 520.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +115.000 550.500 m +115.000 542.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +123.000 542.500 m +107.000 542.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +115.000 550.500 m +115.000 560.500 l +S +1 J +1 j +1.00 w +0.63 0.00 0.00 RG +0.00 g +[] 0 d +115.000 538.500 m +115.000 530.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +432.00 548.36 Td +(1k) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +432.00 557.07 Td +(R31) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +420.00 570.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +425.000 570.500 m +425.000 580.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +425.000 550.500 m +425.000 540.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1055.00 610.50 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1070.000 605.500 m +1070.000 595.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1065.000 605.500 m +1075.000 605.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +995.000 535.500 m +1070.000 535.500 l +1070.000 545.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1070.000 595.500 m +1070.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +935.000 535.500 m +920.000 535.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +105.00 505.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +115.000 515.500 m +115.000 505.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +955.00 500.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +965.000 510.500 m +965.000 500.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +965.000 515.500 m +965.000 510.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +115.000 565.500 m +115.000 560.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +115.000 520.500 m +115.000 515.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +145.000 585.500 m +190.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +230.000 585.500 m +285.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +250.000 560.500 m +250.000 585.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +85.000 585.500 m +60.000 585.500 l +60.000 495.500 l +275.000 495.500 l +275.000 555.500 l +285.000 555.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +250.000 520.500 m +250.000 495.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +405.000 555.500 m +410.000 555.500 l +410.000 505.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 482.00 551.93 Tm +(MIDI_IN) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +460.000 555.500 m +465.000 560.500 l +480.000 560.500 l +480.000 550.500 l +465.000 550.500 l +460.000 555.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 825.00 645.50 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +840.000 640.500 m +840.000 630.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +835.000 640.500 m +845.000 640.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +840.000 630.500 m +840.000 625.500 l +860.000 625.500 l +860.000 620.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +785.000 555.500 m +840.000 555.500 l +840.000 625.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +850.00 565.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +860.000 575.500 m +860.000 565.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +860.000 580.500 m +860.000 575.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +665.00 470.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +675.000 480.500 m +675.000 470.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 495.500 m +675.000 495.500 l +675.000 480.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +405.000 530.500 m +425.000 530.500 l +425.000 540.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +405.000 585.500 m +425.000 585.500 l +425.000 580.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +425.000 605.500 m +425.000 585.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +908.17 368.64 Td +(PJ-321A-4A) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +908.17 377.36 Td +(CN1) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 935.00 346.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +940.000 345.500 m +930.000 345.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +930.000 345.500 m +911.000 345.500 l +906.000 340.500 l +901.000 345.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 935.00 336.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +940.000 335.500 m +930.000 335.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +930.000 335.500 m +922.000 335.500 l +917.000 340.500 l +912.000 335.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +1.00 -0.00 0.00 1.00 935.00 356.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +940.000 355.500 m +930.000 355.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +0.00 g +[] 0 d +930.000 355.500 m +895.000 355.500 l +895.000 333.500 l +893.000 336.500 l +S +BT +/F3 12 Tf +12.00 TL +0.000 g +1.00 -0.00 0.00 1.00 1055.00 490.50 Tm +(+3V3) Tj +ET +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1070.000 485.500 m +1070.000 475.500 l +S +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +1065.000 485.500 m +1075.000 485.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +0.00 g +[] 0 d +945.00 315.50 20.00 -1.00 re +B +1 J +1 j +1.00 w +0.00 G +0.00 g +[] 0 d +955.000 325.500 m +955.000 315.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +940.000 355.500 m +955.000 355.500 l +955.000 325.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +925.000 435.500 m +925.000 390.500 l +970.000 390.500 l +970.000 370.500 l +970.000 345.500 l +940.000 345.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1070.000 475.500 m +1070.000 465.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1000.000 435.500 m +1000.000 430.500 l +1000.000 405.500 l +1070.000 405.500 l +1070.000 415.500 l +1070.000 425.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +45.00 665.50 485.00 -185.00 re +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 535.500 m +675.000 535.500 l +675.000 495.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 515.500 m +675.000 515.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +555.00 665.50 570.00 -365.00 re +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +555.00 670.50 Td +(MIDI THRU Circuit \(1x DIN-5 & 1x 3.5mm Jack \(optional\)\)) Tj +ET +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +1001.000 559.500 m +1009.000 551.500 l +1009.000 559.500 m +1001.000 551.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +921.000 559.500 m +929.000 551.500 l +929.000 559.500 m +921.000 551.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +71.000 609.500 m +79.000 601.500 l +79.000 609.500 m +71.000 601.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +151.000 609.500 m +159.000 601.500 l +159.000 609.500 m +151.000 601.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +281.000 534.500 m +289.000 526.500 l +289.000 534.500 m +281.000 526.500 l +S +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +950.00 550.50 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +100.00 600.50 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +330.00 505.50 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +900.00 320.50 Td +(DNP) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1077.00 553.31 Td +(33) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1077.00 562.24 Td +(R30) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +1065.00 575.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1070.000 575.500 m +1070.000 585.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1070.000 555.500 m +1070.000 545.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1077.00 433.31 Td +(33) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +1077.00 442.24 Td +(R33) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +1065.00 455.50 10.00 -20.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1070.000 455.500 m +1070.000 465.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +1070.000 435.500 m +1070.000 425.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +894.03 543.50 Td +(10) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +894.03 552.50 Td +(R32) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +890.00 540.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +910.000 535.500 m +920.000 535.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +890.000 535.500 m +880.000 535.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +869.03 423.50 Td +(10) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +869.03 432.50 Td +(R34) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +865.00 420.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +885.000 415.500 m +895.000 415.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +865.000 415.500 m +855.000 415.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +785.000 495.500 m +870.000 495.500 l +870.000 535.500 l +880.000 535.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +785.000 515.500 m +830.000 515.500 l +830.000 505.500 l +830.000 495.500 l +830.000 415.500 l +855.000 415.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +988.70 467.17 Td +(HDR-M-2.54_1x3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +988.70 476.02 Td +(J3) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +992.000 465.500 m +1028.000 465.500 l +1029.105 465.500 1030.000 464.605 1030.000 463.500 c +1030.000 447.500 l +1030.000 446.395 1028.895 445.500 1028.000 445.500 c +992.000 445.500 l +990.895 445.500 990.000 446.605 990.000 447.500 c +990.000 463.500 l +990.000 464.605 991.105 465.500 992.000 465.500 c +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 1023.00 450.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +1020.000 435.500 m +1020.000 445.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 1003.00 450.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +1000.000 435.500 m +1000.000 445.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 1013.00 450.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +1010.000 435.500 m +1010.000 445.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +903.70 467.17 Td +(HDR-M-2.54_1x3) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +903.70 476.02 Td +(J2) Tj +ET +2 J +0 j +100 M +1.00 w +0.53 0.00 0.00 RG +[] 0 d +907.000 465.500 m +943.000 465.500 l +944.105 465.500 945.000 464.605 945.000 463.500 c +945.000 447.500 l +945.000 446.395 943.895 445.500 943.000 445.500 c +907.000 445.500 l +905.895 445.500 905.000 446.605 905.000 447.500 c +905.000 463.500 l +905.000 464.605 906.105 465.500 907.000 465.500 c +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 938.00 450.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +935.000 435.500 m +935.000 445.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 918.00 450.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +915.000 435.500 m +915.000 445.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 g +0.00 1.00 -1.00 0.00 928.00 450.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.00 G +[] 0 d +925.000 435.500 m +925.000 445.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +785.000 525.500 m +800.000 525.500 l +800.000 505.500 l +785.000 505.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +802.00 528.00 Td +(MIDI_IN_n) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +800.000 526.500 m +800.000 524.500 l +799.000 525.500 m +801.000 525.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +895.000 415.500 m +915.000 415.500 l +915.000 435.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +1020.000 435.500 m +1020.000 415.500 l +915.000 415.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +940.000 335.500 m +1010.000 335.500 l +1010.000 405.500 l +1010.000 435.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +935.000 435.500 m +935.000 405.500 l +1000.000 405.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +785.000 535.500 m +800.000 535.500 l +800.000 525.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +785.000 545.500 m +820.000 545.500 l +820.000 620.500 l +760.000 620.500 l +S +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +701.78 567.25 Td +(74LVC14APW,118) Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +701.78 576.25 Td +(U12) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 552.50 Tm +(1A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 556.50 Tm +(1) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 555.500 m +705.000 555.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 542.50 Tm +(1Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 546.50 Tm +(2) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 545.500 m +705.000 545.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 532.50 Tm +(2A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 536.50 Tm +(3) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 535.500 m +705.000 535.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 522.50 Tm +(2Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 526.50 Tm +(4) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 525.500 m +705.000 525.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 512.50 Tm +(3A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 516.50 Tm +(5) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 515.500 m +705.000 515.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 502.50 Tm +(3Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 506.50 Tm +(6) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 505.500 m +705.000 505.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 707.00 492.50 Tm +(GND) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 694.28 496.50 Tm +(7) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +685.000 495.500 m +705.000 495.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 751.75 492.50 Tm +(4Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 496.50 Tm +(8) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 495.500 m +765.000 495.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 751.14 502.50 Tm +(4A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 506.50 Tm +(9) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 505.500 m +765.000 505.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 751.75 512.50 Tm +(5Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 516.50 Tm +(10) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 515.500 m +765.000 515.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 751.14 522.50 Tm +(5A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 526.50 Tm +(11) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 525.500 m +765.000 525.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 751.75 532.50 Tm +(6Y) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 536.50 Tm +(12) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 535.500 m +765.000 535.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 751.14 542.50 Tm +(6A) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 546.50 Tm +(13) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 545.500 m +765.000 545.500 l +S +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 744.29 552.50 Tm +(VCC) Tj +ET +BT +/F1 9 Tf +9.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 770.00 556.50 Tm +(14) Tj +ET +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +785.000 555.500 m +765.000 555.500 l +S +2 J +0 j +100 M +1.00 w +0.00 G +[] 0 d +705.00 565.50 60.00 -80.00 re +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 509.500 m +689.000 501.500 l +689.000 509.500 m +681.000 501.500 l +S +1 J +1 j +1.00 w +0.20 0.80 0.20 RG +[] 0 d +681.000 529.500 m +689.000 521.500 l +689.000 529.500 m +681.000 521.500 l +S +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +875.00 450.50 Td +(DNP) Tj +ET +10.00 w +BT +/F4 12 Tf +12.00 TL +1.000 0.000 0.000 rg +960.00 450.50 Td +(DNP) Tj +ET +10.00 w +BT +9.00 TL +0.000 0.000 0.502 rg +204.04 593.50 Td +/F2 9 Tf +(220) Tj +/F5 9 Tf +<03a9> Tj +ET +10.00 w +BT +/F2 9 Tf +9.00 TL +0.000 0.000 0.502 rg +204.04 602.50 Td +(R29) Tj +ET +2 J +0 j +100 M +1.00 w +0.63 0.00 0.00 RG +[] 0 d +200.00 590.50 20.00 -10.00 re +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +220.000 585.500 m +230.000 585.500 l +S +1 J +1 j +1.00 w +0.53 0.00 0.00 RG +[] 0 d +200.000 585.500 m +190.000 585.500 l +S +BT +/F3 11 Tf +11.00 TL +0.000 0.000 1.000 rg +1.00 -0.00 0.00 1.00 580.51 541.98 Tm +(MIDI_IN_MCU) Tj +ET +1 J +1 j +1.00 w +0.00 0.00 1.00 RG +0.00 g +[] 0 d +675.000 545.500 m +670.000 540.500 l +655.000 540.500 l +655.000 550.500 l +670.000 550.500 l +675.000 545.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 545.500 m +675.000 545.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +685.000 555.500 m +675.000 555.500 l +675.000 600.500 l +800.000 600.500 l +800.000 535.500 l +S +10.00 w +BT +/F1 12 Tf +12.00 TL +0.000 0.000 1.000 rg +45.00 670.50 Td +(MIDI IN Circuit) Tj +ET +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +425.000 530.500 m +455.000 530.500 l +455.000 530.500 l +570.000 530.500 l +570.000 620.500 l +760.000 620.500 l +S +1 J +1 j +1.00 w +0.00 0.53 0.00 RG +0.00 g +[] 0 d +460.000 555.500 m +455.000 555.500 l +455.000 530.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +687.00 623.00 Td +(MIDI_IN) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +685.000 621.500 m +685.000 619.500 l +684.000 620.500 m +686.000 620.500 l +S +BT +/F3 9 Tf +9.00 TL +0.000 0.000 1.000 rg +717.00 603.00 Td +(MIDI_IN_n) Tj +ET +1 J +1 j +0.10 w +0.00 G +[] 0 d +715.000 601.500 m +715.000 599.500 l +714.000 600.500 m +716.000 600.500 l +S +0.80 0.00 0.00 rg +252.50 585.50 m 252.50 586.88 251.38 588.00 250.00 588.00 c +248.62 588.00 247.50 586.88 247.50 585.50 c +247.50 584.12 248.62 583.00 250.00 583.00 c +251.38 583.00 252.50 584.12 252.50 585.50 c +f +0.80 0.00 0.00 rg +427.50 585.50 m 427.50 586.88 426.38 588.00 425.00 588.00 c +423.62 588.00 422.50 586.88 422.50 585.50 c +422.50 584.12 423.62 583.00 425.00 583.00 c +426.38 583.00 427.50 584.12 427.50 585.50 c +f +0.80 0.00 0.00 rg +252.50 495.50 m 252.50 496.88 251.38 498.00 250.00 498.00 c +248.62 498.00 247.50 496.88 247.50 495.50 c +247.50 494.12 248.62 493.00 250.00 493.00 c +251.38 493.00 252.50 494.12 252.50 495.50 c +f +0.80 0.00 0.00 rg +917.50 415.50 m 917.50 416.88 916.38 418.00 915.00 418.00 c +913.62 418.00 912.50 416.88 912.50 415.50 c +912.50 414.12 913.62 413.00 915.00 413.00 c +916.38 413.00 917.50 414.12 917.50 415.50 c +f +0.80 0.00 0.00 rg +1002.50 405.50 m 1002.50 406.88 1001.38 408.00 1000.00 408.00 c +998.62 408.00 997.50 406.88 997.50 405.50 c +997.50 404.12 998.62 403.00 1000.00 403.00 c +1001.38 403.00 1002.50 404.12 1002.50 405.50 c +f +0.80 0.00 0.00 rg +677.50 495.50 m 677.50 496.88 676.38 498.00 675.00 498.00 c +673.62 498.00 672.50 496.88 672.50 495.50 c +672.50 494.12 673.62 493.00 675.00 493.00 c +676.38 493.00 677.50 494.12 677.50 495.50 c +f +0.80 0.00 0.00 rg +842.50 625.50 m 842.50 626.88 841.38 628.00 840.00 628.00 c +838.62 628.00 837.50 626.88 837.50 625.50 c +837.50 624.12 838.62 623.00 840.00 623.00 c +841.38 623.00 842.50 624.12 842.50 625.50 c +f +0.80 0.00 0.00 rg +677.50 515.50 m 677.50 516.88 676.38 518.00 675.00 518.00 c +673.62 518.00 672.50 516.88 672.50 515.50 c +672.50 514.12 673.62 513.00 675.00 513.00 c +676.38 513.00 677.50 514.12 677.50 515.50 c +f +0.80 0.00 0.00 rg +427.50 530.50 m 427.50 531.88 426.38 533.00 425.00 533.00 c +423.62 533.00 422.50 531.88 422.50 530.50 c +422.50 529.12 423.62 528.00 425.00 528.00 c +426.38 528.00 427.50 529.12 427.50 530.50 c +f +0.80 0.00 0.00 rg +457.50 530.50 m 457.50 531.88 456.38 533.00 455.00 533.00 c +453.62 533.00 452.50 531.88 452.50 530.50 c +452.50 529.12 453.62 528.00 455.00 528.00 c +456.38 528.00 457.50 529.12 457.50 530.50 c +f +0.80 0.00 0.00 rg +802.50 535.50 m 802.50 536.88 801.38 538.00 800.00 538.00 c +798.62 538.00 797.50 536.88 797.50 535.50 c +797.50 534.12 798.62 533.00 800.00 533.00 c +801.38 533.00 802.50 534.12 802.50 535.50 c +f +0.80 0.00 0.00 rg +802.50 525.50 m 802.50 526.88 801.38 528.00 800.00 528.00 c +798.62 528.00 797.50 526.88 797.50 525.50 c +797.50 524.12 798.62 523.00 800.00 523.00 c +801.38 523.00 802.50 524.12 802.50 525.50 c +f +q +102.00 0 0 20.00 706.00 31.00 cm +/I0 Do +Q +endstream +endobj +1 0 obj +<> +endobj +13 0 obj +<< +/Descent -209 +/CapHeight 727 +/StemV 0 +/Type /FontDescriptor +/Flags 32 +/FontBBox [-559 -303 1446 1050] +/FontName /Verdana +/ItalicAngle 0 +/Ascent 1005 +>> +endobj +14 0 obj +<> +endobj +15 0 obj +<< +/Descent -325 +/CapHeight 500 +/StemV 80 +/Type /FontDescriptor +/Flags 32 +/FontBBox [-665 -325 2000 1006] +/FontName /Arial +/ItalicAngle 0 +/Ascent 1006 +>> +endobj +16 0 obj +<> +endobj +17 0 obj +<< +/Type /Font +/BaseFont /Times-Roman +/Subtype /Type1 +/Encoding /WinAnsiEncoding +/FirstChar 32 +/LastChar 255 +>> +endobj +18 0 obj +<< +/Descent -209 +/CapHeight 727 +/StemV 0 +/Type /FontDescriptor +/Flags 32 +/FontBBox [-559 -303 1446 1050] +/FontName /Verdana,Bold +/ItalicAngle 0 +/Ascent 1005 +>> +endobj +19 0 obj +<> +endobj +20 0 obj +<< +/Type /FontDescriptor +/FontName /simhei +/FontBBox [-11 -156 996 859] +/Flags 32 +/StemV 0 +/ItalicAngle 0 +/Ascent 859 +/Descent -140 +/CapHeight 687 +>> +endobj +21 0 obj +<< +/Type /Font +/BaseFont /simhei +/FontDescriptor 20 0 R +/W [1 95 500 738 813 1000] +/Subtype /CIDFontType2 +/CIDSystemInfo +<< +/Ordering (GB1) +/Registry (Adobe) +/Supplement 2 +>> +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /simhei +/Encoding /UniGB-UCS2-H +/DescendantFonts [21 0 R] +>> +endobj +23 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 520 +/Height 105 +/ColorSpace /DeviceRGB +/BitsPerComponent 8 +/DecodeParms <> +/SMask 24 0 R +/Length 6177 +/Filter /FlateDecode +>> +stream +xíÏoGrÇkæ‘'@l H®É-È?‘k6¼")­±@rQn6ÙÍæ'¨…-R¤´ +` çd`±+K”ä…sÈ5@rÍ1-òKÉ7•™~ýøÞÌô·»«»g¨ú¼^øq¦§§§ªºº~¤(Š¢( ¹ (Š¢ U Š¢(ÊÞÅ0=ä¢j·ù•DlžžW~Z˜ÿRÑæýô‡oËü(Š¢\rßtŸ‹Zʇ="3kt¬BQ”·†k(ïv¸šïVwÞÍ>£VÇy gLQe‘k%涸¬$ÕÁ*Í|Uôô¯®Õ¼)Š¢,rMÜö!QÂUØœR<ûÑ5™=EQ”EF/Úvï1Oâîz(Jzú磟CEQ”EÆ-Ô¦÷¹=²(!õÍg}¥Î%EQ® cg;÷™y@ïòô/3EQ”F)˶ïÆ F¡ÖSÏT7(Š2~Æ'ȶšì„ÁRôD¥E3ca¿¿Ç¿ñNîA0Ó3MwPe´ŒF~Mx<ƒUÝ (ʈ‡ðj¢Y8µfsá¾)Õ Š¢Œ”H.­0¯iaþõ¸÷ˆ¸Þšp!3/ªE##[áŠamFÿÚùIoßãóÂÔa @C•EC—Y!G RByûÈ”ìöæÿxèó¬(ŠrINõÁ]~÷×èì”ÊÒT·.ˆ«7cš4ÿ^ú&5LO¥}8ÞêAJŠ¢Œ‹ KЉ¿J}ÙÉ =¾ë¹üüZµÎ{ªÉ Š¢Œ„tÒjºÏõ> n]£$ýšj¶FÇ?PÝ (ÊH!ªB}ô gtü·‰$|ƒÜ”\ ï–¢(J ⊪ãx‰^ü´ ãŽW·ÃjáðѯmÆ¿é]Qè üøÙ>HTÇx½r#ìUYRU™óKãÑ-fTÍ¿ôǬëœG:¿Œ5;»æ !Í:ÊøŽ6èøO‡²"wïs‚Ü%ºg;Ây¦½à!…ž£zS®¿þßZUðŒÊ×C´]úŸ.ž­å¢)«ŸnNè§?̧1:ü~P§ÐÓCNÝÊ¢¢cm\1Nn?äó³ÔÑ*ˆÍ'«®jó¥Šf†»b-¯Ú¿üESV?-Ð~yú ÓšÃD¾.èëaè†}æ°ô=’(âä)V¬–Hû6~§œv óôÐö›ztÿBÇÇòƒ”¼bê꧃1N§‡“ Ò3°ÈXÜ»Ê"¹ªXö¯–[Ÿòl-ò2Ÿg$o’ØÓ¯›AÉ7!û¯Q”¼+yÃ`Ô¹âÄö>é÷—æôøIw[õ4k8½¸©Ç3~ÉД¹bzoõ„éË!É—›Ç“×苪ÑóÙåc†3à4º’«mb¿bðL*ò"åºÝ9düÁb LH1$¶=iuzÈÙŒ¢ï|Î/_f¸¯6Ç)Ãt<&5n +ªJz?Ôeë¾ÛÙß@Cê“)kÁg™²‰ãL~Æ5}Ètžøž†A*uÅJÅ`5#2ìcâ—0pêꜞÿðB/º•3…óæ!ÅkÔx‡jÅgæ¿t mÈ5é¼#²b—xZ%OHÒ€•ºÒOÅ`µ…óìcbê†é‘ ˜u!F†PÐåüßJaÊ©ó»õ€‹Ù•QæM\èç{ødæÿç)Ý,é¿(Mp/»û\¥5#Øä½°™¹\ñtƒ_¸7Éÿr[û\z­“úˆùÔäµóPb=»ÜÛ&Ó Hˆ­à¹Þi9”ì Åd+,¸Zj%dU 5ß=à3—QtQÃü‡PwI ÏþŽ)áL„¸ÿå<žKzÖ``¥VÕ,ÅáO»šA’ þ2L4QY1@u0“û w¹²j£ÞQÍ×Þ ¹âß©ÿHº„¨çµ<ìâj2t™.…HJGlÝ€,Áw_Ñ룤9JLø‡|hà¨vLÝ0×ÑËîïCœ â“ïy-7Íö–¢ˆ„ÐÅN¶¿Á·ì­)= Š¡¬èIÚý%"IË‚žÀû˜ÆcæØ6RЀ :/‘þZ}®åTâ- D‘ +¡‹wÞpë'<;³ÿlP™hß=àYA³’Š7ý_+¦É„þk“þéO²å‚üÇ7M Åâç0¨I“±ÍÓ?8´ëýMúâO4]´TRt¸ÐŸk¹i¶!šNƒdÒMIǧ2]@#€Fß:âr†-Ò‚&gô¥t4w+Ö.#…©`Ξµà~UÑ ¸9A7 øäV²`2(«ºòµ£z‹I˜êðÿêÿ^ƒ6^ÑÏä¿Îr*™xÚ`¿›{爭ý’Â'D¸#†NÊœ9{{üo¶ZÎG²¨¼ûRnòDÂŽ”Ír¾>YÿóN6çï`ñô$JŸ,!è*zž¾P‡\¾’`\ø¨ú=ÑÖ럽¢_„y  GèXfˆêÊ’´ÏdSÕê +÷ð„dÝ:ÕËëAV7»]É(¹¼®ÖJk¥IÖ{í:}>¡¯ä‚}è2þh×7…G­3ýÔïv6 M1„+¶µ=ŽærÅåI°í‚*WpËTÄ«˜²M.uçݸEûÌx\=gûÎ>OŠ&9ÜSÏõJj0¯~q{Êäö߾dzI_¶J ®ߩӟÈþ>}cpDÿÝ:䙵֗\ª£xÔê'?´0NU (íñÆfóÙLj ²Š¬õô­X3ðª>s7õœW›–SDñ¾WHI箥¾:ÃÈg·à&02Ãȶ)±AØ\!ß‹ ¨¿Ýò +az÷dX•Œåw¦×O1ܹÿümº|ö'(`OÐQ*†•o¦¶¬Ï'è_Î6K\[«ö¼JäRkkô¸ã(ûÊ$ÃN)oÒ͇<‘•œ¡©200¨Í”àŽ¨„ß®eJÛVÈÅÏ +Ó¾þÇ+:N¨9î„ +¯ÁœŸˆ0×8[| õ¨o}ʳ5àwÑétõSºð§ëÿ’WR¿‘x)åñcI«½IЙ3fÀ ³Õ3Ì&×}ñ\baºÇ´’±ú.Z"Y±ëoÝo2æÂ¥„‹bÀ-¯ÍŽ¡‘_Ô>C''ôw…ŸüC3¶rh…%»(è—³îý‘òv'¯úVB}'»Õ:räã’Þa*hT¿CÇ;2)˜æ†|›íàJ êöìïFW«œ_¹Èd ÷jÈï®Av’^««_à}³xíÜ¥:њɶnˆè\u›rÆ?s)6}Êôï–ßX½I²y*€I’DBé Íu0µå´.ýa뮂z÷¸KGACT 4æ<†æiáT4ëï Ý;å›PŸôλHÇæ#'Ü.8ÜÅfQâ ^ðœÓê$é÷&AÊ ö…Šô p£~v 1qÿÁÝ}®DCǰWÿ°õ—­Š¡ÕHªð‚6cT  Qð-Ò' ¨“'¬4JúÃâb@\Ã"BV$ÂçöC>‡+8IyP­Ûžùé²4—Í9XúÞ>±Õ’‘uhoísi=|¶æ ö|à+Ë­fâê«ï²&+¦çaÒÉE1À¢S\1|p—7n˜\pnŽòšÞk´±ANûô.¶îñdâãx—]| È¬&òS_…žQâÌY«GØqºÂûÿáÿ¯M¸wy“M§“ÞMz"U˜”äü8Cþ6ãUû‘U÷°WG»~Ýzý®õn]¹ý1øÌfͧ˜^›¢¢×·Ã4³¹w±û Ï6‚zÂHú1±#ÓÀôH°FB “ª=/Y·2ä^È»óð¥ø5ZÄ/Ó *àì8½–Ч%} ,MÁíEÂ5nÀk×±J³ñ­šÿZµ:‘î1u…}û3¢(†ÀaÕ/¾¶¼œ\lvøR¸}Ï&Åÿ»&¥©C•øÔÎõî‚Îúþ{á¥knÇ_Xű“ñ20¨à6Ó‹´áé˜VÏ‹ óÐï½1S–èW6_±£bpqÄ{Œ <äé¤Ö ôåŸõn肺¤HYÄ1¨ˆ4–I1 .ûjFÏ…ÊÅô»­œ¢H=tvP°­…%o¹à:¤¼fDÈÃöäºnå{BØ¡t<Ǭkäd`'j·¿ÄÛ“z˜Ò2ç¢ÜÏéØ:ðô@¸GXý:ï„~œ‘.¾À­¢âå'îÞ·6ˆ””2ýËÉu}&Ö ®Þ$h»àXj ¼l†‚ÛiË€ƒr)°Ó¹ì½ Ê›a²Âù/qoÒ{ïÓ?üq\£¬ûæËŽ‚%”ßYóoôº>¼,ñxŠ!qvˆe¡ºû }ªùzºíí¼Ià·©jwŶq¤t»] NönY؃à›*^$¹C&ÁݱKpÜ)Tf>/ò‘ûÏè+¹Rzxåí@©-µâDÊØskªª_|ÄÍOy‚T.YÀï + <{“Ðêõ6ÚÑçŽtÌRæ e¨J½žI×È®ú*7&íg±æâï=Ó|un N7W·JÌW”ߦY”_ÖŠƒ)º’:ïDšäê."õ¢iÅ¢{㵈Ÿ®½IñbÊq‚Á  ü‘ZH=-üÝã¦Î<›VW[æEX‚3ÛQÛ>æ ͳ=ë6ÍœÔLFê·2+è¹\œÃ%Ý=“äÿÈŠ u%´ëE[ÜwÜléú²^+ÆQšwåde)èæJaTwÄNx­³¼.cä3óny¿„øÃ*Nýº=DâÉ!@9y»‘ÏÜ£Ñq ÈöZD]¡©Ó IßÊb™KË7jÂQ¦—z²¢îD*ŒÊÚtÛi§YÓs¬’A+HJmŒŠâ— [2= ÀÎ÷Ç?IyÆ›Æ%ö MÒŸs³x‰ýt¼È¨‹{¥”¡›{´¸u±z7;Ž+¬ø.×%kö¼Wj/Ù‰ÄFDFèÔ¶ˆ“^ BN)£VÆ<³„Ý;/êߣÇ ·œ(—λ§ þI3*c¿Ã–ˆÕë-7N2ýTâ›yˆF]†pŒ¼ÜñtKÂݦP¬jÌ ¤¦t¸þC|Ð$-Ñ"…{5UaN½ú6ǺcÞõ:„Îwm†¡|gÃ=¤Ûœú&Yê®ÒÔ ©.J^ËO|a>Ýø$§J]‚ÄWxä@9˜{!UñÒFx=pæ#Å\‰˜°B¼Ö[4V5àcƒS/é*ƒ1 Åà;©Tk]Á³Áö°]ÜùœùŸFŸ¹ßGä „¶h1ÏH"‰´pI ºgñÛÇcaŸ˜Q¬mb a¯r먩WÖOú–\R sV¹ýÏÎÜÂñºv·Cs’¯3ýÜ}%„>Aìúþk'ô¸»uâ­ž…ÝÞÛE³{ÄÕÌÈ µvešs±¹ ¤TìÝ<ho5/S—¡ÖOeéÛ\1 +¥y¯ðÐNˆG.²± +2*+ +ê ½BWq$Á†Ûö—{6Ø}ÄtócVžSÔà"õu÷•g™£tínCûÓ6½òÆÇx0§7Ò/4[}nõ ßïÍ#w(êá——;ÈMÏ'ô•PIȰÀVÎöAã5b¬¶Ä*]3œ¦Fò"v±×w-aŠÆÙ:áUWŸRÑtŽt«7Û²’¢ƒ‰=ë_…¸˜¥Ûôï™ÿÛí…ôÕ;ë‰Ýª?ùIg€|<½ë¡"»ì¶Ë”•åhc½rè/‚˜ö‹?(LýízlUqWÒ'^1÷2ãCAÜ€“EwïqÕÕ°b‰à8ԤЛtt!‚­—Ãίё`Ø}äÖ·cN—ÜR}×Ún=¯hm“ªWTb© ÞWˆ»‘\ÄŽrôg‡º0d¶ˆ +÷èî%6Dñƒh§ +Piª%ît(˜[—¾ÕsÏ9AÞÓ¹.{­Ù+p4§hX:..¥¬Ñô"Š@Œ{ç8™§‡ÀßK;l›z‘›AÞjŽÖ°ä·¹‹r›¾4®½(£6÷ +säKÌôÿä5ýV—ÁÏùåËÔ7ÅÁOGë}ŒHÝßô/ñfÞ1ôÚjÉò7WA|é®÷åôæu‰‹ÆP Á6x2»[|õd1Ò{Œ›šò™¾ñ®Ðd4bÊó®a–àΉ"+çã=> BˆÒ?øÊ»‡~O`SqBÆ ‹·K?wÑEZˆØ§Ct%Å7XÄ÷ +s²˜Zýß’_Œ`8=êÊ?iÀFèÂKÛ“UrëïBÿø3n¬çCàÊÉVОi2£/]ÂXb™‘»š0ÿ ">‡[Ž)Ëd[Â-‘売ú»å$¹1Êú/Y®Ó“î®àÍ7&¸²Hx>9Q&Õz/ž‚ì§ÿóL“N»ŠÕVåO¼ÞH}L×ÍJÜ™Ù:ˆ‡«†ãÖö/þD.ãšÇÚü'²_û¼fœåamÍŽšÔE9ŸR¸÷ ½5šGÛ>ô[LPbäíu1é>Ø)Þ¿ÿ•Np 7âÆT‚X5„EéJ ]BD ÕW8Ý _|¿°^¬’TH(‰ø”¹S–ôD®aN–àë\¥3nÌ}6±í;*ÜbðäÒàÜz“îQüN¶$†ˆÒY …qKíýûÉ«Ú]_¬•вWmÄÖOª–õ†¯Ðy «a7‘;âçRö—€ ˜`TlZ9e$n5Úò9Yœv®n\©"z’{íV®õ?fÑ›=,’4VÕ¼Y¿b >êÁ&P¶Íw»ø §ePo¶xÓ¹Õ)›„Ûã`,`,Õöî’ÄŠ<ƒ‰1ª +Û¤dz|’hÑFÓºÙõâN ^§B)9Ns|-IJÛ1Jׯx¶±N>¥h„cê' OÞÙ6~ ëU\ÍäyÜxö¹DJpÓ;ìý_wˆ¦ ¿iŒ +WéŒKÿQ™„µzQMhòþïÒcCJäƒ$›´Jj•ÔËâÜ9)\ÉË•bvZ¥ùgã¢IÞ uTÌ6 +GøøAã)ãT(טœfl²È‡HÉŠ(D5~åí$çªJ´i`z÷„¾uÂ*JTò&L)JÎ…Õ$XúÖCw@âPQRÙLp¨¢¸’yaE¤LÞdJQA" Ó·ÕTÞ*ò¯­x%=ZPFLJ‡|ø ^ôµ*%ƒX[Q2-#§*J 2VoV”K†²¼dƒ” Š)J2¦÷˜€rlª”Ø h…Iéu¿*#J£ ®Õª(V†µÂ¦F7x{• +“Ü(XMLQ’U.Q©’„!.²¦¾9Ö`ý[8Jö©¢$cÕ›eÎpÙôÓkÓw¥·23UëôâÃ}E±‚Ä_h”’Œq¬³;Ÿó7ßÐúÍÎ/JÓÔúàåkúgÍgV®Èvìo¡(áè:S”Ì õò¸¢gz欤B—š¢ädú€ 莮G JJtµ)JN U=]PÒ¢«MQE¹‚*EQå +ªEQ”+ü?‘a:- +endstream +endobj +24 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 520 +/Height 105 +/ColorSpace /DeviceGray +/BitsPerComponent 8 +/DecodeParms <> +/Length 6592 +/Filter /FlateDecode +>> +stream +xí] xEÓ?9åˆ@<@Nä† FûDð9L¸•ˆ(`T +ˆ œŸÊ-(H¸OP.‰‰@B€(îÈ'¨ÿ^3]Õ]ÝÓ»Éb¿ož'™é©ž™ìÖtWW½Us›DNÜöoß@ÙAE¬U„°úa¡¡Åœ?ç=H\u5KÏDÀuŠP·Nݺ÷ ­+ã7ͲK8d‘"”ëÚµŠìØæ-ë²æ*AY¢Í»vͯødηYq ‡,P„çz5²Z4gsæ¯DàiE¨2²«žà²9k2{­ ‡Ì*‘EµegÅœËäÕ‚2§F6÷E<1f}¦.Dà)Exiº¯=FÅfæzA™Q„±£|ï³"æ§L\1ˆ€ÁEÈéO·“ƒ–ú}É ¿¡ü/þöìÔ„lá¡}²#—N¤¥¥w¡ D"¨ Ù~*BȪõJbÒ®oŽ[»å##éÙ#¨ Ù~*ÂÁ0±-qþ‚ßø¶âÍ;=%J^i±Ã¿Ë0ø§+Z M«ç/¦e[õUaG‹+~]7ˆ€A_î(梄^¾|ñRÄ+üÁCqÿ•÷$Taz?íëqS ©5Ú·«¤87ᬲûûCø–~>û¢‚(t¡nËV«ŽŸ{fÝ)zÏäÒþ¨qå nì¡yÿ6jŸŸÐà ÚÿnXðŒ}§ nì¡Q?»(óÎzzWú:ï?³@¯Ÿ‰;ÙI\س/{Ú £m%vü€\¬Ç_W322RŽþ!‚m:TrjE¨Õï9» ¥”ÓºCЄäFéº=Ýx8É^&íM…ÍúïáG•}åÅ$dF}Ò‹?þ×Ñ£)w&þéëµOX<Òaï«ä”Š ]<[Z›§œMÚ1^·§­WèH=;ϧ“Þ„»CCjy{°³¥ -tíÛ¤U_®=ô=ksñÓ*A•"hDÿ×ÞÚQ™xDpý¡áeý¾†ý–XÍìG”­±WKì¹OÙö‘²r9ÇÒ¥gt/}[F>kû—J©$¥G´¢‹ðæíÑþK´Ûs®/Å%(‰lM‰›Žv˴IJ ¤dêT’¿Nªi ½;ì<®¢JA+ºø©­ ñò#­è RQ_tЋ·Yãü 4IO®üs«ÁvÑä©Z~˜â§áÞ«q +Q™"„Ô¸Nj“TÛa¸gk¸;pÍaý¾ßÕÔûªOwt30q°žS„gì-­ÿsÖ‹poig…¨L2Ô‰ +ø61¸ÐÏG×-Þ¦Ù3÷ÉP-¹£}¼¥ÀãËöö2N¤–±6Gj0ú.4–2LT>€v• <‰"ì©e'ÆæÇ5„8ljÊ5ÄÇé径'ë]Àwå 84DzÉlà˜Ù[§Ce;çìò¶x¿–Âj¥á¿ÔÜ¿oyªá•+‡‡Wv7ôžms#^œ%4Ù* °êEXƒ=Š»ëˆ"™ÁÜdó;#ÕÝNÞcmx(+ï'àøìY¶ö³NW€QŽ‚">ÀÏÑ +naÀp¶˜Øö¹<”,*Bwl¹Ux½ýÂ+Óµ¸ž( °kŸôíŠEJ•,’–v"íšrWz¨äq'|»Œ ŽÆÖæ…"Z=€öü½üèÇy%ûš>Çëoi%¥×aWm¸—^Á·`±=¤QÄ®Ÿ+z5#¤/KÄ +=›—*nîlZ¼á„mÞuëçñl~8<Á6¢;—-vž?)l´Ÿœ¬fš¾O䆵Z ÷æ=+¸—ž=C.É®)(BC4éÜh·JÖÓ_„t„ÝCP:¬¡Å¥ŸIûhÏžpËê/?Qöè6ñl6Ïÿ”íŒyÃÚ|ýmº; ˆ´ö|a!é,€´¦¥òâ&0£pu+ñðóÈ⤽D“’gî  ŠóÚSX¥™@HØ£õë Ô*„ LˆNºˆF‹žTþËŽòmû7ã›ÆZ“týo¬VÉ„Ù<6Û½udÝÍÚfô•_›á?YŽI÷FØ ¥Ü‰û%#ßGdaü(¾¯§;­ú¨èò\‹Â=<P+éÄäqëk»é”#Í0ÎÄN17¿¯nµ!S½À£lTðÔž^ÈÚÔ$!Л>òB ï¦l'µ +á×ã=^œ‹‘b¼"A&A —Ÿÿ(ý&nH­ý»Lv[C¶­EÁ¿szé±¢çÉæ~„õõ§ÖÊÑ è@Ìñ.kÔ[=BÚ͸êùžÄãSý{òÄ*¿ÿ¡¶]v|5Ï}Ï:ŠþP&yœM$gu\÷áÛ%}$¬Ú×wJäŸòŽø1fÇ÷5D±Bçog;Ö 9÷JlL 805qP¹N”`;„á±®Ñiî0±‰W÷ +|Êݘ¼ûm‰\á‹l;ñûóvWe‡|¬Àü“í&bn€ÑÿA–Šƒ%€f:Ñ ’.Qx©“÷ñG-§¶c«ÃV±_içæPz”ݘ&ǯʾY`€¹)I•×Üž¶gíù©Às©†ñ;vT«t§ª×/>‰ñàº-â…ê‚ÌÞ_Y ÚýŒ¨yæn›Ûòà+F²ú­-‚(LeR¹£ žGeǨ-žý‚š ‰·¹(¯gýc“`Bã‘Ñ+[8<ûÛv{–1])©ç +J^¯-±¯\o2ÿ€÷]$clÃ0.²6ôé§,ÇûIÌw°WÆ „–\LÀËoÒ³LMpŠp´@oJå«Ðo`läø´Ô›£íÏ4Æ’ò®ž9BEvY§EŒ +GÉû­à æ%:ÌH>üÜW÷à*uLqË^¬í†ÞóÌVY.#7-èÆ¶_™€sßo ¡Fœ" ª¢ÜtËJ`÷ÈCH!’)ÃcðdÏß}PóÙøÙ®h^±5jñøæÍ-¸\J~wmºQ¼G¯°!›¾€å×î+|*8–>À†¤f: …¤&@«îZ1…ö áTΓ0x¢ë÷ð÷ ŸÀ)ºmßèærܵm«âðÚ'ÀÎó´ãO–ðp¡‰; +¯OΚÁì­.ïpŽ fWC}ïl¿¤“ë7ôEÕЙâ;~}¦jÜ9¤©Áµ‰üëì>'ÎMuÕE\ØWÛÇ-§èñl«•[d‡Ü/G•á>4 ¸ú–NP%|0¸ÝÅw•M3Gc³ûcü¡1ÏiÞÜerç\™gW +Á,ƒ Ï ¤‚ø¡Nfw×.$ƒÔŸþÓØ¶Ô% #‹ºÁ#æwºˆÒøì¯é$ApŠ0ºxè5¬èåúU”RdÚIRjoÜN6sp­H¯ àÁËh¾c™¸pj`ÐÉ9SlÎóÖ&šâA-¾3À%ªgÀ€~ôXÛJ)8pþ@Ž„‚’Ö“k]¿=ñ)´(¯\Ò,pе1+¦†îQžXfB£ ¹ÌŽ¥¥ZYÞ/0±k â”Çá³ ð×t²îv]:zÜ gd0E`áòœã`® ôW¹d)@¹®³m´€ñHÅÜz½Õï`îÉ‚o ~k,yBN:-;oP!m_Ð6ê1ssì›r1”ÃDú\Ú|Eµ +p=¼ÐûJú§Pp·>l¹ÄÞfea.n{û)˯ùw167ü w£øí)‰'ã}0ö»œ?ppÆÃ¥E™÷ŸÃîûÉãYóí°áw»ê’'ä>w8Ss^42ƒÇ‚jzyéÝéð¹-™FH¼ªu{Ž¿êtɆ£8xâЬ˜ñ’̽Ü ln€d›U¨`”„ÀáR]0ö»¼ö¤FCç‹—¶ò“Çz±°û×Ò1Ö½R§Ý›\+J#ÙèSéuuãÉQB p†˜z; ­„÷Üd kˆ{•”ëû±µ ½³¡»‘A*£Î¤eêç1Z쎕&…€¦L`Ú-‘Î Ó,R,l!÷Y¼«nÏeºEI¤NÈ)qŒŸ‰bŠ&î «x"íDš„ñRu¨ð½{Ì +(7ðaê“ÓHø8ý‰ÛZÆÜõj´¥\ÁˆÉ¡— ù…ù~+lnž+ï +‘Ӿ޵Ewކ‹v˜Dÿž4c:ÄAPÑ +ÒzVÀ%Ö=ÌnÉ4žÈȶ0Nü¶¯•¥#E›5lhr®f®…Ê #Û‹m :+éÕßé‡ä’7¤ܳR¦æe‹÷–µywcZØñB8Á…¥ŒØâ`Ð÷.Ÿf1J|!\2üŠåì÷)Ql›‘˜ýc:HúÖ;·Êã—¨fÛÉ7/ñа &Ù’„¬î‘‘8»è“h¿ø«tö¯4– ãsô v%|$¨ £øåi™o­™׫A–² ïS>àÊñÎ 0Q´×gXÖÀ)—"¹!È~o Í …‹6Ö3ßú>Ë $ç“1߈Ür)\äÆëâ©qŒUp„Œ—~¼ªp6€“†·•ƒŽÔûîF(¹““Œ l*2Ò^š@ +±´òp-×ÜsØ“ù—n¶ÖMÆ©{%÷ƒ± dwɲBaõŠ!æb÷9PAŠ÷ÌÕ_bn’,G^0ÙmŸJØu‚øŽO'NÄy©·½& TíŸ>ýoòª,C°vq6§Ôûu=LˆÑÞ:â.¢&\.l«÷Ü‹â# ¢T{´< +ƶ¼“ÿ QSØ6ãg l[<þ„naÉ |Ê a˜@vÙG®£ƒýe£­1íe×ïÁoËÊ*ü2cº,eÖ$ñ‚ÌÓ„I;êà*È™–?€ŒsQ›÷²µ˜Ä. W(êš`R¦èJÿ3·µ©bÍ€LyA˜„d-^¸Œ‘º`aQiÈ’$³ÊlXÌÈ[j¬R°±W´5úÆÉ5nœž:]ú‚7‡&“²ÄèÂ?´ gZš•ë¢åÏù?Lä¦Ñ«V”ý+IM.Ài˸ç4' X“ôŠ@s}k„D¥)[¥‘þæ¾ÌØqÞg/ßÐaˆ…—?ÞnŠ€K€]ïüpñDÅ}GyrÖpâÚûÓ)/‘˜™B’¢ V%“hM€üš˜h@#ÿFnâ0Ÿ®-f`A³ÝW+×LtŸÂØ0Ï’€³¿Ô£I4Iæø&†·¿;°gwíG«ÔªŽÛëoI-HÍ¿ÔÞ +ŠÆù•ï´½g¨êra®½´,ñ¿sýCI˜sç¯2½nÕ”¢‡Þg>Ä$Öê|¥O0AN^µ‰µÿ!&®¿¸§´r… \„Fiʦ¡ˆ~Jg#»!*Wðt[¯³J‹a!â£éÊGÚF†,¼Áþ°ÐHi£SàjO2ôÖŸ†,ÖÉüjŒ÷I!à~ˆ¢Âðᨅ$†KN¢:%WÀ'Ü,,ù™ÜuËcAr&Ö”Á'¥‡4´ÁãÜitÐÓWqŒ\ÙäûƒmÓC†zô;RØ“óéÄl£øLX€âBõTôQ wÀC•/f¿À¶$‡Ò<«à7aX5´ wBøB¡ÇÞvÍ’½Ô9ƒ$â'ª˜I.pÑúÏzQBÕ€sܦ¨; šu_HŠÏ»Tõ7Pê @jH ­ØJ7ŠAh­¶ÏäY„<¦æ€À3Pƒ`šP×â†çª(æ0&”iaë»v/¾"·ÜjL–}è +\½6„Úۯ岶ERŠ pîÿ1%ád˜ üùû(Û—^Uj¼bcLÙŒ”À¨~ 9 Ø–èD < ”"Ü¿™gü^ùÜôËÁ}a+˧‹¤1¶‚N±Üu$Œ6 æ)£< ¾Ö!rónnV°RÛì¨|X”ÓÐà°“(r7•G,ÛYüãEôÜ”NTŒFÃŒÞÑR³„ŸDŽ59ú6çŒGž¼ÎÌñT*®©¯Û½!wë6Â#$ PÂòIljµÂúÔ3=ùÈ =æ ®c%‹©DCEsžŒËTÌS0ü+:×B££CPƒ9êi–{6ñ×]Bö'= Ùe>ðÒTy¦ó£Dd¹ªïµ"íÅ*†×騂yî$ŸÙ%ÁfF!½§3dØ>.ÏšLîϼñ¿>O¦ZÂy¨éJ‚t<”ˆèhÎÎHlà 3-Í¥³g˳qé6ÿfšÏ䤢r9kNü=jœTÐ óR‹7ÒYÁL)&Ïg«ŠE) +=•àdÞRt³X>7`2KÖ½ü +áiòe‡âP\šé  ‚ L舆5k +Nsóª}€øR/e$LŠã—ä ƒÜz³_ˆŸâÆA…ãRòƒ4ÓL›ß‘¯‡8·ƒ½¤eŒã‚äa/ÅOVJkã5^_Ðö8séØÂÌuwAŒúºÍî1ÎDü´ùwø@ +³«Äb®|ùÝ?õ)'¨å´ŽÅ¨YbIoÙPÛjwó»ÚpáÄ™¯S6“Ú9í½b0,>¦;'YL Lþ6.ÉË–èԉ˧_o–U–1îéÊ™ÇNfT¨Ó<òÄò£Ç^’ø,h‡ÆB”s© +çð°¢XÐ0RÔË™Ä×Jóüéœ1O梽^Ç,@¤UR-JÇ))«J$Ö}¤a£‚ÃãÔ/É–-[VŒ‹š#[‰%²¡±4KBÎÇÙNeš`f@T›ÃzÞ,[ø68+2Hr%°oGpZʯšs%¯¤âÃziv‘¬5¡ñæ +)ˆ SK‘ÞÄ\,è¦dxÓÃðϽD^Á’5 +e„Jb«Ê¸ˆ˜?¢—ÉãcCÏÂBqVA*ÄÇVx™±´O¥t!Áyjw a\íC{Ýü[4¬à^¥­ZÕÐYže«%Ê—S¼Ä¿¼ÔD÷–•+,¡dqËÖÜÚoqcózM‹¼l𲼄2+ÊåXß±ÔGªš’¸€§âËë0©^ß±U^0Á25_f43#‡M+^ +B“$Ÿ.Ódµ@'jÒ–0­ë±ß d·,µã$Ù+^Ôcü©+á\Ý5õº¼Ê[Ô¨©0éÌô•»r¸>n¼²ÞÿozuFÀ<=ZžVõë×ltbõpë-”Ôe0d¾LXH¿³Œ²nSÀÇÄafª®< +ŽqÌ]‚>ÿf›Da†|{ÙÄÁvšD÷œbùHû„ªo+H5{°|œM€Ro¢EV’T1»Ø‹Ïî`QÍGæËÞÑIÅî1gO^O\ã}‰.€ ÍQtb"Fê4èØÜ2¥®/À,>.²/ïÔs€P¾EîP’DübÈœ +óìÞÝZTJrC8R¦ÙJ4aöð †ñâ;ž Ug+õ]×W2ç^g±-£†´JÕby…?É54 Ý5K—¦v‰LÀjçë"éÔùŠŒŒäJcJ]ÌwJÌ#ÚJ8³t©Ãöêõxb0 .‘«ÅˆA$a¦Çì«0Ôý¥sÕÙÚĈ,ãƒÏS xØí£¨¦ +}ãr@»-Á¦bܶë9»¾õ@Y†Â…FŒp±ÆtH¯à›ƒ—Ú’ “¼0ãÛ]¸rJJÊZo4}^šíÃpicÁ;ì%¬½¦¸Ð¼c­jBL'ÏkÜ‹1’çÎåɨ οŒexk—Ø`×[ÐM"í‘~êôéÓIë…¬3¬dn[’¶à^FæœâšŠ`´àêÞÑahUÕ¥л¸2….~J Â^ä2ýà¦-[Z&ݧËV⃅jEÎZv³†æôµk—d_7`:™$àE„ü‰düÕ=þºrõÊ•«²: ¨ƒÃörPKë*‚ÖÏÕö­’WàRªT©¢çÏŸß©·¢wÂÙ¡Ôug‡\ °vÊœmEP,É,øZÉ+‡º—•œœmE ëû"ø\É+gf®÷™À—]¡¯57Ëã‘(_Árëæ: +99úŠÀ±:D>ù[°¾‹ü=9>(‚·#¾;(kÄÎŽ/õ¾(‚’Ò¾Î^} ñ Õ +ç ø¤Š¥ƒ¤bê-˜ls¨â¿wYßÁE²uϼðW|d@"œ]ŽEŽ‚Š`”Ž?šxDl¼%_¼­ùî¾_Á0ªtíŠÃñ“Yt3Ù°8ºRCNƒïŠ`ù[³òz›>ߨñfŠ[Ã;þ[%ù£.ä-zщYz7Ù€#ógE™ñáÿ%`Ñhš¹”sT}ÀL%m<'"¨ú€ìÀÖ+år9AE "áFP‚pãÿ¢'8Ó +endstream +endobj +2 0 obj +<< +/ProcSet [/PDF /Text /ImageB /ImageC /ImageI] +/Font << +/F1 14 0 R +/F2 16 0 R +/F3 17 0 R +/F4 19 0 R +/F5 22 0 R +>> +/XObject << +/I0 23 0 R +>> +>> +endobj +25 0 obj +<< +/Producer (jsPDF 0.0.0) +/CreationDate (D:20250827201707+02'00') +>> +endobj +26 0 obj +<< +/Type /Catalog +/Pages 1 0 R +/OpenAction [3 0 R /FitH null] +/PageLayout /OneColumn +>> +endobj +xref +0 27 +0000000000 65535 f +0000272225 00000 n +0000289867 00000 n +0000000015 00000 n +0000000125 00000 n +0000057257 00000 n +0000057367 00000 n +0000135087 00000 n +0000135197 00000 n +0000192390 00000 n +0000192501 00000 n +0000240484 00000 n +0000240596 00000 n +0000272307 00000 n +0000272478 00000 n +0000273534 00000 n +0000273704 00000 n +0000274750 00000 n +0000274878 00000 n +0000275054 00000 n +0000276115 00000 n +0000276281 00000 n +0000276475 00000 n +0000276593 00000 n +0000283029 00000 n +0000290027 00000 n +0000290113 00000 n +trailer +<< +/Size 27 +/Root 26 0 R +/Info 25 0 R +/ID [ ] +>> +startxref +290217 +%%EOF \ No newline at end of file diff --git a/Firmware/.vscode/settings.json b/Firmware/.vscode/settings.json index cdb8e61..cad6e5e 100644 --- a/Firmware/.vscode/settings.json +++ b/Firmware/.vscode/settings.json @@ -36,5 +36,10 @@ "raspberry-pi-pico.cmakeAutoConfigure": true, "raspberry-pi-pico.useCmakeTools": false, "raspberry-pi-pico.cmakePath": "${HOME}/.pico-sdk/cmake/v3.31.5/bin/cmake", - "raspberry-pi-pico.ninjaPath": "${HOME}/.pico-sdk/ninja/v1.12.1/ninja" + "raspberry-pi-pico.ninjaPath": "${HOME}/.pico-sdk/ninja/v1.12.1/ninja", + "files.associations": { + "*.h": "c", + "compare": "c", + "cstdint": "c" + } } diff --git a/Firmware/CMakeLists.txt b/Firmware/CMakeLists.txt index 91ed28e..c819fc1 100644 --- a/Firmware/CMakeLists.txt +++ b/Firmware/CMakeLists.txt @@ -56,12 +56,29 @@ include_directories(Screens_Display/) add_executable(Firmware main.c - USB_Serial.c - Rotary_Encoder.c - Easings.c - UI_Control.c + PWM.c + UART0.c I2C_Master.c + USB_Serial.c + + Hue.c + Easings.c + Command.c + UI_Control.c + Mode_Manager.c + MIDI_Note_List.c + INA260.c + Switch.c + Rotary_Encoder.c + EEPROM_M24C64.c + + Core1.c + Core1_ADC.c + Core1_LED_Enable.c + Core1_LED_Control.c + Core1_MIDI_Receiver.c + Core1_Light_Controller.c Display_Default_Configurations.c Display_Message_Box_Icons.c @@ -105,10 +122,14 @@ target_link_libraries(Firmware hardware_spi hardware_i2c hardware_dma + hardware_pwm + hardware_adc hardware_interp hardware_timer hardware_watchdog hardware_clocks + hardware_uart + pico_multicore ) pico_add_extra_outputs(Firmware) diff --git a/Firmware/Command.c b/Firmware/Command.c new file mode 100644 index 0000000..aa12c99 --- /dev/null +++ b/Firmware/Command.c @@ -0,0 +1,157 @@ +/* + * Command.c + * + * Created: Thu Oct 13 2022 16:37:17 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Command.h" + +#include "pico/stdlib.h" +#include "pico/multicore.h" +#include "hardware/irq.h" + + +// ============================================================================================ +// Defines +#define COMMAND_BUFFER_SIZE 16 +#define INVALID -1 + + +// ============================================================================================ +// Variables +static Command_u _Command_Buffer[COMMAND_BUFFER_SIZE]; + + +// ============================================================================================ +// Function Declarations +void Command_Send_Multicore_Command(uint8_t command, uint8_t parameter, uint16_t value); +void Command_Add_Multicore_Command_To_Buffer(uint command); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ +void ISR_MULTICORE_READ() +{ + uint32_t Multicore_Data; + + // Just record the latest entry + while(multicore_fifo_rvalid()) + { + Multicore_Data = multicore_fifo_pop_blocking(); + Command_Add_Multicore_Command_To_Buffer(Multicore_Data); + } + + multicore_fifo_clear_irq(); +} + + +/******************************************************************* + Functions +*******************************************************************/ +void Command_Init() +{ + for(uint i=0;i to_us_since_boot(get_absolute_time())); + + return Return_Value; +} + +int Command_Get_Request_Response_By_Command_And_Parameter(uint8_t command, uint8_t parameter, int timeout_us) +{ + int Return_Value = INVALID; + + uint64_t Timeout_Time_us = to_us_since_boot(get_absolute_time()) + timeout_us; + + do + { + for(uint i=0;i to_us_since_boot(get_absolute_time())); + + return Return_Value; +} + +uint Command_Get_Request_Response_Buffer_Fill_Count() +{ + uint Fill_Count = 0; + + for(uint i=0;i +#include +#include + +#include "pico/types.h" +#include "pico/stdlib.h" + +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Command_Init(); + +void Command_Issue_Get_Request(uint8_t command, uint8_t parameter); +void Command_Issue_Set_Request(uint8_t command, uint8_t parameter, uint16_t value); + +int Command_Get_Request_Response_By_Command_Only(uint8_t command, int timeout_us); +int Command_Get_Request_Response_By_Command_And_Parameter(uint8_t command, uint8_t parameter, int timeout_us); + +uint Command_Get_Request_Response_Buffer_Fill_Count(); + +#endif /* COMMAND_H_ */ diff --git a/Firmware/Command_Definition.h b/Firmware/Command_Definition.h new file mode 100644 index 0000000..d557633 --- /dev/null +++ b/Firmware/Command_Definition.h @@ -0,0 +1,291 @@ +/* + * Command_Definition.h + * + * Created: Wed Dec 08 2021 14:05:35 + * Author Chris + */ +#ifndef COMMAND_DEFINITION_H_ +#define COMMAND_DEFINITION_H_ + +// ============================================================================================ +// Includes +#include + +#include "pico/types.h" +#include "pico/binary_info.h" + + +///////////////////// +// General Defines // +///////////////////// +#define NUM_LED_CHANNELS 1 +#define NUM_LED_COLORS 3 + +#define RECEIVED_MIDI_HISTORY_BUFFER_SIZE 30 +#define HISTORY_ENTRY_UNDEFINED -1 + +#define NOTES_PER_OCTAVE 12 + +#define TIMER_INTERVALL_LED_UPDATE_ms 10 + +#define FADE_SPEED_MAX 20 +#define FADE_SPEED_MIN 1 + +#define PAUSE_LIGHT_DELAY_MAX_s 60 +#define PAUSE_LIGHT_DELAY_MIN_s 1 + +#define SCREEN_TIMEOUT_MAX_s 600 +#define SCREEN_TIMEOUT_MIN_s 0 + +#define CONFIRMATION_COUNTER_TICKS 24 + +#define NO_NOTE -1 + +#define CHANNEL_NAME_MAX_LENGTH 8 + +#define THRESHOLD_NO_SUPPLY_mV 1000 +#define THRESHOLD_UNDERVOLTAGE_mV 11500 +#define THRESHOLD_OVERVOLTAGE_mV 12500 +#define THRESHOLD_MEASUREMENT_MAX_DEVIATION_mV 1000 + + +////////////////////// +// Jam Mode Defines // +////////////////////// +#define COLOR_CHANGE_MAX 20 +#define COLOR_CHANGE_MIN 1 + +#define DURATION_MAX_s 200 +#define DURATION_MIN_s 1 + + +///////////////////// +// Command Defines // +///////////////////// +#define MULTICORE_COMMAND_EMPTY 0 +#define MULTICORE_NO_PARAMETER 0 + +// General // +#define MULTICORE_COMMAND_SET_MIDI_TO_LIGHT_ENABLED 'A' + +// Direct Control // +#define MULTICORE_COMMAND_SET_DIRECT_RED 'B' +#define MULTICORE_COMMAND_SET_DIRECT_GREEN 'C' +#define MULTICORE_COMMAND_SET_DIRECT_BLUE 'D' +#define MULTICORE_COMMAND_SET_DIRECT_FADE_SPEED 'E' + +// Voltage Supervision // +#define MULTICORE_COMMAND_SET_INA260_BUSVOLTAGE 'F' + +#define MULTICORE_COMMAND_GET_ANALOG_VOLTAGE 'a' +#define MULTICORE_COMMAND_GET_LED_POWER_ERROR 'b' + + +// ============================================================================================ +// Datatypes + +///////////////////// +// Data Structrues // +///////////////////// +typedef int8_t Note_t; +typedef uint8_t Value_t; + +typedef union +{ + uint Data; + struct Command_s + { + uint8_t Command; + uint8_t Parameter; + int16_t Value; + } Fields; +} Command_u; + +typedef union +{ + struct + { + uint8_t Gap; + uint8_t B; + uint8_t R; + uint8_t G; + }; + uint8_t Array[4]; + uint Pixel; +} __packed LED_Data_t; + +typedef struct { + int16_t Data; + uint64_t Timestamp_ms; +} History_Buffer_t; + +typedef struct { + uint8_t Event; + Note_t Note; + Note_t Note_In_Octave; + uint8_t Velocity; + uint64_t Timestamp_ms; +} Info_Last_Received_Note_t; + +typedef struct +{ + uint8_t MIDI_Channel; + int8_t Octave; + uint8_t Note_Color_Red; + uint8_t Note_Color_Green; + uint8_t Note_Color_Blue; + uint8_t Skip_Note_Off_Event; +} __packed Channel_MIDI_Configuration_s; + +typedef struct +{ + uint8_t Enabled; + LED_Data_t Color; + uint Timeout; + uint8_t Reset_Condition; + uint8_t Fade_Speed; +} __packed Pause_Light_Configuration_s; + +typedef struct +{ + uint Timer; + bool Is_Active; +} Pause_Light_Timer_s; + +typedef uint16_t Duration_t; + +typedef struct +{ + Duration_t Duration_Min_s; + Duration_t Duration_Max_s; + int Hue_Angle_Start_Color; + uint Color_Change; + uint8_t Fade_Speed; +} __packed Jam_Light_Configuration_s; + +typedef struct +{ + LED_Data_t Color; + uint8_t Fade_Speed; +} __packed Const_Light_Configuration_s; + + +////////////////// +// Enumerations // +////////////////// +enum LED_Channel +{ + LED_Channel_1 = 0 +}; + +enum LED_Color +{ + Red = 0, R = 0, Any = 0, + Green = 1, G = 1, + Blue = 2, B = 2 +}; + +enum Pause_Light_Reset_Condition_e +{ + ANY_TRAFFIC, + CHANNEL_MATCH, + EVENT_MATCH, + CHANNEL_AND_EVENT_MATCH +}; +typedef enum Pause_Light_Reset_Condition_e Pause_Light_Reset_Condition; + +enum MIDI_Channel_e +{ + MIDI_CHANNEL_1 = 0, + MIDI_CHANNEL_2 = 1, + MIDI_CHANNEL_3 = 2, + MIDI_CHANNEL_4 = 3, + MIDI_CHANNEL_5 = 4, + MIDI_CHANNEL_6 = 5, + MIDI_CHANNEL_7 = 6, + MIDI_CHANNEL_8 = 7, + MIDI_CHANNEL_9 = 8, + MIDI_CHANNEL_10 = 9, + MIDI_CHANNEL_11 = 10, + MIDI_CHANNEL_12 = 11, + MIDI_CHANNEL_13 = 12, + MIDI_CHANNEL_14 = 13, + MIDI_CHANNEL_15 = 14, + MIDI_CHANNEL_16 = 15 +}; +typedef enum MIDI_Channel_e MIDI_Channel; + +enum Octave_Note_e +{ + NOTE_C = 0, + NOTE_CS = 1, + NOTE_D = 2, + NOTE_DS = 3, + NOTE_E = 4, + NOTE_F = 5, + NOTE_FS = 6, + NOTE_G = 7, + NOTE_GS = 8, + NOTE_A = 9, + NOTE_AS = 10, + NOTE_B = 11 +}; +typedef enum Octave_Note_e Octave_Note; + +enum Idle_Screen +{ + IDLE_SCREEN_BLACK, + IDLE_SCREEN_LOGO, + IDLE_SCREEN_CURRENT_MODE, + IDLE_SCREEN_MODE_ACTIVITY +}; + + +////////////////////////////// +// MIDI Messages Definition // +////////////////////////////// +// Upper Byte +#define MIDI_EVENT_NOTE_OFF 0x8 // Note off +#define MIDI_EVENT_NOTE_ON 0x9 // Note on +#define MIDI_EVENT_POLYPHONIC_KEY_PRESSURE 0xA // Polyphonic Key Pressure +#define MIDI_EVENT_CONTROL_CHANGE 0xB // Control Change +#define MIDI_EVENT_PROGRAM_CHANGE 0xC // Program Change +#define MIDI_EVENT_CHANNEL_PRESSURE 0xD // Channel Pressure +#define MIDI_EVENT_PITCH_BEND 0xE // Pitch Bend Change +#define MIDI_EVENT_SYSTEM 0xF // System Messages + +// Lower Byte in case of System Event +#define MIDI_SYSTEM_EXCLUSIVE 0x0 // System Exclusive Messages +#define MIDI_SYSTEM_TIME_CODE_QUARTER_FRAME 0x1 // MIDI Time Code Quarter Frame +#define MIDI_SYSTEM_SONG_POSITION_POINTER 0x2 // Song Position Pointer +#define MIDI_SYSTEM_SONG_SELECT 0x3 // Song Select +#define MIDI_SYSTEM_UNDEFINED_1 0x4 // Undefined. (Reserved) +#define MIDI_SYSTEM_UNDEFINED_2 0x5 // Undefined. (Reserved) +#define MIDI_SYSTEM_TUNE_REQUEST 0x6 // System Tune Request +#define MIDI_SYSTEM_EXCLUSIVE_END 0x7 // End of Exclusive + +#define MIDI_SYSTEM_TIMING_CLOCK 0x8 // Timing Clock +#define MIDI_SYSTEM_UNDEFINED_3 0x9 // Undefined. (Reserved) +#define MIDI_SYSTEM_START 0xA // Start Sequence +#define MIDI_SYSTEM_CONTINUE 0xB // Continue Sequence +#define MIDI_SYSTEM_STOP 0xC // Stop Sequence +#define MIDI_SYSTEM_UNDEFINED_4 0xD // Undefined. (Reserved) +#define MIDI_SYSTEM_ACTIVE_SENSING 0xE // Active Sensing (Keep Alive) +#define MIDI_SYSTEM_RESET 0xF // Reset + + +///////////////////////////////////////// +// Helping functions parsing MIDI Data // +///////////////////////////////////////// +#define IS_MIDI_COMMAND(__C__) ((__C__ & 0x80) > 0) +#define IS_MIDI_DATA(__D__) ((__D__ & 0x80) == 0) +#define MIDI_EVENT_FROM_COMMAND(__C__) ((__C__ & 0xF0) >> 4) +#define MIDI_CHANNEL_FROM_COMMAND(__C__) (__C__ & 0x0F) +#define IS_MIDI_COMMAND_WITH_CHANNEL(__C__) (MIDI_EVENT_FROM_COMMAND(__C__) >= MIDI_EVENT_NOTE_OFF && MIDI_EVENT_FROM_COMMAND(__C__) <= MIDI_EVENT_PITCH_BEND) + + +// ============================================================================================ +// Function Declarations + + +#endif /* COMMAND_DEFINITION_H_ */ diff --git a/Firmware/Core1.c b/Firmware/Core1.c new file mode 100644 index 0000000..22ca528 --- /dev/null +++ b/Firmware/Core1.c @@ -0,0 +1,123 @@ +/* + * Core1.c + * + * Created: Wed Dec 08 2021 12:57:45 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Core1.h" +#include "Command_Definition.h" + +#include "UART0.h" +#include "Core1_ADC.h" +#include "Core1_LED_Enable.h" +#include "Core1_LED_Control.h" +#include "Core1_MIDI_Receiver.h" +#include "Core1_Light_Controller.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Variables + + +// ============================================================================================ +// Function Declarations +void Core1_Parse_Command(uint8_t command, uint8_t parameter, int16_t value); +void Core1_Send_Multicore_Answer(uint8_t command, uint8_t parameter, int16_t value); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ + + +/******************************************************************* + Functions +*******************************************************************/ +void Core1_Main(void) +{ + // Analog Converter ============================================= + Core1_ADC_Init(); + + // LED PWR Enable ============================================= + Core1_LED_Enable_Init(); + + // PWM / LED Control ========================================= + Core1_LED_Control_Init(); + + // MIDI Receiver ============================================= + Core1_MIDI_Receiver_Init(); + + // Light Controller ============================================= + Core1_Light_Controller_Init(); + + // Main Loop ================================================= + while(1) + { + if(multicore_fifo_rvalid()) + { + Command_u Command; + Command.Data = multicore_fifo_pop_blocking(); + + Core1_Parse_Command(Command.Fields.Command, Command.Fields.Parameter, Command.Fields.Value); + } + + Core1_MIDI_Receiver_Process(); + Core1_Light_Controller_Tick(); + Core1_LED_Enable_Tick(); + } +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +void Core1_Parse_Command(uint8_t command, uint8_t parameter, int16_t value) +{ + switch (command) + { + ///////////// + // General // + ///////////// + case MULTICORE_COMMAND_SET_MIDI_TO_LIGHT_ENABLED: Core1_Light_Controller_Set_MIDI_To_Light_Enabled (value > 0); break; + + + ////////////////////////// + // Direct Light Control // + ////////////////////////// + case MULTICORE_COMMAND_SET_DIRECT_RED: Core1_LED_Control_Set_DC_Target (LED_Channel_1, R, (uint8_t)value); break; + case MULTICORE_COMMAND_SET_DIRECT_GREEN: Core1_LED_Control_Set_DC_Target (LED_Channel_1, G, (uint8_t)value); break; + case MULTICORE_COMMAND_SET_DIRECT_BLUE: Core1_LED_Control_Set_DC_Target (LED_Channel_1, B, (uint8_t)value); break; + case MULTICORE_COMMAND_SET_DIRECT_FADE_SPEED: Core1_LED_Control_Set_Fade_Speed(LED_Channel_1, (uint8_t)value); break; + + + ///////////////////////// + // Voltage Supervision // + ///////////////////////// + case MULTICORE_COMMAND_SET_INA260_BUSVOLTAGE: Core1_LED_Enable_Update_INA260_BusVoltage((uint16_t)value); break; + + + /////////////////// + // Get Functions // + /////////////////// + case MULTICORE_COMMAND_GET_ANALOG_VOLTAGE: Core1_Send_Multicore_Answer(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE , 0, (int16_t)Core1_ADC_Get_Result_mV()); break; + case MULTICORE_COMMAND_GET_LED_POWER_ERROR: Core1_Send_Multicore_Answer(MULTICORE_COMMAND_GET_LED_POWER_ERROR , 0, (int16_t)Core1_LED_Enable_Get_Error()); break; + + default: break; + } +} + +void Core1_Send_Multicore_Answer(uint8_t command, uint8_t parameter, int16_t value) +{ + Command_u Command; + Command.Fields.Command = command; + Command.Fields.Parameter = parameter; + Command.Fields.Value = value; + + multicore_fifo_push_blocking(Command.Data); +} diff --git a/Firmware/Core1.h b/Firmware/Core1.h new file mode 100644 index 0000000..306c52b --- /dev/null +++ b/Firmware/Core1.h @@ -0,0 +1,29 @@ +/* + * Core1.h + * + * Created: Wed Dec 08 2021 12:57:09 + * Author Chris + */ +#ifndef CORE1_H_ +#define CORE1_H_ + +// ============================================================================================ +// Includes +#include "pico/time.h" +#include "pico/multicore.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Core1_Main(void); + + +#endif /* CORE1_H_ */ diff --git a/Firmware/Core1_ADC.c b/Firmware/Core1_ADC.c new file mode 100644 index 0000000..5756cd8 --- /dev/null +++ b/Firmware/Core1_ADC.c @@ -0,0 +1,115 @@ +/* + * ADC.c + * + * Created: Tue Sep 13 2022 19:51:36 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Core1_ADC.h" + +#include "hardware/adc.h" +#include "hardware/irq.h" +#include "hardware/divider.h" + + +// ============================================================================================ +// Defines +#define YES true +#define NO false + +#define ANALOG_REFERENCE_mV 3300ul +#define ADC_INPUT_PIN 29 + + +// ============================================================================================ +// Variables +static uint32_t _ADC_Result_Value; +static uint32_t _ADC_Result_mV; + +const uint32_t _ADC_Result_Num = 11; +const uint32_t _ADC_Result_Denum = 1; +const bool _ADC_Result_LowPass = NO; + + +// ============================================================================================ +// Function Declarations +void Core1_ADC_Select_Next_MUX_Channel(); +void Core1_ADC_Set_Mux(uint channel); +void Core1_ADC_Store_ADC_Result(uint16_t adc_value); +uint32_t Core1_ADC_Low_Pass_Filter(int current_value, int new_value); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ +bool ISR_ADC() +{ + Core1_ADC_Store_ADC_Result(adc_fifo_get()); +} + + +/******************************************************************* + Functions +*******************************************************************/ +void Core1_ADC_Init() +{ + _ADC_Result_Value = 0; + _ADC_Result_mV = 0; + + adc_gpio_init(ADC_INPUT_PIN); + adc_init(); + adc_select_input(3); + adc_fifo_setup( + true, // Write each completed conversion to the sample FIFO + false, // Enable DMA data request (DREQ) + 1, // DREQ (and IRQ) asserted when at least 1 sample present + false, // We won't see the ERR bit because of 8 bit reads; disable. + false // Shift each sample to 8 bits when pushing to FIFO + ); + adc_set_clkdiv(5999); // One measurement every 0.125ms -> 8 measurements per 1 ms + adc_irq_set_enabled(true); + + irq_set_exclusive_handler(ADC_IRQ_FIFO, (void *)ISR_ADC); + irq_set_enabled(ADC_IRQ_FIFO, true); + + adc_run(true); +} + +uint16_t Core1_ADC_Get_Result_Value(uint channel) +{ + return _ADC_Result_Value; +} + +uint16_t Core1_ADC_Get_Result_mV(uint channel) +{ + return _ADC_Result_mV; +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +void Core1_ADC_Store_ADC_Result(uint16_t adc_value) +{ + if(_ADC_Result_LowPass == YES) { + _ADC_Result_Value = (uint16_t)Core1_ADC_Low_Pass_Filter((float)_ADC_Result_Value, (float)adc_value); + } else { + _ADC_Result_Value = (uint32_t)adc_value; + } + + _ADC_Result_mV = ((_ADC_Result_Value * ANALOG_REFERENCE_mV * _ADC_Result_Num) / 4096) / _ADC_Result_Denum; +} + +uint32_t Core1_ADC_Low_Pass_Filter(int current_value, int new_value) +{ + // Link: https://kiritchatterjee.wordpress.com/2014/11/10/a-simple-digital-low-pass-filter-in-c/ + + const int Beta = 6; + + current_value = (current_value << Beta) - current_value; + current_value += new_value; + current_value >>= Beta; + + return (uint32_t)current_value; +} diff --git a/Firmware/Core1_ADC.h b/Firmware/Core1_ADC.h new file mode 100644 index 0000000..b90b034 --- /dev/null +++ b/Firmware/Core1_ADC.h @@ -0,0 +1,43 @@ +/* + * ADC.h + * + * Created: Tue Sep 13 2022 19:51:15 + * Author Chris + */ +#ifndef CORE1_ADC_H_ +#define CORE1_ADC_H_ + +// ============================================================================================ +// Includes +#include +#include +#include + +#include "pico/types.h" +#include "pico/stdlib.h" + + +// ============================================================================================ +// Defines +#define ADC_CHANNEL_POT1 3 +#define ADC_CHANNEL_POT2 0 +#define ADC_CHANNEL_POT3 2 +#define ADC_CHANNEL_SUPPLY 1 +#define ADC_CHANNEL_SHUNT 4 +#define ADC_CHANNEL_REF 5 +#define ADC_CHANNEL_GND1 6 +#define ADC_CHANNEL_GND2 7 + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Core1_ADC_Init(); + +uint16_t Core1_ADC_Get_Result_Value(); +uint16_t Core1_ADC_Get_Result_mV(); + +#endif /* CORE1_ADC_H_ */ diff --git a/Firmware/Core1_LED_Control.c b/Firmware/Core1_LED_Control.c new file mode 100644 index 0000000..854619f --- /dev/null +++ b/Firmware/Core1_LED_Control.c @@ -0,0 +1,197 @@ +/* + * Core1_LED_Control.c + * + * Created: Wed Jan 12 2022 15:29:18 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Core1_LED_Control.h" + +#include "pico/stdlib.h" + +#include "PWM.h" +#include "EEPROM_M24C64.h" + + +// ============================================================================================ +// Defines +#define GPIO_CHANNEL_1_R 1 +#define GPIO_CHANNEL_1_G 3 +#define GPIO_CHANNEL_1_B 2 + + +// ============================================================================================ +// Variables +static volatile struct repeating_timer _Timer_Core1_LED_Control; +static volatile bool _Timer_Fired; + +uint8_t _Current_Duty_Cylces[NUM_LED_CHANNELS][NUM_LED_COLORS]; +uint8_t _Target_Duty_Cylces[NUM_LED_CHANNELS][NUM_LED_COLORS]; +uint8_t _Fade_Speed[NUM_LED_CHANNELS]; + +static const uint8_t _Channel_Color_PWM_LUT[NUM_LED_CHANNELS][NUM_LED_COLORS] = +{ + [LED_Channel_1] = { + [R] = GPIO_CHANNEL_1_R, + [G] = GPIO_CHANNEL_1_G, + [B] = GPIO_CHANNEL_1_B + } +}; + +static bool _Use_Gamma_Correction = false; + +const uint8_t _DutyCycle_Gamma_Correction_LUT[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, + 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, + 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, + 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, + 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, + 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, + 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, + 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, + 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, + 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, + 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, + 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255 }; + +// ============================================================================================ +// Function Declarations +uint8_t Core1_LED_Control_Get_DC_Corrected(uint8_t dc_index); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ +bool ISR_Repeating_Timer_Core1_LED_Control(struct repeating_timer *t) +{ + _Timer_Fired = true; + + for(uint ch=LED_Channel_1;ch Target) + { + if((Current - Target) <= _Fade_Speed[ch]) { + New = Target; + } else { + New = Current - _Fade_Speed[ch]; + } + } + else if(Current < Target) + { + if((Target - Current) <= _Fade_Speed[ch]) { + New = Target; + } else { + New = Current + _Fade_Speed[ch]; + } + } + else + { + continue; + } + + Core1_LED_Control_Set_DC_Direct(ch, co, New); + } + } + + return true; +} + + +/******************************************************************* + Functions +*******************************************************************/ +void Core1_LED_Control_Init(void) +{ + _Timer_Fired = false; + + for(uint ch=LED_Channel_1;ch= NUM_LED_CHANNELS || color >= NUM_LED_COLORS) { + return; + } + + PWM_Set_Duty_Cycle(_Channel_Color_PWM_LUT[channel][color], Core1_LED_Control_Get_DC_Corrected(duty_cycle)); + + _Current_Duty_Cylces[channel][color] = duty_cycle; +} + +void Core1_LED_Control_Set_DC_Target(enum LED_Channel channel, enum LED_Color color, uint8_t duty_cycle) +{ + if(channel >= NUM_LED_CHANNELS || color >= NUM_LED_COLORS) { + return; + } + + _Target_Duty_Cylces[channel][color] = duty_cycle; +} + +uint8_t Core1_LED_Control_Get_DC(enum LED_Channel channel, enum LED_Color color) +{ + if(channel >= NUM_LED_CHANNELS || color >= NUM_LED_COLORS) { + return 0; + } + + return _Current_Duty_Cylces[channel][color]; +} + +void Core1_LED_Control_Set_Fade_Speed(enum LED_Channel channel, uint8_t fade_speed) +{ + if(channel >= NUM_LED_CHANNELS) { + return; + } + + _Fade_Speed[channel] = fade_speed; +} + +void Core1_LED_Control_Set_Use_Color_Correction(bool use_color_correction) +{ + _Use_Gamma_Correction = use_color_correction; +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +uint8_t Core1_LED_Control_Get_DC_Corrected(uint8_t dc_index) +{ + if(_Use_Gamma_Correction) { + return _DutyCycle_Gamma_Correction_LUT[dc_index]; + } + + return dc_index; +} \ No newline at end of file diff --git a/Firmware/Core1_LED_Control.h b/Firmware/Core1_LED_Control.h new file mode 100644 index 0000000..3275726 --- /dev/null +++ b/Firmware/Core1_LED_Control.h @@ -0,0 +1,41 @@ +/* + * Core1_LED_Control.h + * + * Created: Wed Jan 12 2022 15:28:36 + * Author Chris + */ +#ifndef CORE1_LED_CONTROL_H_ +#define CORE1_LED_CONTROL_H_ + +// ============================================================================================ +// Includes +#include +#include + +#include "pico/time.h" +#include "pico/types.h" + +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Core1_LED_Control_Init(void); +bool Core1_LED_Control_Get_Timer_Fired(void); + +void Core1_LED_Control_Set_DC_Direct (enum LED_Channel channel, enum LED_Color color, uint8_t duty_cycle); +void Core1_LED_Control_Set_DC_Target (enum LED_Channel channel, enum LED_Color color, uint8_t duty_cycle); +uint8_t Core1_LED_Control_Get_DC (enum LED_Channel channel, enum LED_Color color); +void Core1_LED_Control_Set_Fade_Speed(enum LED_Channel channel, uint8_t fade_speed); + +void Core1_LED_Control_Set_Use_Color_Correction(bool use_color_correction); + +#endif /* CORE1_LED_CONTROL_H_ */ diff --git a/Firmware/Core1_LED_Enable.c b/Firmware/Core1_LED_Enable.c new file mode 100644 index 0000000..47677a5 --- /dev/null +++ b/Firmware/Core1_LED_Enable.c @@ -0,0 +1,128 @@ +/* + * File: Core1_LED_Enable.c + * + * Created: Created: Wednesday August 2025 21:56:20 + * Author: Chris + */ +#include "Core1_LED_Enable.h" + + +// ============================================================================================ +// Includes +#include "Core1_ADC.h" +#include "Command_Definition.h" + +#include "hardware/gpio.h" + + +// ============================================================================================ +// Defines +/////////////////////////////////////////// +// LED Defines only for testing purposes // +/////////////////////////////////////////// +#define LEDG_PIN 12 +#define LEDG_CONFIG gpio_init(LEDG_PIN); gpio_set_dir(LEDG_PIN, GPIO_OUT) +#define LEDG_ON gpio_put(LEDG_PIN, 0) +#define LEDG_OFF gpio_put(LEDG_PIN, 1) + + + +#define LED_PWR_EN_GPIO 0 +#define INA260_ALERT_GPIO 13 + +#define ENABLE_LED_POWER() gpio_put(LED_PWR_EN_GPIO, 1); LEDG_ON; _Power_Was_Enabled_Before = true +#define DISABLE_LED_POWER() gpio_put(LED_PWR_EN_GPIO, 0); LEDG_OFF + + +// ============================================================================================ +// Variables +static LED_Power_Error _LED_Power_Error; +static bool _Power_Was_Enabled_Before; +static bool _INA260_Alert_Last_State; +static uint16_t _Analog_BusVoltage_mV; +static uint16_t _INA260_BusVoltage_mV; + + +// ============================================================================================ +// Function Declarations +void Core1_LED_Enable_Update_Alert_Status(); +void Core1_LED_Enable_Set_Error(LED_Power_Error error); + + +/******************************************************************* + Functions +*******************************************************************/ +void Core1_LED_Enable_Init() +{ + gpio_set_dir(LED_PWR_EN_GPIO, GPIO_OUT); + DISABLE_LED_POWER(); + + gpio_set_dir(INA260_ALERT_GPIO, GPIO_IN); + + _LED_Power_Error = UNDEFINED; + _Power_Was_Enabled_Before = false; + Core1_LED_Enable_Update_Alert_Status(); +} + +void Core1_LED_Enable_Tick() +{ + Core1_LED_Enable_Update_Alert_Status(); + + _Analog_BusVoltage_mV = Core1_ADC_Get_Result_mV(); + + if(abs(_Analog_BusVoltage_mV - _INA260_BusVoltage_mV) > THRESHOLD_MEASUREMENT_MAX_DEVIATION_mV) { + Core1_LED_Enable_Set_Error(BUS_VOLTAGE_MEASUREMENT); + } + else if(_Analog_BusVoltage_mV < THRESHOLD_NO_SUPPLY_mV || _INA260_BusVoltage_mV < THRESHOLD_NO_SUPPLY_mV) { + Core1_LED_Enable_Set_Error(BUS_NO_SUPPLY); + } + else if (_Analog_BusVoltage_mV < THRESHOLD_UNDERVOLTAGE_mV || _INA260_BusVoltage_mV < THRESHOLD_UNDERVOLTAGE_mV) { + Core1_LED_Enable_Set_Error(BUS_UNDERVOLTAGE); + } + else if (_Analog_BusVoltage_mV > THRESHOLD_OVERVOLTAGE_mV || _INA260_BusVoltage_mV > THRESHOLD_OVERVOLTAGE_mV) { + Core1_LED_Enable_Set_Error(BUS_OVERVOLTAGE); + } + else { + Core1_LED_Enable_Set_Error(NO_ERROR); + } +} + +void Core1_LED_Enable_Update_INA260_BusVoltage(uint16_t voltage_mV) +{ + _INA260_BusVoltage_mV = voltage_mV; +} + +bool Core1_LED_Enable_Get_Status() +{ + return gpio_get(LED_PWR_EN_GPIO); +} + +LED_Power_Error Core1_LED_Enable_Get_Error() +{ + return _LED_Power_Error; +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +void Core1_LED_Enable_Update_Alert_Status() +{ + if(_INA260_Alert_Last_State == true && gpio_get(LED_PWR_EN_GPIO) == false) { + Core1_LED_Enable_Set_Error(OVERCURRENT); + } + + _INA260_Alert_Last_State = gpio_get(LED_PWR_EN_GPIO); +} + +void Core1_LED_Enable_Set_Error(LED_Power_Error error) +{ + if(error == NO_ERROR && _Power_Was_Enabled_Before == false) { + ENABLE_LED_POWER(); + _LED_Power_Error = error; + } + else if(error != UNDEFINED && error != NO_ERROR) { + DISABLE_LED_POWER(); + _LED_Power_Error = error; + } +} \ No newline at end of file diff --git a/Firmware/Core1_LED_Enable.h b/Firmware/Core1_LED_Enable.h new file mode 100644 index 0000000..0256164 --- /dev/null +++ b/Firmware/Core1_LED_Enable.h @@ -0,0 +1,43 @@ +/* + * File: Core1_LED_Enable.h + * Created: Created: Wednesday August 2025 21:56:15 + * Author: Chris + */ +#ifndef CORE1_LED_ENABLE_H +#define CORE1_LED_ENABLE_H + +// ============================================================================================ +// Includes +#include +#include + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes +typedef enum { + UNDEFINED, + NO_ERROR, + BUS_NO_SUPPLY, + BUS_UNDERVOLTAGE, + BUS_OVERVOLTAGE, + OVERCURRENT, + BUS_VOLTAGE_MEASUREMENT +} LED_Power_Error; + + +// ============================================================================================ +// Function Declarations +void Core1_LED_Enable_Init(); + +void Core1_LED_Enable_Tick(); + +void Core1_LED_Enable_Update_INA260_BusVoltage(uint16_t voltage_mV); + +bool Core1_LED_Enable_Get_Status(); +LED_Power_Error Core1_LED_Enable_Get_Error(); + +#endif // CORE1_LED_ENABLE_H \ No newline at end of file diff --git a/Firmware/Core1_Light_Controller.c b/Firmware/Core1_Light_Controller.c new file mode 100644 index 0000000..c6f40b9 --- /dev/null +++ b/Firmware/Core1_Light_Controller.c @@ -0,0 +1,400 @@ +/* + * Core1_Light_Controller.c + * + * Created: Sat Jan 21 2023 16:22:51 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Core1_Light_Controller.h" + +#include "MIDI_Note_List.h" +#include "Core1_LED_Control.h" +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines +#define PAUSE_LIGHT_TIMEOUT_TICKS (_EEPROM_Content.Pause_Light_Configuration[ch].Timeout * (1000 / TIMER_INTERVALL_LED_UPDATE_ms)) + +#define NOTE_COLOR_RED _EEPROM_Content.Channel_MIDI_Configuration[ch].Note_Color_Red +#define NOTE_COLOR_GREEN _EEPROM_Content.Channel_MIDI_Configuration[ch].Note_Color_Green +#define NOTE_COLOR_BLUE _EEPROM_Content.Channel_MIDI_Configuration[ch].Note_Color_Blue + +#define NOTE_COLOR_RED_ALT NOTE_COLOR_RED + 1 +#define NOTE_COLOR_GREEN_ALT NOTE_COLOR_GREEN + 1 +#define NOTE_COLOR_BLUE_ALT NOTE_COLOR_BLUE + 1 + +#define NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS 100 // 100 * 10 ms -> 1s + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Variables +volatile bool _MIDI_To_Light_Enabled; +extern volatile EEPROM_Content_t _EEPROM_Content; + +volatile Info_Last_Received_Note_t _Info_Last_Received_Note[NUM_LED_CHANNELS]; +volatile Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS]; +volatile Pause_Light_Timer_s _Pause_Light_Timer[NUM_LED_CHANNELS]; +volatile int _NoteOn_Color_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS]; +volatile int _NoteOn_Color_Reset_Counter; + +static const uint8_t _PWM_Lookup[NUM_LED_COLORS][128] = { + { // Red + 0x04, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x11, 0x11, + 0x12, 0x12, 0x13, 0x14, 0x14, 0x15, 0x15, 0x16, 0x17, 0x18, 0x19, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, + 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x28, 0x29, 0x2A, 0x2C, 0x2D, 0x2E, 0x30, 0x32, + 0x33, 0x35, 0x37, 0x38, 0x3A, 0x3C, 0x3E, 0x40, 0x42, 0x45, 0x47, 0x49, 0x4B, 0x4E, 0x50, 0x53, + 0x56, 0x58, 0x5B, 0x5E, 0x61, 0x64, 0x68, 0x6B, 0x6E, 0x72, 0x76, 0x79, 0x7E, 0x82, 0x86, 0x8B, + 0x8F, 0x94, 0x99, 0x9E, 0xA6, 0xAC, 0xB2, 0xB9, 0xBF, 0xC6, 0xCD, 0xD5, 0xDD, 0xE5, 0xED, 0xFF + }, + { // Green + 0x03, 0x04, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, + 0x08, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0D, 0x0E, 0x0E, 0x0F, 0x0F, + 0x10, 0x11, 0x12, 0x12, 0x13, 0x14, 0x15, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, + 0x1E, 0x1F, 0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x28, 0x29, 0x2A, 0x2C, 0x2D, 0x2F, 0x30, 0x32, + 0x33, 0x35, 0x37, 0x38, 0x3A, 0x3C, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 0x4B, 0x4D, 0x4F, + 0x51, 0x53, 0x55, 0x57, 0x5A, 0x5C, 0x5E, 0x60, 0x63, 0x65, 0x68, 0x6B, 0x6F, 0x72, 0x75, 0x78, + 0x7A, 0x7D, 0x81, 0x84, 0x87, 0x8A, 0x8D, 0x90, 0x94, 0x98, 0x9B, 0x9F, 0xA2, 0xA6, 0xAA, 0xAE, + 0xB3, 0xB6, 0xBA, 0xBF, 0xC3, 0xC8, 0xCC, 0xD1, 0xD6, 0xDB, 0xE0, 0xE5, 0xE9, 0xEE, 0xF1, 0xFF + }, + { // Blue + 0x01, 0x04, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x08, + 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0D, 0x0D, + 0x0E, 0x0E, 0x0F, 0x0F, 0x10, 0x10, 0x11, 0x12, 0x12, 0x13, 0x14, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x25, 0x26, 0x27, 0x29, 0x2A, + 0x2B, 0x2D, 0x2E, 0x30, 0x31, 0x33, 0x35, 0x36, 0x38, 0x39, 0x3B, 0x3D, 0x3F, 0x40, 0x42, 0x44, + 0x46, 0x49, 0x4B, 0x4E, 0x50, 0x52, 0x55, 0x57, 0x59, 0x5C, 0x5E, 0x61, 0x63, 0x66, 0x69, 0x6C, + 0x6F, 0x72, 0x75, 0x77, 0x7B, 0x7E, 0x81, 0x85, 0x88, 0x8C, 0x90, 0x93, 0x97, 0x9B, 0x9F, 0xA3, + 0xA8, 0xAC, 0xB0, 0xB5, 0xBA, 0xBE, 0xC4, 0xC9, 0xCE, 0xD4, 0xD9, 0xDF, 0xE4, 0xEA, 0xEF, 0xFF + } +}; + + +// ============================================================================================ +// Function Declarations +bool Core1_Light_Controller_Check_Channel_Match (enum LED_Channel channel, uint8_t midi_channel); +bool Core1_Light_Controller_Check_Octave_Match (enum LED_Channel channel, uint midi_note); +void Core1_Light_Controller_Pause_Light_Trigger (uint8_t midi_event, uint8_t midi_channel); +void Core1_Light_Controller_Reset_NoteOn_Counter(); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ + + +/******************************************************************* + Functions +*******************************************************************/ +void Core1_Light_Controller_Init(void) +{ + _MIDI_To_Light_Enabled = true; + + for(uint ch=0;ch 0) { DutyCycle = _PWM_Lookup[R][value]; } else { DutyCycle = value << 1; } + + Core1_LED_Control_Set_DC_Direct(ch, R, DutyCycle); + _NoteOn_Color_Counter[ch][R]++; + } + else if(midi_note_in_octave == NOTE_COLOR_GREEN || midi_note_in_octave == NOTE_COLOR_GREEN_ALT) + { + uint8_t DutyCycle = value; + if(_EEPROM_Content.Device_Configuration.Use_Color_Correction > 0) { DutyCycle = _PWM_Lookup[G][value]; } else { DutyCycle = value << 1; } + + Core1_LED_Control_Set_DC_Direct(ch, G, DutyCycle); + _NoteOn_Color_Counter[ch][G]++; + } + else if(midi_note_in_octave == NOTE_COLOR_BLUE || midi_note_in_octave == NOTE_COLOR_BLUE_ALT) + { + uint8_t DutyCycle = value; + if(_EEPROM_Content.Device_Configuration.Use_Color_Correction > 0) { DutyCycle = _PWM_Lookup[B][value]; } else { DutyCycle = value << 1; } + + Core1_LED_Control_Set_DC_Direct(ch, B, DutyCycle); + _NoteOn_Color_Counter[ch][B]++; + } + else + { + Note_Applied = false; + } + } + else if((midi_event == MIDI_EVENT_NOTE_OFF && _EEPROM_Content.Channel_MIDI_Configuration[ch].Skip_Note_Off_Event == 0)) + { + if(midi_note_in_octave == NOTE_COLOR_RED || midi_note_in_octave == NOTE_COLOR_RED_ALT) + { + _NoteOn_Color_Counter[ch][R]--; + if(_NoteOn_Color_Counter[ch][R] == 0) { Core1_LED_Control_Set_DC_Direct(ch, R, 0); } + } + else if(midi_note_in_octave == NOTE_COLOR_GREEN || midi_note_in_octave == NOTE_COLOR_GREEN_ALT) + { + _NoteOn_Color_Counter[ch][G]--; + if(_NoteOn_Color_Counter[ch][G] == 0) { Core1_LED_Control_Set_DC_Direct(ch, G, 0); } + } + else if(midi_note_in_octave == NOTE_COLOR_BLUE || midi_note_in_octave == NOTE_COLOR_BLUE_ALT) + { + _NoteOn_Color_Counter[ch][B]--; + if(_NoteOn_Color_Counter[ch][B] == 0) { Core1_LED_Control_Set_DC_Direct(ch, B, 0); } + } + else + { + Note_Applied = false; + } + } + else + { + Note_Applied = false; + } + + if(Note_Applied == true) { + _Info_Last_Applied_Note[ch].Event = midi_event; + _Info_Last_Applied_Note[ch].Note = midi_note; + _Info_Last_Applied_Note[ch].Note_In_Octave = midi_note_in_octave; + _Info_Last_Applied_Note[ch].Velocity = value; + _Info_Last_Applied_Note[ch].Timestamp_ms = to_ms_since_boot(get_absolute_time()); + } + } +} + +void Core1_Light_Controller_Set_MIDI_To_Light_Enabled(bool enabled) +{ + _MIDI_To_Light_Enabled = enabled; + + for(uint ch=0;ch= NUM_LED_CHANNELS) { + return false; + } + + return (midi_channel == _EEPROM_Content.Channel_MIDI_Configuration[channel].MIDI_Channel); +} + +bool Core1_Light_Controller_Check_Octave_Match(enum LED_Channel channel, uint midi_note) +{ + if(channel >= NUM_LED_CHANNELS) { + return false; + } + + if(midi_note >= MIDI_NOTE_LIST_LENGTH) { + return false; + } + + return (_MIDI_Note_List[midi_note].Octave == _EEPROM_Content.Channel_MIDI_Configuration[channel].Octave); +} + +void Core1_Light_Controller_Pause_Light_Trigger(uint8_t midi_event, uint8_t midi_channel) +{ + for(uint ch=0;ch 0) { + Core1_LED_Control_Set_DC_Direct(ch, l, 0); + } + + _NoteOn_Color_Counter[ch][l] = 0; + } + } +} + +Note_t Core1_Light_Controller_Get_Octave_Note_For_Channel(enum LED_Channel channel) +{ + if(channel >= NUM_LED_CHANNELS) { + return NO_NOTE; + } + + return _Info_Last_Applied_Note[channel].Note_In_Octave; +} + +Value_t Core1_Light_Controller_Get_Note_Value_For_Channel(enum LED_Channel channel) +{ + if(channel >= NUM_LED_CHANNELS) { + return 0; + } + + return _Info_Last_Applied_Note[channel].Velocity; +} \ No newline at end of file diff --git a/Firmware/Core1_Light_Controller.h b/Firmware/Core1_Light_Controller.h new file mode 100644 index 0000000..1f21d9e --- /dev/null +++ b/Firmware/Core1_Light_Controller.h @@ -0,0 +1,42 @@ +/* + * Core1_Light_Controller.h + * + * Created: Sat Jan 21 2023 16:22:25 + * Author Chris + */ +#ifndef CORE1_LIGHT_CONTROLLER_H_ +#define CORE1_LIGHT_CONTROLLER_H_ + +// ============================================================================================ +// Includes +#include +#include + +#include "pico/types.h" + +#include "EEPROM_M24C64.h" +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Core1_Light_Controller_Init(void); +void Core1_Light_Controller_Tick(void); + +void Core1_Light_Controller_MIDI_OnOff_Event_Received(uint8_t midi_command_shifted_right, uint8_t midi_channel); +void Core1_Light_Controller_MIDI_Other_Event_Received(uint8_t midi_data); +void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value); + +void Core1_Light_Controller_Set_MIDI_To_Light_Enabled(bool enabled); + +Note_t Core1_Light_Controller_Get_Octave_Note_For_Channel(enum LED_Channel channel); +Value_t Core1_Light_Controller_Get_Note_Value_For_Channel(enum LED_Channel channel); +#endif /* CORE1_LIGHT_CONTROLLER_H_ */ diff --git a/Firmware/Core1_MIDI_Receiver.c b/Firmware/Core1_MIDI_Receiver.c new file mode 100644 index 0000000..14f8f2b --- /dev/null +++ b/Firmware/Core1_MIDI_Receiver.c @@ -0,0 +1,157 @@ +/* + * Core1_MIDI_Receiver.c + * + * Created: Thu Jan 13 2022 15:35:28 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Core1_MIDI_Receiver.h" + +#include "UART0.h" +#include "Command_Definition.h" + +#include "pico/time.h" + + +// ============================================================================================ +// Defines +#define NOTE_UNDEFINED 255 + + +// ============================================================================================ +// Variables +enum PARSING_STATE_e +{ + WAITING_FOR_COMMAND, + WAITING_FOR_NOTE, + WAITING_FOR_VALUE +}; + +struct PARSING_s +{ + enum PARSING_STATE_e State; + uint8_t MIDI_Event; + uint8_t MIDI_Channel; + uint8_t MIDI_Note; +}; + +volatile struct PARSING_s _Parsing; + +History_Buffer_t _MIDI_History_Buffer[RECEIVED_MIDI_HISTORY_BUFFER_SIZE]; + + +// ============================================================================================ +// Function Declarations +void Core1_MIDI_Receiver_Histroy_Update (uint8_t data); +void Core1_MIDI_Receiver_Issue_Event_On_Off_Received(uint8_t midi_channel, uint8_t midi_event); +void Core1_MIDI_Receiver_Issue_Data_Received (uint8_t midi_data); +void Core1_MIDI_Receiver_Issue_Full_Note_Received (uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ + + +/******************************************************************* + Functions +*******************************************************************/ +void Core1_MIDI_Receiver_Init(void) +{ + UART0_Init(); + + for(uint i=0;i 0) + { + uint8_t Data = UART0_Get_Byte(); + Core1_MIDI_Receiver_Histroy_Update(Data); + + switch(_Parsing.State) + { + case WAITING_FOR_COMMAND: + if(MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_ON || MIDI_EVENT_FROM_COMMAND(Data) == MIDI_EVENT_NOTE_OFF) + { + _Parsing.MIDI_Event = MIDI_EVENT_FROM_COMMAND(Data); + _Parsing.MIDI_Channel = MIDI_CHANNEL_FROM_COMMAND(Data); + _Parsing.State = WAITING_FOR_NOTE; + + Core1_MIDI_Receiver_Issue_Event_On_Off_Received(_Parsing.MIDI_Channel, _Parsing.MIDI_Event); + break; + } + + Core1_MIDI_Receiver_Issue_Data_Received(Data); + break; + + case WAITING_FOR_NOTE: + if(IS_MIDI_DATA(Data)) + { + _Parsing.MIDI_Note = Data; + _Parsing.State = WAITING_FOR_VALUE; + } + else + { + // Received another command after just receiving a command. This should not happen, but + // in case it does, reset the parsing state machine + _Parsing.State = WAITING_FOR_COMMAND; + } + break; + + case WAITING_FOR_VALUE: + if(IS_MIDI_DATA(Data)) + { + Core1_MIDI_Receiver_Issue_Full_Note_Received(_Parsing.MIDI_Event, _Parsing.MIDI_Channel, _Parsing.MIDI_Note, Data); + } + + // Reset State Machine and wait for next MIDI Command + _Parsing.State = WAITING_FOR_COMMAND; + break; + + default: + break; + } + } +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +void Core1_MIDI_Receiver_Histroy_Update(uint8_t data) +{ + for(uint i=RECEIVED_MIDI_HISTORY_BUFFER_SIZE-1;i>0;i--) + { + _MIDI_History_Buffer[i] = _MIDI_History_Buffer[i-1]; + } + + _MIDI_History_Buffer[0].Data = data; + _MIDI_History_Buffer[0].Timestamp_ms = to_ms_since_boot(get_absolute_time()); +} + +void Core1_MIDI_Receiver_Issue_Event_On_Off_Received(uint8_t midi_channel, uint8_t midi_event) +{ + Core1_Light_Controller_MIDI_OnOff_Event_Received(midi_event, midi_channel); +} + +void Core1_MIDI_Receiver_Issue_Data_Received(uint8_t midi_data) +{ + Core1_Light_Controller_MIDI_Other_Event_Received(midi_data); +} + +void Core1_MIDI_Receiver_Issue_Full_Note_Received(uint8_t midi_event, uint8_t midi_channel, uint8_t midi_note, uint8_t value) +{ + Core1_Light_Controller_MIDI_Full_Note_Received(midi_event, midi_channel, midi_note, value); +} \ No newline at end of file diff --git a/Firmware/Core1_MIDI_Receiver.h b/Firmware/Core1_MIDI_Receiver.h new file mode 100644 index 0000000..535a2c1 --- /dev/null +++ b/Firmware/Core1_MIDI_Receiver.h @@ -0,0 +1,33 @@ +/* + * Core1_MIDI_Receiver.h + * + * Created: Thu Jan 13 2022 15:34:59 + * Author Chris + */ +#ifndef CORE1_MIDI_RECEIVER_H_ +#define CORE1_MIDI_RECEIVER_H_ + +// ============================================================================================ +// Includes +#include +#include + +#include "pico/types.h" + +#include "Core1_Light_Controller.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Core1_MIDI_Receiver_Init(void); +void Core1_MIDI_Receiver_Process(void); + +#endif /* CORE1_MIDI_RECEIVER_H_ */ diff --git a/Firmware/Display.c b/Firmware/Display.c index 9ba3a44..df72e7b 100644 --- a/Firmware/Display.c +++ b/Firmware/Display.c @@ -372,6 +372,15 @@ void Display_Screen_Transition_Tick() } } +bool Display_Screen_Transition_Ongoing() +{ + if(_Transition_Settings.Direction_Out == TRANSITION_NONE && _Transition_Settings.Direction_In == TRANSITION_NONE) { + return false; + } + + return true; +} + void Display_Render_Objects(void) { Object_Float* F; @@ -718,6 +727,15 @@ uint* Display_Get_Frame_Counter_Reference(void) return &_Frame_Counter; } +Display_Color Display_Get_Pixel(uint32_t pixel_number) +{ + if(pixel_number >= DISPLAY_HEIGHT * DISPLAY_WIDTH) { + return 0; + } + + return _Image_Buffer.Dim_1[pixel_number]; +} + void Display_Set_Debug_Print(void) { _Debug_Print = true; @@ -756,7 +774,11 @@ void Display_Render_Objects_Shape(Coordinates* coordinates_object, Object_Shape* Display_Shapes_Draw_Round_Rect_Frame(coordinates_object->X, coordinates_object->Y, shape->Dimension.Width, shape->Dimension.Height, shape->Radius_Start, shape->Thickness, shape->Color); break; - case CIRCLE: + case CIRCLE_FILLED: + Display_Shapes_Draw_Circle_Filled(coordinates_object->X, coordinates_object->Y, shape->Radius_Start, shape->Color); + break; + + case CIRCLE_FRAME: Display_Shapes_Draw_Circle_Frame(coordinates_object->X, coordinates_object->Y, shape->Radius_Start, shape->Thickness, shape->Color); break; @@ -1157,7 +1179,7 @@ void Display_Draw_Menu_Ring(Coordinates* coordinates, Object_Menu_Ring* menu_rin Coordinates Coordinate_Dot = Display_Shapes_Polar_To_XY(Center_X, Center_Y, (uint16_t)Total_Rotation, Config->Item_Radius); Display_Shapes_Draw_Circle_Frame(Center_X, Center_Y, Config->Item_Radius, 2, Config->Selection_Ring_Color); - Display_Shapes_Draw_Circle_Filled(Coordinate_Dot.X, Coordinate_Dot.Y, 4, Config->Selection_Ring_Color); + Display_Shapes_Draw_Circle_Filled(Coordinate_Dot.X, Coordinate_Dot.Y, 5, Config->Selection_Ring_Color); } // Draw center circle with animated scale (both phases) @@ -1569,7 +1591,8 @@ void Display_Draw_Select_List(Coordinates* coordinates, char* list_titles, uint3 return; } - Display_Shapes_Draw_Round_Rect_Frame(X_Entires-4, _Select_List_Current_Y-2, Entry_Width+8, Entry_Height+4, 5, 1, config->Color_Selected); + Display_Shapes_Draw_Round_Rect_Frame(X_Entires-4, _Select_List_Current_Y-4, Entry_Width+8, Entry_Height+8, 5, 1, config->Color_Selected); + // Display_Shapes_Draw_Rect_Frame(X_Entires-6, _Select_List_Current_Y-2, Entry_Width+8, Entry_Height+8, 1, config->Color_Selected); int Move_Direction = _NONE; if(_Select_List_Current_Y < Y_Target) { diff --git a/Firmware/Display.h b/Firmware/Display.h index 8231b65..312f4ad 100644 --- a/Firmware/Display.h +++ b/Firmware/Display.h @@ -37,6 +37,7 @@ void Display_Set_Draw_Center_Lines(bool do_draw); void Display_Screen_Transition_Start(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); void Display_Screen_Transition_Tick(); +bool Display_Screen_Transition_Ongoing(); void Display_Render_Objects(void); void Display_Send_Buffer(void); @@ -56,6 +57,7 @@ void Display_Menu_Icon_Row_Set(uint32_t initially_selected_item, uint32_t icon_s void Display_Inc_Frame_Counter(void); uint* Display_Get_Frame_Counter_Reference(void); +Display_Color Display_Get_Pixel(uint32_t pixel_number); void Display_Set_Debug_Print(void); diff --git a/Firmware/Display_Default_Configurations.c b/Firmware/Display_Default_Configurations.c index 11cbdfd..2488cc5 100644 --- a/Firmware/Display_Default_Configurations.c +++ b/Firmware/Display_Default_Configurations.c @@ -27,7 +27,7 @@ Configuration_Menu_Select _Configuration_Default_Select_Menu = { // Configuration_Menu_Icon_Row Configuration_Select_YesNo _Configuration_Default_Select_YesNo = { - .Title_Font = _Font_Victor_Mono_Bold_8x19, + .Title_Font = _Font_DejaVu_Sans_Mono_10x17, .Title_Color = DISPLAY_COLOR_LIGHTGREY, .Title_Y_Center = DISPLAY_Y_CENTER-20, @@ -38,9 +38,9 @@ Configuration_Select_YesNo _Configuration_Default_Select_YesNo = { }; Configuration_Select_List _Configuration_Default_Select_List = { - .Font = _Font_Victor_Mono_Bold_8x19, + .Font = _Font_DejaVu_Sans_Mono_10x17, .List_Entry_Y_Gap = 10, - .Color_Selected = DISPLAY_COLOR_CYAN, + .Color_Selected = DISPLAY_COLOR_WHITE, .Color_Not_Selected = DISPLAY_COLOR_DARKGREY }; diff --git a/Firmware/Display_Default_Configurations.h b/Firmware/Display_Default_Configurations.h index c074b0d..a0f4242 100644 --- a/Firmware/Display_Default_Configurations.h +++ b/Firmware/Display_Default_Configurations.h @@ -14,6 +14,8 @@ // ============================================================================================ // Defines +#define SCREEN_TRANSITION_DEFAULT_EASING INOUT_SINE +#define SCREEN_TRANSITION_DEFAULT_FRAMES 15 // ============================================================================================ diff --git a/Firmware/Display_Objects.c b/Firmware/Display_Objects.c index 3b63019..25b323e 100644 --- a/Firmware/Display_Objects.c +++ b/Firmware/Display_Objects.c @@ -502,10 +502,31 @@ Object_ID Display_Objects_Add_Rounded_Rectangle_Frame(Anchor_Point anchor_point, return Display_Objects_Add(SHAPE, anchor_point, coordinates_type, x, y, selectable, (void *)Shape, style_id, animation_id); } +Object_ID Display_Objects_Add_Circle_Filled(Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint16_t radius, Style_ID style_id, Animation_ID animation_id) +{ + Object_Shape *Shape = malloc(sizeof(Object_Shape)); + Shape->Type = CIRCLE_FILLED; + Shape->Color = color; + Shape->Dimension.Width = 0; + Shape->Dimension.Height = 0; + Shape->Radius_Start = radius; + Shape->Radius_End = radius; + Shape->Thickness = 0; + Shape->Draw_Steps = 0; + Shape->Angle_Start = 0; + Shape->Angle_End = 0; + + Coordinates Coordinates_In_Px = { .X = x, .Y = y }; + Display_Objects_Convert_Coordinates(coordinates_type, &Coordinates_In_Px); + + return Display_Objects_Add(SHAPE, anchor_point, BOTH_IN_PIXEL, Coordinates_In_Px.X + radius, Coordinates_In_Px.Y + radius, selectable, (void *)Shape, style_id, animation_id); +} + + Object_ID Display_Objects_Add_Circle_Frame(Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint16_t radius, uint16_t thickness, Style_ID style_id, Animation_ID animation_id) { Object_Shape *Shape = malloc(sizeof(Object_Shape)); - Shape->Type = CIRCLE; + Shape->Type = CIRCLE_FRAME; Shape->Color = color; Shape->Dimension.Width = 0; Shape->Dimension.Height = 0; @@ -1421,18 +1442,15 @@ Dimension Display_Objects_Get_Content_Size_From_Shape(Display_Object *object) switch(Shape->Type) { case RECTANGLE_FILLED: + case RECTANGLE_FRAME: case ROUNDED_RECTANGLE_FILLED: + case ROUNDED_RECTANGLE_FRAME: Dimension.Width = Shape->Dimension.Width; Dimension.Height = Shape->Dimension.Height; break; - case RECTANGLE_FRAME: - case ROUNDED_RECTANGLE_FRAME: - Dimension.Width = Shape->Dimension.Width + Shape->Thickness; - Dimension.Height = Shape->Dimension.Height + Shape->Thickness; - break; - - case CIRCLE: + case CIRCLE_FILLED: + case CIRCLE_FRAME: Dimension.Width = Shape->Radius_Start * 2; Dimension.Height = Shape->Radius_Start * 2; break; diff --git a/Firmware/Display_Objects.h b/Firmware/Display_Objects.h index 6ed1b99..53fc0e3 100644 --- a/Firmware/Display_Objects.h +++ b/Firmware/Display_Objects.h @@ -71,6 +71,7 @@ Object_ID Display_Objects_Add_Rectangle_Filled (Anchor_Point anchor_point, Coor Object_ID Display_Objects_Add_Rectangle_Frame (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint32_t width, uint32_t height, uint16_t border_thickness , Style_ID style_id, Animation_ID animation_id); Object_ID Display_Objects_Add_Rounded_Rectangle_Filled(Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint32_t width, uint32_t height, uint16_t radius , Style_ID style_id, Animation_ID animation_id); Object_ID Display_Objects_Add_Rounded_Rectangle_Frame (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint32_t width, uint32_t height, uint16_t radius, uint16_t border_thickness , Style_ID style_id, Animation_ID animation_id); +Object_ID Display_Objects_Add_Circle_Filled (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint16_t radius , Style_ID style_id, Animation_ID animation_id); Object_ID Display_Objects_Add_Circle_Frame (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint16_t radius, uint16_t thickness , Style_ID style_id, Animation_ID animation_id); Object_ID Display_Objects_Add_Arc_Frame ( Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint16_t radius, uint16_t thickness, uint16_t steps, int16_t angle_start, int16_t angle_end , Style_ID style_id, Animation_ID animation_id); Object_ID Dispaly_Objects_Add_Line_XY ( Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, int16_t x2, int16_t y2, uint16_t thickness , Style_ID style_id, Animation_ID animation_id); diff --git a/Firmware/Display_Objects_Datatypes.h b/Firmware/Display_Objects_Datatypes.h index 5c85e4f..4a5cb4e 100644 --- a/Firmware/Display_Objects_Datatypes.h +++ b/Firmware/Display_Objects_Datatypes.h @@ -89,7 +89,8 @@ typedef enum { RECTANGLE_FRAME, ROUNDED_RECTANGLE_FILLED, ROUNDED_RECTANGLE_FRAME, - CIRCLE, + CIRCLE_FILLED, + CIRCLE_FRAME, ARC, LINE_XY, LINE_RAD diff --git a/Firmware/Display_Shapes.c b/Firmware/Display_Shapes.c index d0a4186..396d7c4 100644 --- a/Firmware/Display_Shapes.c +++ b/Firmware/Display_Shapes.c @@ -7,6 +7,7 @@ #include "Display_Shapes.h" #include "Display_Color.h" #include "Display_Objects.h" +#include "Round_Corners_Lookup_Table.h" #include "hardware/dma.h" @@ -27,8 +28,6 @@ #define DEG2RAD (float)(M_PI / 180) -#define RECT_WIDTH_DMA_THRESHOLD 16 - // ============================================================================================ // Variables @@ -43,6 +42,9 @@ static dma_channel_config _DMA_Config_Drawing; // ============================================================================================ // Function Declarations +void Display_Shapes_Draw_Rounded_Rect_Frame_1 (int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, Display_Color color); +void Display_Shapes_Draw_Circle_Frame_1 (int16_t center_x, int16_t center_y, uint16_t radius, Display_Color color); + void Display_Shapes_Draw_Circle_Helper(int16_t x0, int16_t y0, uint16_t radius, uint16_t thickness, uint8_t cornername, Display_Color color); void Display_Shapes_Draw_Circle_Helper_Improved(int16_t x0, int16_t y0, uint16_t radius, uint16_t thickness, uint8_t cornername, Display_Color color); void Display_Shapes_Draw_Circle_Helper_Single_Pixel(int16_t x0, int16_t y0, uint16_t radius, uint8_t cornername, Display_Color color); @@ -234,11 +236,21 @@ void Display_Shapes_Draw_Line_Rad(int16_t x, int16_t y, float angle, uint16_t ra void Display_Shapes_Draw_Rect_Frame(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t thickness, Display_Color color) { - Display_Shapes_Draw_HLine(x , y , width , thickness, color); - Display_Shapes_Draw_HLine(x , y + height, width + thickness , thickness, color); + // The Rectangle Frame stays within the given height and width. Meaning the Border is drawn inside the width an height. + // For Example: + // If you specify a width = 50 and height = 30 with a thickness = 3, the + // inside area will be (50 - 2*3) x (30 - 2*3) = 44x24 pixels - Display_Shapes_Draw_VLine(x , y , height , thickness, color); - Display_Shapes_Draw_VLine(x + width , y , height + thickness, thickness, color); + int16_t X_Left = x; + int16_t X_Right = x + width - thickness; + int16_t Y_Top = y; + int16_t Y_Bottom = y + height - thickness; + + Display_Shapes_Draw_HLine(X_Left, Y_Top , width , thickness, color); + Display_Shapes_Draw_HLine(X_Left, Y_Bottom , width , thickness, color); + + Display_Shapes_Draw_VLine(X_Left , Y_Top, height, thickness, color); + Display_Shapes_Draw_VLine(X_Right , Y_Top, height, thickness, color); } void Display_Shapes_Draw_Rect_Filled(int16_t x, int16_t y, uint16_t width, uint16_t height, Display_Color color) @@ -261,143 +273,119 @@ void Display_Shapes_Draw_Rect_Filled(int16_t x, int16_t y, uint16_t width, uint1 return; } - // For wide rectangles, use DMA for each horizontal row (memory-contiguous) - if (Clipped_Width >= RECT_WIDTH_DMA_THRESHOLD) // DMA threshold for width + // For narrow rectangles, use optimized nested loop + for (int16_t row = Start_Y; row < End_Y; row++) { - static uint32_t Fill_Value; - Fill_Value = (color << 16) | color; // Pack two 16-bit values - - for (int16_t row = Start_Y; row < End_Y; row++) { - // Calculate destination address for this row - Display_Color* Dst = &(*_Current_Buffer)->Dim_2[row][Start_X]; - - // Use DMA for horizontal row fill (contiguous memory) - dma_channel_configure(_DMA_Channel_Drawing, &_DMA_Config_Drawing, Dst, &Fill_Value, Clipped_Width / 2, false); - dma_channel_start(_DMA_Channel_Drawing); - dma_channel_wait_for_finish_blocking(_DMA_Channel_Drawing); - - // Handle odd width - if (Clipped_Width & 1) { - (*_Current_Buffer)->Dim_2[row][End_X - 1] = color; - } - } - } - else - { - // For narrow rectangles, use optimized nested loop - for (int16_t row = Start_Y; row < End_Y; row++) - { - // Each row is contiguous in memory - cache friendly - Display_Color* Row_Ptr = &(*_Current_Buffer)->Dim_2[row][Start_X]; + // Each row is contiguous in memory - cache friendly + Display_Color* Row_Ptr = &(*_Current_Buffer)->Dim_2[row][Start_X]; - for (int16_t col = 0; col < Clipped_Width; col++) - { - Row_Ptr[col] = color; - } - } - } + for (int16_t col = 0; col < Clipped_Width; col++) + { + Row_Ptr[col] = color; + } + } } void Display_Shapes_Draw_Circle_Frame(int16_t center_x, int16_t center_y, uint16_t radius, uint16_t thickness, Display_Color color) { - if(thickness == 0) { - return; - } + if (thickness == 0 || radius == 0) { + return; + } - int16_t f = 1 - radius; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * radius; - int16_t X = 0; - int16_t Y = radius; + if(thickness == 1) { + Display_Shapes_Draw_Circle_Frame_1(center_x, center_y, radius, color); + return; + } + + uint16_t Inner_Radius = radius - thickness; + - if(thickness == 1) - { - Display_Shapes_Draw_Pixel_Safe(center_x , center_y+radius , color); - Display_Shapes_Draw_Pixel_Safe(center_x , center_y-radius , color); - Display_Shapes_Draw_Pixel_Safe(center_x+radius , center_y , color); - Display_Shapes_Draw_Pixel_Safe(center_x-radius , center_y , color); - } - else - { - Display_Shapes_Draw_Circle_Filled(center_x , center_y+radius , thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x , center_y-radius , thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x+radius , center_y , thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x-radius , center_y , thickness >> 1, color); - } - - while (X= 0) - { - Y--; - ddF_y += 2; - f += ddF_y; - } - X++; - ddF_x += 2; - f += ddF_x; + Display_Shapes_Draw_HLine(center_x - radius , center_y - 1, thickness, 2, color); + Display_Shapes_Draw_HLine(center_x + radius - thickness , center_y - 1, thickness, 2, color); - if(thickness == 1) - { - Display_Shapes_Draw_Pixel_Safe(center_x + X, center_y + Y, color); - Display_Shapes_Draw_Pixel_Safe(center_x - X, center_y + Y, color); - Display_Shapes_Draw_Pixel_Safe(center_x + X, center_y - Y, color); - Display_Shapes_Draw_Pixel_Safe(center_x - X, center_y - Y, color); - Display_Shapes_Draw_Pixel_Safe(center_x + Y, center_y + X, color); - Display_Shapes_Draw_Pixel_Safe(center_x - Y, center_y + X, color); - Display_Shapes_Draw_Pixel_Safe(center_x + Y, center_y - X, color); - Display_Shapes_Draw_Pixel_Safe(center_x - Y, center_y - X, color); - } - else - { - Display_Shapes_Draw_Circle_Filled(center_x + X, center_y + Y, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x - X, center_y + Y, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x + X, center_y - Y, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x - X, center_y - Y, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x + Y, center_y + X, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x - Y, center_y + X, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x + Y, center_y - X, thickness >> 1, color); - Display_Shapes_Draw_Circle_Filled(center_x - Y, center_y - X, thickness >> 1, color); - } - } + Display_Shapes_Draw_VLine(center_x - 1, center_y - radius , thickness, 2, color); + Display_Shapes_Draw_VLine(center_x - 1, center_y + radius - thickness , thickness, 2, color); + + const uint8_t* Outer_Data = _Corner_Lookup_Tables[radius].Data; + uint8_t Outer_Size = _Corner_Lookup_Tables[radius].Size; + + const uint8_t* Inner_Data = _Corner_Lookup_Tables[Inner_Radius].Data; + uint8_t Inner_Size = _Corner_Lookup_Tables[Inner_Radius].Size; + + // Draw frame using lookup table data + for (uint8_t i = 0; i < Outer_Size; i++) + { + int16_t Outer_X_Offset = Outer_Data[i]; + int16_t Y_Offset = i; + + uint16_t Line_Width = 0; + + if (i < thickness) { + // Full outer circle width for top/bottom thickness rows + Line_Width = radius - Outer_X_Offset; + } else { + // Frame width = outer - inner + uint8_t Inner_Index = i - thickness; + if (Inner_Index < Inner_Size) { + int16_t Inner_X_Offset = Inner_Data[Inner_Index]; + Line_Width = (radius - Outer_X_Offset) - (Inner_Radius - Inner_X_Offset); + } + } + + if (Line_Width > 0) { + int16_t Top_Y = center_y - radius + Y_Offset - 1; + int16_t Bottom_Y = center_y + radius - Y_Offset; + + // Left side of frame + int16_t Left_X = center_x - (radius - Outer_X_Offset) - 1; + Display_Shapes_Draw_HLine(Left_X, Top_Y, Line_Width, 1, color); + + if (Y_Offset > 0) { + Display_Shapes_Draw_HLine(Left_X, Bottom_Y, Line_Width, 1, color); + } + + // Right side of frame + int16_t Right_X = center_x + (radius - Outer_X_Offset) - Line_Width + 1; + Display_Shapes_Draw_HLine(Right_X, Top_Y, Line_Width, 1, color); + + if (Y_Offset > 0) { + Display_Shapes_Draw_HLine(Right_X, Bottom_Y, Line_Width, 1, color); + } + } + } } void Display_Shapes_Draw_Circle_Filled(int16_t center_x, int16_t center_y, uint16_t radius, Display_Color color) { - Display_Shapes_Draw_VLine(center_x, center_y-radius, 2*radius+1, 1, color); + if (radius == 0) { + Display_Shapes_Draw_Pixel_Safe(center_x, center_y, color); + return; + } + + Display_Shapes_Draw_HLine(center_x - radius, center_y - 1, 2*radius, 2, color); - uint8_t Corner_Name = 3; - int16_t Delta = 0; - - int16_t f = 1 - radius; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * radius; - int16_t X = 0; - int16_t Y = radius; - - while(X= 0) - { - Y--; - ddF_y += 2; - f += ddF_y; - } - X++; - ddF_x += 2; - f += ddF_x; - - if ((Corner_Name & 0x1) > 0) - { - Display_Shapes_Draw_VLine(center_x+X, center_y-Y, 2*Y+1+Delta, 1, color); - Display_Shapes_Draw_VLine(center_x+Y, center_y-X, 2*X+1+Delta, 1, color); - } - if ((Corner_Name & 0x2)>0) - { - Display_Shapes_Draw_VLine(center_x-X, center_y-Y, 2*Y+1+Delta, 1, color); - Display_Shapes_Draw_VLine(center_x-Y, center_y-X, 2*X+1+Delta, 1, color); - } - } + const uint8_t* Data = _Corner_Lookup_Tables[radius].Data; + uint8_t Size = _Corner_Lookup_Tables[radius].Size; + + // Draw horizontal lines using lookup table data + for (uint8_t i = 0; i < Size; i++) + { + int16_t X_Offset = Data[i]; + int16_t Y_Offset = i; + + // Calculate line width for this Y position + uint16_t Line_Width = 2 * (radius - X_Offset) + 2; + + // Draw upper and lower horizontal lines + int16_t Top_Y = center_y - radius + Y_Offset - 0; + int16_t Bottom_Y = center_y + radius - Y_Offset; + int16_t Start_X = center_x - (radius - X_Offset) - 1; + + Display_Shapes_Draw_HLine(Start_X, Top_Y, Line_Width, 1, color); + if (Y_Offset > 0) { // Avoid drawing center line twice + Display_Shapes_Draw_HLine(Start_X, Bottom_Y, Line_Width, 1, color); + } + } } void Display_Shapes_Draw_Round_Rect_Frame(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, uint16_t thickness, Display_Color color) @@ -407,61 +395,110 @@ void Display_Shapes_Draw_Round_Rect_Frame(int16_t x, int16_t y, uint16_t width, return; } + if(thickness == 1) { + Display_Shapes_Draw_Rounded_Rect_Frame_1(x, y, width, height, radius, color); + return; + } + // Clamp radius to maximum possible value - uint16_t max_radius = ((width < height) ? width : height) / 2; - if (radius > max_radius) { - radius = max_radius; + uint16_t Max_Radius = ((width < height) ? width : height) / 2; + if (radius > Max_Radius) { + radius = Max_Radius; } - // For very small rectangles, just draw a filled rectangle - if (radius == 0 || width <= 2*radius || height <= 2*radius) { + // For no radius, draw a regular Rectangle Frame + if (radius == 0) { Display_Shapes_Draw_Rect_Frame(x, y, width, height, thickness, color); return; } - // Draw the straight edges (avoiding corners) - // Top edge - if (width > 2 * radius) { - Display_Shapes_Draw_HLine(x + radius, y, width - 2 * radius, thickness, color); - } + // Calculate inner rectangle dimensions + int16_t Inner_Width = width - 2 * thickness; + int16_t Inner_Height = height - 2 * thickness; - // Bottom edge - if (width > 2 * radius) { - Display_Shapes_Draw_HLine(x + radius, y + height - thickness, width - 2 * radius, thickness, color); - } + // Calculate inner radius (ensuring it's valid) + uint16_t Inner_Radius = (radius > thickness) ? radius - thickness : 0; + uint16_t Outer_Radius = radius; + + const uint8_t* Outer_Data = _Corner_Lookup_Tables[Outer_Radius].Data; + uint8_t Outer_Size = _Corner_Lookup_Tables[Outer_Radius].Size; + + const uint8_t* Inner_Data = _Corner_Lookup_Tables[Inner_Radius].Data; + uint8_t Inner_Size = _Corner_Lookup_Tables[Inner_Radius].Size; + + // Draw straight edges + Display_Shapes_Draw_HLine(x + radius , y , width - 2 * radius, thickness, color); + Display_Shapes_Draw_HLine(x + radius , y + height - thickness, width - 2 * radius, thickness, color); + Display_Shapes_Draw_VLine(x , y + radius , height - 2 * radius, thickness, color); + Display_Shapes_Draw_VLine(x + width - thickness , y + radius , height - 2 * radius, thickness, color); - // Left edge - if (height > 2 * radius) { - Display_Shapes_Draw_VLine(x, y + radius, height - 2 * radius, thickness, color); + // Draw corner regions + for (uint8_t i = 0; i < Outer_Size; i++) + { + int16_t Outer_X_Offset = Outer_Data[i]; + + // Calculate corner positions for outer edge + int16_t TL_Outer_X = x + Outer_X_Offset; + int16_t TR_Outer_X = x + width - 1 - Outer_X_Offset; + int16_t BL_Outer_X = x + Outer_X_Offset; + int16_t BR_Outer_X = x + width - 1 - Outer_X_Offset; + + int16_t Top_Y = y + i; + int16_t Bottom_Y = y + height - 1 - i; + + uint16_t Line_Width = 0; + + if(i < thickness) { + Line_Width = Outer_Radius - Outer_X_Offset; + } else { + uint8_t Inner_Radius_Index = i - thickness; + int16_t Inner_X_Offset = Inner_Data[Inner_Radius_Index]; + + Line_Width = (Outer_Radius - Outer_X_Offset) - (Inner_Radius - Inner_X_Offset); + } + + Display_Shapes_Draw_HLine(TL_Outer_X, Top_Y , Line_Width, 1, color); + Display_Shapes_Draw_HLine(BL_Outer_X, Bottom_Y , Line_Width, 1, color); + + Display_Shapes_Draw_HLine(TR_Outer_X - Line_Width + 1, Top_Y , Line_Width, 1, color); + Display_Shapes_Draw_HLine(BR_Outer_X - Line_Width + 1, Bottom_Y , Line_Width, 1, color); } - - // Right edge - if (height > 2 * radius) { - Display_Shapes_Draw_VLine(x + width - thickness, y + radius, height - 2 * radius, thickness, color); - } - - // Draw the four corner arcs with corrected positioning - Display_Shapes_Draw_Circle_Helper_Improved(x + radius, y + radius, radius, thickness, CORNER_TOP_LEFT, color); // Top-left corner - Display_Shapes_Draw_Circle_Helper_Improved(x + width - radius - 1, y + radius, radius, thickness, CORNER_TOP_RIGHT, color); // Top-right corner - Display_Shapes_Draw_Circle_Helper_Improved(x + width - radius - 1, y + height - radius - 1, radius, thickness, CORNER_BOTTOM_RIGHT, color); // Bottom-right corner - Display_Shapes_Draw_Circle_Helper_Improved(x + radius, y + height - radius - 1, radius, thickness, CORNER_BOTTOM_LEFT, color); // Bottom-left corner } void Display_Shapes_Draw_Round_Rect_Filled(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, Display_Color color) { - uint16_t Max_Radius = ((width < height) ? width : height) / 2; // 1/2 minor axis + uint16_t Max_Radius = ((width < height) ? width : height) / 2; - if (radius > Max_Radius) - { - radius = Max_Radius; - } + if (radius > Max_Radius) { + radius = Max_Radius; + } - // Smarter Version - Display_Shapes_Draw_Rect_Filled(x + radius, y, width - 2 * radius, height, color); + // Draw the main body rectangle (excluding corner regions) + if (height > 2 * radius) { + Display_Shapes_Draw_Rect_Filled(x, y + radius, width, height - 2 * radius, color); + } - // Draw Four Corners - Display_Shapes_Draw_Circle_Helper_Filled(x + width - radius - 1 , y + radius, radius, 1, height - 2 * radius - 1, color); - Display_Shapes_Draw_Circle_Helper_Filled(x + radius , y + radius, radius, 2, height - 2 * radius - 1, color); + const uint8_t* Data = _Corner_Lookup_Tables[radius].Data; + uint8_t Size = _Corner_Lookup_Tables[radius].Size; + + // Draw corner regions using lookup table + for (uint8_t i = 0; i < Size; i++) + { + int16_t X_Offset = Data[i]; + + // Calculate Y positions for top and bottom + int16_t Top_Y = y + i; + int16_t Bottom_Y = y + height - 1 - i; + + // Calculate line width for this Y position + uint16_t Line_Width = width - 2 * X_Offset; + + // Draw Top Corners + Display_Shapes_Draw_HLine(x + X_Offset, Top_Y, Line_Width, 1, color); + + // Draw Bottom Corners + Display_Shapes_Draw_HLine(x + X_Offset, Bottom_Y, Line_Width, 1, color); + } } void Display_Shapes_Draw_Arc_Frame(int16_t center_x, int16_t center_y, int16_t radius, uint16_t thickness, float angle_start, float angle_end, uint16_t steps, Display_Color color) @@ -574,6 +611,119 @@ Coordinates Display_Shapes_Polar_To_XY(int16_t origin_x, int16_t origin_y, float /******************************************************************* Internal Functions *******************************************************************/ +void Display_Shapes_Draw_Rounded_Rect_Frame_1(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, Display_Color color) +{ + // Validate input parameters + if (width < 2 || height < 2) { + return; + } + + // Clamp radius to maximum possible value + uint16_t Max_Radius = ((width < height) ? width : height) / 2; + if (radius > Max_Radius) { + radius = Max_Radius; + } + + // For no radius, draw a regular Rectangle Frame + if (radius == 0) { + Display_Shapes_Draw_Rect_Frame(x, y, width, height, 1, color); + return; + } + + // Draw straight edges + Display_Shapes_Draw_HLine(x + radius , y , width - 2 * radius, 1, color); + Display_Shapes_Draw_HLine(x + radius , y + height - 1, width - 2 * radius, 1, color); + Display_Shapes_Draw_VLine(x , y + radius , height - 2 * radius, 1, color); + Display_Shapes_Draw_VLine(x + width - 1 , y + radius , height - 2 * radius, 1, color); + + const uint8_t* Data = _Corner_Lookup_Tables[radius].Data; + uint8_t Size = _Corner_Lookup_Tables[radius].Size; + + int16_t Last_X = Data[0]; + + // Draw corners with gap filling + for (uint8_t i = 0; i 1) { + Display_Shapes_Draw_HLine(TL_X, TL_Y, X_Step, 1, color); + Display_Shapes_Draw_HLine(BL_X, BL_Y, X_Step, 1, color); + Display_Shapes_Draw_HLine(TR_X - X_Step + 1, TR_Y, X_Step, 1, color); + Display_Shapes_Draw_HLine(BR_X - X_Step + 1, BR_Y, X_Step, 1, color); + } + else { + Display_Shapes_Draw_Pixel_Safe(TL_X, TL_Y, color); + Display_Shapes_Draw_Pixel_Safe(BL_X, BL_Y, color); + Display_Shapes_Draw_Pixel_Safe(TR_X, TR_Y, color); + Display_Shapes_Draw_Pixel_Safe(BR_X, BR_Y, color); + } + + Last_X = Data[i]; + } +} + +void Display_Shapes_Draw_Circle_Frame_1(int16_t center_x, int16_t center_y, uint16_t radius, Display_Color color) +{ + if(radius == 0) { + return; + } + + const uint8_t* Data = _Corner_Lookup_Tables[radius].Data; + uint8_t Size = _Corner_Lookup_Tables[radius].Size; + + int16_t Last_X = Data[0]; + + // Draw corners with gap filling + for (uint8_t i = 0; i 1) { + Display_Shapes_Draw_HLine(TL_X, TL_Y, X_Step, 1, color); + Display_Shapes_Draw_HLine(BL_X, BL_Y, X_Step, 1, color); + Display_Shapes_Draw_HLine(TR_X - X_Step + 1, TR_Y, X_Step, 1, color); + Display_Shapes_Draw_HLine(BR_X - X_Step + 1, BR_Y, X_Step, 1, color); + } + else { + Display_Shapes_Draw_Pixel_Safe(TL_X, TL_Y, color); + Display_Shapes_Draw_Pixel_Safe(BL_X, BL_Y, color); + Display_Shapes_Draw_Pixel_Safe(TR_X, TR_Y, color); + Display_Shapes_Draw_Pixel_Safe(BR_X, BR_Y, color); + } + + Last_X = Data[i]; + } +} + /**************************************************************************/ /*! @brief Quarter-circle drawer, used to do circles and roundrects diff --git a/Firmware/EEPROM_M24C64.c b/Firmware/EEPROM_M24C64.c new file mode 100644 index 0000000..733627b --- /dev/null +++ b/Firmware/EEPROM_M24C64.c @@ -0,0 +1,227 @@ +/* + * EEPROM_M24C64.c + * + * Created: Fri Dec 24 2021 12:24:26 + * Author Chris + */ + +// ============================================================================================ +// Includes +#include "EEPROM_M24C64.h" +#include "I2C_Master.h" + +#include "Hue.h" +#include "MIDI_Note_List.h" + + +// ============================================================================================ +// Defines +#define EEPROM_I2C_ADDRESS 0b1010000 +#define EEPROM_PAGE_SIZE 32 +#define EEPROM_CONTENT_SIZE sizeof(EEPROM_Content_t) +#define EEPROM_READ_WRITE_STEPS (EEPROM_CONTENT_SIZE / EEPROM_PAGE_SIZE) + 1 + + +// ============================================================================================ +// Variables +volatile EEPROM_Content_t _EEPROM_Content; +volatile bool _Update_Triggered; +volatile uint8_t _Write_Status; +volatile uint _Read_Write_Counter; + + +// ============================================================================================ +// Function Declarations +void EEPROM_Read_Data(); +bool EEPROM_Write_Data(uint section); +void EEPROM_Check_Content_Valid(); + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ + + +/******************************************************************* + Functions +*******************************************************************/ +void EEPROM_Init(void) +{ + _Update_Triggered = false; + _Write_Status = EEPROM_STATUS_NONE; + _Read_Write_Counter = 0; + + EEPROM_Read_Data(); + EEPROM_Check_Content_Valid(); +} + +void EEPROM_Tick(void) +{ + if(_Update_Triggered == true) { + // Wait 1ms to let other I2C traffic to be completed + sleep_ms(1); + + EEPROM_Write_Data(_Read_Write_Counter); + _Read_Write_Counter++; + + if(_Read_Write_Counter == EEPROM_READ_WRITE_STEPS) { + _Update_Triggered = false; + } + } +} + +void EEPROM_Trigger_Update() +{ + _Read_Write_Counter = 0; + _Update_Triggered = true; +} + +uint8_t EEPROM_Get_Write_Status() +{ + uint8_t Return_Value = _Write_Status; + + _Write_Status = EEPROM_STATUS_NONE; + + return Return_Value; +} + +uint EEPROM_Get_Content_Size() +{ + return EEPROM_CONTENT_SIZE; +} + +uint EEPROM_Get_Read_Write_Steps() +{ + return EEPROM_READ_WRITE_STEPS; +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +void EEPROM_Read_Data(void) +{ + for(uint i=0;i EEPROM_PAGE_SIZE) { + Read_Size = EEPROM_PAGE_SIZE; + } + + I2CM_Packet_Receive(EEPROM_I2C_ADDRESS, EEPROM_Read_Address, sizeof(EEPROM_Read_Address), Read_Address, Read_Size); + } +} + +bool EEPROM_Write_Data(uint section) +{ + uint16_t EEPROM_Write_Address = section * EEPROM_PAGE_SIZE; + + uint8_t* Write_Address = ((uint8_t*)&_EEPROM_Content) + section * EEPROM_PAGE_SIZE; + + uint8_t Write_Size = EEPROM_CONTENT_SIZE - section * EEPROM_PAGE_SIZE; + if(Write_Size > EEPROM_PAGE_SIZE) { + Write_Size = EEPROM_PAGE_SIZE; + } + + int Bytes_Written = I2CM_Packet_Transmit(EEPROM_I2C_ADDRESS, EEPROM_Write_Address, sizeof(EEPROM_Write_Address), Write_Address, Write_Size); + + if(Bytes_Written == sizeof(EEPROM_Write_Address) + Write_Size) { + _Write_Status = EEPROM_STATUS_WRITE_OK; + return true; + } + + _Write_Status = EEPROM_STATUS_WRITE_FAILED; + return false; +} + +void EEPROM_Check_Content_Valid() +{ + if(_EEPROM_Content.Device_Configuration.Idle_Screen > IDLE_SCREEN_MODE_ACTIVITY) { + _EEPROM_Content.Device_Configuration.Idle_Screen = IDLE_SCREEN_BLACK; + } + + if(_EEPROM_Content.Device_Configuration.Screen_Timeout > SCREEN_TIMEOUT_MAX_s) { + _EEPROM_Content.Device_Configuration.Screen_Timeout = SCREEN_TIMEOUT_MAX_s; + } + + // Reverse Scrolling no need, as bool is compared with equal to 0 + + if(_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel > MIDI_CHANNEL_16) { + _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel = MIDI_CHANNEL_1; + } + + if( _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Octave > _MIDI_Note_List[MIDI_NOTE_LIST_LENGTH-1].Octave || + _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Octave < _MIDI_Note_List[0].Octave) { + _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Octave = _MIDI_Note_List[0].Octave; + } + + // Note Colors no need, as full range of UINT8 is valid + + if(_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event > 1) { + _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event = 1; + } + + // Pause Light Enabled no need, as bool is compared with equal to 0 + + // Pause Light Color no need, as full range of UINT8 is valid + + if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout > PAUSE_LIGHT_DELAY_MAX_s) { + _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout = PAUSE_LIGHT_DELAY_MIN_s; + } + + if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition > CHANNEL_AND_EVENT_MATCH) { + _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition = ANY_TRAFFIC; + } + + if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed > FADE_SPEED_MAX) { + _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed = FADE_SPEED_MIN; + } + + // Pause Light Timer and Active no need here + + // Note Stack Enabled no need, as bool is compared with equal to 0 + + if(_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s > DURATION_MAX_s) { + _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s = DURATION_MAX_s; + } + + if(_EEPROM_Content.Jam_Light_Configuration.Duration_Min_s > _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s || _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s < DURATION_MIN_s) { + _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s = DURATION_MIN_s; + } + + if(_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s <= _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s) { + _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s = DURATION_MAX_s; + } + + while(_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color < 0) { + _EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color += HUE_MAX_ANGLE; + } + + _EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color %= HUE_MAX_ANGLE; + + if(_EEPROM_Content.Jam_Light_Configuration.Color_Change > COLOR_CHANGE_MAX) { + _EEPROM_Content.Jam_Light_Configuration.Color_Change = COLOR_CHANGE_MIN; + } + + if(_EEPROM_Content.Jam_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) { + _EEPROM_Content.Jam_Light_Configuration.Fade_Speed = FADE_SPEED_MIN; + } + + // Const Color no need, as full range of UINT8 is valid + + if(_EEPROM_Content.Const_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) { + _EEPROM_Content.Const_Light_Configuration.Fade_Speed = FADE_SPEED_MIN; + } + + if(_EEPROM_Content.Device_Configuration.Transition_Type >= 0) { + _EEPROM_Content.Device_Configuration.Transition_Type = 0; + } + + if(_EEPROM_Content.Device_Configuration.Transition_Frames == 0) { + _EEPROM_Content.Device_Configuration.Transition_Frames = 16; + } +} \ No newline at end of file diff --git a/Firmware/EEPROM_M24C64.h b/Firmware/EEPROM_M24C64.h new file mode 100644 index 0000000..daa1a84 --- /dev/null +++ b/Firmware/EEPROM_M24C64.h @@ -0,0 +1,64 @@ +/* + * EEPROM_M24C64.h + * + * Created: Fri Dec 24 2021 12:23:59 + * Author Chris + */ +#ifndef EEPROM_M24C64_H_ +#define EEPROM_M24C64_H_ + +// ============================================================================================ +// Includes +#include +#include + +#include "pico/types.h" +#include "pico/stdlib.h" +#include "pico/binary_info.h" + +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines +#define EEPROM_STATUS_NONE 0 +#define EEPROM_STATUS_WRITE_OK 1 +#define EEPROM_STATUS_WRITE_FAILED 2 + + +// ============================================================================================ +// Datatypes + +typedef struct { + uint8_t Idle_Screen; + uint Screen_Timeout; + uint8_t Reverse_List_Scrolling; + uint8_t Transition_Type; + uint8_t Transition_Frames; + uint8_t Use_Color_Correction; +} __packed Device_Configuration_s; + +typedef struct +{ + Channel_MIDI_Configuration_s Channel_MIDI_Configuration[NUM_LED_CHANNELS]; + Pause_Light_Configuration_s Pause_Light_Configuration[NUM_LED_CHANNELS]; + Jam_Light_Configuration_s Jam_Light_Configuration; + Const_Light_Configuration_s Const_Light_Configuration; + Device_Configuration_s Device_Configuration; +} __packed EEPROM_Content_t; + +extern volatile EEPROM_Content_t _EEPROM_Content; + + +// ============================================================================================ +// Function Declarations +void EEPROM_Init(); +void EEPROM_Tick(); + +void EEPROM_Trigger_Update(); +uint8_t EEPROM_Get_Write_Status(); +uint EEPROM_Get_Content_Size(); +uint EEPROM_Get_Read_Write_Steps(); + + +#endif /* EEPROM_M24C64_H_ */ diff --git a/Firmware/Fonts/Font_DejaVu_Sans_Mono_7x15.c b/Firmware/Fonts/Font_DejaVu_Sans_Mono_7x15.c new file mode 100644 index 0000000..35a213c --- /dev/null +++ b/Firmware/Fonts/Font_DejaVu_Sans_Mono_7x15.c @@ -0,0 +1,109 @@ +#include + +const uint8_t _Font_DejaVu_Sans_Mono_7x15[] = { + 0x00, 0x00, // Size of zero indicates fixed width font, actual length is width * height + 0x07, // Width + 0x0f, // Height + 0x20, // First Char + 0x5f, // Char Count + + // Fixed width; char width table not used !!!! + + // Font Data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, // ! + 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " + 0x00, 0x40, 0xe0, 0x50, 0xc0, 0x70, 0x40, 0x02, 0x0e, 0x03, 0x0a, 0x07, 0x02, 0x00, // # + 0x00, 0xe0, 0x90, 0xf8, 0x10, 0x20, 0x00, 0x00, 0x04, 0x08, 0x3f, 0x09, 0x07, 0x00, // $ + 0x30, 0x48, 0x48, 0xb0, 0x80, 0x40, 0x00, 0x00, 0x01, 0x01, 0x06, 0x09, 0x09, 0x06, // % + 0x00, 0x00, 0xf0, 0xc8, 0x08, 0x08, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x0b, 0x06, 0x0b, // & + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ' + 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x10, 0x00, // ( + 0x00, 0x00, 0x04, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x03, 0x00, 0x00, // ) + 0x00, 0x90, 0x60, 0xf8, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // * + 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01, // + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x00, 0x00, 0x00, // , + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, // - + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, // . + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, // / + 0x00, 0xe0, 0x18, 0x08, 0x88, 0x18, 0xe0, 0x00, 0x03, 0x0c, 0x08, 0x08, 0x0c, 0x03, // 0 + 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00, // 1 + 0x00, 0x10, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x08, 0x0c, 0x0a, 0x09, 0x08, 0x08, // 2 + 0x00, 0x10, 0x08, 0x88, 0x88, 0x88, 0x70, 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x07, // 3 + 0x00, 0x00, 0xc0, 0x60, 0x18, 0xf8, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x0f, 0x02, // 4 + 0x00, 0x78, 0x48, 0x48, 0x48, 0xc8, 0x80, 0x00, 0x04, 0x08, 0x08, 0x08, 0x0c, 0x07, // 5 + 0x00, 0xe0, 0x90, 0x48, 0x48, 0xc8, 0x90, 0x00, 0x03, 0x0c, 0x08, 0x08, 0x0c, 0x07, // 6 + 0x00, 0x08, 0x08, 0x08, 0x88, 0x78, 0x18, 0x00, 0x00, 0x08, 0x06, 0x01, 0x00, 0x00, // 7 + 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x07, 0x08, 0x08, 0x08, 0x08, 0x07, // 8 + 0x00, 0xf0, 0x18, 0x08, 0x08, 0x98, 0xe0, 0x00, 0x04, 0x09, 0x09, 0x09, 0x04, 0x03, // 9 + 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, // : + 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0c, 0x00, 0x00, 0x00, // ; + 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, // < + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // = + 0x00, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, // > + 0x00, 0x00, 0x10, 0x88, 0xc8, 0x48, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, // ? + 0x00, 0xc0, 0x20, 0x10, 0x90, 0xb0, 0xe0, 0x00, 0x0f, 0x18, 0x23, 0x24, 0x24, 0x07, // @ + 0x00, 0x00, 0xc0, 0x38, 0x38, 0xc0, 0x00, 0x00, 0x0c, 0x03, 0x02, 0x02, 0x03, 0x0c, // A + 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x07, // B + 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08, 0x10, 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, // C + 0x00, 0xf8, 0x08, 0x08, 0x08, 0x10, 0xe0, 0x00, 0x0f, 0x08, 0x08, 0x08, 0x04, 0x03, // D + 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, // E + 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, // F + 0x00, 0xe0, 0x10, 0x08, 0x08, 0x88, 0x90, 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x07, // G + 0x00, 0xf8, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, // H + 0x00, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00, // I + 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x04, 0x08, 0x08, 0x08, 0x07, 0x00, // J + 0x00, 0xf8, 0x80, 0xc0, 0x20, 0x10, 0x08, 0x00, 0x0f, 0x00, 0x00, 0x03, 0x06, 0x08, // K + 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, // L + 0x00, 0xf8, 0x30, 0xc0, 0xc0, 0x30, 0xf8, 0x00, 0x0f, 0x00, 0x01, 0x01, 0x00, 0x0f, // M + 0x00, 0xf8, 0x18, 0xe0, 0x80, 0x00, 0xf8, 0x00, 0x0f, 0x00, 0x00, 0x03, 0x0c, 0x0f, // N + 0x00, 0xe0, 0x18, 0x08, 0x08, 0x18, 0xe0, 0x00, 0x03, 0x0c, 0x08, 0x08, 0x0c, 0x03, // O + 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, // P + 0x00, 0xe0, 0x18, 0x08, 0x08, 0x18, 0xe0, 0x00, 0x03, 0x0c, 0x08, 0x08, 0x3c, 0x07, // Q + 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x06, // R + 0x00, 0x70, 0xc8, 0x88, 0x88, 0x88, 0x10, 0x00, 0x04, 0x08, 0x08, 0x08, 0x08, 0x07, // S + 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // T + 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x07, 0x08, 0x08, 0x08, 0x08, 0x07, // U + 0x00, 0x18, 0xe0, 0x00, 0x00, 0xe0, 0x18, 0x00, 0x00, 0x01, 0x0e, 0x0e, 0x01, 0x00, // V + 0xf8, 0x00, 0xc0, 0x30, 0xc0, 0x00, 0xf8, 0x01, 0x0e, 0x03, 0x00, 0x03, 0x0e, 0x01, // W + 0x00, 0x08, 0x30, 0xc0, 0xc0, 0x30, 0x08, 0x00, 0x08, 0x06, 0x01, 0x01, 0x06, 0x08, // X + 0x08, 0x10, 0x60, 0x80, 0x60, 0x10, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // Y + 0x00, 0x08, 0x08, 0x88, 0xc8, 0x38, 0x18, 0x00, 0x0c, 0x0e, 0x09, 0x08, 0x08, 0x08, // Z + 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, // [ + 0x00, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x10, // "\" + 0x00, 0x00, 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, // ] + 0x20, 0x10, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // _ + 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ` + 0x00, 0x40, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x06, 0x09, 0x09, 0x09, 0x0f, 0x00, // a + 0x00, 0xfc, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, // b + 0x00, 0xc0, 0x60, 0x20, 0x20, 0x40, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08, 0x08, 0x00, // c + 0x00, 0xc0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x0f, 0x00, // d + 0x00, 0xc0, 0x60, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x07, 0x09, 0x09, 0x09, 0x05, 0x00, // e + 0x00, 0x20, 0x20, 0xf8, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, // f + 0x00, 0xc0, 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x07, 0x28, 0x48, 0x48, 0x3f, 0x00, // g + 0x00, 0xfc, 0x40, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, // h + 0x00, 0x20, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x00, // i + 0x00, 0x00, 0x20, 0x20, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x3f, 0x00, 0x00, // j + 0x00, 0xfc, 0x00, 0x80, 0x40, 0x20, 0x00, 0x00, 0x0f, 0x01, 0x02, 0x04, 0x08, 0x00, // k + 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x08, 0x00, // l + 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, // m + 0x00, 0xe0, 0x40, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, // n + 0x00, 0xc0, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x07, 0x00, // o + 0x00, 0xe0, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x7f, 0x08, 0x08, 0x08, 0x07, 0x00, // p + 0x00, 0xc0, 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x7f, 0x00, // q + 0x00, 0x00, 0xe0, 0x60, 0x20, 0x20, 0x40, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, // r + 0x00, 0xc0, 0x20, 0x20, 0x20, 0x40, 0x00, 0x00, 0x04, 0x09, 0x09, 0x09, 0x06, 0x00, // s + 0x00, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x00, // t + 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x07, 0x08, 0x08, 0x08, 0x0f, 0x00, // u + 0x00, 0x60, 0x80, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x03, 0x00, 0x00, // v + 0x60, 0x80, 0x00, 0x80, 0x00, 0x80, 0x60, 0x00, 0x03, 0x0e, 0x01, 0x0e, 0x03, 0x00, // w + 0x00, 0x20, 0xc0, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x08, 0x06, 0x01, 0x06, 0x08, 0x00, // x + 0x00, 0x60, 0x80, 0x00, 0x80, 0x60, 0x00, 0x00, 0x40, 0x67, 0x1c, 0x03, 0x00, 0x00, // y + 0x00, 0x20, 0x20, 0x20, 0xa0, 0x60, 0x00, 0x00, 0x0c, 0x0a, 0x09, 0x08, 0x08, 0x00, // z + 0x00, 0x80, 0x80, 0x7c, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x00, // { + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // | + 0x00, 0x04, 0x04, 0x7c, 0x80, 0x80, 0x00, 0x00, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, // } + 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01 // ~ +}; + diff --git a/Firmware/Fonts/Font_DejaVu_Sans_Mono_Bold_11x17.c b/Firmware/Fonts/Font_DejaVu_Sans_Mono_Bold_11x17.c new file mode 100644 index 0000000..7a5e503 --- /dev/null +++ b/Firmware/Fonts/Font_DejaVu_Sans_Mono_Bold_11x17.c @@ -0,0 +1,109 @@ +#include + +const uint8_t _Font_DejaVu_Sans_Mono_Bold_11x17[] = { + 0x00, 0x00, // Size of zero indicates fixed width font, actual length is width * height + 0x0b, // Width + 0x11, // Height + 0x20, // First Character + 0x5f, // Character Count + + // Fixed width; char width table not used !!!! + + // Font Data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ! + 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " + 0x00, 0x00, 0x30, 0xb0, 0xf8, 0x3e, 0x32, 0xf0, 0xfe, 0x3e, 0x30, 0x00, 0x03, 0x1b, 0x1f, 0x03, 0x03, 0x1f, 0x0f, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // # + 0x00, 0x00, 0x70, 0xf8, 0xd8, 0xfe, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x7f, 0x19, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // $ + 0x00, 0x1c, 0x22, 0xa2, 0xa2, 0x9c, 0x40, 0x40, 0x20, 0x20, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // % + 0x00, 0x00, 0x00, 0xdc, 0x7e, 0xe6, 0xc6, 0x86, 0x0c, 0x80, 0x80, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x19, 0x1f, 0x1e, 0x1f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // & + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ' + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x1e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x78, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ( + 0x00, 0x00, 0x00, 0x02, 0x1e, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x78, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ) + 0x00, 0x00, 0x48, 0x78, 0x30, 0xfe, 0x30, 0x78, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // * + 0x00, 0x00, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x0f, 0x0f, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // , + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // - + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // . + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x20, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // / + 0x00, 0x00, 0xf0, 0xfc, 0x0e, 0xc6, 0xc6, 0x0e, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0 + 0x00, 0x00, 0x00, 0x0c, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1 + 0x00, 0x00, 0x0c, 0x06, 0x06, 0x06, 0x86, 0xc6, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 2 + 0x00, 0x00, 0x0c, 0x06, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x38, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 3 + 0x00, 0x00, 0x80, 0xc0, 0x70, 0x18, 0x0e, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x1f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 4 + 0x00, 0x00, 0xfe, 0x7e, 0x66, 0x66, 0x66, 0xe6, 0xc6, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5 + 0x00, 0x00, 0xf0, 0xfc, 0xce, 0x66, 0x66, 0xe6, 0xcc, 0x80, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6 + 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xe6, 0xfe, 0x3e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7 + 0x00, 0x00, 0x38, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x38, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x18, 0x18, 0x18, 0x18, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8 + 0x00, 0x00, 0x78, 0xfc, 0xce, 0x86, 0x86, 0xce, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x19, 0x19, 0x19, 0x1c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // : + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ; + 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x60, 0x60, 0x20, 0x30, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x06, 0x06, 0x04, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // < + 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // = + 0x00, 0x00, 0x30, 0x20, 0x60, 0x60, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x06, 0x06, 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // > + 0x00, 0x00, 0x0c, 0x06, 0x86, 0xc6, 0x66, 0x7e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ? + 0x00, 0xe0, 0xf0, 0x38, 0x9c, 0xcc, 0xcc, 0xdc, 0xf8, 0xf0, 0x00, 0x00, 0x07, 0x1f, 0x38, 0x73, 0x67, 0x66, 0x66, 0x77, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // @ + 0x00, 0x00, 0x00, 0xc0, 0xfc, 0x3e, 0x3e, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x0f, 0x03, 0x03, 0x0f, 0x1f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A + 0x00, 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0x3c, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // B + 0x00, 0x00, 0xf0, 0xfc, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // C + 0x00, 0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x0c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D + 0x00, 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // E + 0x00, 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // F + 0x00, 0x00, 0xf0, 0xfc, 0x0c, 0x06, 0x86, 0x86, 0x86, 0x8c, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x19, 0x19, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G + 0x00, 0x00, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // H + 0x00, 0x00, 0x00, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // I + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // J + 0x00, 0x00, 0xfe, 0xfe, 0xe0, 0xf0, 0xfc, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x03, 0x0f, 0x1e, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // K + 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // L + 0x00, 0x00, 0xfe, 0xfe, 0x3e, 0xf0, 0xf0, 0x3e, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x01, 0x01, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // M + 0x00, 0x00, 0xfe, 0xfe, 0x1e, 0xf0, 0xc0, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x03, 0x1e, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // N + 0x00, 0x00, 0xf0, 0xfc, 0x0e, 0x06, 0x06, 0x0e, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // O + 0x00, 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // P + 0x00, 0x00, 0xf0, 0xfc, 0x0e, 0x06, 0x06, 0x0e, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x18, 0x18, 0x3c, 0x6f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Q + 0x00, 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x3c, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x01, 0x03, 0x1f, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // R + 0x00, 0x00, 0x38, 0x7c, 0xe6, 0xc6, 0xc6, 0xc6, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // S + 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // T + 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // U + 0x00, 0x00, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // V + 0x00, 0x1e, 0xfe, 0xe0, 0x00, 0xf0, 0xf0, 0x00, 0xe0, 0xfe, 0x1e, 0x00, 0x00, 0x1f, 0x1f, 0x1e, 0x01, 0x01, 0x1e, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // W + 0x00, 0x00, 0x02, 0x0e, 0x3e, 0xf8, 0xf8, 0x3e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x1f, 0x03, 0x03, 0x1f, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // X + 0x00, 0x02, 0x0e, 0x3e, 0x78, 0xe0, 0xe0, 0x78, 0x3e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Y + 0x00, 0x00, 0x06, 0x06, 0x86, 0xc6, 0xf6, 0x7e, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x1e, 0x1f, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Z + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [ + 0x00, 0x00, 0x02, 0x0e, 0x38, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0e, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // "\" + 0x00, 0x00, 0x00, 0x02, 0x02, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ] + 0x00, 0x10, 0x18, 0x1c, 0x0e, 0x06, 0x0e, 0x1c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // _ + 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ` + 0x00, 0x00, 0x00, 0x60, 0x30, 0xb0, 0xb0, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0x1b, 0x19, 0x19, 0x0d, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // a + 0x00, 0x00, 0xfe, 0xfe, 0x60, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x0c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // b + 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // c + 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x60, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x0c, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // d + 0x00, 0x00, 0xc0, 0xe0, 0xb0, 0xb0, 0xb0, 0xb0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1d, 0x19, 0x19, 0x19, 0x19, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // e + 0x00, 0x00, 0x30, 0x30, 0xfc, 0xfe, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // f + 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x60, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x6f, 0xdc, 0xd8, 0xd8, 0xcc, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // g + 0x00, 0x00, 0xfe, 0xfe, 0x60, 0x30, 0x30, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // h + 0x00, 0x00, 0x00, 0x30, 0x30, 0xf7, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // i + 0x00, 0x00, 0x00, 0x30, 0x30, 0xf7, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // j + 0x00, 0x00, 0xfe, 0xfe, 0x80, 0xe0, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x01, 0x03, 0x07, 0x1e, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // k + 0x00, 0x00, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // l + 0x00, 0x00, 0xf0, 0xf0, 0x30, 0xf0, 0xe0, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // m + 0x00, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // n + 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // o + 0x00, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x18, 0x18, 0x1c, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // p + 0x00, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x60, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x18, 0x18, 0x0c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // q + 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // r + 0x00, 0x00, 0xe0, 0xf0, 0xb0, 0xb0, 0xb0, 0xb0, 0x30, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x19, 0x19, 0x19, 0x19, 0x1b, 0x1f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s + 0x00, 0x00, 0x30, 0x30, 0xfc, 0xfc, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // t + 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x18, 0x0c, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // u + 0x00, 0x00, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0xe0, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // v + 0x70, 0xf0, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x07, 0x1f, 0x1e, 0x03, 0x03, 0x1e, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // w + 0x00, 0x00, 0x10, 0x30, 0xf0, 0xc0, 0xc0, 0xf0, 0x30, 0x10, 0x00, 0x00, 0x00, 0x10, 0x18, 0x1e, 0x07, 0x07, 0x1e, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // x + 0x00, 0x00, 0x10, 0xf0, 0xf0, 0x80, 0x00, 0xf0, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc3, 0xff, 0x3f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // y + 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0xb0, 0xf0, 0x70, 0x30, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x1b, 0x19, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // z + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x7e, 0xfe, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, // | + 0x00, 0x00, 0x00, 0x02, 0x02, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xfe, 0x7e, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // } + 0x00, 0x00, 0xc0, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ~ +}; + diff --git a/Firmware/Fonts/Font_DejaVu_Sans_Mono_Bold_7x15.c b/Firmware/Fonts/Font_DejaVu_Sans_Mono_Bold_7x15.c new file mode 100644 index 0000000..07aeadc --- /dev/null +++ b/Firmware/Fonts/Font_DejaVu_Sans_Mono_Bold_7x15.c @@ -0,0 +1,109 @@ +#include + +const uint8_t _Font_DejaVu_Sans_Mono_Bold_7x15[] = { + 0x00, 0x00, // Size of zero indicates fixed width font, actual length is width * height + 0x07, // Width + 0x0f, // Height + 0x20, // First Char + 0x5f, // Char Count + + // Fixed width; char width table not used !!!! + + // Font Data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x00, 0x00, // ! + 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " + 0x00, 0x40, 0xe0, 0x70, 0xc0, 0x70, 0x40, 0x02, 0x0e, 0x03, 0x0e, 0x07, 0x02, 0x00, // # + 0x60, 0xf0, 0x90, 0xf8, 0x90, 0xb0, 0x00, 0x04, 0x0c, 0x08, 0x3f, 0x08, 0x0f, 0x07, // $ + 0x30, 0x48, 0x48, 0xb0, 0x80, 0x40, 0x40, 0x01, 0x01, 0x01, 0x06, 0x09, 0x09, 0x06, // % + 0x00, 0x00, 0xb8, 0xf8, 0x88, 0x00, 0x80, 0x00, 0x07, 0x0f, 0x08, 0x0f, 0x0e, 0x0b, // & + 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ' + 0x00, 0x00, 0xe0, 0xf8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x18, 0x00, 0x00, // ( + 0x00, 0x00, 0x0c, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0x03, 0x00, 0x00, // ) + 0x00, 0x90, 0x60, 0xf8, 0x60, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // * + 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01, // + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x0c, 0x00, 0x00, // , + 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, // - + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, // . + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, // / + 0x00, 0xe0, 0xf8, 0x08, 0x88, 0xf8, 0xe0, 0x00, 0x03, 0x0f, 0x08, 0x08, 0x0f, 0x03, // 0 + 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0f, 0x0f, 0x08, 0x08, // 1 + 0x00, 0x10, 0x08, 0x08, 0x88, 0xf8, 0x70, 0x00, 0x0c, 0x0e, 0x0b, 0x09, 0x08, 0x08, // 2 + 0x00, 0x10, 0x08, 0x88, 0x88, 0x78, 0x70, 0x00, 0x04, 0x08, 0x08, 0x08, 0x0f, 0x07, // 3 + 0x00, 0x80, 0xc0, 0x30, 0xf8, 0xf8, 0x00, 0x00, 0x03, 0x02, 0x02, 0x0f, 0x0f, 0x02, // 4 + 0x00, 0x78, 0x78, 0x48, 0xc8, 0xc8, 0x80, 0x00, 0x04, 0x08, 0x08, 0x08, 0x0f, 0x07, // 5 + 0x00, 0xe0, 0xf8, 0x58, 0x48, 0xc8, 0x80, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x0f, 0x07, // 6 + 0x00, 0x08, 0x08, 0x08, 0xe8, 0xf8, 0x38, 0x00, 0x00, 0x08, 0x0f, 0x07, 0x00, 0x00, // 7 + 0x00, 0x70, 0x78, 0x88, 0x88, 0x78, 0x70, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x0f, 0x07, // 8 + 0x00, 0xf0, 0xf8, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x00, 0x09, 0x09, 0x0d, 0x0f, 0x03, // 9 + 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, // : + 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1c, 0x0c, 0x00, 0x00, // ; + 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x00, 0x01, 0x01, 0x03, 0x02, 0x02, 0x06, // < + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, // = + 0x00, 0x60, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x06, 0x02, 0x02, 0x03, 0x01, 0x01, // > + 0x00, 0x00, 0x10, 0x88, 0xc8, 0x78, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x00, 0x00, // ? + 0xc0, 0x60, 0x90, 0x50, 0x50, 0x50, 0xe0, 0x07, 0x18, 0x37, 0x28, 0x28, 0x28, 0x3f, // @ + 0x00, 0x00, 0xc0, 0xf8, 0xf8, 0xc0, 0x00, 0x00, 0x0c, 0x0f, 0x02, 0x02, 0x0f, 0x0c, // A + 0x00, 0xf8, 0xf8, 0x88, 0x88, 0x78, 0x70, 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x07, // B + 0x00, 0xe0, 0xf0, 0x18, 0x08, 0x08, 0x10, 0x00, 0x03, 0x07, 0x0c, 0x08, 0x08, 0x04, // C + 0x00, 0xf8, 0xf8, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x0f, 0x0f, 0x08, 0x0c, 0x07, 0x03, // D + 0x00, 0xf8, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x08, 0x08, // E + 0x00, 0xf8, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, // F + 0x00, 0xe0, 0xf0, 0x18, 0x08, 0x08, 0x10, 0x00, 0x03, 0x07, 0x0c, 0x09, 0x0f, 0x0f, // G + 0x00, 0xf8, 0xf8, 0x80, 0x80, 0xf8, 0xf8, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, // H + 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x08, 0x08, 0x00, 0x08, 0x08, 0x0f, 0x0f, 0x08, 0x08, // I + 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x00, 0x04, 0x08, 0x08, 0x08, 0x0f, 0x07, // J + 0x00, 0xf8, 0xf8, 0xc0, 0xe0, 0x38, 0x18, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x07, 0x0c, // K + 0x00, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x08, 0x08, // L + 0x00, 0xf8, 0xf0, 0xe0, 0xe0, 0xf0, 0xf8, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, // M + 0x00, 0xf8, 0xf8, 0xf0, 0x80, 0xf8, 0xf8, 0x00, 0x0f, 0x0f, 0x00, 0x07, 0x0f, 0x0f, // N + 0x00, 0xe0, 0xf8, 0x08, 0x08, 0xf8, 0xe0, 0x00, 0x03, 0x0f, 0x08, 0x08, 0x0f, 0x03, // O + 0x00, 0xf8, 0xf8, 0x88, 0x88, 0xf8, 0x70, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, // P + 0x00, 0xe0, 0xf8, 0x08, 0x08, 0xf8, 0xe0, 0x00, 0x03, 0x0f, 0x08, 0x08, 0x1f, 0x03, // Q + 0x00, 0xf8, 0xf8, 0x88, 0x88, 0x78, 0x70, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x07, 0x0e, // R + 0x00, 0x70, 0xf8, 0xc8, 0x88, 0x88, 0x10, 0x00, 0x04, 0x08, 0x08, 0x09, 0x0f, 0x07, // S + 0x00, 0x08, 0x08, 0xf8, 0xf8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // T + 0x00, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x0f, 0x07, // U + 0x00, 0x18, 0xf8, 0x80, 0x80, 0xf8, 0x18, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, // V + 0x78, 0xf8, 0x80, 0x60, 0x80, 0xf8, 0xf8, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, // W + 0x00, 0x08, 0x38, 0xe0, 0xe0, 0x38, 0x08, 0x00, 0x08, 0x0e, 0x03, 0x03, 0x0e, 0x08, // X + 0x08, 0x38, 0xf0, 0xc0, 0xc0, 0xf0, 0x38, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // Y + 0x00, 0x08, 0x08, 0x88, 0xe8, 0x78, 0x18, 0x00, 0x0c, 0x0f, 0x0b, 0x08, 0x08, 0x08, // Z + 0x00, 0x00, 0xfc, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x10, 0x00, 0x00, // [ + 0x00, 0x08, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x10, // "\" + 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x00, 0x00, // ] + 0x20, 0x30, 0x18, 0x08, 0x18, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // _ + 0x00, 0x04, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ` + 0x00, 0x00, 0x40, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x06, 0x0f, 0x09, 0x09, 0x0f, 0x0f, // a + 0x00, 0xfc, 0xfc, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x07, // b + 0x00, 0x80, 0xc0, 0x60, 0x20, 0x20, 0x40, 0x00, 0x03, 0x07, 0x0c, 0x08, 0x08, 0x04, // c + 0x00, 0xc0, 0xe0, 0x20, 0x20, 0xfc, 0xfc, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x0f, 0x0f, // d + 0x00, 0xc0, 0xe0, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x07, 0x0f, 0x09, 0x09, 0x09, 0x05, // e + 0x00, 0x20, 0x20, 0xf8, 0xfc, 0x24, 0x24, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, // f + 0x00, 0xc0, 0xe0, 0x20, 0x20, 0xe0, 0xe0, 0x00, 0x07, 0x4f, 0x48, 0x48, 0x7f, 0x3f, // g + 0x00, 0xfc, 0xfc, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, // h + 0x00, 0x20, 0x20, 0xec, 0xec, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0f, 0x0f, 0x08, 0x08, // i + 0x00, 0x20, 0x20, 0xec, 0xec, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f, 0x3f, 0x00, 0x00, // j + 0x00, 0xfc, 0xfc, 0x80, 0xc0, 0x60, 0x00, 0x00, 0x0f, 0x0f, 0x01, 0x07, 0x0e, 0x08, // k + 0x04, 0x04, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x00, // l + 0x00, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x00, 0x0f, // m + 0x00, 0xe0, 0xe0, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, // n + 0x00, 0xc0, 0xe0, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x0f, 0x07, // o + 0x00, 0xe0, 0xe0, 0x20, 0x20, 0xe0, 0xc0, 0x00, 0x7f, 0x7f, 0x08, 0x08, 0x0f, 0x07, // p + 0x00, 0xc0, 0xe0, 0x20, 0x20, 0xe0, 0xe0, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x7f, 0x7f, // q + 0x00, 0x00, 0xe0, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, // r + 0x00, 0xc0, 0xe0, 0xa0, 0x20, 0x20, 0x40, 0x00, 0x04, 0x09, 0x09, 0x09, 0x0f, 0x06, // s + 0x20, 0x20, 0xf8, 0xf8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x00, // t + 0x00, 0xe0, 0xe0, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x07, 0x0f, 0x08, 0x08, 0x0f, 0x0f, // u + 0x00, 0x60, 0xe0, 0x00, 0x00, 0xe0, 0x60, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x03, 0x00, // v + 0xe0, 0xe0, 0x00, 0x80, 0x00, 0xe0, 0xe0, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, // w + 0x00, 0x20, 0xe0, 0xc0, 0xc0, 0xe0, 0x20, 0x00, 0x08, 0x0e, 0x07, 0x07, 0x0e, 0x08, // x + 0x00, 0x60, 0xe0, 0x00, 0x00, 0xe0, 0x60, 0x00, 0x40, 0x43, 0x7f, 0x1f, 0x03, 0x00, // y + 0x00, 0x20, 0x20, 0x20, 0xa0, 0xe0, 0x60, 0x00, 0x0c, 0x0e, 0x0b, 0x09, 0x08, 0x08, // z + 0x00, 0x80, 0x80, 0x7c, 0x7c, 0x04, 0x04, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x10, 0x10, // { + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, // | + 0x00, 0x04, 0x04, 0x7c, 0x7c, 0x80, 0x80, 0x00, 0x10, 0x10, 0x1f, 0x1f, 0x00, 0x00, // } + 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01 // ~ +}; + diff --git a/Firmware/Hue.c b/Firmware/Hue.c new file mode 100644 index 0000000..620df0c --- /dev/null +++ b/Firmware/Hue.c @@ -0,0 +1,80 @@ +/* + * Hue.c + * + * Created: Sun Jan 29 2023 10:51:34 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Hue.h" + +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Varables + + +// ============================================================================================ +// Function Declarations + + +/******************************************************************* + Public Functions +*******************************************************************/ +Pixel_Value Hue_Get_Color_From_Angle(int hue_angle) +{ + LED_Data_t Result; + Result.Pixel = 0; + + while(hue_angle < 0) { + hue_angle += 360; + } + + hue_angle %= 360; + + /////////// + // Red // + /////////// + if(hue_angle <=60 || hue_angle >= 300) { + Result.R = 255; + } + else if(hue_angle > 60 && hue_angle < 120) { + Result.R = (uint8_t)((255ul * (60ul-(hue_angle-60ul))) / 60ul); + } + else if(hue_angle > 240 && hue_angle < 300) { + Result.R = (uint8_t)((255ul * (hue_angle-240)) / 60ul); + } + + /////////// + // Green // + /////////// + if(hue_angle >= 60 && hue_angle <= 180) { + Result.G = 255; + } + else if(hue_angle < 60) { + Result.G = (uint8_t)((255ul * hue_angle) / 60ul); + } + else if(hue_angle > 180 && hue_angle < 240) { + Result.G = (uint8_t)((255ul * (60ul-(hue_angle-180ul))) / 60ul); + } + + /////////// + // Blue // + /////////// + if(hue_angle >= 180 && hue_angle <= 300) { + Result.B = 255; + } + else if(hue_angle > 120 && hue_angle < 180) { + Result.B = (uint8_t)((255ul * (hue_angle-120)) / 60ul); + } + else if(hue_angle > 300 && hue_angle < 360) { + Result.B = (uint8_t)((255ul * (60ul-(hue_angle-300ul))) / 60ul); + } + + return Result.Pixel; +} \ No newline at end of file diff --git a/Firmware/Hue.h b/Firmware/Hue.h new file mode 100644 index 0000000..9905974 --- /dev/null +++ b/Firmware/Hue.h @@ -0,0 +1,36 @@ +/* + * Hue.h + * + * Created: Sun Jan 29 2023 10:49:43 + * Author Chris + */ +#ifndef HUE_H_ +#define HUE_H_ + +// ============================================================================================ +// Includes +#include +#include +#include + +#include "pico/types.h" + + +// ============================================================================================ +// Defines +#define HUE_MAX_ANGLE 360 + + +// ============================================================================================ +// Datatypes +typedef uint Pixel_Value; + + +// ============================================================================================ +// Function Declarations +Pixel_Value Hue_Get_Color_From_Angle(int hue_angle); + + + + +#endif /* HUE_H_ */ diff --git a/Firmware/I2C_Master.c b/Firmware/I2C_Master.c index c414a4d..8bc9257 100644 --- a/Firmware/I2C_Master.c +++ b/Firmware/I2C_Master.c @@ -156,5 +156,11 @@ int I2CM_Packet_Receive(const uint8_t slave_address, const uint reg_address, con int status = I2CM_Transmit(slave_address, Address_Data, address_length, false, true); + free (Address_Data); + + if(status < 0) { + return status; + } + return I2CM_Receive(slave_address, receive_data, data_length); } \ No newline at end of file diff --git a/Firmware/INA260.c b/Firmware/INA260.c index 1c2e78f..89a4b4b 100644 --- a/Firmware/INA260.c +++ b/Firmware/INA260.c @@ -16,6 +16,16 @@ // Defines #define INA260_I2CADDR_DEFAULT 0x40 ///< INA260 default i2c address +#define INA260_CONGIG_RST_BIT 15 +#define INA260_CONGIG_AVG0_BIT 9 +#define INA260_CONGIG_VBUSCT0_BIT 6 +#define INA260_CONGIG_ISHCT0_BIT 3 +#define INA260_CONGIG_MODE1_BIT 0 + +#define INA260_ENABLE_OCL_BIT 15 +#define INA260_ENABLE_APOL_BIT 1 +#define INA260_ENABLE_LEN_BIT 0 + #define UINT8_ARR_TO_UINT16(_U8_) ((uint16_t)(_U8_[0]) << 8) | (uint16_t)(_U8_[1]) @@ -72,10 +82,13 @@ typedef enum _INA260_AlertLatch { // ============================================================================================ // Variables +static uint16_t _INA260_BusVoltage_mV; +static uint16_t _INA260_Current_mA; // ============================================================================================ // Function Declarations +uint16_t INA260_Read_Register(uint8_t reg_address); /******************************************************************* @@ -83,10 +96,55 @@ typedef enum _INA260_AlertLatch { *******************************************************************/ void INA260_Init() { + _INA260_BusVoltage_mV = 0; + _INA260_Current_mA = 0; + uint16_t Configuration_Register_Value = + (0 << INA260_CONGIG_RST_BIT) | // No Reset + (INA260_COUNT_1 << INA260_CONGIG_AVG0_BIT) | // Averaging Count + (INA260_TIME_8_244_ms << INA260_CONGIG_VBUSCT0_BIT) | // Bus Voltage Conversion Time + (INA260_TIME_8_244_ms << INA260_CONGIG_ISHCT0_BIT) | // Shunt Current Conversion Time + (INA260_MODE_CONTINUOUS << INA260_CONGIG_MODE1_BIT); // Operating Mode + + I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, INA260_REG_CONFIG, 1, (uint8_t*)(&Configuration_Register_Value), 2); + + uint16_t Enable_Register_Value = + (1 << INA260_ENABLE_OCL_BIT) | // Over Current Limit + (0 << INA260_ENABLE_APOL_BIT) | // Alert Polarity Bit + (1 << INA260_ENABLE_LEN_BIT); // Alert Latch Enable + + I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, INA260_REG_MASK_ENABLE, 1, (uint8_t*)(&Enable_Register_Value), 2); } -uint16_t INA260_Test_Read(uint8_t reg_address) +void INA260_Read_BusVoltage() +{ + uint32_t INA260_BusVoltage = (uint32_t)INA260_Read_Register(INA260_REG_BUSVOLTAGE); + + _INA260_BusVoltage_mV = (int16_t)((INA260_BusVoltage * 1250) / 1000); +} + +void INA260_Read_Current() +{ + uint32_t INA260_Current = (uint32_t)INA260_Read_Register(INA260_REG_CURRENT); + + _INA260_Current_mA = (int16_t)((INA260_Current * 1250) / 1000); +} + +uint16_t INA260_Get_BusVoltage_mV() +{ + return _INA260_BusVoltage_mV; +} + +uint16_t INA260_Get_Current_mA() +{ + return _INA260_Current_mA; +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ +uint16_t INA260_Read_Register(uint8_t reg_address) { uint8_t Receive_Data[2]; @@ -94,9 +152,3 @@ uint16_t INA260_Test_Read(uint8_t reg_address) return UINT8_ARR_TO_UINT16(Receive_Data); } - - -/******************************************************************* - Internal Functions -*******************************************************************/ - diff --git a/Firmware/INA260.h b/Firmware/INA260.h index 71d7ab1..afd7c81 100644 --- a/Firmware/INA260.h +++ b/Firmware/INA260.h @@ -33,6 +33,12 @@ // Function Declarations void INA260_Init(); -uint16_t INA260_Test_Read(uint8_t reg_address); +void INA260_Read_BusVoltage(); +void INA260_Read_Current(); + +uint16_t INA260_Get_BusVoltage_mV(); +uint16_t INA260_Get_Current_mA(); + + #endif // INA260_H \ No newline at end of file diff --git a/Firmware/Images/Image_Power_Critical_32x32.c b/Firmware/Images/Image_Power_Critical_32x32.c new file mode 100644 index 0000000..5381f84 --- /dev/null +++ b/Firmware/Images/Image_Power_Critical_32x32.c @@ -0,0 +1,43 @@ +#include + + + +const uint16_t _Image_Power_Critical_32x32[3 + 1024] = { + 32, // Image Width + 32, // Image Height + 16, // Image Data Size + + // Image Data + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x1000, 0x1000, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1d00, 0x1e00, 0x1e00, 0x1d00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1b00, 0x1e00, 0x1000, 0x1000, 0x1e00, 0x1b00, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f00, 0x1e00, 0x1600, 0x0000, 0x0000, 0x1600, 0x1e00, 0x0f00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x1c00, 0x1e00, 0x0600, 0x0000, 0x0000, 0x0600, 0x1e00, 0x1d00, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1e00, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1e00, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1d00, 0x1d00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x1d00, 0x1d00, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1600, 0x1e00, 0x1000, 0x0000, 0x0000, 0x0500, 0x0500, 0x0000, 0x0000, 0x1000, 0x1e00, 0x1600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1e00, 0x1b00, 0x0200, 0x0000, 0x0000, 0x1c00, 0x1c00, 0x0000, 0x0000, 0x0200, 0x1b00, 0x1e00, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1900, 0x1e00, 0x0d00, 0x0000, 0x0000, 0x0000, 0x1e00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0d00, 0x1e00, 0x1900, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c00, 0x1e00, 0x1a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x1900, 0x1e00, 0x0c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1b00, 0x1e00, 0x0900, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1b00, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f00, 0x1e00, 0x1700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1e00, 0x0f00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x1c00, 0x1e00, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x1e00, 0x1d00, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1200, 0x1e00, 0x1400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1e00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x1e00, 0x1200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1d00, 0x1d00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1c00, 0x1c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x1d00, 0x1d00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1500, 0x1e00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1e00, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1e00, 0x1c00, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1b00, 0x1e00, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x1e00, 0x0d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f00, 0x0f00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d00, 0x1e00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x1a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1e00, 0x1e00, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x1e00, 0x0b00, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x1a00, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1a00, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0700, 0x1e00, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x1e00, 0x0700, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0700, 0x1e00, 0x1800, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x0600, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x1900, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1900, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0300, 0x1500, 0x1d00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1d00, 0x1500, 0x0300, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; diff --git a/Firmware/Images/Image_Power_Overvoltage_32x32.c b/Firmware/Images/Image_Power_Overvoltage_32x32.c new file mode 100644 index 0000000..cbb4ff8 --- /dev/null +++ b/Firmware/Images/Image_Power_Overvoltage_32x32.c @@ -0,0 +1,43 @@ +#include + + + +const uint16_t _Image_Power_Overvoltage_32x32[3 + 1024] = { + 32, // Image Width + 32, // Image Height + 16, // Image Data Size + + // Image Data + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0700, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0700, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0700, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1e00, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x0700, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0100, 0x1900, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1e00, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x1900, 0x0100, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0200, 0x1800, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d00, 0x1e00, 0x1e00, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1800, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x1700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1d00, 0x1e00, 0x1a00, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x1800, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1800, 0x1700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x1c00, 0x1e00, 0x0e00, 0x1400, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1800, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1900, 0x1e00, 0x1400, 0x0000, 0x1400, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1500, 0x1e00, 0x1800, 0x0100, 0x0000, 0x1400, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x1e00, 0x1b00, 0x0300, 0x0000, 0x0000, 0x1400, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x1d00, 0x0700, 0x0000, 0x0000, 0x0000, 0x1400, 0x1e00, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x1d00, 0x1e00, 0x0b00, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x1e00, 0x1000, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0900, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x1b00, 0x1e00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1700, 0x1e00, 0x1600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0700, 0x1300, 0x1400, 0x1400, 0x1400, 0x1400, 0x1900, 0x1e00, 0x1d00, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1200, 0x1e00, 0x1a00, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x1c00, 0x1e00, 0x0d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e00, 0x1e00, 0x1c00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1d00, 0x1e00, 0x1900, 0x1400, 0x1400, 0x1400, 0x1400, 0x1300, 0x0700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1600, 0x1e00, 0x1700, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1e00, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1e00, 0x1b00, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0900, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x1000, 0x1e00, 0x1400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x1d00, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1400, 0x0000, 0x0000, 0x0000, 0x0600, 0x1d00, 0x1e00, 0x0b00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1400, 0x0000, 0x0000, 0x0300, 0x1b00, 0x1e00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1400, 0x0000, 0x0100, 0x1800, 0x1e00, 0x1600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1400, 0x0000, 0x1300, 0x1e00, 0x1900, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1700, 0x1600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1400, 0x0e00, 0x1e00, 0x1c00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1800, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x1700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1a00, 0x1e00, 0x1d00, 0x0800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0200, 0x1800, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1e00, 0x1e00, 0x0d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1800, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0100, 0x1900, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x1e00, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x1900, 0x0100, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0800, 0x1e00, 0x1900, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0700, 0x1e00, 0x1700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1900, 0x1e00, 0x0700, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0800, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0800, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; diff --git a/Firmware/Images/Image_Power_Undervoltage_32x32.c b/Firmware/Images/Image_Power_Undervoltage_32x32.c new file mode 100644 index 0000000..958f2b7 --- /dev/null +++ b/Firmware/Images/Image_Power_Undervoltage_32x32.c @@ -0,0 +1,43 @@ +#include + + + +const uint16_t _Image_Power_Undervoltage_32x32[3 + 1024] = { + 32, // Image Width + 32, // Image Height + 16, // Image Data Size + + // Image Data + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x080a, 0x6200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6200, 0x080a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4100, 0xe801, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe801, 0xdf1f, 0x7a1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0x191e, 0xdf1f, 0x080a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0xe801, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6100, 0x7a1e, 0xdf1f, 0x7a1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf414, 0xdf1f, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x7a1e, 0x6100, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x9a1e, 0xc300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e0b, 0xdf1f, 0xdf1f, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x9a1e, 0xa300, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x391e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x290a, 0xbf1f, 0xbf1f, 0xfc1e, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x391e, 0xdf1f, 0x7a1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x391e, 0x181e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2401, 0x5e1f, 0xdf1f, 0xcf0b, 0x3515, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x181e, 0x391e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6100, 0x7a1e, 0xdf1f, 0x5515, 0x0000, 0x3515, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9615, 0xdf1f, 0x591e, 0x4100, 0x0000, 0x3515, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5114, 0xdf1f, 0x3d1f, 0x0401, 0x0000, 0x0000, 0x3515, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb0a, 0xdf1f, 0x9f1f, 0xe701, 0x0000, 0x0000, 0x0000, 0x3515, 0xdf1f, 0x8a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa701, 0x9e1f, 0xdf1f, 0x0c0b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3515, 0xdf1f, 0x5114, 0x8a0a, 0x8a0a, 0x8a0a, 0x8a0a, 0x8a0a, 0x6a0a, 0x6100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc300, 0xfc1e, 0xdf1f, 0x7214, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1515, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0x7214, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4100, 0x391e, 0xdf1f, 0xb715, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc701, 0x1415, 0x3515, 0x3515, 0x3515, 0x3515, 0xbb1e, 0xdf1f, 0xbf1f, 0x080a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd314, 0xdf1f, 0xdb1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2501, 0x5e1f, 0xdf1f, 0x8e0b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e0b, 0xdf1f, 0x7e1f, 0x4501, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8200, 0xbb1e, 0xdf1f, 0xf414, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x080a, 0xbf1f, 0xdf1f, 0xbb1e, 0x3515, 0x3515, 0x3515, 0x3515, 0x1415, 0xc701, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb715, 0xdf1f, 0x391e, 0x4100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7214, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0xdf1f, 0x1415, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7214, 0xdf1f, 0xfc1e, 0xc300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6100, 0x6a0a, 0x8a0a, 0x8a0a, 0x8a0a, 0x8a0a, 0x8a0a, 0x5114, 0xdf1f, 0x3515, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c0b, 0xdf1f, 0x9e1f, 0xa701, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0x3515, 0x0000, 0x0000, 0x0000, 0xc701, 0x9f1f, 0xdf1f, 0x0c0b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0x3515, 0x0000, 0x0000, 0xe300, 0x1d1f, 0xdf1f, 0x3114, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0x3515, 0x0000, 0x4100, 0x391e, 0xdf1f, 0xb715, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0x3515, 0x0000, 0x1515, 0xdf1f, 0x9b1e, 0x6200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0xf815, 0xd815, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0x3515, 0xcf0b, 0xdf1f, 0x5e1f, 0x2401, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf815, 0x391e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x191e, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0xfc1e, 0xbf1f, 0xbf1f, 0x290a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x391e, 0xdf1f, 0x7a1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x9a1e, 0xa300, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0xdf1f, 0xdf1f, 0x8e0b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x9a1e, 0xc300, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6100, 0x7a1e, 0xdf1f, 0x7a1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a0a, 0xdf1f, 0xdf1f, 0xf414, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x7a1e, 0x6100, 0x0000, 0x0000, + 0x0000, 0x0000, 0x080a, 0xdf1f, 0x7a1e, 0xa200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x080a, 0xdf1f, 0x191e, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa200, 0x7a1e, 0xdf1f, 0x080a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x280a, 0x6100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc701, 0x4100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6100, 0x280a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; diff --git a/Firmware/Images/Image_Power_Unplugged_32x32.c b/Firmware/Images/Image_Power_Unplugged_32x32.c new file mode 100644 index 0000000..52dff13 --- /dev/null +++ b/Firmware/Images/Image_Power_Unplugged_32x32.c @@ -0,0 +1,43 @@ +#include + + + +const uint16_t _Image_Power_Unplugged_32x32[3 + 1024] = { + 32, // Image Width + 32, // Image Height + 16, // Image Data Size + + // Image Data + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6108, 0x6108, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0xc318, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc318, 0x694a, 0x4d6b, 0x6d6b, 0x6d6b, 0x4d6b, 0x494a, 0xa210, 0x4108, 0xcb5a, 0x6d6b, 0xc318, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa631, 0x6d6b, 0x6d6b, 0x4d6b, 0xcb5a, 0xaa52, 0x2c63, 0x6d6b, 0x6d6b, 0x0c63, 0x6d6b, 0xcb5a, 0x2000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xa631, 0x2000, 0x0000, 0x0000, 0x0000, 0x4529, 0x2c63, 0x6d6b, 0x0c63, 0x4108, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8210, 0x2c63, 0xe739, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8210, 0x2c63, 0x6d6b, 0xa210, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8210, 0x4d6b, 0x6d6b, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4529, 0x6d6b, 0x494a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0x494a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d6b, 0x2c63, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa52, 0x6d6b, 0x6108, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x494a, 0x6d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb5a, 0x6d6b, 0x6108, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x4d6b, 0x4d6b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8210, 0x8210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa631, 0x6d6b, 0x494a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c63, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xa210, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x2c63, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xa631, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x8210, 0x8210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0x6d6b, 0x494a, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0x494a, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0x494a, 0x4d6b, 0x6d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa631, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc318, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x8210, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x2c63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x694a, 0x6d6b, 0xa631, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x8210, 0x2c63, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8210, 0x8210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4d6b, 0x4d6b, 0x2000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6108, 0x6d6b, 0xcb5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6108, 0x6d6b, 0xaa52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe739, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4d6b, 0x2c63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x494a, 0x6d6b, 0x4d6b, 0xe318, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x494a, 0x6d6b, 0x4529, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0x6d6b, 0x4d6b, 0x8210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa210, 0x6d6b, 0x2c63, 0x8210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe318, 0x4d6b, 0x6d6b, 0xe739, 0xe739, 0x2c63, 0x8210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4108, 0x0c63, 0x6d6b, 0x2c63, 0x4529, 0x0000, 0x0000, 0x0000, 0x2000, 0xa631, 0x4d6b, 0x6d6b, 0xe739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2000, 0xcb5a, 0x6d6b, 0x0c63, 0x6d6b, 0x6d6b, 0x4d6b, 0xaa52, 0xcb5a, 0x4d6b, 0x6d6b, 0x6d6b, 0xa631, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe318, 0x6d6b, 0xcb5a, 0x4108, 0xa210, 0x494a, 0x2c63, 0x6d6b, 0x6d6b, 0x4d6b, 0x494a, 0xa210, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe318, 0x2000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6108, 0x6108, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; diff --git a/Firmware/MIDI_Note_List.c b/Firmware/MIDI_Note_List.c new file mode 100644 index 0000000..b353e02 --- /dev/null +++ b/Firmware/MIDI_Note_List.c @@ -0,0 +1,161 @@ +/* + * MIDI_Note_List.c + * + * Created: Sat Jan 15 2022 16:14:04 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "MIDI_Note_List.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Datatypes +const Note_Entry_s _MIDI_Note_List[MIDI_NOTE_LIST_LENGTH] = { + [0] = { .Tone_Name = " C", .Octave = -2, .Frequency = 4.088 }, + [1] = { .Tone_Name = "C#", .Octave = -2, .Frequency = 4.331 }, + [2] = { .Tone_Name = " D", .Octave = -2, .Frequency = 4.589 }, + [3] = { .Tone_Name = "D#", .Octave = -2, .Frequency = 4.861 }, + [4] = { .Tone_Name = " E", .Octave = -2, .Frequency = 5.150 }, + [5] = { .Tone_Name = " F", .Octave = -2, .Frequency = 5.457 }, + [6] = { .Tone_Name = "F#", .Octave = -2, .Frequency = 5.781 }, + [7] = { .Tone_Name = " G", .Octave = -2, .Frequency = 6.125 }, + [8] = { .Tone_Name = "G#", .Octave = -2, .Frequency = 6.489 }, + [9] = { .Tone_Name = " A", .Octave = -2, .Frequency = 6.875 }, + [10] = { .Tone_Name = "A#", .Octave = -2, .Frequency = 7.284 }, + [11] = { .Tone_Name = " B", .Octave = -2, .Frequency = 7.717 }, + + [12] = { .Tone_Name = " C", .Octave = -1, .Frequency = 8.176 }, + [13] = { .Tone_Name = "C#", .Octave = -1, .Frequency = 8.662 }, + [14] = { .Tone_Name = " D", .Octave = -1, .Frequency = 9.177 }, + [15] = { .Tone_Name = "D#", .Octave = -1, .Frequency = 9.723 }, + [16] = { .Tone_Name = " E", .Octave = -1, .Frequency = 10.301 }, + [17] = { .Tone_Name = " F", .Octave = -1, .Frequency = 10.913 }, + [18] = { .Tone_Name = "F#", .Octave = -1, .Frequency = 11.562 }, + [19] = { .Tone_Name = " G", .Octave = -1, .Frequency = 12.250 }, + [20] = { .Tone_Name = "G#", .Octave = -1, .Frequency = 12.978 }, + [21] = { .Tone_Name = " A", .Octave = -1, .Frequency = 13.750 }, + [22] = { .Tone_Name = "A#", .Octave = -1, .Frequency = 14.568 }, + [23] = { .Tone_Name = " B", .Octave = -1, .Frequency = 15.434 }, + + [24] = { .Tone_Name = " C", .Octave = 0, .Frequency = 16.352 }, + [25] = { .Tone_Name = "C#", .Octave = 0, .Frequency = 17.324 }, + [26] = { .Tone_Name = " D", .Octave = 0, .Frequency = 18.354 }, + [27] = { .Tone_Name = "D#", .Octave = 0, .Frequency = 19.445 }, + [28] = { .Tone_Name = " E", .Octave = 0, .Frequency = 20.602 }, + [29] = { .Tone_Name = " F", .Octave = 0, .Frequency = 21.827 }, + [30] = { .Tone_Name = "F#", .Octave = 0, .Frequency = 23.125 }, + [31] = { .Tone_Name = " G", .Octave = 0, .Frequency = 24.500 }, + [32] = { .Tone_Name = "G#", .Octave = 0, .Frequency = 25.957 }, + [33] = { .Tone_Name = " A", .Octave = 0, .Frequency = 27.500 }, + [34] = { .Tone_Name = "A#", .Octave = 0, .Frequency = 29.135 }, + [35] = { .Tone_Name = " B", .Octave = 0, .Frequency = 30.868 }, + + [36] = { .Tone_Name = " C", .Octave = 1, .Frequency = 32.703 }, + [37] = { .Tone_Name = "C#", .Octave = 1, .Frequency = 34.648 }, + [38] = { .Tone_Name = " D", .Octave = 1, .Frequency = 36.708 }, + [39] = { .Tone_Name = "D#", .Octave = 1, .Frequency = 38.891 }, + [40] = { .Tone_Name = " E", .Octave = 1, .Frequency = 41.203 }, + [41] = { .Tone_Name = " F", .Octave = 1, .Frequency = 43.654 }, + [42] = { .Tone_Name = "F#", .Octave = 1, .Frequency = 46.249 }, + [43] = { .Tone_Name = " G", .Octave = 1, .Frequency = 48.999 }, + [44] = { .Tone_Name = "G#", .Octave = 1, .Frequency = 51.913 }, + [45] = { .Tone_Name = " A", .Octave = 1, .Frequency = 55.000 }, + [46] = { .Tone_Name = "A#", .Octave = 1, .Frequency = 58.270 }, + [47] = { .Tone_Name = " B", .Octave = 1, .Frequency = 61.735 }, + + [48] = { .Tone_Name = " C", .Octave = 2, .Frequency = 65.406 }, + [49] = { .Tone_Name = "C#", .Octave = 2, .Frequency = 69.296 }, + [50] = { .Tone_Name = " D", .Octave = 2, .Frequency = 73.416 }, + [51] = { .Tone_Name = "D#", .Octave = 2, .Frequency = 77.782 }, + [52] = { .Tone_Name = " E", .Octave = 2, .Frequency = 82.407 }, + [53] = { .Tone_Name = " F", .Octave = 2, .Frequency = 87.307 }, + [54] = { .Tone_Name = "F#", .Octave = 2, .Frequency = 92.499 }, + [55] = { .Tone_Name = " G", .Octave = 2, .Frequency = 97.999 }, + [56] = { .Tone_Name = "G#", .Octave = 2, .Frequency = 103.826 }, + [57] = { .Tone_Name = " A", .Octave = 2, .Frequency = 110.000 }, + [58] = { .Tone_Name = "A#", .Octave = 2, .Frequency = 116.541 }, + [59] = { .Tone_Name = " B", .Octave = 2, .Frequency = 123.471 }, + + [60] = { .Tone_Name = " C", .Octave = 3, .Frequency = 130.813 }, + [61] = { .Tone_Name = "C#", .Octave = 3, .Frequency = 138.591 }, + [62] = { .Tone_Name = " D", .Octave = 3, .Frequency = 146.832 }, + [63] = { .Tone_Name = "D#", .Octave = 3, .Frequency = 155.563 }, + [64] = { .Tone_Name = " E", .Octave = 3, .Frequency = 164.814 }, + [65] = { .Tone_Name = " F", .Octave = 3, .Frequency = 174.614 }, + [66] = { .Tone_Name = "F#", .Octave = 3, .Frequency = 184.997 }, + [67] = { .Tone_Name = " G", .Octave = 3, .Frequency = 195.998 }, + [68] = { .Tone_Name = "G#", .Octave = 3, .Frequency = 207.652 }, + [69] = { .Tone_Name = " A", .Octave = 3, .Frequency = 220.000 }, + [70] = { .Tone_Name = "A#", .Octave = 3, .Frequency = 233.082 }, + [71] = { .Tone_Name = " B", .Octave = 3, .Frequency = 246.942 }, + + [72] = { .Tone_Name = " C", .Octave = 4, .Frequency = 261.626 }, + [73] = { .Tone_Name = "C#", .Octave = 4, .Frequency = 277.183 }, + [74] = { .Tone_Name = " D", .Octave = 4, .Frequency = 293.665 }, + [75] = { .Tone_Name = "D#", .Octave = 4, .Frequency = 311.127 }, + [76] = { .Tone_Name = " E", .Octave = 4, .Frequency = 329.628 }, + [77] = { .Tone_Name = " F", .Octave = 4, .Frequency = 349.228 }, + [78] = { .Tone_Name = "F#", .Octave = 4, .Frequency = 369.994 }, + [79] = { .Tone_Name = " G", .Octave = 4, .Frequency = 391.995 }, + [80] = { .Tone_Name = "G#", .Octave = 4, .Frequency = 415.305 }, + [81] = { .Tone_Name = " A", .Octave = 4, .Frequency = 440.000 }, + [82] = { .Tone_Name = "A#", .Octave = 4, .Frequency = 466.164 }, + [83] = { .Tone_Name = " B", .Octave = 4, .Frequency = 493.883 }, + + [84] = { .Tone_Name = " C", .Octave = 5, .Frequency = 523.251 }, + [85] = { .Tone_Name = "C#", .Octave = 5, .Frequency = 554.365 }, + [86] = { .Tone_Name = " D", .Octave = 5, .Frequency = 587.330 }, + [87] = { .Tone_Name = "D#", .Octave = 5, .Frequency = 622.254 }, + [88] = { .Tone_Name = " E", .Octave = 5, .Frequency = 659.255 }, + [89] = { .Tone_Name = " F", .Octave = 5, .Frequency = 698.456 }, + [90] = { .Tone_Name = "F#", .Octave = 5, .Frequency = 739.989 }, + [91] = { .Tone_Name = " G", .Octave = 5, .Frequency = 783.991 }, + [92] = { .Tone_Name = "G#", .Octave = 5, .Frequency = 830.609 }, + [93] = { .Tone_Name = " A", .Octave = 5, .Frequency = 880.000 }, + [94] = { .Tone_Name = "A#", .Octave = 5, .Frequency = 932.328 }, + [95] = { .Tone_Name = " B", .Octave = 5, .Frequency = 987.767 }, + + [96] = { .Tone_Name = " C", .Octave = 6, .Frequency = 1046.502 }, + [97] = { .Tone_Name = "C#", .Octave = 6, .Frequency = 1108.731 }, + [98] = { .Tone_Name = " D", .Octave = 6, .Frequency = 1174.659 }, + [99] = { .Tone_Name = "D#", .Octave = 6, .Frequency = 1244.508 }, + [100] = { .Tone_Name = " E", .Octave = 6, .Frequency = 1318.510 }, + [101] = { .Tone_Name = " F", .Octave = 6, .Frequency = 1396.913 }, + [102] = { .Tone_Name = "F#", .Octave = 6, .Frequency = 1479.978 }, + [103] = { .Tone_Name = " G", .Octave = 6, .Frequency = 1567.982 }, + [104] = { .Tone_Name = "G#", .Octave = 6, .Frequency = 1661.219 }, + [105] = { .Tone_Name = " A", .Octave = 6, .Frequency = 1760.000 }, + [106] = { .Tone_Name = "A#", .Octave = 6, .Frequency = 1864.655 }, + [107] = { .Tone_Name = " B", .Octave = 6, .Frequency = 1975.533 }, + + [108] = { .Tone_Name = " C", .Octave = 7, .Frequency = 2093.005 }, + [109] = { .Tone_Name = "C#", .Octave = 7, .Frequency = 2217.461 }, + [110] = { .Tone_Name = " D", .Octave = 7, .Frequency = 2349.318 }, + [111] = { .Tone_Name = "D#", .Octave = 7, .Frequency = 2489.016 }, + [112] = { .Tone_Name = " E", .Octave = 7, .Frequency = 2637.020 }, + [113] = { .Tone_Name = " F", .Octave = 7, .Frequency = 2793.826 }, + [114] = { .Tone_Name = "F#", .Octave = 7, .Frequency = 2959.955 }, + [115] = { .Tone_Name = " G", .Octave = 7, .Frequency = 3135.963 }, + [116] = { .Tone_Name = "G#", .Octave = 7, .Frequency = 3322.438 }, + [117] = { .Tone_Name = " A", .Octave = 7, .Frequency = 3520.000 }, + [118] = { .Tone_Name = "A#", .Octave = 7, .Frequency = 3729.310 }, + [119] = { .Tone_Name = " B", .Octave = 7, .Frequency = 3951.066 }, + + [120] = { .Tone_Name = " C", .Octave = 8, .Frequency = 4186.009 }, + [121] = { .Tone_Name = "C#", .Octave = 8, .Frequency = 4434.922 }, + [122] = { .Tone_Name = " D", .Octave = 8, .Frequency = 4698.636 }, + [123] = { .Tone_Name = "D#", .Octave = 8, .Frequency = 4978.032 }, + [124] = { .Tone_Name = " E", .Octave = 8, .Frequency = 5274.041 }, + [125] = { .Tone_Name = " F", .Octave = 8, .Frequency = 5587.652 }, + [126] = { .Tone_Name = "F#", .Octave = 8, .Frequency = 5919.911 }, + [127] = { .Tone_Name = " G", .Octave = 8, .Frequency = 6271.927 } +}; + +// ============================================================================================ +// Function Declarations + diff --git a/Firmware/MIDI_Note_List.h b/Firmware/MIDI_Note_List.h new file mode 100644 index 0000000..66bd83a --- /dev/null +++ b/Firmware/MIDI_Note_List.h @@ -0,0 +1,37 @@ +/* + * MIDI_Note_List.h + * + * Created: Sat Jan 15 2022 16:13:47 + * Author Chris + */ +#ifndef MIDI_NOTE_LIST_H_ +#define MIDI_NOTE_LIST_H_ + +// ============================================================================================ +// Includes +#include + +#include "pico/types.h" + + +// ============================================================================================ +// Defines +#define MIDI_NOTE_LIST_LENGTH 128 + + +// ============================================================================================ +// Datatypes +typedef struct +{ + char Tone_Name[2]; + int8_t Octave; + float Frequency; +} Note_Entry_s; + +extern const Note_Entry_s _MIDI_Note_List[MIDI_NOTE_LIST_LENGTH]; + +// ============================================================================================ +// Function Declarations + + +#endif /* MIDI_NOTE_LIST_H_ */ diff --git a/Firmware/Mode_Manager.c b/Firmware/Mode_Manager.c new file mode 100644 index 0000000..3581302 --- /dev/null +++ b/Firmware/Mode_Manager.c @@ -0,0 +1,215 @@ +/* + * Mode_Manager.c + * + * Created: Fri Jan 27 2023 22:13:26 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Mode_Manager.h" + +#include "Hue.h" +#include "Command.h" +#include "Screens.h" +// #include "OLED_SSD1306.h" +#include "EEPROM_M24C64.h" +#include "Command_Definition.h" + + +// ============================================================================================ +// Defines +#define TIME_INTERVAL_TICK_ms 40 +#define TICKS_PER_SECOND (1000/TIME_INTERVAL_TICK_ms) + + +// ============================================================================================ +// Variables +static volatile Mode _Current_Mode; + +static volatile uint _Jam_Current_Angle; +static volatile uint _Jam_Next_Angle; + +static volatile uint _Jam_Duration_Until_Next_s; +static volatile uint _Jam_Timer; + + +// ============================================================================================ +// Function Declarations +void Mode_Manager_Jam_Mode_Init(void); +uint Mode_Manager_Jam_Select_Next_Angle(uint current_angle); +uint Mode_Manager_Jam_Get_Duration(void); +void Mode_Manager_Jam_Set_Color(uint angle); +void Mode_Manager_Jam_Step(void); + + +/******************************************************************* + Functions +*******************************************************************/ +void Mode_Manager_Init(void) +{ + _Current_Mode = MIDI; +} + +void Mode_Manager_Tick(void) +{ + if(_Current_Mode != JAM) { + return; + } + + if(_Jam_Timer >= _Jam_Duration_Until_Next_s * TICKS_PER_SECOND) { + Mode_Manager_Jam_Step(); + } + + _Jam_Timer++; +} + +void Mode_Manager_Cycle_Mode(void) +{ + _Current_Mode++; + if(_Current_Mode == PREVIEW) { + _Current_Mode = MIDI; + } + + Mode_Manager_Set_Mode(_Current_Mode); + + // ToDo + // Screen_Setup_0_Mode_Change(TRANSITION_NONE, _Current_Mode); +} + +void Mode_Manager_Set_Mode(Mode mode) +{ + switch (mode) + { + case MIDI: + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_MIDI_TO_LIGHT_ENABLED, MULTICORE_NO_PARAMETER, (uint16_t)true); + + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, 0); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, 0); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, 0); + break; + + case JAM: + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_MIDI_TO_LIGHT_ENABLED, MULTICORE_NO_PARAMETER, (uint16_t)false); + + Mode_Manager_Jam_Mode_Init(); + break; + + case CONSTANT: + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_MIDI_TO_LIGHT_ENABLED, MULTICORE_NO_PARAMETER, (uint16_t)false); + + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_FADE_SPEED, MULTICORE_NO_PARAMETER, (uint16_t)_EEPROM_Content.Const_Light_Configuration.Fade_Speed); + + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, _EEPROM_Content.Const_Light_Configuration.Color.R); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, _EEPROM_Content.Const_Light_Configuration.Color.G); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, _EEPROM_Content.Const_Light_Configuration.Color.B); + break; + + case PREVIEW: + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_MIDI_TO_LIGHT_ENABLED, MULTICORE_NO_PARAMETER, (uint16_t)false); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_FADE_SPEED, MULTICORE_NO_PARAMETER, 2); + break; + + default: + break; + } +} + +Mode Mode_Manager_Get_Current_Mode(void) +{ + return _Current_Mode; +} + +void Mode_Manager_Set_Default_Color_Notes(void) +{ + _EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Red = NOTE_C; + _EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Green = NOTE_D; + _EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Blue = NOTE_E; +} + +uint Mode_Manager_Jam_Get_Current_Angle() +{ + return _Jam_Current_Angle; +} + +uint Mode_Manager_Jam_Get_Next_Angle() +{ + return _Jam_Next_Angle; +} + +uint Mode_Manager_Jam_Get_Duration_s() +{ + return _Jam_Duration_Until_Next_s; +} + +uint Mode_Manager_Jam_Get_Duration_Tick() +{ + return _Jam_Duration_Until_Next_s * TICKS_PER_SECOND; +} + +uint Mode_Manager_Jam_Get_Time_Left_s() +{ + return _Jam_Duration_Until_Next_s - (_Jam_Timer / TICKS_PER_SECOND); +} + +uint Mode_Manager_Jam_Get_Time_Left_Tick() +{ + return _Jam_Duration_Until_Next_s * TICKS_PER_SECOND - _Jam_Timer; +} + +/******************************************************************* + Internal Functions +*******************************************************************/ +///////////////////////////// +// Jam Mode Implementation // +///////////////////////////// +void Mode_Manager_Jam_Mode_Init(void) +{ + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_FADE_SPEED, MULTICORE_NO_PARAMETER, _EEPROM_Content.Jam_Light_Configuration.Fade_Speed); + + _Jam_Current_Angle = _EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color % HUE_MAX_ANGLE; + _Jam_Duration_Until_Next_s = Mode_Manager_Jam_Get_Duration(); + _Jam_Next_Angle = Mode_Manager_Jam_Select_Next_Angle(_Jam_Current_Angle); + _Jam_Timer = 0; + + Mode_Manager_Jam_Set_Color(_Jam_Current_Angle); +} + +uint Mode_Manager_Jam_Select_Next_Angle(uint current_angle) +{ + uint ADC_Value = 5;//ADC_Get_Result_Oldest(); + uint Angle_Step = ((ADC_Value & 0x07) + 1) * _EEPROM_Content.Jam_Light_Configuration.Color_Change; + + return (current_angle + Angle_Step) % 360; +} + +uint Mode_Manager_Jam_Get_Duration(void) +{ + uint Duration_Span_s = _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s - _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s; + + uint ADC_Value = 5;//ADC_Get_Result_Newest(); + uint Factor = ((ADC_Value & 0x07) << 4); + + Duration_Span_s = (Duration_Span_s * Factor) / 112; + + return _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s + Duration_Span_s; +} + +void Mode_Manager_Jam_Set_Color(uint angle) +{ + LED_Data_t Color; + Color.Pixel = Hue_Get_Color_From_Angle(angle); + + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, Color.R); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, Color.G); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, Color.B); +} + +void Mode_Manager_Jam_Step(void) +{ + _Jam_Current_Angle = _Jam_Next_Angle; + _Jam_Duration_Until_Next_s = Mode_Manager_Jam_Get_Duration(); + _Jam_Next_Angle = Mode_Manager_Jam_Select_Next_Angle(_Jam_Current_Angle); + _Jam_Timer = 0; + + Mode_Manager_Jam_Set_Color(_Jam_Current_Angle); +} \ No newline at end of file diff --git a/Firmware/Mode_Manager.h b/Firmware/Mode_Manager.h new file mode 100644 index 0000000..c3add32 --- /dev/null +++ b/Firmware/Mode_Manager.h @@ -0,0 +1,59 @@ +/* + * Mode_Manager.h + * + * Created: Fri Jan 27 2023 22:12:39 + * Author Chris + */ +#ifndef MODE_MANAGER_H_ +#define MODE_MANAGER_H_ + +// ============================================================================================ +// Includes +#include +#include +#include + +#include "pico/types.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Enumeration +enum Mode_e +{ + MIDI, + JAM, + CONSTANT, + PREVIEW +}; + + +// ============================================================================================ +// Datatypes +typedef enum Mode_e Mode; + + +// ============================================================================================ +// Function Declarations +void Mode_Manager_Init(void); + +void Mode_Manager_Tick(void); +void Mode_Manager_Cycle_Mode(void); + +void Mode_Manager_Set_Mode(Mode mode); +Mode Mode_Manager_Get_Current_Mode(void); + +void Mode_Manager_Set_Default_Color_Notes(void); + +uint Mode_Manager_Jam_Get_Current_Angle(); +uint Mode_Manager_Jam_Get_Next_Angle(); + +uint Mode_Manager_Jam_Get_Duration_s(); +uint Mode_Manager_Jam_Get_Duration_Tick(); +uint Mode_Manager_Jam_Get_Time_Left_s(); +uint Mode_Manager_Jam_Get_Time_Left_Tick(); + +#endif /* MODE_MANAGER_H_ */ diff --git a/Firmware/PWM.c b/Firmware/PWM.c new file mode 100644 index 0000000..c836cff --- /dev/null +++ b/Firmware/PWM.c @@ -0,0 +1,45 @@ +/* + * PWM.c + * + * Created: Sun Mar 21 2021 10:18:09 + * Author Chris + */ +#include "PWM.h" +#include "pico/stdlib.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Variables + + +// ============================================================================================ +// Function Declarations + + +/******************************************************************* + Functions +*******************************************************************/ +void PWM_Init_GPIO(uint gpio, bool enabled, float clock_divider) +{ + gpio_set_function(gpio, GPIO_FUNC_PWM); + PWM_Set_Enabled(gpio, enabled); +} + +void PWM_Set_Enabled(uint gpio, bool enabled) +{ + pwm_set_enabled(pwm_gpio_to_slice_num(gpio), enabled); +} + +void PWM_Set_Top_Value(uint gpio, uint16_t top_value) +{ + pwm_set_wrap(pwm_gpio_to_slice_num(gpio), top_value); +} + +void PWM_Set_Duty_Cycle(uint gpio, uint16_t duty_cycle) +{ + pwm_set_gpio_level(gpio, duty_cycle); +} \ No newline at end of file diff --git a/Firmware/PWM.h b/Firmware/PWM.h new file mode 100644 index 0000000..8daf553 --- /dev/null +++ b/Firmware/PWM.h @@ -0,0 +1,39 @@ +/* + * PWM.h + * + * Created: Sun Mar 21 2021 10:18:06 + * Author Chris + */ +#ifndef PWM_H_ +#define PWM_H_ + +// ============================================================================================ +// Includes +#include +#include +#include + +#include "pico/types.h" +#include "hardware/pwm.h" + + +// ============================================================================================ +// Defines +#define PWM_CLOCK_DIV_1 (1.f) +#define PWM_CLOCK_DIV_2 (2.f) +#define PWM_CLOCK_DIV_4 (4.f) +#define PWM_CLOCK_DIV_8 (8.f) +#define PWM_CLOCK_DIV_16 (16.f) + +#define PWM_CLOCK_DEFAULT PWM_CLOCK_DIV_1 + + +// ============================================================================================ +// Function Declarations +void PWM_Init_GPIO (uint gpio, bool enabled, float clock_divider); +void PWM_Set_Enabled (uint gpio, bool enabled); +void PWM_Set_Top_Value (uint gpio, uint16_t top_value); +void PWM_Set_Duty_Cycle (uint gpio, uint16_t duty_cycle); + + +#endif /* PWM_H_ */ \ No newline at end of file diff --git a/Firmware/Round_Corners_Lookup_Table.h b/Firmware/Round_Corners_Lookup_Table.h new file mode 100644 index 0000000..5cfc606 --- /dev/null +++ b/Firmware/Round_Corners_Lookup_Table.h @@ -0,0 +1,501 @@ +/* + * Auto-generated lookup tables for rounded rectangle corners + * Top-left quarter circle X coordinates for each Y line + */ + +#ifndef CORNER_LOOKUP_TABLES_H_ +#define CORNER_LOOKUP_TABLES_H_ + +#include + +typedef struct { + uint8_t Size; + const uint8_t* Data; +} Corner_Lookup_Table; + +static const uint8_t Corner_Data_R1[1] = { 1 }; +static const uint8_t Corner_Data_R2[2] = { 2, 1 }; +static const uint8_t Corner_Data_R3[3] = { 3, 1, 1 }; +static const uint8_t Corner_Data_R4[4] = { 4, 2, 1, 1 }; +static const uint8_t Corner_Data_R5[5] = { 5, 2, 1, 1, 1 }; +static const uint8_t Corner_Data_R6[6] = { 6, 3, 2, 1, 1, 1 }; +static const uint8_t Corner_Data_R7[7] = { 7, 4, 3, 2, 1, 1, 1 }; +static const uint8_t Corner_Data_R8[8] = { 8, 5, 3, 2, 2, 1, 1, 1 }; +static const uint8_t Corner_Data_R9[9] = { 9, 5, 4, 3, 2, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R10[10] = { 10, 6, 4, 3, 2, 2, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R11[11] = { 11, 7, 5, 4, 3, 2, 2, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R12[12] = { 12, 8, 6, 5, 4, 3, 2, 2, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R13[13] = { 13, 8, 7, 5, 4, 3, 3, 2, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R14[14] = { 14, 9, 7, 6, 5, 4, 3, 2, 2, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R15[15] = { 15, 10, 8, 6, 5, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R16[16] = { 16, 11, 9, 7, 6, 5, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R17[17] = { 17, 12, 9, 8, 7, 5, 5, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R18[18] = { 18, 13, 10, 9, 7, 6, 5, 4, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R19[19] = { 19, 13, 11, 9, 8, 7, 6, 5, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R20[20] = { 20, 14, 12, 10, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R21[21] = { 21, 15, 13, 11, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R22[22] = { 22, 16, 13, 11, 10, 9, 7, 6, 6, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R23[23] = { 23, 17, 14, 12, 11, 9, 8, 7, 6, 5, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R24[24] = { 24, 18, 15, 13, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R25[25] = { 25, 18, 16, 14, 12, 10, 9, 8, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R26[26] = { 26, 19, 16, 14, 13, 11, 10, 9, 8, 7, 6, 5, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R27[27] = { 27, 20, 17, 15, 13, 12, 11, 9, 8, 7, 7, 6, 5, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R28[28] = { 28, 21, 18, 16, 14, 13, 11, 10, 9, 8, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R29[29] = { 29, 22, 19, 17, 15, 13, 12, 11, 9, 8, 8, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R30[30] = { 30, 23, 20, 17, 16, 14, 12, 11, 10, 9, 8, 7, 6, 6, 5, 5, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R31[31] = { 31, 24, 21, 18, 16, 15, 13, 12, 11, 10, 9, 8, 7, 6, 6, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R32[32] = { 32, 25, 21, 19, 17, 15, 14, 13, 11, 10, 9, 8, 8, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R33[33] = { 33, 25, 22, 20, 18, 16, 15, 13, 12, 11, 10, 9, 8, 7, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R34[34] = { 34, 26, 23, 21, 18, 17, 15, 14, 13, 11, 10, 9, 9, 8, 7, 6, 6, 5, 4, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R35[35] = { 35, 27, 24, 21, 19, 17, 16, 14, 13, 12, 11, 10, 9, 8, 7, 7, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R36[36] = { 36, 28, 25, 22, 20, 18, 17, 15, 14, 13, 12, 11, 10, 9, 8, 7, 7, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R37[37] = { 37, 29, 25, 23, 21, 19, 17, 16, 15, 13, 12, 11, 10, 9, 9, 8, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R38[38] = { 38, 30, 26, 24, 22, 20, 18, 17, 15, 14, 13, 12, 11, 10, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R39[39] = { 39, 31, 27, 24, 22, 20, 19, 17, 16, 15, 13, 12, 11, 10, 10, 9, 8, 7, 7, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R40[40] = { 40, 32, 28, 25, 23, 21, 19, 18, 16, 15, 14, 13, 12, 11, 10, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R41[41] = { 41, 32, 29, 26, 24, 22, 20, 19, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R42[42] = { 42, 33, 30, 27, 25, 23, 21, 19, 18, 17, 15, 14, 13, 12, 11, 10, 10, 9, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R43[43] = { 43, 34, 31, 28, 25, 23, 22, 20, 19, 17, 16, 15, 14, 13, 12, 11, 10, 9, 9, 8, 7, 7, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R44[44] = { 44, 35, 31, 29, 26, 24, 22, 21, 19, 18, 17, 15, 14, 13, 12, 11, 11, 10, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R45[45] = { 45, 36, 32, 29, 27, 25, 23, 21, 20, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R46[46] = { 46, 37, 33, 30, 28, 26, 24, 22, 21, 19, 18, 17, 16, 14, 13, 13, 12, 11, 10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R47[47] = { 47, 38, 34, 31, 29, 26, 25, 23, 21, 20, 19, 17, 16, 15, 14, 13, 12, 11, 11, 10, 9, 8, 8, 7, 7, 6, 5, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R48[48] = { 48, 39, 35, 32, 29, 27, 25, 24, 22, 21, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 10, 9, 8, 8, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R49[49] = { 49, 40, 36, 33, 30, 28, 26, 24, 23, 21, 20, 19, 17, 16, 15, 14, 13, 12, 12, 11, 10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R50[50] = { 50, 41, 36, 33, 31, 29, 27, 25, 23, 22, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 10, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R51[51] = { 51, 41, 37, 34, 32, 29, 27, 26, 24, 23, 21, 20, 19, 17, 16, 15, 14, 13, 13, 12, 11, 10, 10, 9, 8, 8, 7, 6, 6, 5, 5, 5, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R52[52] = { 52, 42, 38, 35, 32, 30, 28, 26, 25, 23, 22, 21, 19, 18, 17, 16, 15, 14, 13, 12, 12, 11, 10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R53[53] = { 53, 43, 39, 36, 33, 31, 29, 27, 25, 24, 23, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 11, 10, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R54[54] = { 54, 44, 40, 37, 34, 32, 30, 28, 26, 25, 23, 22, 21, 19, 18, 17, 16, 15, 14, 13, 13, 12, 11, 10, 10, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R55[55] = { 55, 45, 41, 38, 35, 33, 31, 29, 27, 25, 24, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R56[56] = { 56, 46, 42, 38, 36, 33, 31, 29, 28, 26, 25, 23, 22, 21, 19, 18, 17, 16, 15, 14, 14, 13, 12, 11, 11, 10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R57[57] = { 57, 47, 43, 39, 37, 34, 32, 30, 28, 27, 25, 24, 23, 21, 20, 19, 18, 17, 16, 15, 14, 13, 13, 12, 11, 10, 10, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R58[58] = { 58, 48, 43, 40, 37, 35, 33, 31, 29, 27, 26, 25, 23, 22, 21, 20, 18, 17, 16, 16, 15, 14, 13, 12, 12, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R59[59] = { 59, 49, 44, 41, 38, 36, 34, 32, 30, 28, 27, 25, 24, 23, 21, 20, 19, 18, 17, 16, 15, 14, 14, 13, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R60[60] = { 60, 50, 45, 42, 39, 37, 34, 32, 31, 29, 27, 26, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R61[61] = { 61, 50, 46, 43, 40, 37, 35, 33, 31, 30, 28, 27, 25, 24, 23, 21, 20, 19, 18, 17, 16, 15, 15, 14, 13, 12, 12, 11, 10, 10, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R62[62] = { 62, 51, 47, 43, 41, 38, 36, 34, 32, 30, 29, 27, 26, 25, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 14, 13, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R63[63] = { 63, 52, 48, 44, 41, 39, 37, 35, 33, 31, 29, 28, 27, 25, 24, 23, 22, 20, 19, 18, 17, 17, 16, 15, 14, 13, 13, 12, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R64[64] = { 64, 53, 49, 45, 42, 40, 37, 35, 34, 32, 30, 29, 27, 26, 25, 23, 22, 21, 20, 19, 18, 17, 16, 15, 15, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R65[65] = { 65, 54, 49, 46, 43, 40, 38, 36, 34, 32, 31, 29, 28, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 13, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R66[66] = { 66, 55, 50, 47, 44, 41, 39, 37, 35, 33, 32, 30, 29, 27, 26, 25, 23, 22, 21, 20, 19, 18, 17, 16, 16, 15, 14, 13, 13, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R67[67] = { 67, 56, 51, 48, 45, 42, 40, 38, 36, 34, 32, 31, 29, 28, 27, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 15, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R68[68] = { 68, 57, 52, 49, 46, 43, 41, 38, 36, 35, 33, 31, 30, 29, 27, 26, 25, 24, 22, 21, 20, 19, 18, 18, 17, 16, 15, 14, 14, 13, 12, 11, 11, 10, 10, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R69[69] = { 69, 58, 53, 49, 46, 44, 41, 39, 37, 35, 34, 32, 31, 29, 28, 27, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 16, 15, 14, 13, 13, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R70[70] = { 70, 59, 54, 50, 47, 45, 42, 40, 38, 36, 34, 33, 31, 30, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R71[71] = { 71, 60, 55, 51, 48, 45, 43, 41, 39, 37, 35, 34, 32, 31, 29, 28, 27, 25, 24, 23, 22, 21, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R72[72] = { 72, 61, 56, 52, 49, 46, 44, 42, 40, 38, 36, 34, 33, 31, 30, 29, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 16, 15, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R73[73] = { 73, 61, 57, 53, 50, 47, 45, 42, 40, 38, 37, 35, 33, 32, 31, 29, 28, 27, 25, 24, 23, 22, 21, 20, 19, 18, 18, 17, 16, 15, 15, 14, 13, 12, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R74[74] = { 74, 62, 57, 54, 50, 48, 45, 43, 41, 39, 37, 36, 34, 33, 31, 30, 29, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R75[75] = { 75, 63, 58, 54, 51, 49, 46, 44, 42, 40, 38, 36, 35, 33, 32, 30, 29, 28, 27, 26, 25, 23, 22, 21, 21, 20, 19, 18, 17, 16, 15, 15, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R76[76] = { 76, 64, 59, 55, 52, 49, 47, 45, 43, 41, 39, 37, 36, 34, 33, 31, 30, 29, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 18, 17, 16, 15, 15, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R77[77] = { 77, 65, 60, 56, 53, 50, 48, 45, 43, 41, 40, 38, 36, 35, 33, 32, 31, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 12, 12, 11, 11, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R78[78] = { 78, 66, 61, 57, 54, 51, 48, 46, 44, 42, 40, 39, 37, 35, 34, 33, 31, 30, 29, 27, 26, 25, 24, 23, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 13, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R79[79] = { 79, 67, 62, 58, 55, 52, 49, 47, 45, 43, 41, 39, 38, 36, 35, 33, 32, 31, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 18, 17, 16, 15, 15, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R80[80] = { 80, 68, 63, 59, 56, 53, 50, 48, 46, 44, 42, 40, 38, 37, 35, 34, 32, 31, 30, 29, 28, 26, 25, 24, 23, 22, 21, 21, 20, 19, 18, 17, 16, 16, 15, 14, 14, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R81[81] = { 81, 69, 64, 60, 56, 53, 51, 49, 46, 44, 43, 41, 39, 37, 36, 35, 33, 32, 31, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 13, 13, 12, 12, 11, 11, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R82[82] = { 82, 70, 64, 61, 57, 54, 52, 49, 47, 45, 43, 41, 40, 38, 37, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 18, 17, 16, 15, 15, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R83[83] = { 83, 71, 65, 61, 58, 55, 53, 50, 48, 46, 44, 42, 41, 39, 37, 36, 35, 33, 32, 31, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R84[84] = { 84, 72, 66, 62, 59, 56, 53, 51, 49, 47, 45, 43, 41, 40, 38, 37, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 14, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R85[85] = { 85, 72, 67, 63, 60, 57, 54, 52, 49, 47, 45, 44, 42, 40, 39, 37, 36, 34, 33, 32, 31, 30, 28, 27, 26, 25, 24, 23, 22, 22, 21, 20, 19, 18, 17, 17, 16, 15, 15, 14, 13, 13, 12, 12, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R86[86] = { 86, 73, 68, 64, 61, 58, 55, 53, 50, 48, 46, 44, 43, 41, 39, 38, 37, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R87[87] = { 87, 74, 69, 65, 61, 58, 56, 53, 51, 49, 47, 45, 43, 42, 40, 39, 37, 36, 35, 33, 32, 31, 30, 29, 27, 26, 25, 24, 24, 23, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 14, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R88[88] = { 88, 75, 70, 66, 62, 59, 57, 54, 52, 50, 48, 46, 44, 42, 41, 39, 38, 37, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R89[89] = { 89, 76, 71, 67, 63, 60, 57, 55, 53, 50, 49, 47, 45, 43, 42, 40, 39, 37, 36, 35, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R90[90] = { 90, 77, 72, 67, 64, 61, 58, 56, 53, 51, 49, 47, 46, 44, 42, 41, 39, 38, 36, 35, 34, 33, 32, 30, 29, 28, 27, 26, 25, 24, 23, 23, 22, 21, 20, 19, 18, 18, 17, 16, 16, 15, 14, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R91[91] = { 91, 78, 73, 68, 65, 62, 59, 56, 54, 52, 50, 48, 46, 45, 43, 41, 40, 39, 37, 36, 35, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 16, 15, 15, 14, 14, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R92[92] = { 92, 79, 73, 69, 66, 63, 60, 57, 55, 53, 51, 49, 47, 45, 44, 42, 41, 39, 38, 37, 35, 34, 33, 32, 31, 29, 28, 27, 26, 25, 25, 24, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R93[93] = { 93, 80, 74, 70, 67, 63, 61, 58, 56, 54, 52, 50, 48, 46, 44, 43, 41, 40, 39, 37, 36, 35, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R94[94] = { 94, 81, 75, 71, 67, 64, 61, 59, 57, 54, 52, 50, 49, 47, 45, 44, 42, 41, 39, 38, 37, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 16, 16, 15, 14, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R95[95] = { 95, 82, 76, 72, 68, 65, 62, 60, 57, 55, 53, 51, 49, 48, 46, 44, 43, 41, 40, 38, 37, 36, 35, 34, 32, 31, 30, 29, 28, 27, 26, 25, 24, 24, 23, 22, 21, 20, 19, 19, 18, 17, 17, 16, 15, 15, 14, 14, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R96[96] = { 96, 83, 77, 73, 69, 66, 63, 61, 58, 56, 54, 52, 50, 48, 47, 45, 43, 42, 41, 39, 38, 37, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 16, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R97[97] = { 97, 84, 78, 74, 70, 67, 64, 61, 59, 57, 55, 53, 51, 49, 47, 46, 44, 43, 41, 40, 39, 37, 36, 35, 34, 32, 31, 30, 29, 28, 27, 26, 25, 25, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R98[98] = { 98, 85, 79, 74, 71, 68, 65, 62, 60, 57, 55, 53, 52, 50, 48, 46, 45, 43, 42, 41, 39, 38, 37, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R99[99] = { 99, 85, 80, 75, 72, 68, 66, 63, 61, 58, 56, 54, 52, 50, 49, 47, 46, 44, 43, 41, 40, 39, 37, 36, 35, 34, 33, 32, 31, 29, 29, 28, 27, 26, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 17, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R100[100] = { 100, 86, 81, 76, 72, 69, 66, 64, 61, 59, 57, 55, 53, 51, 49, 48, 46, 45, 43, 42, 40, 39, 38, 37, 36, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 25, 24, 23, 22, 21, 20, 20, 19, 18, 18, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R101[101] = { 101, 87, 81, 77, 73, 70, 67, 65, 62, 60, 58, 56, 54, 52, 50, 49, 47, 45, 44, 43, 41, 40, 39, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 18, 17, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R102[102] = { 102, 88, 82, 78, 74, 71, 68, 65, 63, 61, 58, 56, 54, 53, 51, 49, 48, 46, 45, 43, 42, 41, 39, 38, 37, 36, 34, 33, 32, 31, 30, 29, 28, 27, 26, 26, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 17, 16, 15, 15, 14, 14, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R103[103] = { 103, 89, 83, 79, 75, 72, 69, 66, 64, 61, 59, 57, 55, 53, 52, 50, 48, 47, 45, 44, 43, 41, 40, 39, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 16, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R104[104] = { 104, 90, 84, 80, 76, 73, 70, 67, 64, 62, 60, 58, 56, 54, 52, 51, 49, 48, 46, 45, 43, 42, 41, 39, 38, 37, 36, 35, 34, 32, 31, 30, 29, 29, 28, 27, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 18, 18, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R105[105] = { 105, 91, 85, 81, 77, 73, 71, 68, 65, 63, 61, 59, 57, 55, 53, 51, 50, 48, 47, 45, 44, 42, 41, 40, 39, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 25, 24, 23, 22, 21, 21, 20, 19, 19, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R106[106] = { 106, 92, 86, 81, 78, 74, 71, 69, 66, 64, 62, 59, 58, 56, 54, 52, 50, 49, 47, 46, 45, 43, 42, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 11, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R107[107] = { 107, 93, 87, 82, 79, 75, 72, 69, 67, 65, 62, 60, 58, 56, 55, 53, 51, 50, 48, 47, 45, 44, 43, 41, 40, 39, 38, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 27, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 18, 18, 17, 16, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R108[108] = { 108, 94, 88, 83, 79, 76, 73, 70, 68, 65, 63, 61, 59, 57, 55, 54, 52, 50, 49, 47, 46, 45, 43, 42, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R109[109] = { 109, 95, 89, 84, 80, 77, 74, 71, 69, 66, 64, 62, 60, 58, 56, 54, 53, 51, 49, 48, 47, 45, 44, 43, 41, 40, 39, 38, 37, 35, 34, 33, 32, 31, 30, 29, 29, 28, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R110[110] = { 110, 96, 90, 85, 81, 78, 75, 72, 69, 67, 65, 63, 61, 59, 57, 55, 53, 52, 50, 49, 47, 46, 44, 43, 42, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 26, 25, 24, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R111[111] = { 111, 97, 91, 86, 82, 79, 75, 73, 70, 68, 65, 63, 61, 59, 58, 56, 54, 52, 51, 49, 48, 47, 45, 44, 43, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R112[112] = { 112, 98, 91, 87, 83, 79, 76, 74, 71, 69, 66, 64, 62, 60, 58, 57, 55, 53, 52, 50, 49, 47, 46, 45, 43, 42, 41, 40, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 28, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R113[113] = { 113, 98, 92, 88, 84, 80, 77, 74, 72, 69, 67, 65, 63, 61, 59, 57, 56, 54, 52, 51, 49, 48, 47, 45, 44, 43, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R114[114] = { 114, 99, 93, 89, 85, 81, 78, 75, 73, 70, 68, 66, 64, 62, 60, 58, 56, 55, 53, 51, 50, 49, 47, 46, 45, 43, 42, 41, 40, 39, 37, 36, 35, 34, 33, 32, 31, 30, 30, 29, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 20, 19, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R115[115] = { 115, 100, 94, 89, 85, 82, 79, 76, 73, 71, 69, 66, 64, 62, 61, 59, 57, 55, 54, 52, 51, 49, 48, 46, 45, 44, 43, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 27, 26, 25, 24, 23, 23, 22, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R116[116] = { 116, 101, 95, 90, 86, 83, 80, 77, 74, 72, 69, 67, 65, 63, 61, 59, 58, 56, 54, 53, 51, 50, 49, 47, 46, 45, 43, 42, 41, 40, 39, 38, 36, 35, 34, 33, 32, 32, 31, 30, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R117[117] = { 117, 102, 96, 91, 87, 84, 81, 78, 75, 72, 70, 68, 66, 64, 62, 60, 58, 57, 55, 54, 52, 51, 49, 48, 47, 45, 44, 43, 42, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 29, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R118[118] = { 118, 103, 97, 92, 88, 85, 81, 78, 76, 73, 71, 69, 67, 65, 63, 61, 59, 57, 56, 54, 53, 51, 50, 49, 47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R119[119] = { 119, 104, 98, 93, 89, 85, 82, 79, 77, 74, 72, 70, 67, 65, 63, 62, 60, 58, 57, 55, 53, 52, 51, 49, 48, 47, 45, 44, 43, 42, 41, 39, 38, 37, 36, 35, 34, 33, 32, 31, 31, 30, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R120[120] = { 120, 105, 99, 94, 90, 86, 83, 80, 77, 75, 73, 70, 68, 66, 64, 62, 61, 59, 57, 56, 54, 53, 51, 50, 48, 47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 28, 27, 26, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R121[121] = { 121, 106, 100, 95, 91, 87, 84, 81, 78, 76, 73, 71, 69, 67, 65, 63, 61, 60, 58, 56, 55, 53, 52, 51, 49, 48, 47, 45, 44, 43, 42, 41, 40, 38, 37, 36, 35, 34, 33, 33, 32, 31, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R122[122] = { 122, 107, 100, 96, 92, 88, 85, 82, 79, 77, 74, 72, 70, 68, 66, 64, 62, 60, 59, 57, 56, 54, 53, 51, 50, 49, 47, 46, 45, 44, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 30, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R123[123] = { 123, 108, 101, 96, 92, 89, 86, 83, 80, 77, 75, 73, 71, 68, 67, 65, 63, 61, 59, 58, 56, 55, 53, 52, 51, 49, 48, 47, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R124[124] = { 124, 109, 102, 97, 93, 90, 86, 83, 81, 78, 76, 73, 71, 69, 67, 65, 64, 62, 60, 59, 57, 55, 54, 53, 51, 50, 49, 47, 46, 45, 44, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 31, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 21, 21, 20, 20, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R125[125] = { 125, 110, 103, 98, 94, 90, 87, 84, 81, 79, 77, 74, 72, 70, 68, 66, 64, 63, 61, 59, 58, 56, 55, 53, 52, 50, 49, 48, 47, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 29, 28, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 19, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R126[126] = { 126, 111, 104, 99, 95, 91, 88, 85, 82, 80, 77, 75, 73, 71, 69, 67, 65, 63, 62, 60, 58, 57, 55, 54, 53, 51, 50, 49, 47, 46, 45, 44, 43, 41, 40, 39, 38, 37, 36, 35, 34, 33, 33, 32, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R127[127] = { 127, 112, 105, 100, 96, 92, 89, 86, 83, 81, 78, 76, 74, 72, 70, 68, 66, 64, 62, 61, 59, 58, 56, 55, 53, 52, 51, 49, 48, 47, 46, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 31, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R128[128] = { 128, 113, 106, 101, 97, 93, 90, 87, 84, 81, 79, 77, 74, 72, 70, 68, 67, 65, 63, 61, 60, 58, 57, 55, 54, 53, 51, 50, 49, 47, 46, 45, 44, 43, 42, 41, 40, 38, 37, 37, 36, 35, 34, 33, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R129[129] = { 129, 113, 107, 102, 98, 94, 91, 88, 85, 82, 80, 77, 75, 73, 71, 69, 67, 65, 64, 62, 61, 59, 57, 56, 55, 53, 52, 51, 49, 48, 47, 46, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R130[130] = { 130, 114, 108, 103, 98, 95, 91, 88, 86, 83, 80, 78, 76, 74, 72, 70, 68, 66, 64, 63, 61, 60, 58, 57, 55, 54, 52, 51, 50, 49, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 30, 29, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R131[131] = { 131, 115, 109, 104, 99, 96, 92, 89, 86, 84, 81, 79, 77, 75, 73, 71, 69, 67, 65, 64, 62, 60, 59, 57, 56, 55, 53, 52, 51, 49, 48, 47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 34, 33, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R132[132] = { 132, 116, 110, 105, 100, 97, 93, 90, 87, 85, 82, 80, 78, 75, 73, 71, 70, 68, 66, 64, 63, 61, 60, 58, 57, 55, 54, 53, 51, 50, 49, 48, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R133[133] = { 133, 117, 111, 105, 101, 97, 94, 91, 88, 85, 83, 81, 78, 76, 74, 72, 70, 68, 67, 65, 63, 62, 60, 59, 57, 56, 55, 53, 52, 51, 49, 48, 47, 46, 45, 44, 43, 41, 40, 39, 38, 37, 37, 36, 35, 34, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R134[134] = { 134, 118, 111, 106, 102, 98, 95, 92, 89, 86, 84, 81, 79, 77, 75, 73, 71, 69, 67, 66, 64, 62, 61, 59, 58, 57, 55, 54, 53, 51, 50, 49, 48, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 33, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R135[135] = { 135, 119, 112, 107, 103, 99, 96, 93, 90, 87, 85, 82, 80, 78, 76, 74, 72, 70, 68, 66, 65, 63, 62, 60, 59, 57, 56, 54, 53, 52, 51, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 31, 30, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R136[136] = { 136, 120, 113, 108, 104, 100, 97, 93, 91, 88, 85, 83, 81, 78, 76, 74, 72, 71, 69, 67, 66, 64, 62, 61, 59, 58, 57, 55, 54, 53, 51, 50, 49, 48, 47, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 35, 34, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R137[137] = { 137, 121, 114, 109, 105, 101, 97, 94, 91, 89, 86, 84, 81, 79, 77, 75, 73, 71, 70, 68, 66, 65, 63, 62, 60, 59, 57, 56, 55, 53, 52, 51, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R138[138] = { 138, 122, 115, 110, 106, 102, 98, 95, 92, 89, 87, 85, 82, 80, 78, 76, 74, 72, 70, 69, 67, 65, 64, 62, 61, 59, 58, 57, 55, 54, 53, 51, 50, 49, 48, 47, 46, 44, 43, 42, 41, 40, 39, 38, 37, 37, 36, 35, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R139[139] = { 139, 123, 116, 111, 106, 103, 99, 96, 93, 90, 88, 85, 83, 81, 79, 77, 75, 73, 71, 69, 68, 66, 64, 63, 61, 60, 59, 57, 56, 55, 53, 52, 51, 50, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 34, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 24, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R140[140] = { 140, 124, 117, 112, 107, 103, 100, 97, 94, 91, 89, 86, 84, 82, 79, 77, 76, 74, 72, 70, 68, 67, 65, 64, 62, 61, 59, 58, 56, 55, 54, 53, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R141[141] = { 141, 125, 118, 113, 108, 104, 101, 98, 95, 92, 89, 87, 85, 82, 80, 78, 76, 74, 73, 71, 69, 67, 66, 64, 63, 61, 60, 59, 57, 56, 55, 53, 52, 51, 50, 49, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R142[142] = { 142, 126, 119, 113, 109, 105, 102, 98, 96, 93, 90, 88, 85, 83, 81, 79, 77, 75, 73, 72, 70, 68, 67, 65, 64, 62, 61, 59, 58, 57, 55, 54, 53, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R143[143] = { 143, 127, 120, 114, 110, 106, 103, 99, 96, 94, 91, 88, 86, 84, 82, 80, 78, 76, 74, 72, 71, 69, 67, 66, 64, 63, 61, 60, 59, 57, 56, 55, 53, 52, 51, 50, 49, 48, 46, 45, 44, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R144[144] = { 144, 128, 121, 115, 111, 107, 103, 100, 97, 94, 92, 89, 87, 85, 83, 81, 79, 77, 75, 73, 71, 70, 68, 66, 65, 63, 62, 61, 59, 58, 57, 55, 54, 53, 52, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 35, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 23, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R145[145] = { 145, 128, 121, 116, 112, 108, 104, 101, 98, 95, 93, 90, 88, 85, 83, 81, 79, 77, 76, 74, 72, 70, 69, 67, 66, 64, 63, 61, 60, 58, 57, 56, 55, 53, 52, 51, 50, 49, 48, 47, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 36, 35, 34, 33, 33, 32, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R146[146] = { 146, 129, 122, 117, 113, 109, 105, 102, 99, 96, 93, 91, 89, 86, 84, 82, 80, 78, 76, 74, 73, 71, 69, 68, 66, 65, 63, 62, 61, 59, 58, 57, 55, 54, 53, 52, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R147[147] = { 147, 130, 123, 118, 113, 109, 106, 103, 100, 97, 94, 92, 89, 87, 85, 83, 81, 79, 77, 75, 73, 72, 70, 69, 67, 65, 64, 63, 61, 60, 59, 57, 56, 55, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R148[148] = { 148, 131, 124, 119, 114, 110, 107, 104, 100, 98, 95, 93, 90, 88, 86, 84, 82, 80, 78, 76, 74, 73, 71, 69, 68, 66, 65, 63, 62, 61, 59, 58, 57, 55, 54, 53, 52, 51, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R149[149] = { 149, 132, 125, 120, 115, 111, 108, 104, 101, 98, 96, 93, 91, 89, 86, 84, 82, 80, 79, 77, 75, 73, 72, 70, 68, 67, 65, 64, 63, 61, 60, 59, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R150[150] = { 150, 133, 126, 121, 116, 112, 108, 105, 102, 99, 97, 94, 92, 89, 87, 85, 83, 81, 79, 77, 76, 74, 72, 71, 69, 68, 66, 65, 63, 62, 60, 59, 58, 57, 55, 54, 53, 52, 51, 50, 49, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 36, 35, 34, 34, 33, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R151[151] = { 151, 134, 127, 122, 117, 113, 109, 106, 103, 100, 97, 95, 93, 90, 88, 86, 84, 82, 80, 78, 76, 75, 73, 71, 70, 68, 67, 65, 64, 63, 61, 60, 59, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 37, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R152[152] = { 152, 135, 128, 122, 118, 114, 110, 107, 104, 101, 98, 96, 93, 91, 89, 87, 85, 83, 81, 79, 77, 75, 74, 72, 71, 69, 67, 66, 65, 63, 62, 61, 59, 58, 57, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R153[153] = { 153, 136, 129, 123, 119, 115, 111, 108, 105, 102, 99, 97, 94, 92, 90, 87, 85, 83, 81, 80, 78, 76, 74, 73, 71, 70, 68, 67, 65, 64, 63, 61, 60, 59, 57, 56, 55, 54, 53, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 39, 38, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R154[154] = { 154, 137, 130, 124, 120, 116, 112, 109, 106, 103, 100, 97, 95, 93, 90, 88, 86, 84, 82, 80, 79, 77, 75, 74, 72, 70, 69, 67, 66, 65, 63, 62, 61, 59, 58, 57, 56, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 37, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R155[155] = { 155, 138, 131, 125, 121, 116, 113, 109, 106, 103, 101, 98, 96, 93, 91, 89, 87, 85, 83, 81, 79, 78, 76, 74, 73, 71, 70, 68, 67, 65, 64, 62, 61, 60, 59, 57, 56, 55, 54, 53, 52, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 36, 35, 35, 34, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R156[156] = { 156, 139, 132, 126, 121, 117, 114, 110, 107, 104, 102, 99, 96, 94, 92, 90, 88, 86, 84, 82, 80, 78, 77, 75, 73, 72, 70, 69, 67, 66, 65, 63, 62, 61, 59, 58, 57, 56, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R157[157] = { 157, 140, 133, 127, 122, 118, 115, 111, 108, 105, 102, 100, 97, 95, 93, 91, 88, 86, 85, 83, 81, 79, 77, 76, 74, 72, 71, 69, 68, 67, 65, 64, 63, 61, 60, 59, 57, 56, 55, 54, 53, 52, 51, 50, 49, 47, 46, 45, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R158[158] = { 158, 141, 133, 128, 123, 119, 115, 112, 109, 106, 103, 101, 98, 96, 93, 91, 89, 87, 85, 83, 82, 80, 78, 76, 75, 73, 72, 70, 69, 67, 66, 65, 63, 62, 61, 59, 58, 57, 56, 55, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R159[159] = { 159, 142, 134, 129, 124, 120, 116, 113, 110, 107, 104, 101, 99, 97, 94, 92, 90, 88, 86, 84, 82, 81, 79, 77, 75, 74, 72, 71, 69, 68, 67, 65, 64, 63, 61, 60, 59, 58, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R160[160] = { 160, 143, 135, 130, 125, 121, 117, 114, 111, 108, 105, 102, 100, 97, 95, 93, 91, 89, 87, 85, 83, 81, 80, 78, 76, 75, 73, 72, 70, 69, 67, 66, 64, 63, 62, 61, 59, 58, 57, 56, 55, 54, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 42, 41, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R161[161] = { 161, 144, 136, 131, 126, 122, 118, 115, 111, 108, 106, 103, 101, 98, 96, 94, 92, 89, 88, 86, 84, 82, 80, 79, 77, 75, 74, 72, 71, 69, 68, 67, 65, 64, 63, 61, 60, 59, 58, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 39, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R162[162] = { 162, 145, 137, 131, 127, 123, 119, 115, 112, 109, 106, 104, 101, 99, 97, 94, 92, 90, 88, 86, 85, 83, 81, 79, 78, 76, 74, 73, 71, 70, 69, 67, 66, 65, 63, 62, 61, 59, 58, 57, 56, 55, 54, 53, 52, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R163[163] = { 163, 145, 138, 132, 128, 123, 120, 116, 113, 110, 107, 105, 102, 100, 97, 95, 93, 91, 89, 87, 85, 83, 82, 80, 78, 77, 75, 74, 72, 71, 69, 68, 67, 65, 64, 63, 61, 60, 59, 58, 57, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R164[164] = { 164, 146, 139, 133, 128, 124, 121, 117, 114, 111, 108, 105, 103, 101, 98, 96, 94, 92, 90, 88, 86, 84, 82, 81, 79, 77, 76, 74, 73, 71, 70, 69, 67, 66, 65, 63, 62, 61, 60, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 39, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R165[165] = { 165, 147, 140, 134, 129, 125, 121, 118, 115, 112, 109, 106, 104, 101, 99, 97, 95, 93, 91, 89, 87, 85, 83, 81, 80, 78, 77, 75, 74, 72, 71, 69, 68, 66, 65, 64, 63, 61, 60, 59, 58, 57, 56, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 39, 38, 37, 37, 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R166[166] = { 166, 148, 141, 135, 130, 126, 122, 119, 116, 113, 110, 107, 105, 102, 100, 98, 95, 93, 91, 89, 88, 86, 84, 82, 81, 79, 77, 76, 74, 73, 71, 70, 69, 67, 66, 65, 63, 62, 61, 60, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R167[167] = { 167, 149, 142, 136, 131, 127, 123, 120, 116, 113, 111, 108, 105, 103, 101, 98, 96, 94, 92, 90, 88, 86, 85, 83, 81, 80, 78, 76, 75, 73, 72, 71, 69, 68, 67, 65, 64, 63, 61, 60, 59, 58, 57, 56, 55, 53, 52, 51, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R168[168] = { 168, 150, 143, 137, 132, 128, 124, 121, 117, 114, 111, 109, 106, 104, 101, 99, 97, 95, 93, 91, 89, 87, 85, 84, 82, 80, 79, 77, 76, 74, 73, 71, 70, 69, 67, 66, 65, 63, 62, 61, 60, 59, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 42, 41, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R169[169] = { 169, 151, 144, 138, 133, 129, 125, 121, 118, 115, 112, 110, 107, 104, 102, 100, 98, 96, 94, 92, 90, 88, 86, 84, 83, 81, 79, 78, 76, 75, 73, 72, 71, 69, 68, 67, 65, 64, 63, 62, 60, 59, 58, 57, 56, 55, 54, 53, 52, 50, 49, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R170[170] = { 170, 152, 144, 139, 134, 130, 126, 122, 119, 116, 113, 110, 108, 105, 103, 101, 98, 96, 94, 92, 90, 89, 87, 85, 83, 82, 80, 79, 77, 76, 74, 73, 71, 70, 68, 67, 66, 65, 63, 62, 61, 60, 59, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R171[171] = { 171, 153, 145, 140, 135, 130, 127, 123, 120, 117, 114, 111, 109, 106, 104, 101, 99, 97, 95, 93, 91, 89, 88, 86, 84, 82, 81, 79, 78, 76, 75, 73, 72, 71, 69, 68, 67, 65, 64, 63, 62, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R172[172] = { 172, 154, 146, 141, 136, 131, 127, 124, 121, 118, 115, 112, 109, 107, 105, 102, 100, 98, 96, 94, 92, 90, 88, 87, 85, 83, 82, 80, 78, 77, 75, 74, 73, 71, 70, 69, 67, 66, 65, 63, 62, 61, 60, 59, 58, 57, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 30, 30, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R173[173] = { 173, 155, 147, 141, 137, 132, 128, 125, 121, 118, 116, 113, 110, 108, 105, 103, 101, 99, 97, 95, 93, 91, 89, 87, 86, 84, 82, 81, 79, 78, 76, 75, 73, 72, 71, 69, 68, 67, 65, 64, 63, 62, 61, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R174[174] = { 174, 156, 148, 142, 137, 133, 129, 126, 122, 119, 116, 114, 111, 109, 106, 104, 102, 99, 97, 95, 94, 92, 90, 88, 86, 85, 83, 81, 80, 78, 77, 75, 74, 73, 71, 70, 69, 67, 66, 65, 64, 62, 61, 60, 59, 58, 57, 56, 54, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R175[175] = { 175, 157, 149, 143, 138, 134, 130, 126, 123, 120, 117, 114, 112, 109, 107, 105, 102, 100, 98, 96, 94, 92, 91, 89, 87, 85, 84, 82, 81, 79, 78, 76, 75, 73, 72, 70, 69, 68, 67, 65, 64, 63, 62, 61, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 44, 43, 42, 41, 40, 39, 39, 38, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R176[176] = { 176, 158, 150, 144, 139, 135, 131, 127, 124, 121, 118, 115, 113, 110, 108, 105, 103, 101, 99, 97, 95, 93, 91, 90, 88, 86, 84, 83, 81, 80, 78, 77, 75, 74, 73, 71, 70, 69, 67, 66, 65, 64, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 42, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R177[177] = { 177, 159, 151, 145, 140, 136, 132, 128, 125, 122, 119, 116, 113, 111, 109, 106, 104, 102, 100, 98, 96, 94, 92, 90, 89, 87, 85, 84, 82, 80, 79, 77, 76, 75, 73, 72, 71, 69, 68, 67, 65, 64, 63, 62, 61, 60, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R178[178] = { 178, 160, 152, 146, 141, 137, 133, 129, 126, 123, 120, 117, 114, 112, 109, 107, 105, 103, 100, 98, 97, 95, 93, 91, 89, 88, 86, 84, 83, 81, 80, 78, 77, 75, 74, 73, 71, 70, 69, 67, 66, 65, 64, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R179[179] = { 179, 161, 153, 147, 142, 137, 134, 130, 127, 123, 121, 118, 115, 113, 110, 108, 106, 103, 101, 99, 97, 95, 94, 92, 90, 88, 87, 85, 83, 82, 80, 79, 77, 76, 75, 73, 72, 71, 69, 68, 67, 65, 64, 63, 62, 61, 60, 59, 58, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R180[180] = { 180, 162, 154, 148, 143, 138, 134, 131, 127, 124, 121, 119, 116, 113, 111, 109, 106, 104, 102, 100, 98, 96, 94, 92, 91, 89, 87, 86, 84, 83, 81, 80, 78, 77, 75, 74, 72, 71, 70, 69, 67, 66, 65, 64, 63, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R181[181] = { 181, 162, 155, 149, 144, 139, 135, 132, 128, 125, 122, 119, 117, 114, 112, 109, 107, 105, 103, 101, 99, 97, 95, 93, 91, 90, 88, 86, 85, 83, 82, 80, 79, 77, 76, 75, 73, 72, 71, 69, 68, 67, 66, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R182[182] = { 182, 163, 156, 150, 145, 140, 136, 133, 129, 126, 123, 120, 118, 115, 112, 110, 108, 106, 104, 102, 100, 98, 96, 94, 92, 90, 89, 87, 86, 84, 82, 81, 79, 78, 77, 75, 74, 73, 71, 70, 69, 67, 66, 65, 64, 63, 62, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R183[183] = { 183, 164, 157, 150, 145, 141, 137, 133, 130, 127, 124, 121, 118, 116, 113, 111, 109, 106, 104, 102, 100, 98, 97, 95, 93, 91, 89, 88, 86, 85, 83, 82, 80, 79, 77, 76, 75, 73, 72, 71, 69, 68, 67, 66, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 44, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R184[184] = { 184, 165, 157, 151, 146, 142, 138, 134, 131, 128, 125, 122, 119, 117, 114, 112, 109, 107, 105, 103, 101, 99, 97, 95, 94, 92, 90, 89, 87, 85, 84, 82, 81, 79, 78, 77, 75, 74, 73, 71, 70, 69, 67, 66, 65, 64, 63, 62, 61, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R185[185] = { 185, 166, 158, 152, 147, 143, 139, 135, 132, 128, 125, 123, 120, 117, 115, 113, 110, 108, 106, 104, 102, 100, 98, 96, 94, 93, 91, 89, 88, 86, 85, 83, 81, 80, 79, 77, 76, 74, 73, 72, 71, 69, 68, 67, 66, 65, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R186[186] = { 186, 167, 159, 153, 148, 144, 140, 136, 133, 129, 126, 123, 121, 118, 116, 113, 111, 109, 107, 105, 103, 101, 99, 97, 95, 93, 92, 90, 88, 87, 85, 84, 82, 81, 79, 78, 77, 75, 74, 73, 71, 70, 69, 68, 66, 65, 64, 63, 62, 61, 60, 59, 58, 56, 55, 54, 53, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 44, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R187[187] = { 187, 168, 160, 154, 149, 145, 141, 137, 133, 130, 127, 124, 122, 119, 117, 114, 112, 110, 107, 105, 103, 101, 99, 98, 96, 94, 92, 91, 89, 87, 86, 84, 83, 81, 80, 79, 77, 76, 75, 73, 72, 71, 69, 68, 67, 66, 65, 64, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R188[188] = { 188, 169, 161, 155, 150, 145, 141, 138, 134, 131, 128, 125, 122, 120, 117, 115, 113, 110, 108, 106, 104, 102, 100, 98, 97, 95, 93, 91, 90, 88, 87, 85, 84, 82, 81, 79, 78, 77, 75, 74, 73, 71, 70, 69, 68, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R189[189] = { 189, 170, 162, 156, 151, 146, 142, 139, 135, 132, 129, 126, 123, 121, 118, 116, 113, 111, 109, 107, 105, 103, 101, 99, 97, 96, 94, 92, 91, 89, 87, 86, 84, 83, 81, 80, 79, 77, 76, 75, 73, 72, 71, 69, 68, 67, 66, 65, 64, 63, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R190[190] = { 190, 171, 163, 157, 152, 147, 143, 139, 136, 133, 130, 127, 124, 121, 119, 117, 114, 112, 110, 108, 106, 104, 102, 100, 98, 96, 95, 93, 91, 90, 88, 86, 85, 83, 82, 81, 79, 78, 76, 75, 74, 73, 71, 70, 69, 68, 67, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 47, 46, 45, 44, 43, 42, 42, 41, 40, 39, 38, 38, 37, 36, 36, 35, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R191[191] = { 191, 172, 164, 158, 153, 148, 144, 140, 137, 134, 131, 128, 125, 122, 120, 117, 115, 113, 111, 108, 106, 104, 103, 101, 99, 97, 95, 94, 92, 90, 89, 87, 86, 84, 83, 81, 80, 79, 77, 76, 75, 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, 62, 61, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R192[192] = { 192, 173, 165, 159, 154, 149, 145, 141, 138, 134, 131, 128, 126, 123, 121, 118, 116, 114, 111, 109, 107, 105, 103, 101, 100, 98, 96, 94, 93, 91, 89, 88, 86, 85, 83, 82, 81, 79, 78, 77, 75, 74, 73, 71, 70, 69, 68, 67, 66, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R193[193] = { 193, 174, 166, 160, 154, 150, 146, 142, 139, 135, 132, 129, 127, 124, 121, 119, 117, 114, 112, 110, 108, 106, 104, 102, 100, 98, 97, 95, 93, 92, 90, 89, 87, 86, 84, 83, 81, 80, 79, 77, 76, 75, 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R194[194] = { 194, 175, 167, 161, 155, 151, 147, 143, 139, 136, 133, 130, 127, 125, 122, 120, 117, 115, 113, 111, 109, 107, 105, 103, 101, 99, 97, 96, 94, 92, 91, 89, 88, 86, 85, 83, 82, 81, 79, 78, 77, 75, 74, 73, 71, 70, 69, 68, 67, 66, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R195[195] = { 195, 176, 168, 161, 156, 152, 147, 144, 140, 137, 134, 131, 128, 125, 123, 120, 118, 116, 114, 112, 109, 107, 106, 104, 102, 100, 98, 96, 95, 93, 92, 90, 88, 87, 85, 84, 83, 81, 80, 78, 77, 76, 75, 73, 72, 71, 70, 69, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 39, 39, 38, 37, 37, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R196[196] = { 196, 177, 169, 162, 157, 153, 148, 145, 141, 138, 135, 132, 129, 126, 124, 121, 119, 117, 114, 112, 110, 108, 106, 104, 103, 101, 99, 97, 96, 94, 92, 91, 89, 88, 86, 85, 83, 82, 81, 79, 78, 77, 75, 74, 73, 72, 70, 69, 68, 67, 66, 65, 64, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R197[197] = { 197, 178, 169, 163, 158, 153, 149, 145, 142, 139, 136, 133, 130, 127, 125, 122, 120, 117, 115, 113, 111, 109, 107, 105, 103, 101, 100, 98, 96, 95, 93, 91, 90, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 73, 72, 71, 70, 69, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R198[198] = { 198, 179, 170, 164, 159, 154, 150, 146, 143, 139, 136, 133, 131, 128, 125, 123, 121, 118, 116, 114, 112, 110, 108, 106, 104, 102, 100, 99, 97, 95, 94, 92, 91, 89, 88, 86, 85, 83, 82, 81, 79, 78, 77, 75, 74, 73, 72, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 59, 58, 57, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 47, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R199[199] = { 199, 180, 171, 165, 160, 155, 151, 147, 144, 140, 137, 134, 131, 129, 126, 124, 121, 119, 117, 115, 113, 111, 109, 107, 105, 103, 101, 99, 98, 96, 94, 93, 91, 90, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 73, 72, 71, 70, 69, 68, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R200[200] = { 200, 181, 172, 166, 161, 156, 152, 148, 144, 141, 138, 135, 132, 130, 127, 125, 122, 120, 118, 115, 113, 111, 109, 107, 106, 104, 102, 100, 98, 97, 95, 94, 92, 90, 89, 87, 86, 85, 83, 82, 80, 79, 78, 77, 75, 74, 73, 72, 71, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 44, 44, 43, 42, 41, 40, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R201[201] = { 201, 181, 173, 167, 162, 157, 153, 149, 145, 142, 139, 136, 133, 130, 128, 125, 123, 121, 118, 116, 114, 112, 110, 108, 106, 104, 103, 101, 99, 97, 96, 94, 93, 91, 90, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 74, 72, 71, 70, 69, 68, 67, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 48, 47, 47, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R202[202] = { 202, 182, 174, 168, 162, 158, 154, 150, 146, 143, 140, 137, 134, 131, 129, 126, 124, 121, 119, 117, 115, 113, 111, 109, 107, 105, 103, 102, 100, 98, 97, 95, 93, 92, 90, 89, 87, 86, 85, 83, 82, 81, 79, 78, 77, 75, 74, 73, 72, 71, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R203[203] = { 203, 183, 175, 169, 163, 159, 155, 151, 147, 144, 141, 138, 135, 132, 129, 127, 125, 122, 120, 118, 116, 114, 112, 110, 108, 106, 104, 102, 101, 99, 97, 96, 94, 93, 91, 90, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 74, 72, 71, 70, 69, 68, 67, 66, 65, 63, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R204[204] = { 204, 184, 176, 170, 164, 160, 155, 152, 148, 145, 141, 138, 136, 133, 130, 128, 125, 123, 121, 119, 116, 114, 112, 110, 108, 107, 105, 103, 101, 100, 98, 96, 95, 93, 92, 90, 89, 87, 86, 85, 83, 82, 81, 79, 78, 77, 75, 74, 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R205[205] = { 205, 185, 177, 171, 165, 160, 156, 152, 149, 145, 142, 139, 136, 134, 131, 129, 126, 124, 121, 119, 117, 115, 113, 111, 109, 107, 106, 104, 102, 100, 99, 97, 96, 94, 92, 91, 89, 88, 87, 85, 84, 82, 81, 80, 79, 77, 76, 75, 74, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 41, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R206[206] = { 206, 186, 178, 171, 166, 161, 157, 153, 150, 146, 143, 140, 137, 134, 132, 129, 127, 125, 122, 120, 118, 116, 114, 112, 110, 108, 106, 105, 103, 101, 99, 98, 96, 95, 93, 92, 90, 89, 87, 86, 85, 83, 82, 81, 79, 78, 77, 76, 74, 73, 72, 71, 70, 69, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 54, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R207[207] = { 207, 187, 179, 172, 167, 162, 158, 154, 151, 147, 144, 141, 138, 135, 133, 130, 128, 125, 123, 121, 119, 117, 115, 113, 111, 109, 107, 105, 104, 102, 100, 99, 97, 95, 94, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 74, 73, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R208[208] = { 208, 188, 180, 173, 168, 163, 159, 155, 151, 148, 145, 142, 139, 136, 133, 131, 128, 126, 124, 122, 120, 117, 115, 113, 112, 110, 108, 106, 104, 103, 101, 99, 98, 96, 95, 93, 92, 90, 89, 87, 86, 85, 83, 82, 81, 79, 78, 77, 76, 74, 73, 72, 71, 70, 69, 68, 67, 65, 64, 63, 62, 61, 60, 59, 58, 57, 57, 56, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R209[209] = { 209, 189, 181, 174, 169, 164, 160, 156, 152, 149, 146, 143, 140, 137, 134, 132, 129, 127, 125, 122, 120, 118, 116, 114, 112, 110, 109, 107, 105, 103, 102, 100, 98, 97, 95, 94, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 74, 73, 72, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R210[210] = { 210, 190, 182, 175, 170, 165, 161, 157, 153, 150, 146, 143, 141, 138, 135, 133, 130, 128, 125, 123, 121, 119, 117, 115, 113, 111, 109, 107, 106, 104, 102, 101, 99, 97, 96, 94, 93, 91, 90, 89, 87, 86, 84, 83, 82, 81, 79, 78, 77, 76, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R211[211] = { 211, 191, 183, 176, 171, 166, 162, 158, 154, 151, 147, 144, 141, 139, 136, 133, 131, 129, 126, 124, 122, 120, 118, 116, 114, 112, 110, 108, 106, 105, 103, 101, 100, 98, 97, 95, 94, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 78, 76, 75, 74, 73, 72, 71, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 55, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R212[212] = { 212, 192, 183, 177, 172, 167, 162, 158, 155, 151, 148, 145, 142, 139, 137, 134, 132, 129, 127, 125, 123, 121, 118, 116, 115, 113, 111, 109, 107, 105, 104, 102, 100, 99, 97, 96, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 79, 78, 77, 76, 75, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R213[213] = { 213, 193, 184, 178, 172, 168, 163, 159, 156, 152, 149, 146, 143, 140, 138, 135, 133, 130, 128, 126, 123, 121, 119, 117, 115, 113, 112, 110, 108, 106, 105, 103, 101, 100, 98, 97, 95, 94, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 78, 76, 75, 74, 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 57, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R214[214] = { 214, 194, 185, 179, 173, 169, 164, 160, 157, 153, 150, 147, 144, 141, 138, 136, 133, 131, 129, 126, 124, 122, 120, 118, 116, 114, 112, 110, 109, 107, 105, 104, 102, 100, 99, 97, 96, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 79, 78, 77, 76, 75, 74, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 54, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R215[215] = { 215, 195, 186, 180, 174, 169, 165, 161, 157, 154, 151, 148, 145, 142, 139, 137, 134, 132, 129, 127, 125, 123, 121, 119, 117, 115, 113, 111, 109, 108, 106, 104, 103, 101, 99, 98, 96, 95, 93, 92, 91, 89, 88, 86, 85, 84, 83, 81, 80, 79, 78, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 65, 64, 63, 62, 61, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 47, 47, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R216[216] = { 216, 196, 187, 181, 175, 170, 166, 162, 158, 155, 152, 148, 146, 143, 140, 137, 135, 133, 130, 128, 126, 124, 122, 120, 118, 116, 114, 112, 110, 108, 107, 105, 103, 102, 100, 99, 97, 96, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 80, 78, 77, 76, 75, 74, 73, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R217[217] = { 217, 197, 188, 182, 176, 171, 167, 163, 159, 156, 152, 149, 146, 144, 141, 138, 136, 133, 131, 129, 127, 124, 122, 120, 118, 116, 115, 113, 111, 109, 107, 106, 104, 102, 101, 99, 98, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 78, 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R218[218] = { 218, 198, 189, 182, 177, 172, 168, 164, 160, 157, 153, 150, 147, 144, 142, 139, 137, 134, 132, 129, 127, 125, 123, 121, 119, 117, 115, 113, 112, 110, 108, 106, 105, 103, 102, 100, 98, 97, 96, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 80, 78, 77, 76, 75, 74, 73, 72, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 58, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 39, 38, 37, 36, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R219[219] = { 219, 199, 190, 183, 178, 173, 169, 165, 161, 157, 154, 151, 148, 145, 142, 140, 137, 135, 133, 130, 128, 126, 124, 122, 120, 118, 116, 114, 112, 111, 109, 107, 106, 104, 102, 101, 99, 98, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 78, 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R220[220] = { 220, 200, 191, 184, 179, 174, 169, 165, 162, 158, 155, 152, 149, 146, 143, 141, 138, 136, 133, 131, 129, 127, 125, 123, 121, 119, 117, 115, 113, 111, 110, 108, 106, 105, 103, 101, 100, 98, 97, 95, 94, 93, 91, 90, 88, 87, 86, 85, 83, 82, 81, 80, 78, 77, 76, 75, 74, 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, 62, 61, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 48, 48, 47, 46, 45, 44, 44, 43, 42, 42, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R221[221] = { 221, 200, 192, 185, 180, 175, 170, 166, 163, 159, 156, 153, 150, 147, 144, 141, 139, 136, 134, 132, 130, 127, 125, 123, 121, 119, 117, 116, 114, 112, 110, 109, 107, 105, 104, 102, 101, 99, 98, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 78, 77, 76, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R222[222] = { 222, 201, 193, 186, 181, 176, 171, 167, 163, 160, 157, 153, 150, 148, 145, 142, 140, 137, 135, 133, 130, 128, 126, 124, 122, 120, 118, 116, 115, 113, 111, 109, 108, 106, 104, 103, 101, 100, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 80, 79, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 54, 53, 52, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R223[223] = { 223, 202, 194, 187, 181, 177, 172, 168, 164, 161, 157, 154, 151, 148, 146, 143, 141, 138, 136, 133, 131, 129, 127, 125, 123, 121, 119, 117, 115, 114, 112, 110, 108, 107, 105, 104, 102, 100, 99, 98, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 82, 80, 79, 78, 77, 76, 75, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 37, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R224[224] = { 224, 203, 195, 188, 182, 177, 173, 169, 165, 162, 158, 155, 152, 149, 147, 144, 141, 139, 137, 134, 132, 130, 128, 126, 124, 122, 120, 118, 116, 114, 113, 111, 109, 107, 106, 104, 103, 101, 100, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 80, 79, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R225[225] = { 225, 204, 196, 189, 183, 178, 174, 170, 166, 162, 159, 156, 153, 150, 147, 145, 142, 140, 137, 135, 133, 131, 128, 126, 124, 122, 121, 119, 117, 115, 113, 112, 110, 108, 107, 105, 103, 102, 100, 99, 97, 96, 95, 93, 92, 90, 89, 88, 87, 85, 84, 83, 82, 80, 79, 78, 77, 76, 75, 74, 73, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 61, 60, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 49, 48, 47, 46, 45, 45, 44, 43, 43, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 22, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R226[226] = { 226, 205, 196, 190, 184, 179, 175, 171, 167, 163, 160, 157, 154, 151, 148, 146, 143, 141, 138, 136, 134, 131, 129, 127, 125, 123, 121, 119, 118, 116, 114, 112, 111, 109, 107, 106, 104, 103, 101, 100, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 83, 82, 81, 80, 79, 78, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 57, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R227[227] = { 227, 206, 197, 191, 185, 180, 176, 172, 168, 164, 161, 158, 155, 152, 149, 146, 144, 141, 139, 137, 134, 132, 130, 128, 126, 124, 122, 120, 118, 116, 115, 113, 111, 110, 108, 106, 105, 103, 102, 100, 99, 97, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 82, 81, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 68, 67, 66, 65, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 55, 54, 53, 52, 51, 50, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R228[228] = { 228, 207, 198, 192, 186, 181, 177, 172, 169, 165, 162, 159, 156, 153, 150, 147, 145, 142, 140, 137, 135, 133, 131, 129, 127, 125, 123, 121, 119, 117, 115, 114, 112, 110, 109, 107, 106, 104, 102, 101, 100, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 84, 82, 81, 80, 79, 78, 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 38, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R229[229] = { 229, 208, 199, 193, 187, 182, 177, 173, 169, 166, 163, 159, 156, 153, 151, 148, 145, 143, 141, 138, 136, 134, 132, 129, 127, 125, 124, 122, 120, 118, 116, 114, 113, 111, 109, 108, 106, 105, 103, 102, 100, 99, 97, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 82, 81, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 24, 24, 23, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R230[230] = { 230, 209, 200, 193, 188, 183, 178, 174, 170, 167, 163, 160, 157, 154, 151, 149, 146, 144, 141, 139, 137, 134, 132, 130, 128, 126, 124, 122, 121, 119, 117, 115, 113, 112, 110, 109, 107, 105, 104, 102, 101, 99, 98, 97, 95, 94, 92, 91, 90, 89, 87, 86, 85, 84, 82, 81, 80, 79, 78, 77, 76, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 61, 60, 59, 58, 57, 56, 55, 54, 54, 53, 52, 51, 50, 50, 49, 48, 47, 46, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R231[231] = { 231, 210, 201, 194, 189, 184, 179, 175, 171, 168, 164, 161, 158, 155, 152, 150, 147, 145, 142, 140, 137, 135, 133, 131, 129, 127, 125, 123, 121, 119, 118, 116, 114, 113, 111, 109, 108, 106, 105, 103, 102, 100, 99, 97, 96, 95, 93, 92, 91, 89, 88, 87, 85, 84, 83, 82, 81, 80, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 58, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R232[232] = { 232, 211, 202, 195, 190, 185, 180, 176, 172, 169, 165, 162, 159, 156, 153, 150, 148, 145, 143, 141, 138, 136, 134, 132, 130, 128, 126, 124, 122, 120, 118, 117, 115, 113, 112, 110, 108, 107, 105, 104, 102, 101, 99, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 84, 83, 81, 80, 79, 78, 77, 76, 75, 74, 72, 71, 70, 69, 68, 67, 66, 65, 64, 64, 63, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 35, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R233[233] = { 233, 212, 203, 196, 191, 185, 181, 177, 173, 169, 166, 163, 160, 157, 154, 151, 149, 146, 144, 141, 139, 137, 135, 133, 131, 128, 127, 125, 123, 121, 119, 117, 116, 114, 112, 111, 109, 108, 106, 104, 103, 101, 100, 99, 97, 96, 95, 93, 92, 91, 89, 88, 87, 86, 84, 83, 82, 81, 80, 79, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 60, 59, 58, 57, 56, 55, 54, 54, 53, 52, 51, 50, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 41, 41, 40, 39, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 25, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R234[234] = { 234, 213, 204, 197, 191, 186, 182, 178, 174, 170, 167, 164, 161, 158, 155, 152, 149, 147, 144, 142, 140, 138, 135, 133, 131, 129, 127, 125, 124, 122, 120, 118, 116, 115, 113, 111, 110, 108, 107, 105, 104, 102, 101, 99, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 84, 83, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 35, 35, 34, 34, 33, 32, 32, 31, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R235[235] = { 235, 214, 205, 198, 192, 187, 183, 179, 175, 171, 168, 164, 161, 158, 156, 153, 150, 148, 145, 143, 141, 138, 136, 134, 132, 130, 128, 126, 124, 122, 121, 119, 117, 115, 114, 112, 111, 109, 107, 106, 104, 103, 101, 100, 99, 97, 96, 94, 93, 92, 91, 89, 88, 87, 86, 84, 83, 82, 81, 80, 79, 78, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 55, 55, 54, 53, 52, 51, 51, 50, 49, 48, 47, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R236[236] = { 236, 215, 206, 199, 193, 188, 184, 179, 176, 172, 169, 165, 162, 159, 156, 154, 151, 149, 146, 144, 141, 139, 137, 135, 133, 131, 129, 127, 125, 123, 121, 120, 118, 116, 114, 113, 111, 110, 108, 107, 105, 104, 102, 101, 99, 98, 97, 95, 94, 93, 91, 90, 89, 87, 86, 85, 84, 83, 82, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 59, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R237[237] = { 237, 216, 207, 200, 194, 189, 185, 180, 176, 173, 169, 166, 163, 160, 157, 155, 152, 149, 147, 145, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 122, 120, 119, 117, 115, 114, 112, 110, 109, 107, 106, 104, 103, 101, 100, 99, 97, 96, 95, 93, 92, 91, 89, 88, 87, 86, 85, 83, 82, 81, 80, 79, 78, 77, 76, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 65, 64, 63, 62, 61, 60, 59, 58, 57, 57, 56, 55, 54, 53, 52, 52, 51, 50, 49, 49, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 36, 35, 34, 34, 33, 33, 32, 31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R238[238] = { 238, 217, 208, 201, 195, 190, 185, 181, 177, 174, 170, 167, 164, 161, 158, 155, 153, 150, 148, 145, 143, 141, 139, 136, 134, 132, 130, 128, 126, 125, 123, 121, 119, 118, 116, 114, 113, 111, 109, 108, 106, 105, 103, 102, 101, 99, 98, 97, 95, 94, 93, 91, 90, 89, 88, 86, 85, 84, 83, 82, 81, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 61, 60, 59, 58, 57, 56, 55, 55, 54, 53, 52, 51, 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 37, 36, 35, 35, 34, 34, 33, 32, 32, 31, 31, 30, 30, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R239[239] = { 239, 218, 209, 202, 196, 191, 186, 182, 178, 175, 171, 168, 165, 162, 159, 156, 154, 151, 149, 146, 144, 142, 139, 137, 135, 133, 131, 129, 127, 125, 124, 122, 120, 118, 117, 115, 113, 112, 110, 109, 107, 106, 104, 103, 101, 100, 99, 97, 96, 95, 93, 92, 91, 89, 88, 87, 86, 85, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 58, 57, 56, 55, 54, 53, 53, 52, 51, 50, 50, 49, 48, 47, 47, 46, 45, 44, 44, 43, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 35, 34, 33, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 22, 21, 21, 20, 20, 19, 19, 19, 18, 18, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; +static const uint8_t Corner_Data_R240[240] = { 240, 219, 210, 203, 197, 192, 187, 183, 179, 175, 172, 169, 166, 163, 160, 157, 154, 152, 149, 147, 145, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 123, 121, 119, 117, 116, 114, 112, 111, 109, 108, 106, 105, 103, 102, 101, 99, 98, 96, 95, 94, 93, 91, 90, 89, 88, 86, 85, 84, 83, 82, 81, 80, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 63, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 52, 51, 50, 49, 48, 48, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 39, 38, 37, 37, 36, 36, 35, 34, 34, 33, 33, 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; + +static const Corner_Lookup_Table _Corner_Lookup_Tables[] = { + { 0, NULL }, // Radius 0 - Unused + { 1, Corner_Data_R1 }, // Radius 1 + { 2, Corner_Data_R2 }, // Radius 2 + { 3, Corner_Data_R3 }, // Radius 3 + { 4, Corner_Data_R4 }, // Radius 4 + { 5, Corner_Data_R5 }, // Radius 5 + { 6, Corner_Data_R6 }, // Radius 6 + { 7, Corner_Data_R7 }, // Radius 7 + { 8, Corner_Data_R8 }, // Radius 8 + { 9, Corner_Data_R9 }, // Radius 9 + { 10, Corner_Data_R10 }, // Radius 10 + { 11, Corner_Data_R11 }, // Radius 11 + { 12, Corner_Data_R12 }, // Radius 12 + { 13, Corner_Data_R13 }, // Radius 13 + { 14, Corner_Data_R14 }, // Radius 14 + { 15, Corner_Data_R15 }, // Radius 15 + { 16, Corner_Data_R16 }, // Radius 16 + { 17, Corner_Data_R17 }, // Radius 17 + { 18, Corner_Data_R18 }, // Radius 18 + { 19, Corner_Data_R19 }, // Radius 19 + { 20, Corner_Data_R20 }, // Radius 20 + { 21, Corner_Data_R21 }, // Radius 21 + { 22, Corner_Data_R22 }, // Radius 22 + { 23, Corner_Data_R23 }, // Radius 23 + { 24, Corner_Data_R24 }, // Radius 24 + { 25, Corner_Data_R25 }, // Radius 25 + { 26, Corner_Data_R26 }, // Radius 26 + { 27, Corner_Data_R27 }, // Radius 27 + { 28, Corner_Data_R28 }, // Radius 28 + { 29, Corner_Data_R29 }, // Radius 29 + { 30, Corner_Data_R30 }, // Radius 30 + { 31, Corner_Data_R31 }, // Radius 31 + { 32, Corner_Data_R32 }, // Radius 32 + { 33, Corner_Data_R33 }, // Radius 33 + { 34, Corner_Data_R34 }, // Radius 34 + { 35, Corner_Data_R35 }, // Radius 35 + { 36, Corner_Data_R36 }, // Radius 36 + { 37, Corner_Data_R37 }, // Radius 37 + { 38, Corner_Data_R38 }, // Radius 38 + { 39, Corner_Data_R39 }, // Radius 39 + { 40, Corner_Data_R40 }, // Radius 40 + { 41, Corner_Data_R41 }, // Radius 41 + { 42, Corner_Data_R42 }, // Radius 42 + { 43, Corner_Data_R43 }, // Radius 43 + { 44, Corner_Data_R44 }, // Radius 44 + { 45, Corner_Data_R45 }, // Radius 45 + { 46, Corner_Data_R46 }, // Radius 46 + { 47, Corner_Data_R47 }, // Radius 47 + { 48, Corner_Data_R48 }, // Radius 48 + { 49, Corner_Data_R49 }, // Radius 49 + { 50, Corner_Data_R50 }, // Radius 50 + { 51, Corner_Data_R51 }, // Radius 51 + { 52, Corner_Data_R52 }, // Radius 52 + { 53, Corner_Data_R53 }, // Radius 53 + { 54, Corner_Data_R54 }, // Radius 54 + { 55, Corner_Data_R55 }, // Radius 55 + { 56, Corner_Data_R56 }, // Radius 56 + { 57, Corner_Data_R57 }, // Radius 57 + { 58, Corner_Data_R58 }, // Radius 58 + { 59, Corner_Data_R59 }, // Radius 59 + { 60, Corner_Data_R60 }, // Radius 60 + { 61, Corner_Data_R61 }, // Radius 61 + { 62, Corner_Data_R62 }, // Radius 62 + { 63, Corner_Data_R63 }, // Radius 63 + { 64, Corner_Data_R64 }, // Radius 64 + { 65, Corner_Data_R65 }, // Radius 65 + { 66, Corner_Data_R66 }, // Radius 66 + { 67, Corner_Data_R67 }, // Radius 67 + { 68, Corner_Data_R68 }, // Radius 68 + { 69, Corner_Data_R69 }, // Radius 69 + { 70, Corner_Data_R70 }, // Radius 70 + { 71, Corner_Data_R71 }, // Radius 71 + { 72, Corner_Data_R72 }, // Radius 72 + { 73, Corner_Data_R73 }, // Radius 73 + { 74, Corner_Data_R74 }, // Radius 74 + { 75, Corner_Data_R75 }, // Radius 75 + { 76, Corner_Data_R76 }, // Radius 76 + { 77, Corner_Data_R77 }, // Radius 77 + { 78, Corner_Data_R78 }, // Radius 78 + { 79, Corner_Data_R79 }, // Radius 79 + { 80, Corner_Data_R80 }, // Radius 80 + { 81, Corner_Data_R81 }, // Radius 81 + { 82, Corner_Data_R82 }, // Radius 82 + { 83, Corner_Data_R83 }, // Radius 83 + { 84, Corner_Data_R84 }, // Radius 84 + { 85, Corner_Data_R85 }, // Radius 85 + { 86, Corner_Data_R86 }, // Radius 86 + { 87, Corner_Data_R87 }, // Radius 87 + { 88, Corner_Data_R88 }, // Radius 88 + { 89, Corner_Data_R89 }, // Radius 89 + { 90, Corner_Data_R90 }, // Radius 90 + { 91, Corner_Data_R91 }, // Radius 91 + { 92, Corner_Data_R92 }, // Radius 92 + { 93, Corner_Data_R93 }, // Radius 93 + { 94, Corner_Data_R94 }, // Radius 94 + { 95, Corner_Data_R95 }, // Radius 95 + { 96, Corner_Data_R96 }, // Radius 96 + { 97, Corner_Data_R97 }, // Radius 97 + { 98, Corner_Data_R98 }, // Radius 98 + { 99, Corner_Data_R99 }, // Radius 99 + { 100, Corner_Data_R100 }, // Radius 100 + { 101, Corner_Data_R101 }, // Radius 101 + { 102, Corner_Data_R102 }, // Radius 102 + { 103, Corner_Data_R103 }, // Radius 103 + { 104, Corner_Data_R104 }, // Radius 104 + { 105, Corner_Data_R105 }, // Radius 105 + { 106, Corner_Data_R106 }, // Radius 106 + { 107, Corner_Data_R107 }, // Radius 107 + { 108, Corner_Data_R108 }, // Radius 108 + { 109, Corner_Data_R109 }, // Radius 109 + { 110, Corner_Data_R110 }, // Radius 110 + { 111, Corner_Data_R111 }, // Radius 111 + { 112, Corner_Data_R112 }, // Radius 112 + { 113, Corner_Data_R113 }, // Radius 113 + { 114, Corner_Data_R114 }, // Radius 114 + { 115, Corner_Data_R115 }, // Radius 115 + { 116, Corner_Data_R116 }, // Radius 116 + { 117, Corner_Data_R117 }, // Radius 117 + { 118, Corner_Data_R118 }, // Radius 118 + { 119, Corner_Data_R119 }, // Radius 119 + { 120, Corner_Data_R120 }, // Radius 120 + { 121, Corner_Data_R121 }, // Radius 121 + { 122, Corner_Data_R122 }, // Radius 122 + { 123, Corner_Data_R123 }, // Radius 123 + { 124, Corner_Data_R124 }, // Radius 124 + { 125, Corner_Data_R125 }, // Radius 125 + { 126, Corner_Data_R126 }, // Radius 126 + { 127, Corner_Data_R127 }, // Radius 127 + { 128, Corner_Data_R128 }, // Radius 128 + { 129, Corner_Data_R129 }, // Radius 129 + { 130, Corner_Data_R130 }, // Radius 130 + { 131, Corner_Data_R131 }, // Radius 131 + { 132, Corner_Data_R132 }, // Radius 132 + { 133, Corner_Data_R133 }, // Radius 133 + { 134, Corner_Data_R134 }, // Radius 134 + { 135, Corner_Data_R135 }, // Radius 135 + { 136, Corner_Data_R136 }, // Radius 136 + { 137, Corner_Data_R137 }, // Radius 137 + { 138, Corner_Data_R138 }, // Radius 138 + { 139, Corner_Data_R139 }, // Radius 139 + { 140, Corner_Data_R140 }, // Radius 140 + { 141, Corner_Data_R141 }, // Radius 141 + { 142, Corner_Data_R142 }, // Radius 142 + { 143, Corner_Data_R143 }, // Radius 143 + { 144, Corner_Data_R144 }, // Radius 144 + { 145, Corner_Data_R145 }, // Radius 145 + { 146, Corner_Data_R146 }, // Radius 146 + { 147, Corner_Data_R147 }, // Radius 147 + { 148, Corner_Data_R148 }, // Radius 148 + { 149, Corner_Data_R149 }, // Radius 149 + { 150, Corner_Data_R150 }, // Radius 150 + { 151, Corner_Data_R151 }, // Radius 151 + { 152, Corner_Data_R152 }, // Radius 152 + { 153, Corner_Data_R153 }, // Radius 153 + { 154, Corner_Data_R154 }, // Radius 154 + { 155, Corner_Data_R155 }, // Radius 155 + { 156, Corner_Data_R156 }, // Radius 156 + { 157, Corner_Data_R157 }, // Radius 157 + { 158, Corner_Data_R158 }, // Radius 158 + { 159, Corner_Data_R159 }, // Radius 159 + { 160, Corner_Data_R160 }, // Radius 160 + { 161, Corner_Data_R161 }, // Radius 161 + { 162, Corner_Data_R162 }, // Radius 162 + { 163, Corner_Data_R163 }, // Radius 163 + { 164, Corner_Data_R164 }, // Radius 164 + { 165, Corner_Data_R165 }, // Radius 165 + { 166, Corner_Data_R166 }, // Radius 166 + { 167, Corner_Data_R167 }, // Radius 167 + { 168, Corner_Data_R168 }, // Radius 168 + { 169, Corner_Data_R169 }, // Radius 169 + { 170, Corner_Data_R170 }, // Radius 170 + { 171, Corner_Data_R171 }, // Radius 171 + { 172, Corner_Data_R172 }, // Radius 172 + { 173, Corner_Data_R173 }, // Radius 173 + { 174, Corner_Data_R174 }, // Radius 174 + { 175, Corner_Data_R175 }, // Radius 175 + { 176, Corner_Data_R176 }, // Radius 176 + { 177, Corner_Data_R177 }, // Radius 177 + { 178, Corner_Data_R178 }, // Radius 178 + { 179, Corner_Data_R179 }, // Radius 179 + { 180, Corner_Data_R180 }, // Radius 180 + { 181, Corner_Data_R181 }, // Radius 181 + { 182, Corner_Data_R182 }, // Radius 182 + { 183, Corner_Data_R183 }, // Radius 183 + { 184, Corner_Data_R184 }, // Radius 184 + { 185, Corner_Data_R185 }, // Radius 185 + { 186, Corner_Data_R186 }, // Radius 186 + { 187, Corner_Data_R187 }, // Radius 187 + { 188, Corner_Data_R188 }, // Radius 188 + { 189, Corner_Data_R189 }, // Radius 189 + { 190, Corner_Data_R190 }, // Radius 190 + { 191, Corner_Data_R191 }, // Radius 191 + { 192, Corner_Data_R192 }, // Radius 192 + { 193, Corner_Data_R193 }, // Radius 193 + { 194, Corner_Data_R194 }, // Radius 194 + { 195, Corner_Data_R195 }, // Radius 195 + { 196, Corner_Data_R196 }, // Radius 196 + { 197, Corner_Data_R197 }, // Radius 197 + { 198, Corner_Data_R198 }, // Radius 198 + { 199, Corner_Data_R199 }, // Radius 199 + { 200, Corner_Data_R200 }, // Radius 200 + { 201, Corner_Data_R201 }, // Radius 201 + { 202, Corner_Data_R202 }, // Radius 202 + { 203, Corner_Data_R203 }, // Radius 203 + { 204, Corner_Data_R204 }, // Radius 204 + { 205, Corner_Data_R205 }, // Radius 205 + { 206, Corner_Data_R206 }, // Radius 206 + { 207, Corner_Data_R207 }, // Radius 207 + { 208, Corner_Data_R208 }, // Radius 208 + { 209, Corner_Data_R209 }, // Radius 209 + { 210, Corner_Data_R210 }, // Radius 210 + { 211, Corner_Data_R211 }, // Radius 211 + { 212, Corner_Data_R212 }, // Radius 212 + { 213, Corner_Data_R213 }, // Radius 213 + { 214, Corner_Data_R214 }, // Radius 214 + { 215, Corner_Data_R215 }, // Radius 215 + { 216, Corner_Data_R216 }, // Radius 216 + { 217, Corner_Data_R217 }, // Radius 217 + { 218, Corner_Data_R218 }, // Radius 218 + { 219, Corner_Data_R219 }, // Radius 219 + { 220, Corner_Data_R220 }, // Radius 220 + { 221, Corner_Data_R221 }, // Radius 221 + { 222, Corner_Data_R222 }, // Radius 222 + { 223, Corner_Data_R223 }, // Radius 223 + { 224, Corner_Data_R224 }, // Radius 224 + { 225, Corner_Data_R225 }, // Radius 225 + { 226, Corner_Data_R226 }, // Radius 226 + { 227, Corner_Data_R227 }, // Radius 227 + { 228, Corner_Data_R228 }, // Radius 228 + { 229, Corner_Data_R229 }, // Radius 229 + { 230, Corner_Data_R230 }, // Radius 230 + { 231, Corner_Data_R231 }, // Radius 231 + { 232, Corner_Data_R232 }, // Radius 232 + { 233, Corner_Data_R233 }, // Radius 233 + { 234, Corner_Data_R234 }, // Radius 234 + { 235, Corner_Data_R235 }, // Radius 235 + { 236, Corner_Data_R236 }, // Radius 236 + { 237, Corner_Data_R237 }, // Radius 237 + { 238, Corner_Data_R238 }, // Radius 238 + { 239, Corner_Data_R239 }, // Radius 239 + { 240, Corner_Data_R240 } // Radius 240 +}; + +#endif /* CORNER_LOOKUP_TABLES_H_ */ diff --git a/Firmware/Screens.h b/Firmware/Screens.h index 3f7cfb2..e16fad9 100644 --- a/Firmware/Screens.h +++ b/Firmware/Screens.h @@ -39,8 +39,19 @@ extern void (*_Screen_On_Object_Deselect)(Object_ID object_id); // List of all Screen Setups as extern extern void Screen_Setup_Loading(); extern void Screen_Setup_Menu_Main(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool do_menu_animation, uint32_t selected_entry); -extern void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); +extern void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); +extern void Screen_Setup_MIDI_Log(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); +extern void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); + +extern void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item); + +extern void Screen_Setup_Settings_MIDI(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item); +extern void Screen_Setup_Settings_MIDI_Config(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item); + +extern void Screen_Setup_Settings_About(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); + +extern void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, void (*return_function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t), int32_t return_value); extern void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, RGB_Color* rgb_color); diff --git a/Firmware/Screens_Display/Screen_Graph.c b/Firmware/Screens_Display/Screen_Graph.c new file mode 100644 index 0000000..d207b9e --- /dev/null +++ b/Firmware/Screens_Display/Screen_Graph.c @@ -0,0 +1,143 @@ +/* + * File: Screen_Graph.c + * + * Created: Created: Thursday August 2025 12:59:42 + * Author: Chris + */ + +// ============================================================================================ +// Includes +#include "../Screens.h" +#include "../UI_Control.h" +#include "../Command_Definition.h" +#include "../Display_Default_Configurations.h" + +#include "../Display.h" +#include "../Display_Objects.h" + +#include "../INA260.h" + + +// ============================================================================================ +// Defines +#define GRAPH_DATA_WDITH 200 + + +// ============================================================================================ +// Variables +extern const unsigned char _Font_DejaVu_Sans_Mono_10x17[]; + +static uint16_t _Data_BusVoltage[GRAPH_DATA_WDITH]; +static uint16_t _Data_BusVoltage_Threshold_Overvoltage[GRAPH_DATA_WDITH]; +static uint16_t _Data_BusVoltage_Threshold_Undervoltage[GRAPH_DATA_WDITH]; +static float _Current_BusVoltage_V; + + +// ============================================================================================ +// Function Declarations +void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); + +static void Screen_Tick (void); +static void Screen_Click (uint button_return_value); +static void Screen_Touch_Event (int16_t x, int16_t y); +static void Screen_Action_CW (Object_ID object_id); +static void Screen_Action_CCW (Object_ID object_id); +static void Screen_On_Object_Focused (Object_ID object_id); +static void Screen_On_Object_Defocused (Object_ID object_id); +static void Screen_On_Object_Select (Object_ID object_id); +static void Screen_On_Object_Deselect (Object_ID object_id); + + +/******************************************************************* + Functions +*******************************************************************/ +void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration) +{ + _Screen_Tick = Screen_Tick; + _Screen_Click = Screen_Click; + _Screen_Touch_Event = Screen_Touch_Event; + _Screen_Action_CW = Screen_Action_CW; + _Screen_Action_CCW = Screen_Action_CCW; + _Screen_On_Objects_Focused = Screen_On_Object_Focused; + _Screen_On_Objects_Defocused = Screen_On_Object_Defocused; + _Screen_On_Object_Select = Screen_On_Object_Select; + _Screen_On_Object_Deselect = Screen_On_Object_Deselect; + + Display_Objects_Clear(); + + Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration); + + + + ////////////////////////////// + // Add Display Objects here // + ////////////////////////////// + for(int i=0;iNumber = i+1; + E->Object_Number = Display_Objects_Add_Integer(LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, &E->Number, "%u:", Font_Number, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + + E->Data = 0; + E->Object_Data_Hex = Display_Objects_Add_Integer(LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, &E->Data, "0x%02X", Font_Data, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + E->Object_Data_Dec = Display_Objects_Add_Integer(LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, &E->Data, "(%u)", Font_Data, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + + E->Object_Type_Info = Display_Objects_Add_Text(LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, "Info here", Font_Info, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + + E->Timestamp = 0; + E->Object_Timestamp = Display_Objects_Add_Integer(LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, &E->Timestamp, "%-8u", Font_Data, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + E->Object_Timestamp_Text = Display_Objects_Add_Text(LEFT_TOP, BOTH_IN_PIXEL, 0,0, NOT_SELECTABLE, "Timestamp:", Font_Data, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + } + + _Object_Text_Bottom = Display_Objects_Add_Text(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 0, NOT_SELECTABLE, "List End", Font_10_0, DISPLAY_COLOR_BLACK, Style_Header, NO_ANIMATION); + _Object_Text_Return = Display_Objects_Add_Text(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 0, NOT_SELECTABLE, "Click to return", Font_10_0, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + + Update_Object_Coordinates(); + Display_Select_Object(); +} + +void Screen_Tick(void) +{ + Update_Object_Values(); +} + +void Screen_Click(uint button_return_value) +{ + +} + +void Screen_Action_CW(Object_ID object_id) +{ + _Y_Offest_Scroll -= _Y_Scroll_Speed; + Update_Object_Coordinates(); +} + +void Screen_Action_CCW(Object_ID object_id) +{ + _Y_Offest_Scroll += _Y_Scroll_Speed; + Update_Object_Coordinates(); +} + +void Screen_On_Object_Focused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Defocused (Object_ID object_id) +{ + +} + +void Screen_On_Object_Select(Object_ID object_id) +{ + +} + +void Screen_On_Object_Deselect(Object_ID object_id) +{ + Screen_Setup_Menu_Main(TRANSITION_RIGHT, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 0); +} + +/******************************************************************* + Internal Functions +*******************************************************************/ +void Update_Object_Coordinates(void) +{ + Display_Objects_Update_Coordinates(_Object_Text_Top, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offest_Scroll); + + for(uint i=0;iObject_Number , LEFT_TOP, BOTH_IN_PIXEL, _X_Number , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries); + Display_Objects_Update_Coordinates(E->Object_Data_Hex , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Hex , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries); + Display_Objects_Update_Coordinates(E->Object_Data_Dec , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Dec , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries); + Display_Objects_Update_Coordinates(E->Object_Type_Info , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Info , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 1 * _Y_Offset_Rows); + Display_Objects_Update_Coordinates(E->Object_Timestamp , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows); + Display_Objects_Update_Coordinates(E->Object_Timestamp_Text , LEFT_TOP, BOTH_IN_PIXEL, _X_Data_Timestamp_Text , _Y_Offset_1st_Entry + _Y_Offest_Scroll + i*_Y_Between_Entries + 2 * _Y_Offset_Rows); + } + + Display_Objects_Update_Coordinates(_Object_Text_Bottom, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + _Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries); + Display_Objects_Update_Coordinates(_Object_Text_Return, CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Offset_1st_Entry + _Y_Offest_Scroll + RECEIVED_MIDI_HISTORY_BUFFER_SIZE*_Y_Between_Entries + _Y_Offset_1st_Entry); +} + +void Update_Object_Values(void) +{ + for(uint i=0;iData != HISTORY_ENTRY_UNDEFINED) + { + E->Data = H->Data; + E->Timestamp = H->Timestamp_ms; + bool Success = Create_Info_Text((char *)Info_Text, i, (uint8_t)H->Data); + Display_Objects_Update_Text(E->Object_Type_Info, Info_Text); + + if(IS_MIDI_COMMAND((uint8_t)H->Data)) + { + Display_Objects_Update_Color(E->Object_Type_Info, DISPLAY_COLOR_GREENYELLOW); + } + else + { + if(Success) + { + Display_Objects_Update_Color(E->Object_Type_Info, DISPLAY_COLOR_CYAN); + } + else + { + Display_Objects_Update_Color(E->Object_Type_Info, DISPLAY_COLOR_RED); + } + } + } + else + { + Display_Objects_Update_Text(E->Object_Type_Info, "No Data"); + Display_Objects_Update_Color(E->Object_Type_Info, DISPLAY_COLOR_DARKGREY); + } + } +} + +bool Create_Info_Text(char* target_text, uint entry_id, uint8_t midi_data) +{ + if(IS_MIDI_DATA(midi_data)) + { + uint Data_Offset = 0; + for(uint i=0;i<3;i++) + { + Data_Offset++; + if(Check_Entry_Is_Command(entry_id + Data_Offset)) + { + return Create_Info_Data_Text(target_text, entry_id, Data_Offset, midi_data); + } + } + + sprintf(target_text, "Data"); + return true; + } + + + // Otherwise, it is a MIDI Command + uint8_t MIDI_Event = MIDI_EVENT_FROM_COMMAND(midi_data); + + if(IS_MIDI_COMMAND_WITH_CHANNEL(midi_data)) + { + uint8_t MIDI_Channel = MIDI_CHANNEL_FROM_COMMAND(midi_data) + 1; + + switch (MIDI_Event) + { + case MIDI_EVENT_NOTE_OFF: sprintf(target_text, "Note Off Ch%u" , MIDI_Channel); break; + case MIDI_EVENT_NOTE_ON: sprintf(target_text, "Note On Ch%u" , MIDI_Channel); break; + case MIDI_EVENT_POLYPHONIC_KEY_PRESSURE: sprintf(target_text, "Poly. Key Ch%u" , MIDI_Channel); break; + case MIDI_EVENT_CONTROL_CHANGE: sprintf(target_text, "Control Change Ch%u" , MIDI_Channel); break; + case MIDI_EVENT_PROGRAM_CHANGE: sprintf(target_text, "Program Change Ch%u" , MIDI_Channel); break; + case MIDI_EVENT_CHANNEL_PRESSURE: sprintf(target_text, "Channel Pressure Ch%u", MIDI_Channel); break; + case MIDI_EVENT_PITCH_BEND: sprintf(target_text, "Pitch Bend Ch%u" , MIDI_Channel); break; + + default: sprintf(target_text, " Ch%u" , MIDI_Channel); return false; + } + + return true; + } + + uint8_t MIDI_System_Message = MIDI_CHANNEL_FROM_COMMAND(midi_data); + + switch (MIDI_System_Message) + { + case MIDI_SYSTEM_EXCLUSIVE: sprintf(target_text, "System_Exclusive"); break; + case MIDI_SYSTEM_TIME_CODE_QUARTER_FRAME: sprintf(target_text, "Time Code Quarter Frame"); break; + case MIDI_SYSTEM_SONG_POSITION_POINTER: sprintf(target_text, "Song Position Pointer"); break; + case MIDI_SYSTEM_SONG_SELECT: sprintf(target_text, "Song Select"); break; + case MIDI_SYSTEM_TUNE_REQUEST: sprintf(target_text, "System Tune Request"); break; + case MIDI_SYSTEM_EXCLUSIVE_END: sprintf(target_text, "End of Exclusive"); break; + case MIDI_SYSTEM_TIMING_CLOCK: sprintf(target_text, "Timing Clock"); break; + case MIDI_SYSTEM_START: sprintf(target_text, "Start Sequence"); break; + case MIDI_SYSTEM_CONTINUE: sprintf(target_text, "Continue Sequence"); break; + case MIDI_SYSTEM_STOP: sprintf(target_text, "Stop Sequence"); break; + case MIDI_SYSTEM_ACTIVE_SENSING: sprintf(target_text, "Active Sensing"); break; + case MIDI_SYSTEM_RESET: sprintf(target_text, "Sytem Reset"); break; + + case MIDI_SYSTEM_UNDEFINED_1: + case MIDI_SYSTEM_UNDEFINED_2: + case MIDI_SYSTEM_UNDEFINED_3: + case MIDI_SYSTEM_UNDEFINED_4: sprintf(target_text, "Undefined (Reserved)"); break; + + default: sprintf(target_text, ""); return false; + } + + return true; +} + +bool Create_Info_Data_Text(char* target_text, uint entry_id, uint command_offset, uint8_t midi_data) +{ + if(entry_id + command_offset >= RECEIVED_MIDI_HISTORY_BUFFER_SIZE) + { + sprintf(target_text, "Error 0 -> Contact Chris"); + return false; + } + + uint8_t MIDI_Data_Command = (uint8_t)_MIDI_History_Buffer[entry_id + command_offset].Data; + uint8_t MIDI_Event = MIDI_EVENT_FROM_COMMAND(MIDI_Data_Command); + + if(IS_MIDI_COMMAND_WITH_CHANNEL(MIDI_Data_Command)) + { + switch (MIDI_Event) + { + case MIDI_EVENT_NOTE_OFF: + case MIDI_EVENT_NOTE_ON: + case MIDI_EVENT_POLYPHONIC_KEY_PRESSURE: + if(command_offset == 1) { sprintf(target_text, "Note %s%i", _MIDI_Note_List[midi_data].Tone_Name, _MIDI_Note_List[midi_data].Octave); return true; } else + if(command_offset == 2) { sprintf(target_text, "Velocity of %u", midi_data); return true; } + break; + + case MIDI_EVENT_CONTROL_CHANGE: + if(command_offset == 1) { sprintf(target_text, "Controller %u", midi_data); return true; } else + if(command_offset == 2) { sprintf(target_text, "Velocity of %u", midi_data); return true; } + break; + + case MIDI_EVENT_PROGRAM_CHANGE: + if(command_offset == 1) { sprintf(target_text, "Program %u", midi_data+1); return true; } + break; + + case MIDI_EVENT_CHANNEL_PRESSURE: + if(command_offset == 1) { sprintf(target_text, "Pressure value %u", midi_data); return true; } + break; + + case MIDI_EVENT_PITCH_BEND: + if(command_offset == 1) { sprintf(target_text, "Pitch upper value"); return true; } else + if(command_offset == 2) { sprintf(target_text, "Pitch lower value"); return true; } + break; + + default: + break; + } + } + else + { + uint8_t MIDI_System_Message = MIDI_CHANNEL_FROM_COMMAND(midi_data); + + switch (MIDI_System_Message) + { + case MIDI_SYSTEM_EXCLUSIVE: + sprintf(target_text, "System Message Data"); return true; + break; + + case MIDI_SYSTEM_TIME_CODE_QUARTER_FRAME: + if(command_offset == 1) { sprintf(target_text, "Type %u Value %u", (midi_data & 0x70) >> 4, (midi_data & 0x0F)); return true; } + break; + + case MIDI_SYSTEM_SONG_POSITION_POINTER: + if(command_offset == 1) { sprintf(target_text, "Beat upper value %u", midi_data); return true; } else + if(command_offset == 2) { sprintf(target_text, "Beat lower value %u", midi_data); return true; } + break; + + case MIDI_SYSTEM_SONG_SELECT: + if(command_offset == 1) { sprintf(target_text, "Selected song %u", midi_data); return true; } + break; + + default: + break; + } + } + + sprintf(target_text, "Unexpected MIDI Data"); + return false; +} + +bool Check_Entry_Is_Command(uint entry_id) +{ + if(entry_id >= RECEIVED_MIDI_HISTORY_BUFFER_SIZE) + { + return false; + } + + if(_MIDI_History_Buffer[entry_id].Data == HISTORY_ENTRY_UNDEFINED) + { + return false; + } + + return IS_MIDI_COMMAND((uint8_t)_MIDI_History_Buffer[entry_id].Data); +} \ No newline at end of file diff --git a/Firmware/Screens_Display/Screen_Menu_Main.c b/Firmware/Screens_Display/Screen_Menu_Main.c index ac204e0..0303377 100644 --- a/Firmware/Screens_Display/Screen_Menu_Main.c +++ b/Firmware/Screens_Display/Screen_Menu_Main.c @@ -68,7 +68,7 @@ static Configuration_Menu_Ring _Ring_Menu_Config = { .Selection_Ring_Diameter = 0, .Selection_Ring_Thickness = 3, - .Selection_Ring_Padding = 0, + .Selection_Ring_Padding = 2, .Selection_Scale = 1.15f, .Animation_Duration = 15, @@ -182,10 +182,10 @@ void Screen_On_Object_Deselect(Object_ID object_id) { switch (_Ring_Menu_Selected) { - case 0: break; - case 1: Screen_Setup_Settings(TRANSITION_UP, TRANSITION_UP, INOUT_SINE, 15); break; - case 2: break; - case 3: break; + case 0: Screen_Setup_MIDI_Log (TRANSITION_LEFT, TRANSITION_LEFT , SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break; + case 1: Screen_Setup_Settings (TRANSITION_UP, TRANSITION_UP , SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break; + case 2: Screen_Setup_Graph (TRANSITION_RIGHT, TRANSITION_RIGHT , SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break; + case 3: Screen_Setup_Mode (TRANSITION_DOWN, TRANSITION_DOWN , SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break; } Display_Select_Object(); diff --git a/Firmware/Screens_Display/Screen_Mode.c b/Firmware/Screens_Display/Screen_Mode.c new file mode 100644 index 0000000..ec3580f --- /dev/null +++ b/Firmware/Screens_Display/Screen_Mode.c @@ -0,0 +1,127 @@ +/* + * File: Screen_Mode.c + * + * Created: Created: Tuesday September 2025 19:44:30 + * Author: Chris + */ + + +// ============================================================================================ +// Includes +#include "../Screens.h" +#include "../UI_Control.h" +#include "../Display_Default_Configurations.h" + +#include "../Display.h" +#include "../Display_Objects.h" + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Variables + + +// ============================================================================================ +// Function Declarations +void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); + +static void Screen_Tick (void); +static void Screen_Click (uint button_return_value); +static void Screen_Touch_Event (int16_t x, int16_t y); +static void Screen_Action_CW (Object_ID object_id); +static void Screen_Action_CCW (Object_ID object_id); +static void Screen_On_Object_Focused (Object_ID object_id); +static void Screen_On_Object_Defocused (Object_ID object_id); +static void Screen_On_Object_Select (Object_ID object_id); +static void Screen_On_Object_Deselect (Object_ID object_id); + + +/******************************************************************* + Functions +*******************************************************************/ +void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration) +{ + _Screen_Tick = Screen_Tick; + _Screen_Click = Screen_Click; + _Screen_Touch_Event = Screen_Touch_Event; + _Screen_Action_CW = Screen_Action_CW; + _Screen_Action_CCW = Screen_Action_CCW; + _Screen_On_Objects_Focused = Screen_On_Object_Focused; + _Screen_On_Objects_Defocused = Screen_On_Object_Defocused; + _Screen_On_Object_Select = Screen_On_Object_Select; + _Screen_On_Object_Deselect = Screen_On_Object_Deselect; + + Display_Objects_Clear(); + Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration); + + + ////////////////////////////// + // Add Display Objects here // + ////////////////////////////// + + Display_Objects_Add_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_RED, 80, 80, 1, NO_STYLE, NO_ANIMATION); + // Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 80, 80, 10, 4, NO_STYLE, NO_ANIMATION); + // Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 100, 100, 15, 1, NO_STYLE, NO_ANIMATION); + // Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 80, 80, 5, 1, NO_STYLE, NO_ANIMATION); + // Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN , 80, 80, 10, 1, NO_STYLE, NO_ANIMATION); + // Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE , 60, 60, 5, 1, NO_STYLE, NO_ANIMATION); + + // Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE, 40, 5, NO_STYLE, NO_ANIMATION); + Display_Objects_Add_Circle_Filled(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE, 40, NO_STYLE, NO_ANIMATION); + // Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_ORANGE, 40, 1, NO_STYLE, NO_ANIMATION); + + Display_Select_Object(); +} + +void Screen_Tick(void) +{ + +} + +void Screen_Click(uint button_return_value) +{ + +} + +void Screen_Touch_Event(int16_t x, int16_t y) +{ + +} + +void Screen_Action_CW(Object_ID object_id) +{ + +} + +void Screen_Action_CCW(Object_ID object_id) +{ + +} + +void Screen_On_Object_Focused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Defocused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Select(Object_ID object_id) +{ + +} + +void Screen_On_Object_Deselect(Object_ID object_id) +{ + Screen_Setup_Menu_Main(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 3); +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ + diff --git a/Firmware/Screens_Display/Screen_Select_Bool.c b/Firmware/Screens_Display/Screen_Select_Bool.c new file mode 100644 index 0000000..74961dd --- /dev/null +++ b/Firmware/Screens_Display/Screen_Select_Bool.c @@ -0,0 +1,129 @@ +/* + * File: Screen_Select_Bool.c + * + * Created: Created: Thursday August 2025 16:03:21 + * Author: Chris + */ + +// ============================================================================================ +// Includes +#include "../Screens.h" +#include "../UI_Control.h" +#include "../Display_Default_Configurations.h" + +#include "../Display.h" +#include "../Display_Objects.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Variables +static void (*_Return_Function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t); +static int32_t _Return_Value; +static uint8_t* _Value; +static bool _Bool_Value; + + +// ============================================================================================ +// Function Declarations +void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, void (*return_function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t), int32_t return_value); + +static void Screen_Tick (void); +static void Screen_Click (uint button_return_value); +static void Screen_Touch_Event (int16_t x, int16_t y); +static void Screen_Action_CW (Object_ID object_id); +static void Screen_Action_CCW (Object_ID object_id); +static void Screen_On_Object_Focused (Object_ID object_id); +static void Screen_On_Object_Defocused (Object_ID object_id); +static void Screen_On_Object_Select (Object_ID object_id); +static void Screen_On_Object_Deselect (Object_ID object_id); + + +/******************************************************************* + Functions +*******************************************************************/ +void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, void (*return_function)(Screen_Transition_Direction, Screen_Transition_Direction, Easing, uint32_t, int32_t), int32_t return_value) +{ + _Screen_Tick = Screen_Tick; + _Screen_Click = Screen_Click; + _Screen_Touch_Event = Screen_Touch_Event; + _Screen_Action_CW = Screen_Action_CW; + _Screen_Action_CCW = Screen_Action_CCW; + _Screen_On_Objects_Focused = Screen_On_Object_Focused; + _Screen_On_Objects_Defocused = Screen_On_Object_Defocused; + _Screen_On_Object_Select = Screen_On_Object_Select; + _Screen_On_Object_Deselect = Screen_On_Object_Deselect; + + Display_Objects_Clear(); + Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration); + + + ////////////////////////////// + // Add Display Objects here // + ////////////////////////////// + + _Return_Function = return_function; + _Return_Value = return_value; + _Value = value; + _Bool_Value = (*_Value) > 0; + + Display_Objects_Add_Select_YesNo(title, title_length, &_Bool_Value, &_Configuration_Default_Select_YesNo); + + Display_Select_Object(); +} + +void Screen_Tick(void) +{ + +} + +void Screen_Click(uint button_return_value) +{ + +} + +void Screen_Touch_Event(int16_t x, int16_t y) +{ + +} + +void Screen_Action_CW(Object_ID object_id) +{ + (*_Value) ^= 0x01; + + _Bool_Value = (*_Value) > 0; +} + +void Screen_Action_CCW(Object_ID object_id) +{ + Screen_Action_CW(object_id); +} + +void Screen_On_Object_Focused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Defocused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Select(Object_ID object_id) +{ + +} + +void Screen_On_Object_Deselect(Object_ID object_id) +{ + _Return_Function(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Value); +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ + diff --git a/Firmware/Screens_Display/Screen_Settings.c b/Firmware/Screens_Display/Screen_Settings.c index 07e347b..7177aed 100644 --- a/Firmware/Screens_Display/Screen_Settings.c +++ b/Firmware/Screens_Display/Screen_Settings.c @@ -61,7 +61,7 @@ static int32_t _Selected_Item; // ============================================================================================ // Function Declarations -void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); +void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item); static void Screen_Tick (void); static void Screen_Click (uint button_return_value); @@ -78,7 +78,7 @@ static void Screen_On_Object_Deselect (Object_ID object_id); /******************************************************************* Functions *******************************************************************/ -void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration) +void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item) { _Screen_Tick = Screen_Tick; _Screen_Click = Screen_Click; @@ -109,7 +109,7 @@ void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Tra _Object_Menu = Display_Objects_Add_Menu_Icon_Row(_Icon_Row_Items, MENU_ENTRY_COUNT, &_Selected_Item, &_Configuration_Menu_Icon_Row); // Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_FROM_RGB888(255, 223, 0), 70, 70, 21, 4, NO_STYLE, NO_ANIMATION); - _Selected_Item = 0; + _Selected_Item = selected_item; Display_Select_First_Object(); Display_Select_Object(); @@ -159,13 +159,13 @@ void Screen_On_Object_Deselect(Object_ID object_id) { switch (_Selected_Item) { - case 0: break; + case 0: Screen_Setup_Settings_MIDI(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break; case 1: break; case 2: break; case 3: break; case 4: break; - case 5: break; - case 6: Screen_Setup_Menu_Main(TRANSITION_DOWN, TRANSITION_DOWN, INOUT_SINE, 15, false, 1); break; + case 5: Screen_Setup_Settings_About(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break; + case 6: Screen_Setup_Menu_Main(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 1); break; } Display_Select_Object(); diff --git a/Firmware/Screens_Display/Screen_Settings_About.c b/Firmware/Screens_Display/Screen_Settings_About.c new file mode 100644 index 0000000..8bc4960 --- /dev/null +++ b/Firmware/Screens_Display/Screen_Settings_About.c @@ -0,0 +1,153 @@ +/* + * Screen_01.c + * + * Created: Fri Apr 02 2021 14:34:01 + * Author Chris + */ + +// ============================================================================================ +// Includes +#include "../Screens.h" +#include "../UI_Control.h" +#include "../Display_Default_Configurations.h" + +#include "../Display.h" +#include "../Display_Objects.h" + +#include "../Version.h" + +#include "pico/types.h" +#include "pico/time.h" + + +// ============================================================================================ +// Defines + + +// ============================================================================================ +// Variables +extern const unsigned char _Font_DejaVu_Sans_Mono_6x12[]; +extern const unsigned char _Font_DejaVu_Sans_Mono_7x15[]; +extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_7x15[]; +extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_15x26[]; + +static uint _Up_Time_s; +static Object_ID _Object_Up_Time_s; +static Object_ID _Object_Frame_Counter; + + +// ============================================================================================ +// Function Declarations +void Screen_Setup_Settings_About(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration); + +static void Screen_Tick (void); +static void Screen_Click (uint button_return_value); +static void Screen_Action_CW (Object_ID object_id); +static void Screen_Action_CCW (Object_ID object_id); +static void Screen_On_Object_Focused (Object_ID object_id); +static void Screen_On_Object_Defocused (Object_ID object_id); +static void Screen_On_Object_Select (Object_ID object_id); +static void Screen_On_Object_Deselect (Object_ID object_id); + + +/******************************************************************* + Functions +*******************************************************************/ +void Screen_Setup_Settings_About(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration) +{ + _Screen_Tick = Screen_Tick; + _Screen_Click = Screen_Click; + _Screen_Action_CW = Screen_Action_CW; + _Screen_Action_CCW = Screen_Action_CCW; + _Screen_On_Objects_Focused = Screen_On_Object_Focused; + _Screen_On_Objects_Defocused = Screen_On_Object_Defocused; + _Screen_On_Object_Select = Screen_On_Object_Select; + _Screen_On_Object_Deselect = Screen_On_Object_Deselect; + + Display_Objects_Clear(); + Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration); + + Font_ID Font_12_0 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 0); + Font_ID Font_15_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_7x15, 1); + Font_ID Font_Bold_15_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_7x15, 1); + Font_ID Font_Bold_26_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0); + + Font_ID Font_Title = Font_15_1; + Font_ID Font_Value = Font_Bold_15_1; + Font_ID Font_Heading = Font_Bold_26_1; + + ////////////////////////////// + // Add Display Objects here // + ////////////////////////////// + uint16_t Y = 35; + + Display_Objects_Add_Text(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 20, NOT_SELECTABLE, "MIDI Lighter", Font_Heading, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + + // === Up Time === + Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, Y-1, NOT_SELECTABLE, "Up Time", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + _Object_Up_Time_s = Display_Objects_Add_Integer(CENTER_TOP, BOTH_IN_PERCENT, 50, Y, NOT_SELECTABLE, &_Up_Time_s, "%us", Font_Value, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + Y += 20; + + // === Frame Counter === + Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, Y-1, NOT_SELECTABLE, "#Frames", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + _Object_Frame_Counter = Display_Objects_Add_Integer(CENTER_TOP, BOTH_IN_PERCENT, 50, Y, NOT_SELECTABLE, (int*)Display_Get_Frame_Counter_Reference(), "%u", Font_Value, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + Y += 20; + + // === Version === + Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, Y-1, NOT_SELECTABLE, "Version", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + Display_Objects_Add_Text(CENTER_TOP, BOTH_IN_PERCENT, 50, Y, NOT_SELECTABLE, VERSION_BUILD_STRING, Font_Value, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION); + Y += 20; + + // === Text === + Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 95, NOT_SELECTABLE, "Click to return", Font_12_0, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + + + _Up_Time_s = to_ms_since_boot(get_absolute_time()) / 1000u; +} + +void Screen_Tick(void) +{ + _Up_Time_s = to_ms_since_boot(get_absolute_time()) / 1000u; + + Display_Objects_Update_Coordinates(_Object_Up_Time_s, CENTER_TOP, BOTH_IN_PERCENT, 50, 35); + Display_Objects_Update_Coordinates(_Object_Frame_Counter, CENTER_TOP, BOTH_IN_PERCENT, 50, 35 + 20); +} + +void Screen_Click(uint button_return_value) +{ + +} + +void Screen_Action_CW(Object_ID object_id) +{ + +} + +void Screen_Action_CCW(Object_ID object_id) +{ + +} + +void Screen_On_Object_Focused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Defocused (Object_ID object_id) +{ + +} + +void Screen_On_Object_Select(Object_ID object_id) +{ + Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 5); +} + +void Screen_On_Object_Deselect(Object_ID object_id) +{ + +} + +/******************************************************************* + Internal Functions +*******************************************************************/ diff --git a/Firmware/Screens_Display/Screen_Settings_MIDI.c b/Firmware/Screens_Display/Screen_Settings_MIDI.c new file mode 100644 index 0000000..f5a78a7 --- /dev/null +++ b/Firmware/Screens_Display/Screen_Settings_MIDI.c @@ -0,0 +1,144 @@ +/* + * File: Screen_Settings_MIDI.c + * + * Created: Created: Thursday August 2025 14:24:40 + * Author: Chris + */ + +// ============================================================================================ +// Includes +#include "../Screens.h" +#include "../UI_Control.h" +#include "../Display_Default_Configurations.h" + +#include "../Display.h" +#include "../Display_Objects.h" + + +// ============================================================================================ +// Defines +#define MENU_ENTRY_COUNT 4 +#define MENU_CHAR_LENGTH 11 + + +// ============================================================================================ +// Variables +extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_15x26[]; + +static int32_t _Selected_Item; + +static char _Menu_Titles[MENU_ENTRY_COUNT][MENU_CHAR_LENGTH] = { + { "MIDI Config" }, + { "Color Notes" }, + { "Pause Light" }, + { "Back " } +}; + + +// ============================================================================================ +// Function Declarations +void Screen_Setup_Settings_MIDI(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item); + +static void Screen_Tick (void); +static void Screen_Click (uint button_return_value); +static void Screen_Touch_Event (int16_t x, int16_t y); +static void Screen_Action_CW (Object_ID object_id); +static void Screen_Action_CCW (Object_ID object_id); +static void Screen_On_Object_Focused (Object_ID object_id); +static void Screen_On_Object_Defocused (Object_ID object_id); +static void Screen_On_Object_Select (Object_ID object_id); +static void Screen_On_Object_Deselect (Object_ID object_id); + + +/******************************************************************* + Functions +*******************************************************************/ +void Screen_Setup_Settings_MIDI(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item) +{ + _Screen_Tick = Screen_Tick; + _Screen_Click = Screen_Click; + _Screen_Touch_Event = Screen_Touch_Event; + _Screen_Action_CW = Screen_Action_CW; + _Screen_Action_CCW = Screen_Action_CCW; + _Screen_On_Objects_Focused = Screen_On_Object_Focused; + _Screen_On_Objects_Defocused = Screen_On_Object_Defocused; + _Screen_On_Object_Select = Screen_On_Object_Select; + _Screen_On_Object_Deselect = Screen_On_Object_Deselect; + + Display_Objects_Clear(); + Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration); + + + ////////////////////////////// + // Add Display Objects here // + ////////////////////////////// + + Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0); + + Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "MIDI", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + Display_Objects_Add_Select_List((char*)_Menu_Titles, MENU_ENTRY_COUNT, MENU_CHAR_LENGTH, &_Selected_Item, &_Configuration_Default_Select_List); + + _Selected_Item = selected_item; + + Display_Select_First_Object(); + Display_Select_Object(); +} + +void Screen_Tick(void) +{ + +} + +void Screen_Click(uint button_return_value) +{ + +} + +void Screen_Touch_Event(int16_t x, int16_t y) +{ + +} + +void Screen_Action_CW(Object_ID object_id) +{ + UI_Control_Selector_Inc(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false); +} + +void Screen_Action_CCW(Object_ID object_id) +{ + UI_Control_Selector_Dec(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false); +} + +void Screen_On_Object_Focused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Defocused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Select(Object_ID object_id) +{ + +} + +void Screen_On_Object_Deselect(Object_ID object_id) +{ + switch (_Selected_Item) + { + case 0: Screen_Setup_Settings_MIDI_Config(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break; + case 1: break; + case 2: break; + case 3: Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break; + } + + Display_Select_Object(); +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ + diff --git a/Firmware/Screens_Display/Screen_Settings_MIDI_Config.c b/Firmware/Screens_Display/Screen_Settings_MIDI_Config.c new file mode 100644 index 0000000..b5859fe --- /dev/null +++ b/Firmware/Screens_Display/Screen_Settings_MIDI_Config.c @@ -0,0 +1,147 @@ +/* + * File: Screen_Settings_MIDI_Config.c + * + * Created: Created: Thursday August 2025 15:53:58 + * Author: Chris + */ + +// ============================================================================================ +// Includes +#include "../Screens.h" +#include "../UI_Control.h" +#include "../Display_Default_Configurations.h" + +#include "../Display.h" +#include "../Display_Objects.h" + +#include "../EEPROM_M24C64.h" + + +// ============================================================================================ +// Defines +#define MENU_ENTRY_COUNT 4 +#define MENU_CHAR_LENGTH 13 + + +// ============================================================================================ +// Variables +extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[]; +extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_15x26[]; + +static int32_t _Selected_Item; + +static char _Menu_Titles[MENU_ENTRY_COUNT][MENU_CHAR_LENGTH] = { + { "MIDI Channel " }, + { "Select Octave" }, + { "Skip Note Off" }, + { "Back " } +}; + + +// ============================================================================================ +// Function Declarations +void Screen_Setup_Settings_MIDI_Config(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item); + +static void Screen_Tick (void); +static void Screen_Click (uint button_return_value); +static void Screen_Touch_Event (int16_t x, int16_t y); +static void Screen_Action_CW (Object_ID object_id); +static void Screen_Action_CCW (Object_ID object_id); +static void Screen_On_Object_Focused (Object_ID object_id); +static void Screen_On_Object_Defocused (Object_ID object_id); +static void Screen_On_Object_Select (Object_ID object_id); +static void Screen_On_Object_Deselect (Object_ID object_id); + + +/******************************************************************* + Functions +*******************************************************************/ +void Screen_Setup_Settings_MIDI_Config(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item) +{ + _Screen_Tick = Screen_Tick; + _Screen_Click = Screen_Click; + _Screen_Touch_Event = Screen_Touch_Event; + _Screen_Action_CW = Screen_Action_CW; + _Screen_Action_CCW = Screen_Action_CCW; + _Screen_On_Objects_Focused = Screen_On_Object_Focused; + _Screen_On_Objects_Defocused = Screen_On_Object_Defocused; + _Screen_On_Object_Select = Screen_On_Object_Select; + _Screen_On_Object_Deselect = Screen_On_Object_Deselect; + + Display_Objects_Clear(); + Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration); + + + ////////////////////////////// + // Add Display Objects here // + ////////////////////////////// + Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0); + + + Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "MIDI Config", Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION); + Display_Objects_Add_Select_List((char*)_Menu_Titles, MENU_ENTRY_COUNT, MENU_CHAR_LENGTH, &_Selected_Item, &_Configuration_Default_Select_List); + + _Selected_Item = selected_item; + + Display_Select_First_Object(); + Display_Select_Object(); +} + +void Screen_Tick(void) +{ + +} + +void Screen_Click(uint button_return_value) +{ + +} + +void Screen_Touch_Event(int16_t x, int16_t y) +{ + +} + +void Screen_Action_CW(Object_ID object_id) +{ + UI_Control_Selector_Inc(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false); +} + +void Screen_Action_CCW(Object_ID object_id) +{ + UI_Control_Selector_Dec(&_Selected_Item, 0, MENU_ENTRY_COUNT-1, false); +} + +void Screen_On_Object_Focused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Defocused(Object_ID object_id) +{ + +} + +void Screen_On_Object_Select(Object_ID object_id) +{ + +} + +void Screen_On_Object_Deselect(Object_ID object_id) +{ + switch (_Selected_Item) + { + case 0: break; + case 1: break; + case 2: Screen_Setup_Select_Bool(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, "Skip Note Off?", 14, (uint8_t*)&_EEPROM_Content.Channel_MIDI_Configuration->Skip_Note_Off_Event, Screen_Setup_Settings_MIDI_Config, 2); break; + case 3: Screen_Setup_Settings_MIDI(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break; + } + + Display_Select_Object(); +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ + diff --git a/Firmware/Switch.c b/Firmware/Switch.c new file mode 100644 index 0000000..14874a5 --- /dev/null +++ b/Firmware/Switch.c @@ -0,0 +1,95 @@ +/* + * Switch.c + * + * Created: Sat Jan 28 2023 15:21:38 + * Author Chris + */ +// ============================================================================================ +// Includes +#include "Switch.h" + +#include "pico/time.h" +#include "pico/types.h" +#include "pico/stdlib.h" +#include "hardware/gpio.h" + + +// ============================================================================================ +// Defines +#define SWITCH_GPIO 23 + +#define GPIO_IRQ_LEVEL_LOW 1 +#define GPIO_IRQ_LEVEL_HIGH 2 +#define GPIO_IRQ_EDGE_FALL 4 +#define GPIO_IRQ_EDGE_RISE 8 + +#define SWITCH_IDLE 1 +#define SWITCH_PRESSED 0 + +#define DEBOUNCE_TIME_SWITCH_MS 300 + + +// ============================================================================================ +// Variables +volatile uint32_t _Debounce_Time_Switch_ms; +volatile bool _Switch_Press_Occurred; + + +// ============================================================================================ +// Function Declarations + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ + +// Interrupt Service Routine from Rotary Encoder also used for this one + +// void ISR_Switch(uint gpio, uint32_t events) +// { +// if(gpio == SWITCH_GPIO) +// { +// uint32_t Current_Time_ms = to_ms_since_boot(get_absolute_time()); + +// if(Current_Time_ms < _Debounce_Time_Switch_ms) +// { +// return; +// } + +// _Switch_Press_Occurred = true; + +// _Debounce_Time_Switch_ms = Current_Time_ms + DEBOUNCE_TIME_SWITCH_MS; +// } +// } + +/******************************************************************* + Functions +*******************************************************************/ +void Switch_Init(bool use_pullup) +{ + _Debounce_Time_Switch_ms = 0; + _Switch_Press_Occurred = false; + + gpio_init(SWITCH_GPIO); gpio_set_dir(SWITCH_GPIO, false); + + if(use_pullup == SWITCH_USE_INTERNAL_PULLUP) { + gpio_pull_up(SWITCH_GPIO); + } + + // ISR from Rotery Encoder used for Switch as well. See file Rotary_Encoder.c + gpio_set_irq_enabled(SWITCH_GPIO, GPIO_IRQ_EDGE_FALL, true); +} + +bool Switch_Press_Occurred(void) +{ + bool Return_Value = _Switch_Press_Occurred; + + _Switch_Press_Occurred = false; + + return Return_Value; +} + + +/******************************************************************* + Internal Functions +*******************************************************************/ \ No newline at end of file diff --git a/Firmware/Switch.h b/Firmware/Switch.h new file mode 100644 index 0000000..5dce0be --- /dev/null +++ b/Firmware/Switch.h @@ -0,0 +1,31 @@ +/* + * Switch.h + * + * Created: Sat Jan 28 2023 15:21:20 + * Author Chris + */ +#ifndef SWITCH_H_ +#define SWITCH_H_ + +// ============================================================================================ +// Includes +#include + + +// ============================================================================================ +// Defines +#define SWITCH_USE_INTERNAL_PULLUP true +#define SWITCH_NO_INTERNAL_PULLUP false + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void Switch_Init(bool use_pullup); + +bool Switch_Press_Occurred(void); + +#endif /* SWITCH_H_ */ diff --git a/Firmware/UART0.c b/Firmware/UART0.c new file mode 100644 index 0000000..3eacf4e --- /dev/null +++ b/Firmware/UART0.c @@ -0,0 +1,200 @@ +/* + * UART0.c + * + * Created: Mon May 03 2021 19:57:05 + * Author Chris + */ +#include "UART0.h" + +#include "pico/stdlib.h" +#include "hardware/irq.h" +#include "hardware/uart.h" + + +// ============================================================================================ +// Defines +#define UART_ID uart0 +/* + Baudrate is supposed to be 1000000 (1 Mio.). Due to the overclocking and the not adjusted peripeheral clock (See Clock.c) + a alternative baudrate has to be defined in order to acheive a baudrate of 1000000. The given values has indentified + experimentally by measuring via the logic analyzer, +*/ +#define BAUD_RATE 31250u +#define DATA_BITS 8 +#define STOP_BITS 1 +#define PARITY UART_PARITY_NONE + +#define UART_TX_PIN 28 // Not connected +#define UART_RX_PIN 17 + +#define UART_BUFFER_SIZE 128 + + +// ============================================================================================ +// Variables +struct UART_BUFFER_s +{ + uint8_t Data[UART_BUFFER_SIZE]; + uint8_t Read; + uint8_t Write; +} _UART_Buffer; + +volatile uint _Actual_Baudrate; + + +// ============================================================================================ +// Function Declarations + + +/******************************************************************* + Interrupt Service Routines +*******************************************************************/ +void UART0_RX_ISR() +{ + while(uart_is_readable(UART_ID)) + { + // Fetch the Received Byte + _UART_Buffer.Data[_UART_Buffer.Write++] = uart_getc(UART_ID); + + if(_UART_Buffer.Write == UART_BUFFER_SIZE) + { + _UART_Buffer.Write = 0; + } + } +} + + +/******************************************************************* + Functions +*******************************************************************/ +void UART0_Init(void) +{ + _UART_Buffer.Read = 0; + _UART_Buffer.Write = 0; + + uart_init(UART_ID, 2400); + + // Only Receive is needed for MIDI function +// gpio_set_function(UART_TX_PIN, GPIO_FUNC_UART); + gpio_set_function(UART_RX_PIN, GPIO_FUNC_UART); + + _Actual_Baudrate = uart_set_baudrate(UART_ID, BAUD_RATE); + + // Set UART flow control CTS/RTS, we don't want these, so turn them off + uart_set_hw_flow(UART_ID, false, false); + + // Set our data format + uart_set_format(UART_ID, DATA_BITS, STOP_BITS, PARITY); + + // Turn off FIFO's - we want to do this character by character + uart_set_fifo_enabled(UART_ID, false); + + // Select correct interrupt for the UART we are using + int UART_IRQ = UART_ID == uart0 ? UART0_IRQ : UART1_IRQ; + + // And set up and enable the interrupt handlers + irq_set_exclusive_handler(UART_IRQ, UART0_RX_ISR); + irq_set_enabled(UART_IRQ, true); + + // Now enable the UART to send interrupts - RX only + uart_set_irq_enables(UART_ID, true, false); +} + +uint UART0_Get_Actual_Baudrate(void) +{ + return _Actual_Baudrate; +} + +void UART0_Send_Byte(uint8_t byte) +{ + while (!uart_is_writable(UART_ID)) + { + tight_loop_contents(); + } + + uart_putc(UART_ID, (char)byte); +} + +void UART0_Send_Array(uint8_t* array, uint length) +{ + for(uint16_t i=0;i0) + { + UART0_SEND_STRING((uint8_t*)"0x"); + } + + for(i=0;i> ((numbers-i-1) * 4)) & 0x0F; + + if(Hex_Number < 10) + Hex_Number = '0' + Hex_Number; + else + Hex_Number = 'A' + (Hex_Number - 10); + + UART0_Send_Byte((uint8_t)Hex_Number); + } +} + +uint UART0_Data_Available(void) +{ + if(_UART_Buffer.Write >= _UART_Buffer.Read) + { + return (_UART_Buffer.Write - _UART_Buffer.Read); + } + else + { + return ((_UART_Buffer.Write + UART_BUFFER_SIZE) - _UART_Buffer.Read); + } +} + +uint8_t UART0_Get_Byte(void) +{ + uint8_t Return_Value = 0; + + if(UART0_Data_Available() > 0) + { + Return_Value = _UART_Buffer.Data[_UART_Buffer.Read++]; + + if(_UART_Buffer.Read == UART_BUFFER_SIZE) + { + _UART_Buffer.Read = 0; + } + } + + return Return_Value; +} + +/******************************************************************* + Internal Functions +*******************************************************************/ \ No newline at end of file diff --git a/Firmware/UART0.h b/Firmware/UART0.h new file mode 100644 index 0000000..39543ce --- /dev/null +++ b/Firmware/UART0.h @@ -0,0 +1,41 @@ +/* + * UART0.h + * + * Created: Mon May 03 2021 19:57:01 + * Author Chris + */ +#ifndef UART0_H_ +#define UART0_H_ + + +// ============================================================================================ +// Includes +#include +#include "pico/types.h" + + +// ============================================================================================ +// Defines +#define UART0_TERMINATOR 0x0D +#define UART0_SEND_STRING( _str_ ) UART0_Send_Array( _str_ , sizeof( _str_ )-1) +#define UART0_SEND_TERMINATOR() UART0_Send_Byte(UART0_TERMINATOR) + + +// ============================================================================================ +// Datatypes + + +// ============================================================================================ +// Function Declarations +void UART0_Init(void); +uint UART0_Get_Actual_Baudrate(void); + +void UART0_Send_Byte (uint8_t byte); +void UART0_Send_Array (uint8_t* array, uint length); +void UART0_Send_Int_Dec (uint val, uint8_t numbers); +void UART0_Send_Int_Hex (uint val, uint8_t numbers, uint8_t Send_0x); + +uint UART0_Data_Available(void); +uint8_t UART0_Get_Byte (void); + +#endif /* UART0_H_ */ \ No newline at end of file diff --git a/Firmware/build/build_number.txt b/Firmware/build/build_number.txt index 7e6ed83..d9d41ad 100644 --- a/Firmware/build/build_number.txt +++ b/Firmware/build/build_number.txt @@ -1 +1 @@ -11 +223 diff --git a/Firmware/main.c b/Firmware/main.c index 857b59b..45322d3 100644 --- a/Firmware/main.c +++ b/Firmware/main.c @@ -11,14 +11,22 @@ #include "pico/stdlib.h" -#include "INA260.h" +#include "Core1.h" +#include "Core1_LED_Enable.h" #include "I2C_Master.h" + +#include "Command.h" #include "UI_Control.h" +#include "Mode_Manager.h" + +#include "INA260.h" +#include "Switch.h" +#include "EEPROM_M24C64.h" #include "Rotary_Encoder.h" #include "Display.h" #include "Display_SPI.h" -#include "Display_Shapes.h" +#include "Display_Image.h" #include "Screens.h" #include "USB_Serial.h" @@ -48,12 +56,19 @@ // ============================================================================================ // Variables -volatile bool _Timer_Fired = false; +static bool _Timer_Fired = false; +static struct repeating_timer _Timer; + +extern uint16_t _Image_Power_Critical_32x32[]; +extern uint16_t _Image_Power_Overvoltage_32x32[]; +extern uint16_t _Image_Power_Undervoltage_32x32[]; +extern uint16_t _Image_Power_Unplugged_32x32[]; // ============================================================================================ // Function Declarations void Check_For_Serial_Input(void); +void Display_Start_Buffer_Readout(void); /******************************************************************* @@ -61,7 +76,7 @@ void Check_For_Serial_Input(void); *******************************************************************/ bool ISR_Repeating_Timer(struct repeating_timer *t) { - LEDG_TOGGLE; + LEDR_TOGGLE; _Timer_Fired = true; return true; } @@ -84,26 +99,40 @@ int main(void) // USB Serial ================================================= USB_Serial_Init(); - // Rotary Encoder ============================================= - Rotary_Encoder_Init(); - // I2C Master ============================================= - I2CM_Init(false); + I2CM_Init(I2C_NO_INTERNAL_PULLUP); + + // EEPROM ================================================= + EEPROM_Init(); // INA 260 ============================================= INA260_Init(); + // Core 1 ================================================= + multicore_launch_core1(Core1_Main); + + // Command ================================================= + Command_Init(); + // UI Control ================================================= UI_Control_Init(); // Display ================================================= Display_Init(DISPLAY_COLOR_BLACK, true, false); // Screen_Setup_Loading(); - Screen_Setup_Menu_Main(TRANSITION_NONE, TRANSITION_NONE, LINEAR, 0, false, 0); + Screen_Setup_Menu_Main(TRANSITION_NONE, TRANSITION_NONE, LINEAR, 0, false, 3); + // Rotary Encoder ============================================= + Rotary_Encoder_Init(); + + // Switch ================================================= + Switch_Init(SWITCH_NO_INTERNAL_PULLUP); + + // Mode Manager ============================================= + Mode_Manager_Init(); + // Repeating Timer ============================================= - struct repeating_timer Timer; - add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &Timer); + add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer); while (1) @@ -119,6 +148,10 @@ int main(void) _Screen_Tick(); UI_Control_Acceleration_Update(CURRENT_TIME_ms); + + INA260_Read_BusVoltage(); + INA260_Read_Current(); + Command_Issue_Set_Request(MULTICORE_COMMAND_SET_INA260_BUSVOLTAGE, 0, INA260_Get_BusVoltage_mV()); } // Add functions here to execute during the DMA Transfer @@ -130,7 +163,23 @@ int main(void) if(Display_Send_Buffer_Completed()) { TRIGGER_ON; + Command_Issue_Get_Request(MULTICORE_COMMAND_GET_LED_POWER_ERROR, 0); Display_Render_Objects(); + LED_Power_Error Error = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_LED_POWER_ERROR, 100); + + uint16_t *Image = NULL; + + switch (Error) + { + case BUS_NO_SUPPLY: Image = _Image_Power_Unplugged_32x32; break; + case BUS_UNDERVOLTAGE: Image = _Image_Power_Undervoltage_32x32; break; + case BUS_OVERVOLTAGE: Image = _Image_Power_Overvoltage_32x32; break; + case BUS_VOLTAGE_MEASUREMENT: Image = _Image_Power_Critical_32x32; break; + } + + if(Image != NULL && Display_Screen_Transition_Ongoing() == false) { + Display_Image_Draw_Color(DISPLAY_X_CENTER + 50, 30, Image); + } TRIGGER_OFF; } else @@ -154,6 +203,8 @@ int main(void) void Check_For_Serial_Input(void) { + int Analog_Data = -1; + while(USB_Serial_Available()) { uint8_t USB_Data = USB_Serial_Get_Byte(); @@ -165,10 +216,15 @@ void Check_For_Serial_Input(void) USB_SERIAL_SEND_TERMINATOR(); break; - case 'b': - USB_Serial_Send_Int_Hex(INA260_REG_MFG_UID, 2, true); USB_SERIAL_SEND_STRING(": "); USB_Serial_Send_Int_Hex(INA260_Test_Read(INA260_REG_MFG_UID), 4, true); USB_SERIAL_SEND_TERMINATOR(); - USB_Serial_Send_Int_Hex(INA260_REG_DIE_UID, 2, true); USB_SERIAL_SEND_STRING(": "); USB_Serial_Send_Int_Hex(INA260_Test_Read(INA260_REG_DIE_UID), 4, true); USB_SERIAL_SEND_TERMINATOR(); - USB_SERIAL_SEND_TERMINATOR(); + case 'b': // New command for buffer readout + Display_Start_Buffer_Readout(); + break; + + case 'c': + Command_Issue_Get_Request(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE, 0); + Analog_Data = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE, 100); + USB_SERIAL_SEND_STRING("Analog: "); USB_Serial_Send_Int_Dec(Analog_Data, 5); USB_SERIAL_SEND_STRING("mV"); USB_SERIAL_SEND_TERMINATOR(); + USB_SERIAL_SEND_STRING("INA260: "); USB_Serial_Send_Int_Dec(INA260_Get_BusVoltage_mV(), 5); USB_SERIAL_SEND_STRING("mV"); USB_SERIAL_SEND_TERMINATOR(); break; default: @@ -182,3 +238,29 @@ void Check_For_Serial_Input(void) } } } + +void Display_Start_Buffer_Readout(void) +{ + cancel_repeating_timer(&_Timer); + + // Send header + USB_SERIAL_SEND_STRING("IMGBUF"); + USB_Serial_Send_Int_Dec(DISPLAY_WIDTH, 4); + USB_Serial_Put_Char(','); + USB_Serial_Send_Int_Dec(DISPLAY_HEIGHT, 4); + USB_Serial_Put_Char(','); + USB_Serial_Send_Int_Dec(16, 2); + USB_SERIAL_SEND_TERMINATOR(); + + uint32_t Pixel_Count = DISPLAY_WIDTH * DISPLAY_HEIGHT; + + for(uint32_t i = 0; i < Pixel_Count; i++) + { + Display_Color Pixel = Display_Get_Pixel(i); + USB_Serial_Send_Int_Hex(Pixel, 4, false); + } + sleep_ms(100); + USB_SERIAL_SEND_TERMINATOR(); + + add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer); +} diff --git a/Python/Buffer_Reader.cmd b/Python/Buffer_Reader.cmd new file mode 100644 index 0000000..52e5bfc --- /dev/null +++ b/Python/Buffer_Reader.cmd @@ -0,0 +1,250 @@ +@echo off +setlocal enabledelayedexpansion + +:: Buffer Reader Batch Script +:: Calls the RP2350 Buffer Reader Python script with various options + +echo =============================================== +echo RP2350 Display Buffer Reader +echo =============================================== +echo. + +:: Check if Python is available +python --version >nul 2>&1 +if errorlevel 1 ( + echo ERROR: Python is not installed or not in PATH + echo Please install Python and try again. + pause + exit /b 1 +) + +:: Check if Buffer_Reader.py exists +if not exist "Buffer_Reader.py" ( + echo ERROR: Buffer_Reader.py not found in current directory + echo Please make sure the script is in the same folder as this batch file. + pause + exit /b 1 +) + +:: Check command line arguments +if "%~1"=="" goto :interactive_mode +if "%~1"=="/?" goto :show_help +if "%~1"=="--help" goto :show_help + +:: Direct mode - use command line arguments +set "port_input=%~1" +set "image_file=%~2" +set "csv_file=%~3" + +:: Process port input - add COM prefix if not present +if "!port_input:~0,3!"=="COM" ( + set "serial_port=!port_input!" +) else ( + set "serial_port=COM!port_input!" +) + +goto :set_default_files + +:interactive_mode +echo Interactive Mode +echo ================ +echo. + +:: Get serial port number +set "port_input=" +set /p "port_input=Enter COM port number (e.g., 3 for COM3): " +if "!port_input!"=="" ( + echo ERROR: Port number is required + pause + exit /b 1 +) + +:: Add COM prefix if not already present +if "!port_input:~0,3!"=="COM" ( + set "serial_port=!port_input!" +) else ( + set "serial_port=COM!port_input!" +) + +:: Get image filename (optional) +set "image_file=" +set /p "image_file=Enter image filename (press Enter for default): " + +:: Get CSV filename (optional) +set "csv_file=" +set /p "csv_file=Enter CSV filename (press Enter for default): " + +:set_default_files +:: Get current timestamp for default filenames +for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" +set "timestamp=%dt:~0,4%%dt:~4,2%%dt:~6,2%_%dt:~8,2%%dt:~10,2%%dt:~12,2%" + +if "!image_file!"=="" set "image_file=capture_1.png" +if "!csv_file!"=="" set "csv_file=pixels_1.csv" + +:main_loop +echo. +echo Configuration: +echo Serial Port: !serial_port! +echo Image File: !image_file! +echo CSV File: !csv_file! +echo. + +:run_script +echo. +echo Starting buffer read... +echo Command: python Buffer_Reader.py "!serial_port!" "!image_file!" "!csv_file!" +echo. + +:: Run the Python script +python Buffer_Reader.py "!serial_port!" "!image_file!" "!csv_file!" + +:: Check if the script ran successfully +if errorlevel 1 ( + echo. + echo ERROR: Script execution failed + goto :ask_repeat +) else ( + echo. + echo SUCCESS: Buffer read completed successfully! + echo Image saved to: !image_file! + echo CSV saved to: !csv_file! + + :: Automatically open image with GIMP + if exist "!image_file!" ( + echo. + echo Opening image with GIMP... + start "" "gimp" "!image_file!" 2>nul + if errorlevel 1 ( + echo Warning: Could not open GIMP. Please check if GIMP is installed and in PATH. + echo You can manually open the file: !image_file! + ) + ) +) + +:ask_repeat +echo. +echo Press ENTER to repeat readout with same settings +echo Press ESC or N + ENTER to exit +set /p "repeat_choice=" + +:: Check if user pressed just Enter (empty input) +if "!repeat_choice!"=="" ( + :: Increment counter for repeat runs + if not defined repeat_counter set repeat_counter=0 + set /a repeat_counter+=1 + + :: Create new filenames with counter suffix + :: Remove existing counter suffix if present, then add new one + set "base_image=!image_file!" + set "base_csv=!csv_file!" + + :: Remove previous counter from image filename + for /f "tokens=1,2 delims=_" %%a in ("!base_image!") do ( + if "%%b" neq "" ( + echo %%b | findstr "^[0-9][0-9]*\.png$" >nul + if !errorlevel! equ 0 ( + set "base_image=%%a.png" + ) + ) + ) + + :: Remove previous counter from csv filename + for /f "tokens=1,2 delims=_" %%a in ("!base_csv!") do ( + if "%%b" neq "" ( + echo %%b | findstr "^[0-9][0-9]*\.csv$" >nul + if !errorlevel! equ 0 ( + set "base_csv=%%a.csv" + ) + ) + ) + + :: Add counter to filenames + for %%f in ("!base_image!") do ( + set "image_file=%%~nf_!repeat_counter!%%~xf" + ) + for %%f in ("!base_csv!") do ( + set "csv_file=%%~nf_!repeat_counter!%%~xf" + ) + + goto :main_loop +) + +:: Check for exit conditions +if /i "!repeat_choice!"=="N" goto :exit_script +if "!repeat_choice!"=="" goto :exit_script + +:: If user entered something else, treat as exit +goto :exit_script + +:exit_script +echo. +echo Exiting... +pause +exit /b 0 + +:increment_filename +:: Function to increment filename counter intelligently +:: %1 = input filename, %2 = variable name to store result +setlocal enabledelayedexpansion +set "filename=%~1" +set "return_var=%~2" + +:: Extract name and extension +for %%f in ("!filename!") do ( + set "name=%%~nf" + set "ext=%%~xf" +) + +:: Check if filename ends with _number pattern +set "counter=1" +set "base_name=!name!" + +:: Look for _number at the end of the filename +for /f "tokens=1,2 delims=_" %%a in ("!name!") do ( + set "potential_base=%%a" + set "potential_counter=%%b" + + if "!potential_counter!" neq "" ( + :: Check if the part after _ is a number + set "is_number=1" + for /f "delims=0123456789" %%x in ("!potential_counter!") do set "is_number=0" + + if !is_number! equ 1 ( + :: It's a number, so increment it + set /a counter=!potential_counter!+1 + set "base_name=!potential_base!" + ) + ) +) + +:: Build new filename +set "new_filename=!base_name!_!counter!!ext!" + +:: Return the result +endlocal & set "%return_var%=%new_filename%" +goto :eof + +:show_help +echo. +echo USAGE: +echo %~nx0 - Interactive mode +echo %~nx0 [port_number] - Use default filenames (e.g., %~nx0 3) +echo %~nx0 [port_number] [image] - Specify image filename (e.g., %~nx0 3 my_screen.png) +echo %~nx0 [port_number] [image] [csv] - Specify both filenames +echo. +echo EXAMPLES: +echo %~nx0 +echo %~nx0 3 (will use COM3) +echo %~nx0 4 my_screen.png (will use COM4) +echo %~nx0 3 my_screen.png data.csv (will use COM3) +echo. +echo Note: You can enter just the port number (e.g., 3) and COM will be added automatically +echo Generated images will automatically open in GIMP +echo. +echo OPTIONS: +echo /? Show this help +echo --help Show this help +echo. +pause +exit /b 0 \ No newline at end of file diff --git a/Python/Buffer_Reader.py b/Python/Buffer_Reader.py new file mode 100644 index 0000000..639387b --- /dev/null +++ b/Python/Buffer_Reader.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +import serial +import struct +from PIL import Image +import numpy as np +import time +import sys +import csv + +class RP2350BufferReader: + def __init__(self, port, baudrate=115200): + self.Ser = serial.Serial(port, baudrate, timeout=5) + self.Width = 0 + self.Height = 0 + self.Bits_Per_Pixel = 0 + + def Read_Display_Buffer(self, image_filename=None, csv_filename=None): + """Request and read display buffer from RP2350""" + + # Send buffer read command + self.Ser.write(b'b') + + # Read header + Header = self.Ser.read_until(b'\r').decode('ascii').strip() + if not Header.startswith('IMGBUF'): + raise ValueError(f"Invalid header: {Header}") + + # Parse dimensions + Parts = Header[6:].split(',') + self.Width = int(Parts[0]) + self.Height = int(Parts[1]) + self.Bits_Per_Pixel = int(Parts[2]) + + print(f"Reading {self.Width}x{self.Height} buffer ({self.Bits_Per_Pixel}bpp)") + + # Read binary chunked data with progress bar + Pixel_Data_ASCII : str = "" + Expected_Pixels = self.Width * self.Height + Expected_Byes = Expected_Pixels * (self.Bits_Per_Pixel // 8) * 2 + Start_Time = time.time() + + def Update_Progress(current, total, width=50): + Percent = (current / total) * 100 + Filled = int(width * current / total) + Bar = 'â–ˆ' * Filled + 'â–‘' * (width - Filled) + Elapsed = time.time() - Start_Time + Rate = current / Elapsed if Elapsed > 0 else 0 + Eta = (total - current) / Rate if Rate > 0 else 0 + + sys.stdout.write(f'\r[{Bar}] {Percent:.1f}% ({current}/{total}) 'f'Rate: {Rate:.0f} px/s ETA: {Eta:.1f}s ') + sys.stdout.flush() + + print("Progress:") + while len(Pixel_Data_ASCII) < Expected_Byes: + Byte = self.Ser.read_all() + if Byte is not None: + Pixel_Data_ASCII = Pixel_Data_ASCII + Byte.decode("utf-8") + + Update_Progress(len(Pixel_Data_ASCII), Expected_Byes) + + + Update_Progress(len(Pixel_Data_ASCII), Expected_Byes) # Final progress update + print() + + Byte = self.Ser.read(1) + Byte_Value = ord(Byte.decode('utf-8')) + + if Byte_Value != 0x0D: + raise ValueError(f"Invalid byte after pixel data: {str(int(Byte))}") + + # Save ASCII data to CSV if requested + if csv_filename: + self._Save_ASCII_To_CSV(Pixel_Data_ASCII, csv_filename) + + Pixel_Data_Hex = [] + for i in range(0, len(Pixel_Data_ASCII), 4): + Int_Value = int(Pixel_Data_ASCII[i:i+4], 16) + # if Int_Value > 0: + # print("0x{:04x}".format(Int_Value)) + Pixel_Data_Hex.append(Int_Value) + + # Convert to numpy array + RGB565_Data = np.array(Pixel_Data_Hex, dtype=np.uint16) + RGB888_Data = self._RGB565_to_RGB888(RGB565_Data) + + # Create PIL Image + img_array = RGB888_Data.reshape((self.Height, self.Width, 3)) + image = Image.fromarray(img_array, 'RGB') + # image = Image.new('RGB', (self.Width, self.Height)) + + # Save if filename provided + if image_filename: + if not image_filename.lower().endswith(('.png', '.bmp', '.tiff')): + image_filename += '.png' + image.save(image_filename) + print(f"Image saved as {image_filename}") + + return image + + def _RGB565_to_RGB888(self, rgb565_array): + """Convert RGB565 to RGB888""" + RGB888_Data = np.zeros((len(rgb565_array), 3), dtype=np.uint8) + + # Extract RGB components from RGB565 + r5 = ((rgb565_array & 0x1F00) >> 8) + g6 = ((rgb565_array & 0xE000) >> 11) | ((rgb565_array & 0x0007) << 3) + b5 = ((rgb565_array & 0x00F8) >> 3) + + # Scale to 8-bit + RGB888_Data[:, 0] = (r5 * 255) // 31 # Red + RGB888_Data[:, 1] = (g6 * 255) // 63 # Green + RGB888_Data[:, 2] = (b5 * 255) // 31 # Blue + + return RGB888_Data + + + def _Save_ASCII_To_CSV(self, pixel_data_ascii, csv_filename): + """Save ASCII pixel data to CSV file with display dimensions""" + if not csv_filename.lower().endswith('.csv'): + csv_filename += '.csv' + + with open(csv_filename, 'w', newline='') as CSV_File: + Writer = csv.writer(CSV_File) + + # Process data in chunks of 4 characters (one pixel) + Pixel_Index = 0 + Row_Data = [] + + for i in range(0, len(pixel_data_ascii), 4): + # Get 4-character hex value for current pixel + Pixel_Hex = pixel_data_ascii[i:i+4] + Row_Data.append(Pixel_Hex) + Pixel_Index += 1 + + # When we've collected a full row worth of pixels, write to CSV + if Pixel_Index % self.Width == 0: + Writer.writerow(Row_Data) + Row_Data = [] + + print(f"ASCII data saved to {csv_filename} ({self.Height} rows × {self.Width} columns)") + + def Close(self): + """Close serial connection""" + self.Ser.close() + +# Usage example +if __name__ == "__main__": + import sys + + if len(sys.argv) < 2: + print("Usage: python buffer_reader.py [output_filename]") + print("Example: python buffer_reader.py COM3 screen_capture.png") + sys.exit(1) + + port = sys.argv[1] + image_filename = sys.argv[2] if len(sys.argv) > 2 else f"buffer_capture_{int(time.time())}.png" + csv_filename = sys.argv[3] if len(sys.argv) > 3 else f"pixel_data_{int(time.time())}.csv" + + try: + reader = RP2350BufferReader(port) + image = reader.Read_Display_Buffer(image_filename, csv_filename) + reader.Close() + print("Buffer read complete!") + + except Exception as e: + print(f"Error: {e}") + sys.exit(1) \ No newline at end of file