Merge pull request #62 from ferrous-systems/usb-diagrams

add USB diagrams
This commit is contained in:
Jorge Aparicio 2020-07-16 14:52:15 +00:00 committed by GitHub
commit 2a12128732
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 2139 additions and 78 deletions

View file

@ -47,6 +47,11 @@
- [Dealing with Unknown Requests](./unknown-requests.md)
- [SET_ADDRESS](./set-address.md)
- [Handling GET_DESCRIPTOR Configuration Requests](./get-descriptor-config.md)
- [Configuration descriptor](./configuration-descriptor.md)
- [Interfaces](./interfaces.md)
- [Interface descriptor](./interface-descriptor.md)
- [Endpoint descriptor](./endpoint-descriptor.md)
- [Response](./get-descriptor-config-response.md)
- [SET_CONFIGURATION (Linux & Mac OS)](./set-config.md)
- [Idle State](./idle-state.md)
- [Inspecting the Descriptors](./inspecting-descriptors.md)

View file

@ -0,0 +1,20 @@
# Configuration descriptor
<p align="center">
<img src="/usb-configuration.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the 'configuration 1' rectangle and the 'bNumInterface' label are highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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
- its number of interfaces -- must be >= 1
- its configuration value -- this is *not* an index and can be any non-zero value
- whether the configuration is self-powered
- whether the configuration supports remote wakeup
- its maximum power consumption
> The full format of the configuration descriptor is specified in section 9.6.3, Configuration, of the USB specification.

View file

@ -1,9 +1,17 @@
# Control Transfers
<p align="center">
<img src="/usb-control.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the 'control endpoint' rectangle is highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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].

View file

@ -1,5 +1,13 @@
# Device Descriptor
<p align="center">
<img src="/usb-device.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the outermost 'device' rectangle and the 'bNumConfigurations' label are highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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.

View file

@ -0,0 +1,11 @@
## Endpoint descriptor
<p align="center">
<img src="/usb-endpoint.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the endpoint rectangles inside the 'interface 1' rectangle are highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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.

View file

@ -0,0 +1,37 @@
# 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:**
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:**
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.
The configuration descriptor and one interface descriptor will be concatenated in a single packet so this response should be completed in a single DATA stage.
The configuration descriptor in the response should contain these fields:
- `bLength = 9`, the size of this descriptor (see table 9-10 in the USB spec)
- `bDescriptorType = 2`, configuration descriptor (see table 9-5 in the USB spec)
- `wTotalLength = 18` = one configuration descriptor (9 bytes) and one interface descriptor (9 bytes)
- `bNumInterfaces = 1`, a single interface (the minimum value)
- `bConfigurationValue = 42`, any non-zero value will do
- `iConfiguration = 0`, string descriptors are not supported
- `bmAttributes { self_powered: true, remote_wakeup: false }`, self-powered due to the debugger connection
- `bMaxPower = 250` (500 mA), this is the maximum allowed value but any (non-zero?) value should do
The interface descriptor in the response should contain these fields:
- `bLength = 9`, the size of this descriptor (see table 9-11 in the USB spec)
- `bDescriptorType = 4`, interface descriptor (see table 9-5 in the USB spec)
- `bInterfaceNumber = 0`, this is the first, and only, interface
- `bAlternateSetting = 0`, alternate settings are not supported
- `bNumEndpoints = 0`, no endpoint associated to this interface (other than the control endpoint)
- `bInterfaceClass = bInterfaceSubClass = bInterfaceProtocol = 0`, does not adhere to any specified USB interface
- `iInterface = 0`, string descriptors are not supported
Again, we strongly recommend that you use the `usb2::configuration::Descriptor` and `usb2::interface::Descriptor` abstractions here. Each descriptor instance can be transformed into its byte representation using the `bytes` method -- the method returns an array. To concatenate both arrays you can use an stack-allocated [`heapless::Vec`] buffer. If you haven't the `heapless` crate before you can find example usage in the the `src/bin/vec.rs` file.
[`heapless::Vec`]: https://docs.rs/heapless/0.5.5/heapless/struct.Vec.html

View file

