Serial-Studio/doc/doxygen/architecture.svg
2021-12-07 01:22:29 -06:00

4 lines
47 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1911px" height="799px" viewBox="-0.5 -0.5 1911 799" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2021-12-07T01:31:45.450Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.4.0 Chrome/91.0.4472.164 Electron/13.5.0 Safari/537.36&quot; etag=&quot;my82PxtSTF_HZSnVF2gc&quot; version=&quot;15.4.0&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;tiPRVdgSWE0wsroL0zit&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 470 318 L 543.63 318" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 548.88 318 L 541.88 321.5 L 543.63 318 L 541.88 314.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="310" y="288" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 318px; margin-left: 311px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">I/O Manager</div></div></div></foreignObject><text x="390" y="322" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">I/O Manager</text></switch></g><path d="M 316.37 468 L 350 468 L 350 354.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 311.12 468 L 318.12 464.5 L 316.37 468 L 318.12 471.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 350 349.12 L 353.5 356.12 L 350 354.37 L 346.5 356.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 173.78 438 L 296.22 438 C 303.83 438 310 451.43 310 468 C 310 484.57 303.83 498 296.22 498 L 173.78 498 C 166.17 498 160 484.57 160 468 C 160 451.43 166.17 438 173.78 438 Z" fill="#f5f5f5" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 296.22 438 C 288.62 438 282.45 451.43 282.45 468 C 282.45 484.57 288.62 498 296.22 498" fill="none" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 468px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Serial port device</div></div></div></foreignObject><text x="235" y="472" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Serial port device</text></switch></g><path d="M 670 318 L 743.63 318" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 748.88 318 L 741.88 321.5 L 743.63 318 L 741.88 314.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 610 340.8 L 610 450.5" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 563.64 292.98 C 563.64 291.66 564.35 290.39 565.63 289.46 C 566.91 288.52 568.65 288 570.45 288 L 663.18 288 C 664.99 288 666.72 288.52 668 289.46 C 669.28 290.39 670 291.66 670 292.98 L 670 332.79 C 653 327.54 633.81 327.54 616.82 332.79 C 599.82 338.05 580.63 338.05 563.64 332.79 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 556.82 297.95 C 556.82 295.2 559.87 292.98 563.64 292.98 L 656.36 292.98 C 660.13 292.98 663.18 295.2 663.18 297.95 L 663.18 337.77 C 646.19 332.51 627 332.51 610 337.77 C 593 343.02 573.81 343.02 556.82 337.77 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 550 302.93 C 550 301.61 550.72 300.34 552 299.41 C 553.28 298.48 555.01 297.95 556.82 297.95 L 649.55 297.95 C 651.35 297.95 653.09 298.48 654.37 299.41 C 655.65 300.34 656.36 301.61 656.36 302.93 L 656.36 342.74 C 639.37 337.49 620.18 337.49 603.18 342.74 C 586.19 348 567 348 550 342.74 Z" fill="#d5e8d4" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 118px; height: 1px; padding-top: 318px; margin-left: 552px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">  Frame list/queue</div></div></div></foreignObject><text x="552" y="322" fill="#000000" font-family="Helvetica" font-size="12px">  Frame list/queue</text></switch></g><path d="M 910 318 L 1143.63 318" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1148.88 318 L 1141.88 321.5 L 1143.63 318 L 1141.88 314.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 910 303 L 930 303 L 930 168 L 1143.63 168" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1148.88 168 L 1141.88 171.5 L 1143.63 168 L 1141.88 164.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="750" y="288" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 318px; margin-left: 751px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">JSON Generator</div></div></div></foreignObject><text x="830" y="322" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">JSON Generator</text></switch></g><rect x="592.5" y="450.5" width="35" height="35" fill="none" stroke="none" pointer-events="all"/><path d="M 617.91 474.08 C 618.24 474.37 618.3 474.9 617.96 475.29 C 617.68 475.57 617.22 475.71 616.81 475.44 L 609.17 469.56 C 609 469.39 608.85 469.21 608.85 468.84 L 608.85 456.03 C 608.85 455.51 609.32 455.17 609.73 455.17 C 610.28 455.17 610.6 455.67 610.6 456.03 L 610.6 468.47 Z M 610.09 482.61 C 618.71 482.61 624.59 475.34 624.59 468.02 C 624.59 459.12 617.26 453.42 610.04 453.42 C 600.46 453.42 595.43 461.71 595.43 467.61 C 595.43 477.56 603.33 482.61 610.09 482.61 Z M 609.91 485.5 C 601.28 485.5 592.71 478.9 592.5 467.79 C 592.5 459.29 599.66 450.5 609.93 450.5 C 618.97 450.5 627.5 457.49 627.5 468.1 C 627.5 477.49 619.91 485.5 609.91 485.5 Z" fill="#505050" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 493px; margin-left: 610px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Add Timestamp &amp; frame number</div></div></div></foreignObject><text x="610" y="505" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Add Ti...</text></switch></g><path d="M 750 468 L 627.5 468" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 830 504.37 L 830 561.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 830 499.12 L 833.5 506.12 L 830 504.37 L 826.5 506.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 830 566.88 L 826.5 559.88 L 830 561.63 L 833.5 559.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="750" y="438" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 468px; margin-left: 751px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">CSV Import/Export Module</div></div></div></foreignObject><text x="830" y="472" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">CSV Import/Export Module</text></switch></g><path d="M 860 592.5 L 1510 592.5 L 1510 348" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="800" y="568" width="60" height="49" fill="none" stroke="none" pointer-events="all"/><path d="M 847.95 594.22 C 848.69 594.53 849.12 595.15 849.02 595.89 L 847.91 600.41 C 847.64 601.02 847.2 601.38 846.45 601.31 L 841.11 600.1 C 840.07 602.11 838.68 603.97 837.06 605.66 L 839.82 610.21 C 840.26 610.94 839.96 611.66 839.53 611.98 L 835.05 614.76 C 834.42 614.98 833.83 615.02 833.42 614.26 L 830.58 609.59 C 828.83 610.41 826.56 610.9 824.12 610.68 L 822.9 615.92 C 822.67 616.49 822.37 617 821.44 616.93 L 816.43 615.73 C 815.69 615.37 815.3 614.84 815.59 613.97 L 817.1 609.18 C 814.89 608.01 812.99 606.69 811.43 605.23 L 806.95 607.95 C 806.24 608.36 805.6 608.27 805.04 607.64 L 802.4 603.38 C 802.1 602.81 802.14 602.07 802.8 601.61 L 807.41 598.66 C 806.86 596.55 806.5 594.4 806.35 592.22 L 806.35 592.22 L 801.16 591 C 800.39 590.72 800 590.21 800.15 589.35 L 801.29 584.64 C 801.59 583.92 802.05 583.45 802.94 583.64 L 807.85 585.19 C 809.03 583.25 810.34 581.3 811.86 579.53 L 809.09 574.99 C 808.84 574.44 808.69 573.89 809.45 573.2 L 813.7 570.55 C 814.53 570.14 815.08 570.44 815.46 570.9 L 818.31 575.55 C 820.3 574.81 822.3 574.29 824.8 574.61 L 826.04 569.23 C 826.38 568.46 826.93 568.18 827.66 568.32 L 832.28 569.4 L 832.28 582.9 C 829.58 580.76 826.05 579.74 822.69 580.28 C 816.62 581.26 810.97 586.85 812.21 594.48 C 813.43 602.1 820.49 605.81 826.62 604.82 C 832.75 603.83 837.14 598.24 836.99 592.24 Z" fill="#505050" stroke="none" pointer-events="all"/><path d="M 852.5 575.48 L 852.5 573.24 L 856.99 573.24 L 856.99 575.48 Z M 852.5 578.47 L 852.5 576.23 L 856.99 576.23 L 856.99 578.47 Z M 852.5 581.46 L 852.5 579.21 L 856.99 579.21 L 856.99 581.46 Z M 852.5 584.44 L 852.5 582.2 L 856.99 582.2 L 856.99 584.44 Z M 852.5 587.42 L 852.5 585.19 L 856.99 585.19 L 856.99 587.42 Z M 848.76 589.29 L 858.88 589.29 L 858.88 571.36 L 848.76 571.36 L 848.76 573.24 L 851.76 573.24 L 851.76 575.48 L 848.76 575.48 L 848.76 576.23 L 851.76 576.23 L 851.76 578.47 L 848.76 578.47 L 848.76 579.21 L 851.76 579.21 L 851.76 581.46 L 848.76 581.46 L 848.76 582.2 L 851.76 582.2 L 851.76 584.44 L 848.76 584.44 L 848.76 585.19 L 851.76 585.19 L 851.76 587.42 L 848.76 587.42 Z M 834.53 589.66 L 834.53 570.24 L 848.76 568 L 848.76 570.25 L 858.88 570.25 C 859.57 570.25 860 570.84 860 571.35 L 860 589.32 C 860 589.77 859.57 590.41 858.89 590.41 L 848.76 590.42 L 848.76 591.9 Z M 837.83 584.58 L 839.7 584.73 L 841.14 581.44 L 842.55 584.81 L 844.65 584.96 L 842.25 580.1 L 844.8 575.32 L 842.85 575.47 L 841.34 579.02 L 839.99 575.62 L 838.06 575.77 L 840.07 580.18 Z" fill="#02723b" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 624px; margin-left: 830px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">External CSV File</div></div></div></foreignObject><text x="830" y="636" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">External C...</text></switch></g><path d="M 830 198 L 830 281.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 830 286.88 L 826.5 279.88 L 830 281.63 L 833.5 279.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 875 138 C 877.76 138 880 140.24 880 143 L 880 190.5 Q 855 177 830 190.5 Q 805 204 780 190.5 L 780 145.5 L 780 143 C 780 140.24 782.24 138 785 138 Z" fill="#f5f5f5" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 168px; margin-left: 781px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">JSON Map file</div></div></div></foreignObject><text x="830" y="172" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">JSON Map file</text></switch></g><path d="M 1230 348 L 1230 431.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1230 436.88 L 1226.5 429.88 L 1230 431.63 L 1233.5 429.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 1310 318 L 1383.63 318" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1388.88 318 L 1381.88 321.5 L 1383.63 318 L 1381.88 314.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="1150" y="288" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 318px; margin-left: 1151px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Dashboard Model</div></div></div></foreignObject><text x="1230" y="322" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dashboard Model</text></switch></g><path d="M 1310 468 L 1470 468 L 1470 354.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1470 349.12 L 1473.5 356.12 L 1470 354.37 L 1466.5 356.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="1150" y="438" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 468px; margin-left: 1151px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Qwt/C++ Widgets</div></div></div></foreignObject><text x="1230" y="472" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Qwt/C++ Widgets</text></switch></g><path d="M 1556.37 318 L 1623.63 318" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1551.12 318 L 1558.12 314.5 L 1556.37 318 L 1558.12 321.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 1628.88 318 L 1621.88 321.5 L 1623.63 318 L 1621.88 314.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 1470 288 L 1510 288 L 1510 58 L 830 58 L 830 138" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 49px; margin-left: 1351px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(128, 128, 128); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Selected from User Interface, loaded by JSON Generator module</div></div></div></foreignObject><text x="1351" y="52" fill="#808080" font-family="Helvetica" font-size="11px" text-anchor="middle">Selected from User Interface, loaded by JSON Generator module</text></switch></g><rect x="1390" y="288" width="160" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 318px; margin-left: 1391px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">QML User Interface</div></div></div></foreignObject><text x="1470" y="322" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">QML User Interface</text></switch></g><path d="M 1715 281.63 L 1715 8 L 1570 8" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1715 286.88 L 1711.5 279.88 L 1715 281.63 L 1718.5 279.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 1649.32 292.98 C 1649.32 290.23 1653.64 288 1658.98 288 L 1790.34 288 C 1795.68 288 1800 290.23 1800 292.98 L 1800 332.79 C 1775.92 327.54 1748.74 327.54 1724.66 332.79 C 1700.58 338.05 1673.4 338.05 1649.32 332.79 Z" fill="#fff2cc" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 1639.66 297.95 C 1639.66 295.2 1643.98 292.98 1649.32 292.98 L 1780.68 292.98 C 1786.02 292.98 1790.34 295.2 1790.34 297.95 L 1790.34 337.77 C 1766.26 332.51 1739.08 332.51 1715 337.77 C 1690.92 343.02 1663.74 343.02 1639.66 337.77 Z" fill="#fff2cc" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 1630 302.93 C 1630 301.61 1631.02 300.34 1632.83 299.41 C 1634.64 298.48 1637.1 297.95 1639.66 297.95 L 1771.02 297.95 C 1773.58 297.95 1776.04 298.48 1777.85 299.41 C 1779.66 300.34 1780.68 301.61 1780.68 302.93 L 1780.68 342.74 C 1756.6 337.49 1729.42 337.49 1705.34 342.74 C 1681.26 348 1654.08 348 1630 342.74 Z" fill="#fff2cc" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 168px; height: 1px; padding-top: 318px; margin-left: 1632px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">          External plugins</div></div></div></foreignObject><text x="1632" y="322" fill="#000000" font-family="Helvetica" font-size="12px">          External plugins</text></switch></g><path d="M 630 138 L 630 168 L 773.63 168" fill="none" stroke="#808080" stroke-miterlimit="10" stroke-dasharray="1 4" pointer-events="stroke"/><path d="M 778.88 168 L 771.88 171.5 L 773.63 168 L 771.88 164.5 Z" fill="#808080" stroke="#808080" stroke-miterlimit="10" pointer-events="all"/><rect x="460" y="78" width="340" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 108px; margin-left: 462px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(128, 128, 128); line-height: 1.2; pointer-events: all; white-space: nowrap;">Describes frame(s) format(s) &amp; how to display each value.<br /><div>The JSON map file contains indices ("%1, %2, %3", ...) which</div><div>are used to represent an element contained in the received</div><div>frames from the current device.</div></div></div></div></foreignObject><text x="462" y="112" fill="#808080" font-family="Helvetica" font-size="12px">Describes frame(s) format(s) &amp; how to display each value...</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 609px; margin-left: 1341px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(128, 128, 128); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Selected from User Interface, managed by CSV Import/Export module</div></div></div></foreignObject><text x="1341" y="612" fill="#808080" font-family="Helvetica" font-size="11px" text-anchor="middle">Selected from User Interface, managed by CSV Import/Export module</text></switch></g><path d="M 316.37 538 L 430 538 L 430 354.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 311.12 538 L 318.12 534.5 L 316.37 538 L 318.12 541.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 430 349.12 L 433.5 356.12 L 430 354.37 L 426.5 356.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 173.78 508 L 296.22 508 C 303.83 508 310 521.43 310 538 C 310 554.57 303.83 568 296.22 568 L 173.78 568 C 166.17 568 160 554.57 160 538 C 160 521.43 166.17 508 173.78 508 Z" fill="#f5f5f5" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 296.22 508 C 288.62 508 282.45 521.43 282.45 538 C 282.45 554.57 288.62 568 296.22 568" fill="none" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 538px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Network device</div></div></div></foreignObject><text x="235" y="542" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Network device</text></switch></g><rect x="160" y="578" width="180" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 593px; margin-left: 162px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(128, 128, 128); line-height: 1.2; pointer-events: all; white-space: nowrap;"><u>Note:</u> only one data source can <br />          be used at a given time.</div></div></div></foreignObject><text x="162" y="597" fill="#808080" font-family="Helvetica" font-size="12px">Note: only one data source can...</text></switch></g><path d="M 997.5 358 L 997.5 328 L 997 318" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1015 375.5 L 1190 375.5 L 1190 348" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="980" y="358" width="35" height="35" fill="none" stroke="none" pointer-events="all"/><path d="M 1005.41 381.58 C 1005.74 381.87 1005.8 382.4 1005.46 382.79 C 1005.18 383.07 1004.72 383.21 1004.31 382.94 L 996.67 377.06 C 996.5 376.89 996.35 376.71 996.35 376.34 L 996.35 363.53 C 996.35 363.01 996.82 362.67 997.23 362.67 C 997.78 362.67 998.1 363.17 998.1 363.53 L 998.1 375.97 Z M 997.59 390.11 C 1006.21 390.11 1012.09 382.84 1012.09 375.52 C 1012.09 366.62 1004.76 360.92 997.54 360.92 C 987.96 360.92 982.93 369.21 982.93 375.11 C 982.93 385.06 990.83 390.11 997.59 390.11 Z M 997.41 393 C 988.78 393 980.21 386.4 980 375.29 C 980 366.79 987.16 358 997.43 358 C 1006.47 358 1015 364.99 1015 375.6 C 1015 384.99 1007.41 393 997.41 393 Z" fill="#505050" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 400px; margin-left: 998px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">UI Refresh timer</div></div></div></foreignObject><text x="998" y="412" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">UI Ref...</text></switch></g><rect x="1630" y="358" width="280" height="230" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 473px; margin-left: 1632px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font color="#808080"><span>External "plugins" or applications can interact<br /></span>with Serial Studio by reading/writing data<br />on a local TCP port (7777).<br /><br />When a "plugin" writes to the TCP port,<br />Serial Studio shall send the received data<br />to the current device.<br /><br />When the current device sends something,<br />Serial Studio shall send the received data <br />to the connected plugins/applications.<br /><b><br />Why use network ports? </b>Because we want <br />developers to write their plugins in their preferred<br />programming languages and IDEs, not force them<br />to use Qt.<br /></font></div></div></div></foreignObject><text x="1632" y="477" fill="#000000" font-family="Helvetica" font-size="12px">External "plugins" or applications can interac...</text></switch></g><path d="M 610 538 L 610 518 L 610 538 L 610 524.37" fill="none" stroke="#808080" stroke-miterlimit="10" stroke-dasharray="1 2" pointer-events="stroke"/><path d="M 610 519.12 L 613.5 526.12 L 610 524.37 L 606.5 526.12 Z" fill="#808080" stroke="#808080" stroke-miterlimit="10" pointer-events="all"/><rect x="450" y="538" width="320" height="260" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 668px; margin-left: 452px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font color="#808080"><span>Each received frame is converted to a JSON<br />document by replacing the "%1, %2, %3" indices<br />in the map file with data received from the current device.<br /><br />This process is executed in a different thread for<br />each received frame.<br /><br />Because we are using threads, we cannot guarantee<br />that the "output" JSON documents will come in <br />the original order (see issue #35).<br /><br />In order to mitigate this, each frame is placed<br />inside a "JSON Frame Information" structure (JFI).<br />This structure contains:<br />- The JSON document<br />- RX date/time<br />- Frame number (uint64_t) -&gt; in case that the RX/date<br />time is the same in high-frequency data samples.<br /></span></font></div></div></div></foreignObject><text x="452" y="672" fill="#000000" font-family="Helvetica" font-size="12px">Each received frame is converted to a JSON...</text></switch></g><path d="M 1230 198 L 1230 281.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 1230 286.88 L 1226.5 279.88 L 1230 281.63 L 1233.5 279.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="1150" y="138" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 168px; margin-left: 1151px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">MQTT Module</div></div></div></foreignObject><text x="1230" y="172" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">MQTT Module</text></switch></g><rect x="1045" y="83" width="370" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 108px; margin-left: 1230px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(128, 128, 128); line-height: 1.2; pointer-events: all; white-space: nowrap;"><div>Serial Studio can "publish" RX data to a MQTT broker or</div><div>"subscribe" to an MQTT topic &amp; display incoming data </div><div>(using exactly the same JSON map file as the "publisher" instance).</div></div></div></div></foreignObject><text x="1230" y="112" fill="#808080" font-family="Helvetica" font-size="12px" text-anchor="middle">Serial Studio can "publish" RX data to a MQTT broker or...</text></switch></g><rect x="780" y="643" width="360" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 668px; margin-left: 782px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font color="#808080"><span>Serial Studio generates a CSV file with the received information.<br />This file can later be imported to other applications (e.g. Excel,<br />MATLAB, etc) or opened with Serial Studio again.<br /></span></font></div></div></div></foreignObject><text x="782" y="672" fill="#000000" font-family="Helvetica" font-size="12px">Serial Studio generates a CSV file with the received informa...</text></switch></g><rect x="0" y="293" width="310" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 318px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font color="#808080"><span>The I/O manager provides an abstraction layer between<br />Serial Studio and connected devices. This allows Serial<br />Studio to work with multiple data sources seamlessly.<br /></span></font></div></div></div></foreignObject><text x="2" y="322" fill="#000000" font-family="Helvetica" font-size="12px">The I/O manager provides an abstraction layer betwe...</text></switch></g><path d="M 390 234.37 L 390 281.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 390 229.12 L 393.5 236.12 L 390 234.37 L 386.5 236.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 390 286.88 L 386.5 279.88 L 390 281.63 L 393.5 279.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 390 161.63 L 390 8 L 1570 8 L 1570 303 L 1556.37 303" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 390 166.88 L 386.5 159.88 L 390 161.63 L 393.5 159.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 1551.12 303 L 1558.12 299.5 L 1556.37 303 L 1558.12 306.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="310" y="168" width="160" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 198px; margin-left: 311px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Console</div></div></div></foreignObject><text x="390" y="202" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Console</text></switch></g><rect x="0" y="153" width="310" height="90" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 198px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font color="#808080"><span>The console module formats RX data for display in<br />in the UI. Data can be displayed in normal (ASCII) mode<br />or in binary/hexadecimal mode.<br /><br />Users can interact with the current device by sending<br />ASCII or binary data via HEX representation.<br /></span></font></div></div></div></foreignObject><text x="2" y="202" fill="#000000" font-family="Helvetica" font-size="12px">The console module formats RX data for display in...</text></switch></g><rect x="1100" y="508" width="260" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 523px; margin-left: 1230px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(128, 128, 128); line-height: 1.2; pointer-events: all; white-space: nowrap;"><div>Widgets are generated with C++ for better</div><div>performance &amp; greater customization options.</div></div></div></div></foreignObject><text x="1230" y="527" fill="#808080" font-family="Helvetica" font-size="12px" text-anchor="middle">Widgets are generated with C++ for better...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>