Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • pmrust/pmrust.pages.upb.ro
  • genan.omer/pmrust.pages.upb.ro
  • vladut.chintoiu/pmrust.pages.upb.ro
  • petru.nania/website-pmrust-fork
  • sofia.huzan/pmrust.pages.upb.ro
  • ionut.pruteanu2308/arcade-game
  • luana.militaru/pong-game
  • sebastian.scrob/project
  • matei.bejinaru/website-bejinaru-matei
  • adragomir2806/website-dragomir-alexandru
  • fatemehsadat/pmrust.pages.upb.ro
  • razvan.costea2205/pmrust.pages.upb.ro
  • darius_gabriel.iuga/pm-website
  • andrei.neagu1910/pmrust.pages.upb.ro
  • irina.chiorean/pmrust.pages.upb.ro
  • adrian_costin.lungu/pmrust.pages.upb.ro
  • andrei.salavastru/pmrust.pages.upb.ro
  • maria_elena.tudor/pmrust.pages.upb.ro
  • vlad.preda2503/electric-piano
  • delia_alexa.dragan/website-music-player
  • francisc.niss/automatic-guitar-tuner
  • mihnea.sandulache/pmrust.pages.upb.ro
  • dragos_andrei.rosu/pmrust.pages.upb.ro
  • armin.shafiei/the-tone-corrector
  • vladyslav.kiselar/pmrust.pages.upb.ro
  • carla_maria.rusu/pmrust.pages.upb.ro
  • razvan.beldie/pmrust.pages.upb.ro
  • lavinia.tudor0603/pmrust.pages.upb.ro
  • nicoleta.bumbacea/door-security-system
  • stefan_adrian.brai/proiect-pm