@ -4,79 +4,4 @@ When the host issues a GET_DESCRIPTOR *Configuration* request the device needs t
A GET_DESCRIPTOR Configuration request is a GET_DESCRIPTOR request where the descriptor type encoded in the high bit of `wValue` is CONFIGURATION.
We have covered configurations and endpoints but what is an *interface*?
## Interface
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.
For detailed information about interfaces check section 9.6.5, Interface, of the USB specification.
## Configuration descriptor
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
- its number of interfaces -- must be >= 1
- its configuration value -- this is *not* an index and can be any non-zero value
- whether the configuration is self-powered
- whether the configuration supports remote wakeup
- its maximum power consumption
> The full format of the configuration descriptor is specified in section 9.6.3, Configuration, of the USB specification.
## Interface descriptor
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
- its alternate setting -- this allows configuring the interface
- its number of endpoints
- class, subclass and protocol -- these define the interface (HID, or TTY ACM, or DFU, etc.) according to the USB specification
The number of endpoints can be zero and endpoint zero must not be accounted when counting endpoints.
> The full format of the interface descriptor is specified in section 9.6.5, Interface, of the USB specification.
## Endpoint descriptor
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:**
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:**
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.
The configuration descriptor and one interface descriptor will be concatenated in a single packet so this response should be completed in a single DATA stage.
The configuration descriptor in the response should contain these fields:
- `bLength = 9`, the size of this descriptor (see table 9-10 in the USB spec)
- `bDescriptorType = 2`, configuration descriptor (see table 9-5 in the USB spec)
- `wTotalLength = 18` = one configuration descriptor (9 bytes) and one interface descriptor (9 bytes)
- `bNumInterfaces = 1`, a single interface (the minimum value)
- `bConfigurationValue = 42`, any non-zero value will do
- `iConfiguration = 0`, string descriptors are not supported
- `bmAttributes { self_powered: true, remote_wakeup: false }`, self-powered due to the debugger connection
- `bMaxPower = 250` (500 mA), this is the maximum allowed value but any (non-zero?) value should do
The interface descriptor in the response should contain these fields:
- `bLength = 9`, the size of this descriptor (see table 9-11 in the USB spec)
- `bDescriptorType = 4`, interface descriptor (see table 9-5 in the USB spec)
- `bInterfaceNumber = 0`, this is the first, and only, interface
- `bAlternateSetting = 0`, alternate settings are not supported
- `bNumEndpoints = 0`, no endpoint associated to this interface (other than the control endpoint)
- `bInterfaceClass = bInterfaceSubClass = bInterfaceProtocol = 0`, does not adhere to any specified USB interface
- `iInterface = 0`, string descriptors are not supported
Again, we strongly recommend that you use the `usb2::configuration::Descriptor` and `usb2::interface::Descriptor` abstractions here. Each descriptor instance can be transformed into its byte representation using the `bytes` method -- the method returns an array. To concatenate both arrays you can use an stack-allocated [`heapless::Vec`] buffer. If you haven't the `heapless` crate before you can find example usage in the the `src/bin/vec.rs` file.
[`heapless::Vec`]: https://docs.rs/heapless/0.5.5/heapless/struct.Vec.html
Let's look into all the concepts required to respond to this request.

View file

@ -0,0 +1,19 @@
## Interface descriptor
<p align="center">
<img src="/usb-interface.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the 'interface 0' rectangle and the 'bNumEndpoints' label are highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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
- its alternate setting -- this allows configuring the interface
- its number of endpoints
- class, subclass and protocol -- these define the interface (HID, or TTY ACM, or DFU, etc.) according to the USB specification
The number of endpoints can be zero and endpoint zero must not be accounted when counting endpoints.
> The full format of the interface descriptor is specified in section 9.6.5, Interface, of the USB specification.

View file

@ -0,0 +1,17 @@
## Interface
We have covered configurations and endpoints but what is an *interface*?
<p align="center">
<img src="/usb-interface.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the 'interface 0' rectangle and the 'bNumEndpoints' label are highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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.
For detailed information about interfaces check section 9.6.5, Interface, of the USB specification.

View 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

View 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

View 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

View 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

View 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

View file

@ -1,13 +1,29 @@
# USB Endpoints
<p align="center">
<img src="/usb-all-endpoints.svg" alt="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram all the endpoint rectangles are highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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="USB hierarchy diagram showing the relationship between configurations, interfaces and endpoints. The diagram consists of nested rectangles. In this version of the diagram the 'control endpoint' rectangle is highlighted in blue.
The outermost rectangle is labeled 'device' and represents the complete USB device.
Inside the 'device' rectangle there is one rectangle labeled 'configuration 1'; this rectangle has a 'parallel lines' symbol that indicates there may be more than one configuration instance; the symbol is labeled 'bNumConfigurations=1' indicating that this device has only one configuration.
Inside the 'configuration 1' rectangle there are two rectangles labeled 'control endpoint' and 'interface 0'. Inside the 'control endpoint' rectangle there are two rectangles labeled 'endpoint 0 IN' and 'endpoint 0 OUT. The 'interface 0' rectangle has a 'parallel lines' symbol that indicates there may be more than one interface instance; the symbol is labeled 'bNumInterfaces=1' indicating that this configuration has only one interface.
Inside the 'interface 0' rectangle there are three rectangles labeled 'endpoint 1 IN', 'endpoint 2 IN' and 'endpoint 2 OUT'. Between these three rectangle there is a label that says 'bNumEndpoints=3'; it indicates that this interface has only three endpoints.">
<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

View 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

View 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