List Connected Devices Sample
The sample metavision_hal_ls.cpp
shows how to use Metavision HAL API to list all connected event-based devices.
The source code of this sample can be found in <install-prefix>/share/metavision/hal/cpp_samples/metavision_ls
when installing Metavision SDK from installer or packages. For other deployment methods, check the page
Path of Samples.
Expected Output
The sample prints information about connected event-based devices to the console.
Example of the output:
$ metavision_hal_ls
Device detected: Prophesee:hal_plugin_imx636_evk4:00ca0009
Example when asking for more information:
$ metavision_hal_ls --verbose
Device detected: Prophesee:hal_plugin_imx636_evk4:00ca0009
## HAL Software
Version: 4.0.0
VCS branch: HEAD
VCS commit: a48272ee861e8893ad0a1a9de764bb85bb7b6a61
VCS commit's date: 2023-03-07 14:33:07 +0000
## Plugin Software
Name: hal_plugin_imx636_evk4
Version: 4.0.0
VCS branch: HEAD
VCS commit: a48272ee861e8893ad0a1a9de764bb85bb7b6a61
VCS commit's date: 2023-03-07 14:33:07 +0000
## Hardware
Available Data Encoding Formats:EVT3,EVT21
Connection: USB
Current Data Encoding Format: EVT3
EVK4 Build Date: Fri Oct 7 14:41:28 2022
EVK4 Release Version: 3.9.0
EVK4 Speed: 5000
Integrator: Prophesee
Sensor Name: IMX636
Serial: 00ca0009
device0 compatible: psee,ccam5_imx636
device0 name: CCam5 Imx636 Event-Based Camera
How to start
First, compile the sample as described in this tutorial.
To start the sample, run:
Linux
./metavision_hal_ls
Windows
metavision_hal_ls.exe
To get more information about connected event-based devices:
Linux
./metavision_hal_ls -v
Windows
metavision_hal_ls.exe -v
Note
If your camera is not detected, please refer to our camera troubleshooting FAQ entry.
Code Overview
The following code snippet shows how to retrieve the serial numbers of connected devices:
auto v = Metavision::DeviceDiscovery::list();
if (v.empty()) {
MV_LOG_ERROR() << "No device found";
}
Once the serial number is known, a device with the given serial number can be created with the following code:
// open device from a serial
device = Metavision::DeviceDiscovery::open(s);
Then, from the device, the available facilities can be retrieved with Metavision::Device::get_facility
.
For example, the following code displays the device hardware information:
// Retrieves the facility that provides information about the hardware
Metavision::I_HW_Identification *hw_identification =
device->get_facility<Metavision::I_HW_Identification>();
if (hw_identification) {
MV_LOG_INFO() << "## Hardware";
// Retrieves a map of key/value with the information
for (auto system_info : hw_identification->get_system_info()) {
auto key = system_info.first;
auto value = system_info.second;
const std::string s = key + ":";
MV_LOG_INFO() << Metavision::Log::no_space << std::left << std::setw(30) << s << value;
}
}