The HAL (Hardware Abstraction Layer) is designed as an API to access camera features in a generic way, i.e. by hiding the hardware specificities of each device. This is achieved using high-level interfaces called facilities, which define the standard high-level behavior of each camera feature.
A given device is operated using the corresponding HAL plugin, which is maintained by the device manufacturer. The plugin is provided in the form of a shared library containing the implementations of the HAL facilities for each hardware feature supported by the device.
The HAL API implements a discovery mechanism to enumerate and select the appropriate plugin for a given device. This dynamic plugin-based design enables any application built using Metavision HAL to be compatible, without any modification (compilation or link), with any camera providing its plugin.
HAL API is a good starting point to start programming event-based sensor. The API gives access to all the features
of the sensor and the camera. Though if you want to build a full-featured application in C++ (with display, data conversion etc.),
you might consider using the Driver module that offers a user-friendly API to
access the camera and the data with the Camera class (
Metavision::Camera). Follow the tutorial
Get Started using C++ to discover SDK Driver C++ API. And if you want to code
in Python, follow the tutorial Python Get started that shows how you can
EventsIterator to stream events.
- Plugin Design
- HAL C++ API
- HAL Python API