personal-website/assets/diagrams/hal_concept.drawio.svg
2023-10-27 11:44:15 -04:00

1 line
18 KiB
XML
Raw Permalink 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.

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="621px" height="481px" viewBox="-0.5 -0.5 621 481" content="&lt;mxfile&gt;&lt;diagram id=&quot;SKV8PHPIui5c4Fc6kAOh&quot; name=&quot;Page-1&quot;&gt;5VnbcqM4EP0aV80+xMXFYPvRl1xcNalNbTI1M48ykkE1AlFC2PF+/bZAGLBIJpvYcS37YqRDC6TTraNuPHAX8fOtQGl0zzFhA8fCzwN3OXCcsePDrwL2JeBPRyUQCopLyK6BR/o30aCl0ZxikrUMJedM0rQNBjxJSCBbGBKC79pmG87ab01RSAzgMUDMRL9TLKMSnXhWjd8RGkbVm21L34lRZayBLEKY7xqQez1wF4JzWbbi5wVhiruKl3LczQt3DxMTJJFvGqBHZHJfLY5gWKvuciEjHvIEsesanUcyZnDThia8Rux/QMcaelX3Z/PeUvncOvT2hx6eKUdAF1MU8wSX4A1lTJuYS6nmynMR6Mk62vtIhERbTUpILaMxTC//lvCYwETAQBCGJN22XYp0ZIQHu5o8aGj+XuBy9FEuf8vJe+l+L5e2c2oyi6GwTLRvGKScJjJrPPlBAWCgBWPk6+2yr3TgKKqP7R3vNXtolDOo3XpYyps8rVnZIpbrFd8hgXdAL6CzdSYFCiTlCfS+oj0RcP2ySiQRGxSAbjkW3xTqVNhH9VAsgEKR/WHEUSNKEKNhAu2AqAcCACMkBW2a6RuSp4AKnieY4GrQOuMsl2QmAq2mBVr3VJBglEXFiFcjRr2OPL8aDPqu47W95lRe3NWa6VZY1NDLsfXxzegaLlo9Pqx6SuzUJHbcwevoBLyOTF5vH1Z/9oNY17kcsZ5J7LfZX089IXZ6OWJ9k9iVs+gHr8cH42fyOjZ4HQ6H/aDVc39P6+RMtNquweF/KiPX6fd5s8i3kjkxYnRJtjRQudayzLUGSvJ9BjOdryFP80PV+oJJwPOUQUxBdSh4DBcVlILtaRKa9nBFsYrdZJ2pi5HSqSnF8LwYmEMqM+xpimc75kaxu3bKoSL+iHenprLff+spsZPPE/bqK0uDVyIDtX/Vbx/YPc7zPpVds3j8StcCCaoqQ0OJ5nlGE5IpnWI8pMoNMkKq1s2zopRERSUZr2mCdMlZFJe40jkEQm48tlOgDgVqX8Wpo/z0Orzsn8LL/sVP8YChLKPBU0ST953ktmce5d6lTnLbrI+qby5XWUoCuin2RvuUPXxqoY2PL70I7VH7A5c77ojtc31asc3M/34B5671wxSatj96Qr7vDNv0jzqkxbbHldXJHWCmtaUDfv4/HHCg+zX6nXNFv5l1GqxmEUpVM8ihYpgLFPxS+jnfRVSSxxQVArsTKG1rfpvZUwTqMU+WyVMXTdMT0OSYSeRZaNowmt6djjLfuSBlZmZY7efIbpSaZvHJyuuNaYbptoJWR0pgUXU8rnPK8JWkscoFM8JIINGaFYkhSSFpKOpdq7DfQ25QpwOQBCRbKniiHtmYQ+ONhsPBCbLtzEwK/ossOOOgOMuEJyoP2kCicgRlEA5qKu7Sq3tPSpCWV471QtBw8PuGFclQRDEmSSt6rIbmidKTJ9l07QDqOpntaUcE2fa/DyHo1n8Vl/9j1f+3u9f/AA==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 410 250 L 410 240 Q 410 230 400 230 L 330 230 Q 320 230 320 223.85 L 320 217.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 320 210.71 L 323.5 214.21 L 320 217.71 L 316.5 214.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 440 250 L 440 100 Q 440 90 430 90 L 415 90 Q 405 90 405 80 L 405 67.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 60.71 L 408.5 64.21 L 405 67.71 L 401.5 64.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="230" y="250" width="360" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 257px; margin-left: 410px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">Hardware Abstraction Layer (Interfaces of core hardware drivers)</div></div></div></foreignObject><text x="410" y="269" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hardware Abstraction Layer (Interfaces of core hardware driv...</text></switch></g><rect x="230" y="280" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 287px; margin-left: 265px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">ISPI</div></div></div></foreignObject><text x="265" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ISPI</text></switch></g><rect x="300" y="280" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 287px; margin-left: 335px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">IGPIO</div></div></div></foreignObject><text x="335" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IGPIO</text></switch></g><rect x="370" y="280" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 287px; margin-left: 405px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">IUART</div></div></div></foreignObject><text x="405" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IUART</text></switch></g><rect x="440" y="280" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 287px; margin-left: 475px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">II2C</div></div></div></foreignObject><text x="475" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">II2C</text></switch></g><rect x="510" y="280" width="80" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 287px; margin-left: 550px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">...</div></div></div></foreignObject><text x="550" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">...</text></switch></g><path d="M 320 110 L 320 95 Q 320 85 330 85 L 395 85 Q 405 85 405 76.35 L 405 67.71" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 60.71 L 408.5 64.21 L 405 67.71 L 401.5 64.21 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="230" y="110" width="180" height="100" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 117px; margin-left: 320px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">Device Drivers <br />(decoupled from underlying<br /> hardware driver implementation)</div></div></div></foreignObject><text x="320" y="129" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Device Drivers...</text></switch></g><rect x="230" y="170" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 177px; margin-left: 265px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">IMU</div></div></div></foreignObject><text x="265" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">IMU</text></switch></g><rect x="300" y="170" width="70" height="40" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 177px; margin-left: 335px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">etc etc</div></div></div></foreignObject><text x="335" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">etc etc</text></switch></g><rect x="230" y="0" width="350" height="60" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 7px; margin-left: 405px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">Libraries<br />(Business logic that uses a combination of device and<br />hardware driver interfaces)</div></div></div></foreignObject><text x="405" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Libraries...</text></switch></g><path d="M 405 360 L 405 326.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 321.12 L 407.33 328.12 L 405 326.37 L 402.67 328.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="360" width="360" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 367px; margin-left: 405px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">Hardware-specific implementations of interfaces</div></div></div></foreignObject><text x="405" y="379" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Hardware-specific implementations of interfaces</text></switch></g><rect x="242.5" y="400" width="117.5" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 407px; margin-left: 301px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">MCU X<br />implementation</div></div></div></foreignObject><text x="301" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MCU X...</text></switch></g><rect x="390" y="400" width="120" height="70" rx="5" ry="5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" 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: 407px; margin-left: 450px;"><div data-drawio-colors="color: rgb(0, 0, 0); " 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;">MCU Y<br />implementation</div></div></div></foreignObject><text x="450" y="419" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">MCU Y...</text></switch></g><path d="M 210 390 L 205 390 Q 200 390 200 400 L 200 425 Q 200 435 195 435 L 192.5 435 Q 190 435 195 435 L 197.5 435 Q 200 435 200 445 L 200 470 Q 200 480 205 480 L 210 480" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 620 390 L 615 390 Q 610 390 610 400 L 610 425 Q 610 435 605 435 L 602.5 435 Q 600 435 605 435 L 607.5 435 Q 610 435 610 445 L 610 470 Q 610 480 615 480 L 620 480" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" transform="translate(610,0)scale(-1,1)translate(-610,0)" pointer-events="all"/><rect x="0" y="360" width="190" height="110" 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 flex-start; justify-content: unsafe flex-end; width: 182px; height: 1px; padding-top: 350px; margin-left: 3px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: right; max-height: 120px; overflow: hidden;"><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;"><h1><br /></h1><div>Implementation is build-time selectable depending on your target environment</div></div></div></div></foreignObject><text x="185" y="362" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">Implementation is build-time s...</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%">Text is not SVG - cannot display</text></a></switch></svg>