Voyant API 0.16.0
Loading...
Searching...
No Matches
carbon_client_ffi.hpp
Go to the documentation of this file.
1// Copyright (c) 2024-2025 Voyant Photonics, Inc.
2// All rights reserved.
3
4#pragma once
5
6#include <cstdarg>
7#include <cstdint>
8#include <cstdlib>
9#include <ostream>
10#include <new>
11#include <voyant_types_ffi.hpp>
12
17enum class StreamTransport : uint8_t {
29};
30
37struct CarbonClientHandleC;
38
44struct CarbonConfigC;
45
68
69extern "C" {
70
78CarbonClientHandleC *carbon_client_new(const CarbonConfigC *config);
79
85bool carbon_client_start(CarbonClientHandleC *handle);
86
91void carbon_client_stop(CarbonClientHandleC *handle);
92
96bool carbon_client_is_running(const CarbonClientHandleC *handle);
97
106int32_t carbon_client_copy_latest_into(CarbonClientHandleC *handle, uint8_t *dest, uintptr_t len);
107
114bool carbon_client_get_sensor_state(const CarbonClientHandleC *handle, SensorState *out);
115
123bool carbon_client_get_time_sync_state(const CarbonClientHandleC *handle, TimeSyncState *out);
124
131
143uint8_t carbon_client_send_sdl(CarbonClientHandleC *handle, const SdlCommandParams *params);
144
154uint8_t carbon_client_poll_sdl(CarbonClientHandleC *handle);
155
164uint8_t carbon_client_send_sdl_blocking(CarbonClientHandleC *handle,
165 const SdlCommandParams *params);
166
175bool carbon_client_wait_for_heartbeat(CarbonClientHandleC *handle);
176
183bool carbon_client_ensure_idle_for_calibration(CarbonClientHandleC *handle);
184
195bool carbon_client_apply_default_background_noise(CarbonClientHandleC *handle);
196
210bool carbon_client_refine_background_noise(CarbonClientHandleC *handle, uint32_t iterations);
211
227bool carbon_client_start_peak_dump(CarbonClientHandleC *handle,
228 const char *path,
229 uint64_t max_frames,
230 uint64_t max_peaks,
231 bool add_timestamp);
232
237void carbon_client_stop_peak_dump(CarbonClientHandleC *handle);
238
242bool carbon_client_is_peak_dumping(CarbonClientHandleC *handle);
243
247void carbon_client_free(CarbonClientHandleC *handle);
248
254CarbonConfigC *carbon_config_new();
255
264CarbonConfigC *carbon_config_from_json(const char *path);
265
269void carbon_config_free(CarbonConfigC *cfg);
270
274void carbon_config_set_bind_addr(CarbonConfigC *cfg, const char *v);
275
279void carbon_config_set_group_addr(CarbonConfigC *cfg, const char *v);
280
284void carbon_config_set_interface_addr(CarbonConfigC *cfg,
285 const char *v);
286
293void carbon_config_set_observer_only(CarbonConfigC *cfg, bool v);
294
302
306void carbon_config_set_use_msg_timestamp(CarbonConfigC *cfg, bool v);
307
311void carbon_config_set_batch_size(CarbonConfigC *cfg, uintptr_t v);
312
316void carbon_config_set_recv_buffer_size(CarbonConfigC *cfg, uintptr_t v);
317
321void carbon_config_set_receiver_channel_capacity(CarbonConfigC *cfg, uintptr_t v);
322
326void carbon_config_set_vel_corr_factor(CarbonConfigC *cfg, float v);
327
331void carbon_config_set_bandwidth_hz(CarbonConfigC *cfg, float v);
332
336void carbon_config_set_elevation_fov_deg(CarbonConfigC *cfg, float v);
337
341void carbon_config_set_peak_combine_twin_only(CarbonConfigC *cfg, bool v);
342
346void carbon_config_set_peak_combine_cluster_min_size(CarbonConfigC *cfg, uintptr_t v);
347
352void carbon_config_set_peak_combine_beat_thresh_hz(CarbonConfigC *cfg, float v);
353
358
364
369
374
379
383void carbon_config_set_rd_outlier_range_thresh_min_m(CarbonConfigC *cfg, float v);
384
388void carbon_config_set_rd_outlier_range_thresh_max_m(CarbonConfigC *cfg, float v);
389
394
399
403void carbon_config_set_rd_outlier_ref_range_m(CarbonConfigC *cfg, float v);
404
408void carbon_config_set_keep_invalid_points(CarbonConfigC *cfg, bool v);
409
413void carbon_config_set_range_min(CarbonConfigC *cfg, float v);
414
418void carbon_config_set_range_max(CarbonConfigC *cfg, float v);
419
423void carbon_config_set_doppler_min(CarbonConfigC *cfg, float v);
424
428void carbon_config_set_doppler_max(CarbonConfigC *cfg, float v);
429
433void carbon_config_set_azimuth_deg_min(CarbonConfigC *cfg, float v);
434
438void carbon_config_set_azimuth_deg_max(CarbonConfigC *cfg, float v);
439
443void carbon_config_set_elevation_deg_min(CarbonConfigC *cfg, float v);
444
448void carbon_config_set_elevation_deg_max(CarbonConfigC *cfg, float v);
449
453void carbon_config_set_spatial_filter_enabled(CarbonConfigC *cfg, bool v);
454
458void carbon_config_set_spatial_min_valid_neighbors(CarbonConfigC *cfg, uint8_t v);
459
463void carbon_config_set_spatial_point_cluster_size(CarbonConfigC *cfg, uint8_t v);
464
469 float v);
470
474void carbon_config_set_interp_range_threshold(CarbonConfigC *cfg, float v);
475
479void carbon_config_set_interp_doppler_threshold(CarbonConfigC *cfg, float v);
480
486 const uint8_t *elevations,
487 uintptr_t len);
488
492void carbon_config_set_eval_mode(CarbonConfigC *cfg, bool v);
493
497void carbon_config_set_report_dir(CarbonConfigC *cfg, const char *v);
498
502void carbon_config_set_fpga_target_addr(CarbonConfigC *cfg, const char *v);
503
507void carbon_config_set_sdl_timeout_sec(CarbonConfigC *cfg, float v);
508
512void carbon_config_set_sdl_max_retries(CarbonConfigC *cfg, uint8_t v);
513
514} // extern "C"
void carbon_config_set_observer_only(CarbonConfigC *cfg, bool v)
void carbon_config_set_stream_transport(CarbonConfigC *cfg, StreamTransport v)
void carbon_config_set_interface_addr(CarbonConfigC *cfg, const char *v)
void carbon_config_set_sdl_max_retries(CarbonConfigC *cfg, uint8_t v)
void carbon_config_set_interp_range_threshold(CarbonConfigC *cfg, float v)
bool carbon_client_is_running(const CarbonClientHandleC *handle)
void carbon_config_set_rd_outlier_range_thresh_min_m(CarbonConfigC *cfg, float v)
void carbon_config_set_fpga_target_addr(CarbonConfigC *cfg, const char *v)
bool carbon_client_get_sensor_state(const CarbonClientHandleC *handle, SensorState *out)
void carbon_client_stop_peak_dump(CarbonClientHandleC *handle)
bool carbon_client_start(CarbonClientHandleC *handle)
CarbonConfigC * carbon_config_new()
void carbon_config_set_interp_doppler_threshold(CarbonConfigC *cfg, float v)
void carbon_config_set_recv_buffer_size(CarbonConfigC *cfg, uintptr_t v)
void carbon_config_set_use_msg_timestamp(CarbonConfigC *cfg, bool v)
void carbon_config_set_receiver_channel_capacity(CarbonConfigC *cfg, uintptr_t v)
bool carbon_client_is_peak_dumping(CarbonClientHandleC *handle)
void carbon_config_set_keep_invalid_points(CarbonConfigC *cfg, bool v)
void carbon_config_set_elevation_deg_min(CarbonConfigC *cfg, float v)
void carbon_config_set_peak_combine_snr_pre_threshold_min_db(CarbonConfigC *cfg, float v)
void carbon_config_set_peak_combine_cluster_min_size(CarbonConfigC *cfg, uintptr_t v)
void carbon_config_set_vel_corr_factor(CarbonConfigC *cfg, float v)
void carbon_config_set_spatial_filter_enabled(CarbonConfigC *cfg, bool v)
void carbon_config_set_spatial_support_threshold(CarbonConfigC *cfg, float v)
void carbon_config_set_rd_outlier_doppler_thresh_max_mps(CarbonConfigC *cfg, float v)
void carbon_config_set_rd_outlier_range_thresh_max_m(CarbonConfigC *cfg, float v)
StreamTransport
Definition carbon_client_ffi.hpp:17
@ Unicast
Definition carbon_client_ffi.hpp:23
@ Multicast
Definition carbon_client_ffi.hpp:28
void carbon_config_set_peak_combine_snr_pre_threshold_slope_db_per_hz(CarbonConfigC *cfg, float v)
void carbon_config_set_report_dir(CarbonConfigC *cfg, const char *v)
void carbon_config_set_range_max(CarbonConfigC *cfg, float v)
void carbon_config_set_rd_outlier_doppler_thresh_min_mps(CarbonConfigC *cfg, float v)
void carbon_config_set_bandwidth_hz(CarbonConfigC *cfg, float v)
uint8_t carbon_client_send_sdl(CarbonClientHandleC *handle, const SdlCommandParams *params)
void carbon_config_set_peak_combine_snr_pre_threshold_max_db(CarbonConfigC *cfg, float v)
void carbon_client_free(CarbonClientHandleC *handle)
void carbon_config_set_eval_mode(CarbonConfigC *cfg, bool v)
uint8_t carbon_client_poll_sdl(CarbonClientHandleC *handle)
void carbon_config_set_batch_size(CarbonConfigC *cfg, uintptr_t v)
void carbon_config_set_elevation_deg_max(CarbonConfigC *cfg, float v)
uint8_t carbon_client_send_sdl_blocking(CarbonClientHandleC *handle, const SdlCommandParams *params)
bool carbon_client_refine_background_noise(CarbonClientHandleC *handle, uint32_t iterations)
void carbon_config_set_azimuth_deg_min(CarbonConfigC *cfg, float v)
bool carbon_client_start_peak_dump(CarbonClientHandleC *handle, const char *path, uint64_t max_frames, uint64_t max_peaks, bool add_timestamp)
void carbon_config_set_doppler_min(CarbonConfigC *cfg, float v)
void carbon_config_set_spatial_min_valid_neighbors(CarbonConfigC *cfg, uint8_t v)
void carbon_config_free(CarbonConfigC *cfg)
void carbon_config_set_doppler_max(CarbonConfigC *cfg, float v)
CarbonClientHandleC * carbon_client_new(const CarbonConfigC *config)
void carbon_config_set_peak_combine_beat_outlier_removal(CarbonConfigC *cfg, bool v)
CarbonConfigC * carbon_config_from_json(const char *path)
void carbon_config_set_group_addr(CarbonConfigC *cfg, const char *v)
void carbon_config_set_peak_combine_snr_pre_threshold_enabled(CarbonConfigC *cfg, bool v)
void carbon_config_set_elevation_fov_deg(CarbonConfigC *cfg, float v)
void carbon_config_set_missing_elevations(CarbonConfigC *cfg, const uint8_t *elevations, uintptr_t len)
void carbon_config_set_azimuth_deg_max(CarbonConfigC *cfg, float v)
void carbon_client_stop(CarbonClientHandleC *handle)
uint8_t sensor_state_to_sdl_command(const SensorState *state, SdlCommandParams *out)
bool carbon_client_wait_for_heartbeat(CarbonClientHandleC *handle)
void carbon_config_set_rd_outlier_ref_range_m(CarbonConfigC *cfg, float v)
void carbon_config_set_sdl_timeout_sec(CarbonConfigC *cfg, float v)
void carbon_config_set_spatial_point_cluster_size(CarbonConfigC *cfg, uint8_t v)
bool carbon_client_ensure_idle_for_calibration(CarbonClientHandleC *handle)
void carbon_config_set_bind_addr(CarbonConfigC *cfg, const char *v)
void carbon_config_set_peak_combine_twin_only(CarbonConfigC *cfg, bool v)
bool carbon_client_apply_default_background_noise(CarbonClientHandleC *handle)
void carbon_config_set_peak_combine_beat_thresh_hz(CarbonConfigC *cfg, float v)
int32_t carbon_client_copy_latest_into(CarbonClientHandleC *handle, uint8_t *dest, uintptr_t len)
void carbon_config_set_range_min(CarbonConfigC *cfg, float v)
bool carbon_client_get_time_sync_state(const CarbonClientHandleC *handle, TimeSyncState *out)
Definition carbon_client_ffi.hpp:51
float frame_rate_fps
Definition carbon_client_ffi.hpp:61
float hfov_deg
Definition carbon_client_ffi.hpp:53
uint8_t ramp_length
Definition carbon_client_ffi.hpp:66
uint8_t req_state
Definition carbon_client_ffi.hpp:52
float ramp_bandwidth_ghz
Definition carbon_client_ffi.hpp:62
float hfov_center_deg
Definition carbon_client_ffi.hpp:60
Definition voyant_types_ffi.hpp:326
Definition voyant_types_ffi.hpp:344