Better output controls and properties from libcamera

This commit is contained in:
Kamil Trzcinski
2022-07-07 14:19:45 +02:00
parent 62372d3d16
commit f7e5b0bcbe

View File

@ -17,6 +17,40 @@ libcamera::ControlInfoMap::Map libcamera_control_list(device_t *dev)
return controls_map; return controls_map;
} }
void libcamera_device_dump(device_t *dev)
{
auto &properties = dev->libcamera->camera->properties();
auto idMap = properties.idMap();
for (auto const &control : libcamera_control_list(dev)) {
if (!control.first)
continue;
auto control_id = control.first;
auto control_key = libcamera_device_option_normalize(control_id->name());
auto control_info = control.second;
LOG_VERBOSE(dev, "Available control: %s (%08x, type=%d): %s",
control_id->name().c_str(), control_id->id(), control_id->type(), control_info.toString().c_str());
}
for (auto const &control : properties) {
if (!control.first)
continue;
auto control_id = control.first;
auto control_value = control.second;
std::string control_id_name = "";
if (auto control_id_info = idMap ? idMap->at(control_id) : NULL) {
control_id_name = control_id_info->name();
}
LOG_VERBOSE(dev, "Property: %s (%08x, type=%d): %s",
control_id_name.c_str(), control_id, control_value.type(), control_value.toString().c_str());
}
}
int libcamera_device_open(device_t *dev) int libcamera_device_open(device_t *dev)
{ {
dev->libcamera = new device_libcamera_t{}; dev->libcamera = new device_libcamera_t{};
@ -45,16 +79,7 @@ int libcamera_device_open(device_t *dev)
LOG_INFO(dev, "Device path=%s opened", dev->path); LOG_INFO(dev, "Device path=%s opened", dev->path);
for (auto const &control : libcamera_control_list(dev)) { libcamera_device_dump(dev);
if (!control.first)
continue;
auto control_id = control.first;
auto control_key = libcamera_device_option_normalize(control_id->name());
LOG_VERBOSE(dev, "Available control: %s (%08x, type=%d)",
control_key.c_str(), control_id->id(), control_id->type());
}
return 0; return 0;
error: error: