add USB diagrams
|
@ -1,9 +1,13 @@
|
|||
# Control Transfers
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-control.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
Before we continue we need to discuss how data transfers work under the USB protocol.
|
||||
|
||||
The control pipe handles *control transfers*, a special kind of data transfer used by the host to issue *requests*. A control transfer is a data transfer that occurs in three stages: a SETUP stage, an optional DATA stage and a STATUS stage.
|
||||
|
||||
During the SETUP stage the host sends 8 bytes of data that identify the control request. Depending on the issued request there may be a DATA stage or not; during the DATA stage data is transferred either from the device to the host or the other way around. During the STATUS stage the device acknowledges, or not, the whole control request.
|
||||
|
||||
For detailed information about control transfers check section 5.5, Control Transfers, of the [USB 2.0 specification][usb20].
|
||||
For detailed information about control transfers check section 5.5, Control Transfers, of the [USB 2.0 specification][usb20].
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
# Device Descriptor
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-device.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
After receiving a GET_DESCRIPTOR request during the SETUP stage the device needs to respond with a *descriptor* during the DATA stage.
|
||||
|
||||
A descriptor is a binary encoded data structure sent by the device to the host. The device descriptor, in particular, contains information about the device, like its product and vendor identifiers and how many *configurations* it has. The format of the device descriptor is specified in section 9.6.1, Device, of the USB specification.
|
||||
|
|
|
@ -8,6 +8,10 @@ We have covered configurations and endpoints but what is an *interface*?
|
|||
|
||||
## Interface
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-interface.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
An interface is closest to a USB device's function. For example, a USB mouse may expose a single HID (Human Interface Device) interface to report user input to the host. USB devices can expose multiple interfaces within a configuration. For example, the nRF52840 Dongle could expose both a CDC ACM interface (AKA virtual serial port) *and* a HID interface; the first interface could be used for (`log::info!`-style) logs; and the second one could provide a RPC (Remote Procedure Call) interface to the host for controlling the nRF52840's radio.
|
||||
|
||||
An interface is made up of one or more *endpoints*. To give an example, a HID interface can use two (interrupt) endpoints, one IN and one OUT, for bidirectional communication with the host. A single endpoint cannot be used by more than one interface with the exception of the special "endpoint 0", which can be (and usually is) shared by all interfaces.
|
||||
|
@ -16,6 +20,10 @@ For detailed information about interfaces check section 9.6.5, Interface, of the
|
|||
|
||||
## Configuration descriptor
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-configuration.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
The configuration descriptor describes one of the device configurations to the host. The descriptor contains the following information about a particular configuration:
|
||||
|
||||
- the total length of the configuration: this is the number of bytes required to transfer this configuration descriptor and the interface and endpoint descriptors associated to it
|
||||
|
@ -29,6 +37,10 @@ The configuration descriptor describes one of the device configurations to the h
|
|||
|
||||
## Interface descriptor
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-interface.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
The interface descriptor describes one of the device interfaces to the host. The descriptor contains the following information about a particular interface:
|
||||
|
||||
- its interface number -- this is a zero-based index
|
||||
|
@ -41,16 +53,20 @@ The number of endpoints can be zero and endpoint zero must not be accounted when
|
|||
|
||||
## Endpoint descriptor
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-endpoint.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
We will not need to deal with endpoint descriptors in this workshop but they are specified in section 9.6.6, Endpoint, of the USB specification.
|
||||
|
||||
## Response
|
||||
|
||||
So how should we respond to the host? As our only goal is to be enumerated we'll respond with the minimum amount of information possible.
|
||||
|
||||
**First, check the request:**
|
||||
**First, check the request:**
|
||||
Configuration descriptors are requested by *index*, not by their configuration value. Since we reported a single configuration in our device descriptor the index in the request must be zero. Any other value should be rejected by stalling the endpoint (see section [Dealing with unknown requests: Stalling the endpoint](./unknown-requests.md#dealing-with-unknown-requests-stalling-the-endpoint) for more information).
|
||||
|
||||
**Next, create and send a response:**
|
||||
**Next, create and send a response:**
|
||||
The response should consist of the configuration descriptor, followed by interface descriptors and then by (optional) endpoint descriptors. We'll include a minimal single interface descriptor in the response. Since endpoints are optional we will include none.
|
||||
|
||||
|
||||
|
|
285
embedded-workshop-book/src/usb-all-endpoints.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="115mm"
|
||||
height="99mm"
|
||||
viewBox="0 0 115 99.000002"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="usb-endpoint.svg"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-3.7252903e-7,-0.45692272)">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.213545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833"
|
||||
width="114.78645"
|
||||
height="94.786453"
|
||||
x="0.10677287"
|
||||
y="4.5636954"
|
||||
rx="3.8352282" />
|
||||
<rect
|
||||
rx="3.750793"
|
||||
y="11.564402"
|
||||
x="5.1074805"
|
||||
height="79.785042"
|
||||
width="104.78503"
|
||||
id="rect833-9"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
id="text879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;stroke-width:0.264583;">configuration 1</tspan></text>
|
||||
<text
|
||||
id="text879-1"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
id="tspan877-2"
|
||||
sodipodi:role="line">device</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.241303;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7"
|
||||
width="94.786263"
|
||||
height="35.758698"
|
||||
x="10.10687"
|
||||
y="44.563793"
|
||||
rx="3.3928852" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
id="text875"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">interface 0</tspan></text>
|
||||
<rect
|
||||
rx="3.3932912"
|
||||
y="18.558132"
|
||||
x="10.10121"
|
||||
height="15.757795"
|
||||
width="94.797585"
|
||||
id="rect833-9-7-0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.242205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text875-9"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
id="tspan873-3"
|
||||
sodipodi:role="line">control endpoint</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
id="path966"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
id="tspan877-6"
|
||||
sodipodi:role="line">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966-2"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
id="path966-6-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
id="text879-0-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583;fill:#000000;">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
id="text879-0-1-2"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
id="tspan877-6-8-0"
|
||||
sodipodi:role="line">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3"
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
id="text837"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-75"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan1004"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
sodipodi:role="line">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-6"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
id="tspan835-2"
|
||||
sodipodi:role="line">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="66.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-1"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
id="tspan835-27"
|
||||
sodipodi:role="line">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-9"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
id="tspan835-3"
|
||||
sodipodi:role="line">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
285
embedded-workshop-book/src/usb-configuration.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="115mm"
|
||||
height="99mm"
|
||||
viewBox="0 0 115 99.000002"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="usb-configuration.svg"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-3.7252903e-7,-0.45692272)">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.213545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833"
|
||||
width="114.78645"
|
||||
height="94.786453"
|
||||
x="0.10677287"
|
||||
y="4.5636954"
|
||||
rx="3.8352282" />
|
||||
<rect
|
||||
rx="3.750793"
|
||||
y="11.564402"
|
||||
x="5.1074805"
|
||||
height="79.785042"
|
||||
width="104.78503"
|
||||
id="rect833-9"
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.50000001;stroke-miterlimit:4;stroke-dasharray:3.00000008,3.00000008;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
id="text879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';fill:#0000ff;stroke-width:0.264583">configuration 1</tspan></text>
|
||||
<text
|
||||
id="text879-1"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
id="tspan877-2"
|
||||
sodipodi:role="line">device</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.241303;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7"
|
||||
width="94.786263"
|
||||
height="35.758698"
|
||||
x="10.10687"
|
||||
y="44.563793"
|
||||
rx="3.3928852" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
id="text875"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">interface 0</tspan></text>
|
||||
<rect
|
||||
rx="3.3932912"
|
||||
y="18.558132"
|
||||
x="10.10121"
|
||||
height="15.757795"
|
||||
width="94.797585"
|
||||
id="rect833-9-7-0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.242205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text875-9"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
id="tspan873-3"
|
||||
sodipodi:role="line">control endpoint</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
id="path966"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
id="tspan877-6"
|
||||
sodipodi:role="line">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966-2"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
id="path966-6-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal;fill:#0000ff;"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
id="text879-0-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';stroke-width:0.264583;fill:#0000ff;">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
id="text879-0-1-2"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
id="tspan877-6-8-0"
|
||||
sodipodi:role="line">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
id="text837"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-75"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan1004"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
sodipodi:role="line">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-6"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
id="tspan835-2"
|
||||
sodipodi:role="line">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="66.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-1"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
id="tspan835-27"
|
||||
sodipodi:role="line">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-9"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
id="tspan835-3"
|
||||
sodipodi:role="line">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
285
embedded-workshop-book/src/usb-control.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="115mm"
|
||||
height="99mm"
|
||||
viewBox="0 0 115 99.000002"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="usb-control.svg"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-3.7252903e-7,-0.45692272)">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.213545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833"
|
||||
width="114.78645"
|
||||
height="94.786453"
|
||||
x="0.10677287"
|
||||
y="4.5636954"
|
||||
rx="3.8352282" />
|
||||
<rect
|
||||
rx="3.750793"
|
||||
y="11.564402"
|
||||
x="5.1074805"
|
||||
height="79.785042"
|
||||
width="104.78503"
|
||||
id="rect833-9"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
id="text879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;stroke-width:0.264583;">configuration 1</tspan></text>
|
||||
<text
|
||||
id="text879-1"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
id="tspan877-2"
|
||||
sodipodi:role="line">device</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.241303;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7"
|
||||
width="94.786263"
|
||||
height="35.758698"
|
||||
x="10.10687"
|
||||
y="44.563793"
|
||||
rx="3.3928852" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
id="text875"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">interface 0</tspan></text>
|
||||
<rect
|
||||
rx="3.3932912"
|
||||
y="18.558132"
|
||||
x="10.10121"
|
||||
height="15.757795"
|
||||
width="94.797585"
|
||||
id="rect833-9-7-0"
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<text
|
||||
id="text875-9"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';fill:#0000ff;stroke-width:0.265;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
id="tspan873-3"
|
||||
sodipodi:role="line">control endpoint</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
id="path966"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
id="tspan877-6"
|
||||
sodipodi:role="line">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966-2"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
id="path966-6-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
id="text879-0-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583;fill:#000000;">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
id="text879-0-1-2"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
id="tspan877-6-8-0"
|
||||
sodipodi:role="line">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3"
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
id="text837"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-75"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan1004"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';fill:#0000ff;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
sodipodi:role="line">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-6"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
id="tspan835-2"
|
||||
sodipodi:role="line">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="66.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-1"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
id="tspan835-27"
|
||||
sodipodi:role="line">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-9"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
id="tspan835-3"
|
||||
sodipodi:role="line">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
285
embedded-workshop-book/src/usb-device.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="96"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
sodipodi:docname="usb-device.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 115 99.000002"
|
||||
height="99mm"
|
||||
width="115mm">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
fit-margin-bottom="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-top="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-width="2560"
|
||||
showgrid="false"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-3.7252903e-7,-0.45692272)"
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<rect
|
||||
rx="3.8352282"
|
||||
y="4.5636954"
|
||||
x="0.10677287"
|
||||
height="94.786453"
|
||||
width="114.78645"
|
||||
id="rect833"
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.4;stroke-miterlimit:4;stroke-dasharray:2.39999999,2.39999999;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.214961;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9"
|
||||
width="104.78503"
|
||||
height="79.785042"
|
||||
x="5.1074805"
|
||||
y="11.564402"
|
||||
rx="3.750793" />
|
||||
<text
|
||||
id="text879"
|
||||
y="10.173261"
|
||||
x="10.122406"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="10.173261"
|
||||
x="10.122406"
|
||||
id="tspan877"
|
||||
sodipodi:role="line">configuration 1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;fill:#0000ff;"
|
||||
x="49.851894"
|
||||
y="3.6732612"
|
||||
id="text879-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-2"
|
||||
x="49.851894"
|
||||
y="3.6732612"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';stroke-width:0.264583;fill:#0000ff;">device</tspan></text>
|
||||
<rect
|
||||
rx="3.3928852"
|
||||
y="44.563793"
|
||||
x="10.10687"
|
||||
height="35.758698"
|
||||
width="94.786263"
|
||||
id="rect833-9-7"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.241303;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text875"
|
||||
y="43.434914"
|
||||
x="43.435753"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="43.434914"
|
||||
x="43.435753"
|
||||
id="tspan873"
|
||||
sodipodi:role="line">interface 0</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.242205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0"
|
||||
width="94.797585"
|
||||
height="15.757795"
|
||||
x="10.10121"
|
||||
y="18.558132"
|
||||
rx="3.3932912" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="61.47612"
|
||||
y="16.691795"
|
||||
id="text875-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873-3"
|
||||
x="61.47612"
|
||||
y="16.691795"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">control endpoint</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
id="path966-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal;fill:#0000ff;"
|
||||
x="16.506218"
|
||||
y="95.663483"
|
||||
id="text879-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6"
|
||||
x="16.506218"
|
||||
y="95.663483"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Italic';stroke-width:0.264583;fill:#0000ff;">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
id="path966-2"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6-6"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0-1"
|
||||
y="84.900742"
|
||||
x="61.276436"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="84.900742"
|
||||
x="61.276436"
|
||||
id="tspan877-6-8"
|
||||
sodipodi:role="line">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="38.344597"
|
||||
y="63.611027"
|
||||
id="text879-0-1-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8-0"
|
||||
x="38.344597"
|
||||
y="63.611027"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837"
|
||||
y="27.619555"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="18.444866"
|
||||
id="tspan835"
|
||||
sodipodi:role="line">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="60.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="62.075443"
|
||||
y="27.619555"
|
||||
id="text837-75"><tspan
|
||||
sodipodi:role="line"
|
||||
x="62.075443"
|
||||
y="27.619555"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
id="tspan1004">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="48.581924"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="54.619556"
|
||||
id="text837-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835-2"
|
||||
x="18.444866"
|
||||
y="54.619556"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="66.581924"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="17.075441"
|
||||
y="72.61956"
|
||||
id="text837-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835-27"
|
||||
x="17.075441"
|
||||
y="72.61956"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="48.581924"
|
||||
x="60.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="63.444866"
|
||||
y="54.619556"
|
||||
id="text837-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835-3"
|
||||
x="63.444866"
|
||||
y="54.619556"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
285
embedded-workshop-book/src/usb-endpoint.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="115mm"
|
||||
height="99mm"
|
||||
viewBox="0 0 115 99.000002"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="usb-endpoint.svg"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-3.7252903e-7,-0.45692272)">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.213545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833"
|
||||
width="114.78645"
|
||||
height="94.786453"
|
||||
x="0.10677287"
|
||||
y="4.5636954"
|
||||
rx="3.8352282" />
|
||||
<rect
|
||||
rx="3.750793"
|
||||
y="11.564402"
|
||||
x="5.1074805"
|
||||
height="79.785042"
|
||||
width="104.78503"
|
||||
id="rect833-9"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
id="text879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;stroke-width:0.264583;">configuration 1</tspan></text>
|
||||
<text
|
||||
id="text879-1"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
id="tspan877-2"
|
||||
sodipodi:role="line">device</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.241303;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7"
|
||||
width="94.786263"
|
||||
height="35.758698"
|
||||
x="10.10687"
|
||||
y="44.563793"
|
||||
rx="3.3928852" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
id="text875"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">interface 0</tspan></text>
|
||||
<rect
|
||||
rx="3.3932912"
|
||||
y="18.558132"
|
||||
x="10.10121"
|
||||
height="15.757795"
|
||||
width="94.797585"
|
||||
id="rect833-9-7-0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.242205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text875-9"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
id="tspan873-3"
|
||||
sodipodi:role="line">control endpoint</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
id="path966"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
id="tspan877-6"
|
||||
sodipodi:role="line">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966-2"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
id="path966-6-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
id="text879-0-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583;fill:#000000;">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
id="text879-0-1-2"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
id="tspan877-6-8-0"
|
||||
sodipodi:role="line">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
id="text837"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-75"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan1004"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
sodipodi:role="line">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.50000001;stroke-miterlimit:4;stroke-dasharray:3.00000008,3.00000008;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-6"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:bold;font-style:italic;font-stretch:normal;font-variant:normal;fill:#0000ff;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';stroke-width:0.264583;fill:#0000ff;"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
id="tspan835-2"
|
||||
sodipodi:role="line">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:3,3;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="66.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-1"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:bold;font-style:italic;font-stretch:normal;font-variant:normal;fill:#0000ff;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';stroke-width:0.264583;fill:#0000ff;"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
id="tspan835-27"
|
||||
sodipodi:role="line">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.50000001;stroke-miterlimit:4;stroke-dasharray:3.00000008,3.00000008;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-9"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:bold;font-style:italic;font-stretch:normal;font-variant:normal;fill:#0000ff;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';stroke-width:0.264583;fill:#0000ff;"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
id="tspan835-3"
|
||||
sodipodi:role="line">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -1,13 +1,21 @@
|
|||
# USB Endpoints
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-all-endpoints.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
Under the USB protocol data transfers occur over *endpoints*.
|
||||
|
||||
Endpoints are similar to UDP or TCP ports in that they allow logical multiplexing of data over a single physical USB bus. USB endpoints, however, have directions: an endpoint can either be an IN endpoint or an OUT endpoint. The direction is always from the perspective of the host so at an IN endpoint data travels from the device to the host and at an OUT endpoint data travels from the host to the device.
|
||||
|
||||
Endpoints are identified by their address, a zero-based index, and direction. There are four types of endpoints: control endpoints, bulk endpoints, interrupt endpoints and isochronous endpoints. Each endpoint type has different properties: reliability, latency, etc. In this workshop we'll only need to deal with control endpoints.
|
||||
|
||||
<p align="center">
|
||||
<img src="/usb-control.svg" alt="TODO">
|
||||
<p>
|
||||
|
||||
All USB devices must use "endpoint 0" as the default control endpoint. "Endpoint 0" actually refers to two endpoints: endpoint 0 IN and endpoint 0 OUT. This endpoint pair is used to establish a *control pipe*, a bidirectional communication channel between the host and device where data is exchanged using a predefined format. The default control pipe over endpoint 0 is mandatory: it must always be present and must always be active.
|
||||
|
||||
For detailed information about endpoints check section 5.3.1, Device Endpoints, of the [USB 2.0 specification][usb20].
|
||||
|
||||
[usb20]: https://www.usb.org/document-library/usb-20-specification
|
||||
[usb20]: https://www.usb.org/document-library/usb-20-specification
|
||||
|
|
285
embedded-workshop-book/src/usb-interface.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="115mm"
|
||||
height="99mm"
|
||||
viewBox="0 0 115 99.000002"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="usb-interface.svg"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-3.7252903e-7,-0.45692272)">
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.213545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833"
|
||||
width="114.78645"
|
||||
height="94.786453"
|
||||
x="0.10677287"
|
||||
y="4.5636954"
|
||||
rx="3.8352282" />
|
||||
<rect
|
||||
rx="3.750793"
|
||||
y="11.564402"
|
||||
x="5.1074805"
|
||||
height="79.785042"
|
||||
width="104.78503"
|
||||
id="rect833-9"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
id="text879"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877"
|
||||
x="10.122406"
|
||||
y="10.173261"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;stroke-width:0.264583;">configuration 1</tspan></text>
|
||||
<text
|
||||
id="text879-1"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="3.6732612"
|
||||
x="49.851894"
|
||||
id="tspan877-2"
|
||||
sodipodi:role="line">device</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#0000ff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect833-9-7"
|
||||
width="94.786263"
|
||||
height="35.758698"
|
||||
x="10.10687"
|
||||
y="44.563793"
|
||||
rx="3.3928852" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#0000ff;stroke-width:0.264583"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
id="text875"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873"
|
||||
x="43.435753"
|
||||
y="43.434914"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace Bold Italic';fill:#0000ff;stroke-width:0.264583">interface 0 </tspan></text>
|
||||
<rect
|
||||
rx="3.3932912"
|
||||
y="18.558132"
|
||||
x="10.10121"
|
||||
height="15.757795"
|
||||
width="94.797585"
|
||||
id="rect833-9-7-0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.242205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text875-9"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="16.691795"
|
||||
x="61.47612"
|
||||
id="tspan873-3"
|
||||
sodipodi:role="line">control endpoint</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
id="path966"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="95.663483"
|
||||
x="16.506218"
|
||||
id="tspan877-6"
|
||||
sodipodi:role="line">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966-2"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
id="path966-6-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
id="text879-0-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8"
|
||||
x="61.276436"
|
||||
y="84.900742"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583;fill:#000000;">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
id="text879-0-1-2"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Italic';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;fill:#0000ff;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:4.23333px;stroke-width:0.264583;fill:#0000ff;-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal;"
|
||||
y="63.611027"
|
||||
x="38.344597"
|
||||
id="tspan877-6-8-0"
|
||||
sodipodi:role="line">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
id="text837"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835"
|
||||
x="18.444866"
|
||||
y="27.619555"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-75"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan1004"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="62.075443"
|
||||
sodipodi:role="line">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-6"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="18.444866"
|
||||
id="tspan835-2"
|
||||
sodipodi:role="line">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="66.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-1"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="72.61956"
|
||||
x="17.075441"
|
||||
id="tspan835-27"
|
||||
sodipodi:role="line">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="60.125"
|
||||
y="48.581924"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837-9"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="54.619556"
|
||||
x="63.444866"
|
||||
id="tspan835-3"
|
||||
sodipodi:role="line">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
285
embedded-workshop-book/src/usb.svg
Normal file
|
@ -0,0 +1,285 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="96"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-filename="/home/japaric/Documents/usb.png"
|
||||
sodipodi:docname="usb.svg"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 115 99.000002"
|
||||
height="99mm"
|
||||
width="115mm">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
fit-margin-bottom="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-top="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-x="2560"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-width="2560"
|
||||
showgrid="false"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:cy="200.55919"
|
||||
inkscape:cx="253.51713"
|
||||
inkscape:zoom="1.7732613"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-3.7252903e-7,-0.45692272)"
|
||||
id="layer1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1">
|
||||
<rect
|
||||
rx="3.8352282"
|
||||
y="4.5636954"
|
||||
x="0.10677287"
|
||||
height="94.786453"
|
||||
width="114.78645"
|
||||
id="rect833"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.213545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-dashoffset:0"
|
||||
id="rect833-9"
|
||||
width="104.78503"
|
||||
height="79.785042"
|
||||
x="5.1074805"
|
||||
y="11.564402"
|
||||
rx="3.750793" />
|
||||
<text
|
||||
id="text879"
|
||||
y="10.173261"
|
||||
x="10.122406"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;fill:#000000;stroke-width:0.264583;"
|
||||
y="10.173261"
|
||||
x="10.122406"
|
||||
id="tspan877"
|
||||
sodipodi:role="line">configuration 1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="49.851894"
|
||||
y="3.6732612"
|
||||
id="text879-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-2"
|
||||
x="49.851894"
|
||||
y="3.6732612"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">device</tspan></text>
|
||||
<rect
|
||||
rx="3.3928852"
|
||||
y="44.563793"
|
||||
x="10.10687"
|
||||
height="35.758698"
|
||||
width="94.786263"
|
||||
id="rect833-9-7"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.241303;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
id="text875"
|
||||
y="43.434914"
|
||||
x="43.435753"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="43.434914"
|
||||
x="43.435753"
|
||||
id="tspan873"
|
||||
sodipodi:role="line">interface 0</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.242205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0"
|
||||
width="94.797585"
|
||||
height="15.757795"
|
||||
x="10.10121"
|
||||
y="18.558132"
|
||||
rx="3.3932912" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="61.47612"
|
||||
y="16.691795"
|
||||
id="text875-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan873-3"
|
||||
x="61.47612"
|
||||
y="16.691795"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">control endpoint</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
id="path966"
|
||||
d="m 10.769992,94.583805 3.32698,-6.896569"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 14.027673,94.828825 c 3.147494,-6.890042 3.147494,-6.890042 3.147494,-6.890042"
|
||||
id="path966-6" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="16.506218"
|
||||
y="95.663483"
|
||||
id="text879-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6"
|
||||
x="16.506218"
|
||||
y="95.663483"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">bNumConfigurations=1</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 54.690681,83.575497 3.32698,-6.896578"
|
||||
id="path966-2"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path966-6-6"
|
||||
d="m 57.948362,83.820517 c 3.147494,-6.890051 3.147494,-6.890051 3.147494,-6.890051"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text879-0-1"
|
||||
y="84.900742"
|
||||
x="61.276436"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;stroke-width:0.264583;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;fill:#000000;"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583;fill:#000000;"
|
||||
y="84.900742"
|
||||
x="61.276436"
|
||||
id="tspan877-6-8"
|
||||
sodipodi:role="line">bNumInterfaces=1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="38.344597"
|
||||
y="63.611027"
|
||||
id="text879-0-1-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan877-6-8-0"
|
||||
x="38.344597"
|
||||
y="63.611027"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">bNumEndpoints=3</tspan></text>
|
||||
<rect
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect833-9-7-0-7-3"
|
||||
width="39.739494"
|
||||
height="9.7394924"
|
||||
x="15.125"
|
||||
y="21.581923"
|
||||
rx="1.4224799" />
|
||||
<text
|
||||
id="text837"
|
||||
y="27.619555"
|
||||
x="18.444866"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
y="27.619555"
|
||||
x="18.444866"
|
||||
id="tspan835"
|
||||
sodipodi:role="line">endpoint 0 IN</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="21.581923"
|
||||
x="60.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-6"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="62.075443"
|
||||
y="27.619555"
|
||||
id="text837-75"><tspan
|
||||
sodipodi:role="line"
|
||||
x="62.075443"
|
||||
y="27.619555"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583"
|
||||
id="tspan1004">endpoint 0 OUT</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="48.581924"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-5"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="18.444866"
|
||||
y="54.619556"
|
||||
id="text837-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835-2"
|
||||
x="18.444866"
|
||||
y="54.619556"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 1 IN</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="66.581924"
|
||||
x="15.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-9"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="17.075441"
|
||||
y="72.61956"
|
||||
id="text837-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835-27"
|
||||
x="17.075441"
|
||||
y="72.61956"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 2 OUT</tspan></text>
|
||||
<rect
|
||||
rx="1.4224799"
|
||||
y="48.581924"
|
||||
x="60.125"
|
||||
height="9.7394924"
|
||||
width="39.739494"
|
||||
id="rect833-9-7-0-7-3-0"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:0.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:'DejaVuSansMono Nerd Font';-inkscape-font-specification:'DejaVuSansMono Nerd Font';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
|
||||
x="63.444866"
|
||||
y="54.619556"
|
||||
id="text837-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan835-3"
|
||||
x="63.444866"
|
||||
y="54.619556"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:monospace;stroke-width:0.264583">endpoint 2 IN</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |