You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.6 KiB
61 lines
2.6 KiB
> **Note** - github is currently lacks embedded support for drawing diagrams
|
|
Therefore, in order to generate and embed diagrams into the readme we employ the following technique:
|
|
|
|
- Generate and Draw chart with https://stackedit.io/editor .The site's [main page](https://stackedit.io/) provides a comprehensive list of examples for formatting both text and diagrams.
|
|
Expo
|
|
- Export the diagram into svg with this [online tool](https://bramp.github.io/js-sequence-diagrams/)
|
|
- Use external tool ,such as [Inkscape](https://inkscape.org/en/download/windows/) to convert from svg to png, or other raster format.
|
|
- Embed the resulted raster image into Markdown file
|
|
|
|
|
|
Source code for diagram generators
|
|
```sequence
|
|
title: RS4xx - Registration for metadata attributes
|
|
Participant C++ main
|
|
Participant rs2_context
|
|
Participant rs2_device
|
|
Participant rs2_metadata_handler
|
|
Participant OS
|
|
Participant Device
|
|
Device->OS: new device found
|
|
Note over OS: device is enumerated
|
|
Note over OS,C++ main: .......... system is in idle state ...............
|
|
Note over C++ main: Librealsense2 is started
|
|
C++ main->rs2_context: create context
|
|
rs2_context-->C++ main:
|
|
rs2_context->OS: Query connected devices
|
|
OS-->C++ main: List of device info
|
|
C++ main->rs2_device: create rs4xx object
|
|
rs2_device->rs2_device: ctor: register for metadata
|
|
rs2_device->rs2_metadata_handler: ctor: Instantiate handler
|
|
rs2_metadata_handler-->rs2_device:
|
|
rs2_device->rs2_device: ctor: map handler to an attribute
|
|
rs2_device-->C++ main:
|
|
Note over C++ main: device with metadata support is ready
|
|
```
|
|
|
|
```sequence
|
|
title: RS4xx - Metadata attributes propagation and query flow
|
|
Participant User Code
|
|
Participant rs2_device
|
|
Participant rs2_frame_callback
|
|
Participant rs2_frame
|
|
Participant rs2_backend
|
|
Participant Kernel/OS Driver
|
|
User Code->User Code: Initialize librealsense
|
|
Note over User Code,rs2_device: Acquire Device handle
|
|
User Code->rs2_device: Start Stream (user-defined callback)
|
|
Note over rs2_device,rs2_frame_callback: Store callback handle
|
|
rs2_device->rs2_backend: Start Polling frames
|
|
Note over rs2_backend,Kernel/OS Driver: Polling frame
|
|
rs2_backend->rs2_frame: unpack and store frame pixels
|
|
rs2_backend->rs2_frame: check and store metadata payload
|
|
rs2_frame-->rs2_backend: frame is ready for dispatch
|
|
rs2_backend->rs2_frame_callback: invoke user-defined callback(rs2_frame)
|
|
rs2_frame_callback->rs2_frame_callback: User code is invoked
|
|
rs2_frame_callback->rs2_frame: Check metadata attribute support
|
|
rs2_frame-->rs2_frame_callback: result (true/false)
|
|
rs2_frame_callback->rs2_frame: query metadata attribute value
|
|
rs2_frame-->rs2_frame_callback: value(/exception)
|
|
```
|