Output all properties and options
This commit is contained in:
parent
9051518082
commit
b4668aa320
@ -51,7 +51,14 @@ void camera_http_option(http_worker_t *worker, FILE *stream)
|
|||||||
bool headers = false;
|
bool headers = false;
|
||||||
http_enum_params(worker, stream, camera_http_set_option, &headers);
|
http_enum_params(worker, stream, camera_http_set_option, &headers);
|
||||||
if (!headers) {
|
if (!headers) {
|
||||||
http_404(stream, "No options passed.\r\n");
|
http_404(stream, "");
|
||||||
|
fprintf(stream, "No options passed.\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(stream, "\r\nSet: /option?name=value\r\n\r\n");
|
||||||
|
|
||||||
|
if (camera) {
|
||||||
|
device_dump_options(camera->camera, stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,6 +211,13 @@ int device_video_force_key(device_t *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void device_dump_options(device_t *dev, FILE *stream)
|
||||||
|
{
|
||||||
|
if (dev || dev->hw->device_dump_options) {
|
||||||
|
dev->hw->device_dump_options(dev, stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int device_set_fps(device_t *dev, int desired_fps)
|
int device_set_fps(device_t *dev, int desired_fps)
|
||||||
{
|
{
|
||||||
if (!dev || dev->hw->device_set_fps(dev, desired_fps) < 0)
|
if (!dev || dev->hw->device_set_fps(dev, desired_fps) < 0)
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
typedef struct buffer_s buffer_t;
|
typedef struct buffer_s buffer_t;
|
||||||
typedef struct buffer_list_s buffer_list_t;
|
typedef struct buffer_list_s buffer_list_t;
|
||||||
@ -13,6 +14,7 @@ typedef struct device_hw_s {
|
|||||||
void (*device_close)(device_t *dev);
|
void (*device_close)(device_t *dev);
|
||||||
int (*device_set_decoder_start)(device_t *dev, bool do_on);
|
int (*device_set_decoder_start)(device_t *dev, bool do_on);
|
||||||
int (*device_video_force_key)(device_t *dev);
|
int (*device_video_force_key)(device_t *dev);
|
||||||
|
void (*device_dump_options)(device_t *dev, FILE *stream);
|
||||||
int (*device_set_fps)(device_t *dev, int desired_fps);
|
int (*device_set_fps)(device_t *dev, int desired_fps);
|
||||||
int (*device_set_option)(device_t *dev, const char *key, const char *value);
|
int (*device_set_option)(device_t *dev, const char *key, const char *value);
|
||||||
|
|
||||||
@ -65,6 +67,7 @@ int device_set_stream(device_t *dev, bool do_on);
|
|||||||
int device_set_decoder_start(device_t *dev, bool do_on);
|
int device_set_decoder_start(device_t *dev, bool do_on);
|
||||||
int device_video_force_key(device_t *dev);
|
int device_video_force_key(device_t *dev);
|
||||||
|
|
||||||
|
void device_dump_options(device_t *dev, FILE *stream);
|
||||||
int device_set_fps(device_t *dev, int desired_fps);
|
int device_set_fps(device_t *dev, int desired_fps);
|
||||||
int device_set_option_string(device_t *dev, const char *option, const char *value);
|
int device_set_option_string(device_t *dev, const char *option, const char *value);
|
||||||
void device_set_option_list(device_t *dev, const char *option_list);
|
void device_set_option_list(device_t *dev, const char *option_list);
|
||||||
|
@ -17,22 +17,12 @@ libcamera::ControlInfoMap::Map libcamera_control_list(device_t *dev)
|
|||||||
return controls_map;
|
return controls_map;
|
||||||
}
|
}
|
||||||
|
|
||||||
void libcamera_device_dump(device_t *dev)
|
void libcamera_device_dump_options(device_t *dev, FILE *stream)
|
||||||
{
|
{
|
||||||
auto &properties = dev->libcamera->camera->properties();
|
auto &properties = dev->libcamera->camera->properties();
|
||||||
auto idMap = properties.idMap();
|
auto idMap = properties.idMap();
|
||||||
|
|
||||||
for (auto const &control : libcamera_control_list(dev)) {
|
fprintf(stream, "Properties:\n");
|
||||||
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) {
|
for (auto const &control : properties) {
|
||||||
if (!control.first)
|
if (!control.first)
|
||||||
@ -46,8 +36,25 @@ void libcamera_device_dump(device_t *dev)
|
|||||||
control_id_name = control_id_info->name();
|
control_id_name = control_id_info->name();
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_VERBOSE(dev, "Property: %s (%08x, type=%d): %s",
|
fprintf(stream, "- property: %s (%08x, type=%d): %s\n",
|
||||||
control_id_name.c_str(), control_id, control_value.type(), control_value.toString().c_str());
|
control_id_name.c_str(), control_id, control_value.type(),
|
||||||
|
control_value.toString().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(stream, "\n");
|
||||||
|
fprintf(stream, "Options:\n");
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
fprintf(stream, "- available option: %s (%08x, type=%d): %s\n",
|
||||||
|
control_id->name().c_str(), control_id->id(), control_id->type(),
|
||||||
|
control_info.toString().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,8 +87,6 @@ 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);
|
||||||
|
|
||||||
libcamera_device_dump(dev);
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
device_hw_t libcamera_device_hw = {
|
device_hw_t libcamera_device_hw = {
|
||||||
.device_open = libcamera_device_open,
|
.device_open = libcamera_device_open,
|
||||||
.device_close = libcamera_device_close,
|
.device_close = libcamera_device_close,
|
||||||
|
.device_dump_options = libcamera_device_dump_options,
|
||||||
.device_set_fps = libcamera_device_set_fps,
|
.device_set_fps = libcamera_device_set_fps,
|
||||||
.device_set_option = libcamera_device_set_option,
|
.device_set_option = libcamera_device_set_option,
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ typedef struct buffer_libcamera_s {
|
|||||||
|
|
||||||
int libcamera_device_open(device_t *dev);
|
int libcamera_device_open(device_t *dev);
|
||||||
void libcamera_device_close(device_t *dev);
|
void libcamera_device_close(device_t *dev);
|
||||||
|
void libcamera_device_dump_options(device_t *dev, FILE *stream);
|
||||||
int libcamera_device_set_fps(device_t *dev, int desired_fps);
|
int libcamera_device_set_fps(device_t *dev, int desired_fps);
|
||||||
int libcamera_device_set_option(device_t *dev, const char *key, const char *value);
|
int libcamera_device_set_option(device_t *dev, const char *key, const char *value);
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
The commands available on some cameras:<br>
|
The commands available on some cameras:<br>
|
||||||
<br>
|
<br>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="option">/option</a> see all options.</li>
|
||||||
<li><a href="option?AfTrigger=1">/option?AfTrigger=1</a> trigger auto focus.</li>
|
<li><a href="option?AfTrigger=1">/option?AfTrigger=1</a> trigger auto focus.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user