30 results
Show changes
Commits on Source (57)
Showing
with 124 additions and 260 deletions
......@@ -20,13 +20,14 @@ test fake slides:
paths:
- website/static/slides/acs_cc/**/*
- website/static/slides/fils_en/**/*
expire_in: 12 mins
expire_in: 60 mins
rules:
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
test slides acs_cc:
stage: test
script:
- rm -rf website/static/slides/acs_cc/*
- cd slides
- npx -y playwright@^1.41.2 install chromium
- npx playwright install-deps
......@@ -36,7 +37,7 @@ test slides acs_cc:
artifacts:
paths:
- website/static/slides/acs_cc/**/*
expire_in: 12 mins
expire_in: 60 mins
needs: ["test fake slides"]
rules:
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
......@@ -50,6 +51,7 @@ test slides acs_cc:
test slides fils_en:
stage: test
script:
- rm -rf website/static/slides/fils_en/*
- cd slides
- npx -y playwright@^1.41.2 install chromium
- npx playwright install-deps
......@@ -58,7 +60,7 @@ test slides fils_en:
artifacts:
paths:
- website/static/slides/fils_en/**/*
expire_in: 12 mins
expire_in: 60 mins
needs: ["test fake slides"]
rules:
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
......@@ -95,7 +97,7 @@ pages:
artifacts:
paths:
- public
expire_in: 12 mins
expire_in: 60 mins
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
changes:
......
......@@ -5,13 +5,13 @@ class: text-center
highlighter: shiki
lineNumbers: true
info: |
## Exceptions and Interrupts
## Interrupts, PWM and ADC
drawings:
persist: false
defaults:
foo: true
transition: slide-left
title: MA - 03 - Exceptions and Interrupts
title: MA - 03 - Interrupts, PWM and ADC
mdc: true
layout: cover
themeConfig:
......@@ -21,29 +21,59 @@ exportFilename: ma-03
background:
---
# Exceptions and Interrupts
# Interrupts, PWM and ADC
Lecture 3
---
# Exceptions and Interrupts
used by RP2040
# Interrupts, PWM and ADC
- Exceptions
- Interrupts
- Boot
- Counters
- Timers and Alarms
- About Analog and Digital Signals
- Pulse Width Modulation (PWM)
- Analog to Digital Converters (ADC)
<!-- Exceptions -->
<!-- Interrupts -->
---
src: ../../resources/exceptions/slides.md
src: ../../resources/interrupts/slides.md
---
<!-- Timers -->
---
src: ../../resources/timers/slides.md
---
<!-- Signals -->
---
src: ../../resources/signals/basic.md
---
<!-- PWM -->
---
src: ../../resources/pwm/slides.md
---
<!-- ADC -->
---
src: ../../resources/adc/slides.md
---
---
# Conclusion
we talked about
- Exceptions
- Interrupts
- How the RP2040 boots and loads the software
- Exceptions and Interrupts
- Counters
- SysTick
- Timers and Alarms
- PWM
- Analog and Digital
- ADC
......@@ -5,13 +5,13 @@ class: text-center
highlighter: shiki
lineNumbers: true
info: |
## PWM and ADC
## Asynchronous Development
drawings:
persist: false
defaults:
foo: true
transition: slide-left
title: MA - 04 - PWM and ADC
title: MA - 04 - Asynchronous Development
mdc: true
layout: cover
themeConfig:
......@@ -21,41 +21,41 @@ exportFilename: ma-04
background:
---
# PWM and ADC
# Asynchronous Development
Lecture 4
---
---
# PWM and ADC
# Asynchronous Development
- Counters
- Timers and Alarms
- About Analog and Digital Signals
- Pulse Width Modulation (PWM)
- Analog to Digital Converters (ADC)
- Concurrency
- Asynchronous Executor
- `Future`s
- Communication between tasks
<!-- Timers -->
<!-- Concurrency -->
---
src: ../../resources/timers/slides.md
src: ../../resources/concurrency/slides.md
---
<!-- Signals -->
<!-- Executor -->
---
src: ../../resources/signals/basic.md
src: ../../resources/executor/slides.md
---
<!-- PWM -->
<!-- Future -->
---
src: ../../resources/pwm/slides.md
src: ../../resources/future/slides.md
---
<!-- ADC -->
<!-- Communication -->
---
src: ../../resources/adc/slides.md
src: ../../resources/communication/slides.md
---
---
......@@ -63,9 +63,7 @@ src: ../../resources/adc/slides.md
# Conclusion
we talked about
- Counters
- SysTick
- Timers and Alarms
- PWM
- Analog and Digital
- ADC
- Preemptive & Cooperative Concurrency
- Asynchronous Executor
- `Future`s and how Rust rewrites `async` function
- Communication between tasks
......@@ -5,13 +5,13 @@ class: text-center
highlighter: shiki
lineNumbers: true
info: |
## Asynchronous Development
## UART & SPI
drawings:
persist: false
defaults:
foo: true
transition: slide-left
title: MA - 05 - Asynchronous Development
title: MA - 05 - UART & SPI
mdc: true
layout: cover
themeConfig:
......@@ -21,41 +21,44 @@ exportFilename: ma-05
background:
---
# Asynchronous Development
# UART & SPI
Lecture 5
---
---
# Asynchronous Development
# UART & SPI
used by RP2350
- Concurrency
- Asynchronous Executor
- `Future`s
- Communication between tasks
- Direct Memory Access
- Buses
- Universal Asynchronous Receiver and Transmitter
- Serial Peripheral Interface
- Analog and Digital Sensors
<!-- Concurrency -->
<!--
DMA
-->
---
src: ../../resources/concurrency/slides.md
src: ../../resources/dma/slides.md
---
<!-- Executor -->
<!-- UART -->
---
src: ../../resources/executor/slides.md
src: ../../resources/uart/slides.md
---
<!-- Future -->
<!-- SPI -->
---
src: ../../resources/future/slides.md
src: ../../resources/spi/slides.md
---
<!-- Communication -->
<!-- Sensors -->
---
src: ../../resources/communication/slides.md
src: ../../resources/sensors/slides.md
---
---
......@@ -63,7 +66,8 @@ src: ../../resources/communication/slides.md
# Conclusion
we talked about
- Preemptive & Cooperative Concurrency
- Asynchronous Executor
- `Future`s and how Rust rewrites `async` function
- Communication between tasks
- Direct Memory Access
- Buses
- Universal Asynchronous Receiver and Transmitter
- Serial Peripheral Interface
- Analog and Digital Sensors
......@@ -2,6 +2,15 @@ import { defineMermaidSetup } from '@slidev/types'
export default defineMermaidSetup(() => {
return {
theme: 'forest',
// theme: 'forest',
sequence: {
diagramMarginX: 30,
diagramMarginY: 10,
boxTextMargin: 5,
noteMargin: 10,
messageMargin: 3,
mirrorActors: true,
height: 50
}
}
})
......@@ -5,13 +5,13 @@ class: text-center
highlighter: shiki
lineNumbers: true
info: |
## UART & SPI
## I2C & USB 2.0
drawings:
persist: false
defaults:
foo: true
transition: slide-left
title: MA - 03 - UART & SPI
title: MA - 06 - I2C & USB 2.0
mdc: true
layout: cover
themeConfig:
......@@ -21,42 +21,34 @@ exportFilename: ma-06
background:
---
# UART & SPI
# I2C & USB 2.0
Lecture 6
---
# UART & SPI
# I2C & USB 2.0
used by RP2040
- Direct Memory Access
- Buses
- Universal Asynchronous Receiver and Transmitter
- Serial Peripheral Interface
- Analog and Digital Sensors
- Inter-Integrated Circuit
- Universal Serial Bus v2.0
<!-- DMA -->
<!-- I2C -->
---
src: ../../resources/dma/slides.md
src: ../../resources/i2c/slides.md
---
<!-- UART -->
---
src: ../../resources/uart/slides.md
---
<!-- SPI -->
<!-- Sensors -->
---
src: ../../resources/spi/slides.md
src: ../../resources/sensors_i2c/slides.md
---
<!-- Sensors -->
<!-- USB -->
---
src: ../../resources/sensors/slides.md
src: ../../resources/usb/slides.md
---
---
......@@ -64,8 +56,6 @@ src: ../../resources/sensors/slides.md
# Conclusion
we talked about
- Direct Memory Access
- Buses
- Universal Asynchronous Receiver and Transmitter
- Serial Peripheral Interface
- Analog and Digital Sensors
- Inter-Integrated Circuit
- Universal Serial Bus v2.0
{
"reg": [
{
"bits": 8,
"name": "lower address",
"type": 5,
"attr": [
"address"
]
},
{
"bits": 1,
"name": "R/W",
"type": 3,
"attr": [
"1 - Read",
"0 - Write"
]
},
{
"bits": 2,
"name": "upper address",
"type": 5,
"attr": [
"address"
]
},
{
"bits": 5,
"name": 0x1e,
"type": 1,
"attr": [
"signal usage of 10 bit address"
]
}
]
}
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="84" viewBox="0 0 800 84" class="WaveDrom"><g transform="translate(0.5,0.5)" text-anchor="middle" font-size="14" font-family="sans-serif" font-weight="normal"><g transform="translate(4,21)"><g stroke="black" stroke-width="1" stroke-linecap="round"><line x2="791"/><line y2="31"/><line x2="791" y1="31" y2="31"/><line x1="791" x2="791" y2="31"/><line x1="742" x2="742" y2="3"/><line x1="742" x2="742" y1="31" y2="28"/><line x1="692" x2="692" y2="3"/><line x1="692" x2="692" y1="31" y2="28"/><line x1="643" x2="643" y2="3"/><line x1="643" x2="643" y1="31" y2="28"/><line x1="593" x2="593" y2="3"/><line x1="593" x2="593" y1="31" y2="28"/><line x1="544" x2="544" y2="3"/><line x1="544" x2="544" y1="31" y2="28"/><line x1="494" x2="494" y2="3"/><line x1="494" x2="494" y1="31" y2="28"/><line x1="445" x2="445" y2="3"/><line x1="445" x2="445" y1="31" y2="28"/><line x1="396" x2="396" y2="31"/><line x1="346" x2="346" y2="31"/><line x1="297" x2="297" y2="3"/><line x1="297" x2="297" y1="31" y2="28"/><line x1="247" x2="247" y2="31"/><line x1="198" x2="198" y2="3"/><line x1="198" x2="198" y1="31" y2="28"/><line x1="148" x2="148" y2="3"/><line x1="148" x2="148" y1="31" y2="28"/><line x1="99" x2="99" y2="3"/><line x1="99" x2="99" y1="31" y2="28"/><line x1="49" x2="49" y2="3"/><line x1="49" x2="49" y1="31" y2="28"/></g><g><g><rect x="396" width="396" height="31" field="lower address" style="fill-opacity:0.1;fill:#ffbf00"/><rect x="346" width="49" height="31" field="R/W" style="fill-opacity:0.1;fill:#aaff00"/><rect x="247" width="99" height="31" field="upper address" style="fill-opacity:0.1;fill:#ffbf00"/><rect width="247" height="31" field="30" style="fill-opacity:0.1"/></g><g transform="translate(25,-11)"><g transform="translate(742)"><text y="6">0</text></g><g transform="translate(396)"><text y="6">7</text></g><g transform="translate(346)"><text y="6">8</text></g><g transform="translate(297)"><text y="6">9</text></g><g transform="translate(247)"><text y="6">10</text></g><g transform="translate(198)"><text y="6">11</text></g><g transform="translate(0)"><text y="6">15</text></g></g><g transform="translate(25,15)"><g transform="translate(569)"><text y="6"><tspan>lower address</tspan></text></g><g transform="translate(346)"><text y="6"><tspan>R/W</tspan></text></g><g transform="translate(272)"><text y="6"><tspan>upper address</tspan></text></g><g><g transform="translate(198)"><text y="6">0</text></g><g transform="translate(148)"><text y="6">1</text></g><g transform="translate(99)"><text y="6">1</text></g><g transform="translate(49)"><text y="6">1</text></g><g transform="translate(0)"><text y="6">1</text></g></g></g><g transform="translate(25,39)"><g><g transform="translate(569)"><text y="6"><tspan>address</tspan></text></g></g><g><g transform="translate(346)"><text y="6"><tspan>1 - Read</tspan></text></g><g transform="translate(346,14)"><text y="6"><tspan>0 - Write</tspan></text></g></g><g><g transform="translate(272)"><text y="6"><tspan>address</tspan></text></g></g><g><g transform="translate(99)"><text y="6"><tspan>signal usage of 10 bit address</tspan></text></g></g></g></g></g></g></svg>
\ No newline at end of file
{
"signal": [
{
"name": "SCL",
"wave": "h..01010101010101010101010101010101010101010101010101."
},
{
"name": "SDA",
"wave": "1..0.1.......0.4.4.7.2.4.4.4.4.4.4.4.4.2.9......|..2.01.",
"data": ["a9", "a8",
"r/w",
"ack",
"a7",
"a6",
"a5",
"a4",
"a3",
"a2",
"a1",
"a0",
"ack",
"byte1 | byte2 ... ",
"ack"
],
"phase": 1.5
},
{
"name": "data",
"wave": "xx3.xxxxxxxxxxx4...7.x.4...............x.9.......|.xx5.x",
"data": [
"start",
"upper addr",
"cmd",
"lower address",
"payload bytes",
"stop"
],
"phase": 1.5
}
],
"config": {
"skin": "narrow"
}
}
{
"reg": [
{
"bits": 1,
"name": "R/W",
"type": 3,
"attr": [
"1 - Read",
"0 - Write"
]
},
{
"bits": 7,
"name": "7 bit address",
"type": 5,
"attr": [
"Address"
]
}
]
}
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="84" viewBox="0 0 800 84" class="WaveDrom"><g transform="translate(0.5,0.5)" text-anchor="middle" font-size="14" font-family="sans-serif" font-weight="normal"><g transform="translate(4,21)"><g stroke="black" stroke-width="1" stroke-linecap="round"><line x2="791"/><line y2="31"/><line x2="791" y1="31" y2="31"/><line x1="791" x2="791" y2="31"/><line x1="692" x2="692" y2="31"/><line x1="593" x2="593" y2="3"/><line x1="593" x2="593" y1="31" y2="28"/><line x1="494" x2="494" y2="3"/><line x1="494" x2="494" y1="31" y2="28"/><line x1="396" x2="396" y2="3"/><line x1="396" x2="396" y1="31" y2="28"/><line x1="297" x2="297" y2="3"/><line x1="297" x2="297" y1="31" y2="28"/><line x1="198" x2="198" y2="3"/><line x1="198" x2="198" y1="31" y2="28"/><line x1="99" x2="99" y2="3"/><line x1="99" x2="99" y1="31" y2="28"/></g><g><g><rect x="692" width="99" height="31" field="R/W" style="fill-opacity:0.1;fill:#aaff00"/><rect width="692" height="31" field="7 bit address" style="fill-opacity:0.1;fill:#ffbf00"/></g><g transform="translate(49,-11)"><g transform="translate(692)"><text y="6">0</text></g><g transform="translate(593)"><text y="6">1</text></g><g transform="translate(0)"><text y="6">7</text></g></g><g transform="translate(49,15)"><g transform="translate(692)"><text y="6"><tspan>R/W</tspan></text></g><g transform="translate(297)"><text y="6"><tspan>7 bit address</tspan></text></g></g><g transform="translate(49,39)"><g><g transform="translate(692)"><text y="6"><tspan>1 - Read</tspan></text></g><g transform="translate(692,14)"><text y="6"><tspan>0 - Write</tspan></text></g></g><g><g transform="translate(297)"><text y="6"><tspan>Address</tspan></text></g></g></g></g></g></g></svg>
\ No newline at end of file
{
"signal": [
{
"name": "SCL",
"wave": "h..01010101010101010101010101010101.."
},
{
"name": "SDA",
"wave": "1..0.4.4.4.4.4.4.4.7.2.9..|2.9..|2.01.",
"data": [
"a6",
"a5",
"a4",
"a3",
"a2",
"a1",
"a0",
"r/w",
"ack",
"byte 1 ",
"ack",
"byte 2 ",
"ack"
],
"phase": 1.5
},
{
"name": "data",
"wave": "xx3.x4.............7.x.9.......|.xx5.x",
"data": [
"start",
"address",
"cmd",
"payload bytes",
"stop"
],
"phase": 1.5
}
],
"config": {
"skin": "narrow"
}
}
{
"signal": [
{
"name": "SCL",
"wave": "h..0101010|.101010101010|.101."
},
{
"name": "SDA",
"wave": "xx3.x4.....|.7.2.9.......|.2.5.x",
"data": [
"start",
"address ",
"cmd",
"ack",
"payload bytes",
"ack",
"stop"
],
"phase": 1.5
}
],
"config": {
"skin": "narrow"
}
}
\ No newline at end of file
This diff is collapsed.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="691px" height="221px" viewBox="-0.5 -0.5 691 221"><defs><style>@keyframes ge-flow-animation-3A4r2VhsrRmw3uIDTLah {&#xa; to {&#xa; stroke-dashoffset: 0;&#xa; }&#xa;}</style></defs><g><g><path d="M 130.1 37.5 L 420 37.5 L 420 149.9" fill="none" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" stroke-dasharray="8" style="animation: 1000ms ease-in-out 0s infinite alternate none running ge-flow-animation-3A4r2VhsrRmw3uIDTLah; stroke-dashoffset: 16px;"/><path d="M 123.35 37.5 L 132.35 33 L 130.1 37.5 L 132.35 42 Z" fill="#3a7e86" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 420 156.65 L 415.5 147.65 L 420 149.9 L 424.5 147.65 Z" fill="#3a7e86" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 130.1 37.5 L 280 37.5 L 280 149.9" fill="none" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" stroke-dasharray="8" style="animation: 1000ms ease-in-out 0s infinite alternate none running ge-flow-animation-3A4r2VhsrRmw3uIDTLah; stroke-dashoffset: 16px;"/><path d="M 123.35 37.5 L 132.35 33 L 130.1 37.5 L 132.35 42 Z" fill="#3a7e86" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 156.65 L 275.5 147.65 L 280 149.9 L 284.5 147.65 Z" fill="#3a7e86" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><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: 24px; margin-left: 165px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #4c7c85; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(76, 124, 133); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">SDA</div></div></div></foreignObject><text x="165" y="27" fill="#4c7c85" font-family="Helvetica" font-size="11px" text-anchor="middle">SDA</text></switch></g></g><g><path d="M 130.1 37.5 L 600 37.5 L 600 149.9" fill="none" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke" stroke-dasharray="8" style="animation: 1000ms ease-in-out 0s infinite alternate none running ge-flow-animation-3A4r2VhsrRmw3uIDTLah; stroke-dashoffset: 16px;"/><path d="M 123.35 37.5 L 132.35 33 L 130.1 37.5 L 132.35 42 Z" fill="#3a7e86" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 600 156.65 L 595.5 147.65 L 600 149.9 L 604.5 147.65 Z" fill="#3a7e86" stroke="#3a7e86" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 120 112.5 L 340 112.5 L 340 153.63" fill="none" stroke="#009900" stroke-miterlimit="10" pointer-events="stroke" stroke-dasharray="8" style="animation: 500ms linear 0s infinite normal none running ge-flow-animation-3A4r2VhsrRmw3uIDTLah; stroke-dashoffset: 16px;"/><path d="M 340 158.88 L 336.5 151.88 L 340 153.63 L 343.5 151.88 Z" fill="#009900" stroke="#009900" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><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: 101px; margin-left: 165px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #009900; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 153, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">SCL</div></div></div></foreignObject><text x="165" y="104" fill="#009900" font-family="Helvetica" font-size="11px" text-anchor="middle">SCL</text></switch></g></g><g><path d="M 120 112.5 L 480 112.5 L 480 153.63" fill="none" stroke="#009900" stroke-miterlimit="10" pointer-events="stroke" stroke-dasharray="8" style="animation: 500ms linear 0s infinite normal none running ge-flow-animation-3A4r2VhsrRmw3uIDTLah; stroke-dashoffset: 16px;"/><path d="M 480 158.88 L 476.5 151.88 L 480 153.63 L 483.5 151.88 Z" fill="#009900" stroke="#009900" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 120 112.5 L 660 112.5 L 660 153.63" fill="none" stroke="#009900" stroke-miterlimit="10" pointer-events="stroke" stroke-dasharray="8" style="animation: 500ms linear 0s infinite normal none running ge-flow-animation-3A4r2VhsrRmw3uIDTLah; stroke-dashoffset: 16px;"/><path d="M 660 158.88 L 656.5 151.88 L 660 153.63 L 663.5 151.88 Z" fill="#009900" stroke="#009900" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="0" y="0" width="120" height="150" rx="18" ry="18" fill="#ffcc99" stroke="#36393d" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 75px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><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;">Controller</div></div></div></foreignObject><text x="60" y="79" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Controller</text></switch></g></g><g><rect x="390" y="160" width="120" height="60" rx="9" ry="9" fill="#b0e3e6" stroke="#0e8088" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 391px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><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;"><div>Target</div>@0x12</div></div></div></foreignObject><text x="450" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Target@0x12</text></switch></g></g><g><rect x="250" y="160" width="120" height="60" rx="9" ry="9" fill="#b0e3e6" stroke="#0e8088" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><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;"><div>Target</div>@0x17</div></div></div></foreignObject><text x="310" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Target@0x17</text></switch></g></g><g><rect x="570" y="160" width="120" height="60" rx="9" ry="9" fill="#b0e3e6" stroke="#0e8088" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 571px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><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;"><div>Target</div>@0x5e</div></div></div></foreignObject><text x="630" y="194" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Target@0x5e</text></switch></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/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>
\ No newline at end of file