camcom 1.0.3
 
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1
6
7#ifndef CAMCOM_TESTBENCH_CONFIG_HPP
8#define CAMCOM_TESTBENCH_CONFIG_HPP
9
10#include <string>
11#include <map>
12#include <vector>
13#include <optional>
14
15namespace camcom::server {
16
21 std::string library; // Required: library name (e.g., "libcamcom_genicam_arv.so")
22 std::string class_name; // Optional: adapter class name
23 std::string factory_symbol{"CreateAdapter"}; // Optional: factory function name
24 bool auto_connect{false}; // Optional: auto-connect on server start
25 std::string profile; // Optional: GenICam XML profile path (for emulator)
26 std::map<std::string, std::string> preconfig; // Optional: camera-specific params to set on connect
27 std::map<std::string, std::string> properties; // Optional: adapter-specific properties passed via Initialise()
28};
29
33using SetValues = std::map<std::string, std::string>;
34
39 std::string host{"0.0.0.0"};
40 int port{8080};
41 std::optional<std::string> basic_auth; // Optional: "user:hash"
42};
43
48 bool enabled{true};
51 int max_fps{5};
52 std::string compression{"raw"}; // "raw" (native pixels) or "jpeg" (legacy 8-bit)
53 int quality{85}; // JPEG quality 0-100
54};
55
60 bool enabled{false};
61 std::string protocol{"websocket"}; // "websocket", "webrtc", "rtsp"
62};
63
68 std::string directory; // Output directory
69 std::string format{"fits"}; // fits, fits:cube, fits:mef
70 std::string compression{"none"}; // none, rice, gzip, hcompress, plio
71 std::string file_id{"CamCom"}; // User-defined file identifier
72 std::string filename_pattern{"${file_id}_${camera_name}_${timestamp}_${frame_id}.fits"};
73 // Stop conditions (0 = disabled, recording stops when ANY enabled limit is reached)
74 int nb_of_frames{10}; // Max frames to record
75 double period{0}; // Max duration in seconds
76 int max_size{0}; // Max size in MB
77 // Recording buffer
78 int max_frames_buffer{100}; // Max frames queued for recording
79 bool skip_silently{true}; // true = drop silently; false = log every 10s
80 std::string overwrite_policy{"increment"}; // overwrite, increment
81 bool cube_timestamp_table{false}; // Write a binary table with per-frame timestamps (cube mode)
82 // Scheduled recording
83 std::string trigger{"immediate"}; // immediate, delay, absolute
84 int delay{0}; // Delay in seconds (trigger=delay)
85 std::string start_time; // ISO8601 time (trigger=absolute)
86};
87
92 bool enabled{true}; // Toggle telemetry sampling on/off
93 double sampling_period{2.0}; // Seconds between samples
94 bool disable_during_acquisition{false}; // Pause sampling while acquiring
95 bool disable_during_recording{false}; // Pause sampling while recording
96 bool sample_read_only_pars{true}; // Auto-sample parameters with write_access=false
97 std::vector<std::string> parameters; // Explicit list of extra parameters to sample
98 int history_depth{100}; // Samples to keep per parameter
99};
100
105 bool enabled{true}; // Toggle statistics computation on/off
106 int window_size{100}; // Number of samples in the sliding window
107};
108
113 std::string level{"INFO"};
114 std::optional<std::string> file;
115 std::string rotation{"daily"}; // "daily", "weekly", "size"
116 int max_files{7};
117};
118
123 // Auto-adjust exposure/frame_rate when contradictory (uses BasicParams from adapter)
125 // Stop acquisition around parameter writes and restart afterwards if it was active
127 // Skip write-protected parameters with a warning instead of failing
129};
130
135 int frame_queue_size{10}; // Max frames in the capture->publisher queue
136 bool skip_silently{true}; // true = drop frames silently when queue full; false = warn every 10s with drop count
137};
138
142struct GuiConfig {
143 bool start_srv{true}; // Auto-start server on GUI launch
144 std::string srv_config{}; // Server config to use (if empty, use current config)
145 bool auto_restart{true}; // Auto-restart server on crash
146 int restart_timeout{5}; // Seconds before restart attempt
147 std::string log_level{"INFO"}; // GUI log level
148 std::string log_file{}; // Log file path (empty = no file)
149 double statistics_poll_period{2.0}; // Seconds between GUI statistics fetches
150 std::vector<std::string> primary_parameters; // Parameters shown first in Set Values tab
151 // Note: server_host, server_port, connection_timeout come from http_server config
152};
153
158 // Included config files (processed first, then overridden by main config)
159 std::vector<std::string> includes;
160
161 // CamCom section
162 std::string camera_name;
163 std::string uri;
164 int timeout{10}; // seconds
165
166 // Component configs
169 SetValues initial_set_values; // Original values from config file, for reset
180};
181
190ServerConfig loadConfig(const std::string& filename, bool require_camcom = true, const std::string& base_dir = "");
191
197bool validateConfig(const ServerConfig& config);
198
199} // namespace camcom::server
200
201#endif // CAMCOM_TESTBENCH_CONFIG_HPP
Definition adapter_loader.cpp:11
ServerConfig loadConfig(const std::string &filename, bool require_camcom, const std::string &base_dir)
Load and parse YAML configuration file.
Definition config.cpp:204
bool validateConfig(const ServerConfig &config)
Validate configuration.
Definition config.cpp:522
std::map< std::string, std::string > SetValues
Set values configuration (use camera-native parameter names)
Definition config.hpp:33
Definition __init__.py:1
Acquisition pipeline configuration.
Definition config.hpp:134
bool skip_silently
Definition config.hpp:136
int frame_queue_size
Definition config.hpp:135
Adapter configuration.
Definition config.hpp:20
bool auto_connect
Definition config.hpp:24
std::string factory_symbol
Definition config.hpp:23
std::string library
Definition config.hpp:21
std::map< std::string, std::string > properties
Definition config.hpp:27
std::string profile
Definition config.hpp:25
std::string class_name
Definition config.hpp:22
std::map< std::string, std::string > preconfig
Definition config.hpp:26
GUI configuration.
Definition config.hpp:142
int restart_timeout
Definition config.hpp:146
std::string log_file
Definition config.hpp:148
bool auto_restart
Definition config.hpp:145
double statistics_poll_period
Definition config.hpp:149
std::string log_level
Definition config.hpp:147
std::vector< std::string > primary_parameters
Definition config.hpp:150
bool start_srv
Definition config.hpp:143
std::string srv_config
Definition config.hpp:144
HTTP server configuration.
Definition config.hpp:38
std::optional< std::string > basic_auth
Definition config.hpp:41
int port
Definition config.hpp:40
std::string host
Definition config.hpp:39
Logging configuration.
Definition config.hpp:112
std::optional< std::string > file
Definition config.hpp:114
int max_files
Definition config.hpp:116
std::string level
Definition config.hpp:113
std::string rotation
Definition config.hpp:115
Recording configuration.
Definition config.hpp:67
std::string trigger
Definition config.hpp:83
std::string file_id
Definition config.hpp:71
bool cube_timestamp_table
Definition config.hpp:81
std::string compression
Definition config.hpp:70
std::string start_time
Definition config.hpp:85
std::string format
Definition config.hpp:69
int max_size
Definition config.hpp:76
double period
Definition config.hpp:75
bool skip_silently
Definition config.hpp:79
std::string overwrite_policy
Definition config.hpp:80
int nb_of_frames
Definition config.hpp:74
std::string directory
Definition config.hpp:68
std::string filename_pattern
Definition config.hpp:72
int delay
Definition config.hpp:84
int max_frames_buffer
Definition config.hpp:78
Main server configuration.
Definition config.hpp:157
SetValues set_values
Definition config.hpp:168
SetValues initial_set_values
Definition config.hpp:169
AcquisitionConfig acquisition
Definition config.hpp:174
std::string camera_name
Definition config.hpp:162
SetupConfig setup
Definition config.hpp:170
LoggingConfig logging
Definition config.hpp:178
WebInterfaceConfig web_interface
Definition config.hpp:172
HttpServerConfig http_server
Definition config.hpp:171
RecordingConfig recording
Definition config.hpp:175
std::vector< std::string > includes
Definition config.hpp:159
StreamingConfig streaming
Definition config.hpp:173
TelemetryConfig telemetry
Definition config.hpp:176
AdapterConfig adapter
Definition config.hpp:167
std::string uri
Definition config.hpp:163
int timeout
Definition config.hpp:164
StatisticsConfig statistics
Definition config.hpp:177
Server setup / behavior configuration.
Definition config.hpp:122
bool ignore_write_protected_pars
Definition config.hpp:128
bool auto_stop_acq_on_par_write
Definition config.hpp:126
bool auto_adjust_expo_time_rate
Definition config.hpp:124
Statistics configuration.
Definition config.hpp:104
bool enabled
Definition config.hpp:105
int window_size
Definition config.hpp:106
Streaming configuration.
Definition config.hpp:59
bool enabled
Definition config.hpp:60
std::string protocol
Definition config.hpp:61
Telemetry / monitoring configuration.
Definition config.hpp:91
std::vector< std::string > parameters
Definition config.hpp:97
double sampling_period
Definition config.hpp:93
bool sample_read_only_pars
Definition config.hpp:96
bool disable_during_recording
Definition config.hpp:95
int history_depth
Definition config.hpp:98
bool enabled
Definition config.hpp:92
bool disable_during_acquisition
Definition config.hpp:94
Web interface configuration.
Definition config.hpp:47
bool enabled
Definition config.hpp:48
int max_image_height
Definition config.hpp:50
std::string compression
Definition config.hpp:52
int max_image_width
Definition config.hpp:49
int max_fps
Definition config.hpp:51
int quality
Definition config.hpp:53