Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document the export_v4l2_param_xml tool #25

Merged
merged 2 commits into from
Apr 24, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 30 additions & 2 deletions en/guide/camera_definition_file.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@

As defined in the [MAVLink Camera Protocol](https://mavlink.io/en/protocol/camera.html), a [Camera Definition File](https://mavlink.io/en/protocol/camera_def.html) may be used to specify information about a camera's advanced settings and parameters. A camera will supply the URI for its definition file on request (if one has been defined), so that the file can be downloaded and parsed by the client.

> **Tip** Camera definition files for a number of cameras are provided in [/samples/def](https://github.com/intel/camera-streaming-daemon/tree/master/samples/def). Additionally, the [export_v4l2_param_xml](#export_v4l2_param_xml) tool can automatically generate definition files for attached Video4Linux (V4L2) camera devices.

The *Camera Definition Files* can be hosted anywhere that is accessible to clients (including *QGroundControl* and Dronecode SDK apps). Often the files are served from the computer running CSD.

CSD is able to supply the URIs for attached cameras using a mapping given in the [CSD Configuration File > \[uri section\]](../guide/configuration_file.md#uri).

This topic explains how to:
* Serve the definition files on the CSD companion computer.
* Map attached cameras to their definition file URIs in the CSD configuration file.

> **Tip** Camera definition files for a number of cameras are provided in [/samples/def](https://github.com/intel/camera-streaming-daemon/tree/master/samples/def).
* Create *Camera Definition Files* for attached Video4Linux (V4L2) devices using the *export_v4l2_param_xml* tool.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check if the sentence proposed below sound better

Create Camera Definition Files for attached Video4Linux (V4L2) devices using the export_v4l2_param_xml tool

Create Camera Definition Files for Video4Linux (V4L2) camera devices attached to linux machine using the export_v4l2_param_xml tool

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fact that it is Linux is implied by the Video4Linux API, and we say "attached". That said, I have improved this a bit:

Additionally, the export_v4l2_param_xml tool can automatically generate definition files for attached Video4Linux (V4L2) camera devices.



## Hosting Camera Definition Files
Expand Down Expand Up @@ -62,3 +63,30 @@ The fragments below show typical mappings for Aero and Ubuntu:
```

> **Note** The "Aero URI" host is the address of Aero on the network. The Ubuntu address can be "localhost" (internal) because when testing both CSD and clients (e.g. *QGroundControl*) are typically being run on the same computer and can see this address.


## V4L2 Camera Definition File Generator {#export_v4l2_param_xml}

The CSD project includes the *export_v4l2_param_xml* tool to automate creation of *Camera Definition Files* for attached Video4Linux (V4L2) devices.
The tool queries the device for all available controls in order to populate the file.

The command syntax is:
```
./export_v4l2_param_xml -d <device node> - f <output camera-def-file-name>
```
where:
* `device node`: The V4L2 device (query available devices on the command line using: `ls -l /dev/video*`).
* `output camera-def-file-name`: The generated file path/filename.


The tool is provided as C++ source code in the CSD tree: [/tools/export_v4l2_param_xml](https://github.com/Dronecode/camera-streaming-daemon/tree/master/tools/export_v4l2_param_xml)). It is dependent on *tinyxml* which can be installed using:
```
$ sudo apt install libtinyxml-dev -y
```

To build and run the tool for a device `/dev/video0` (from the CSD root directory):
```
cd tools/export_v4l2_param_xml
make
./export_v4l2_param -d /dev/video0 -f camera_def.xml
```