Voyant API 0.16.0
Loading...
Searching...
No Matches
sensor_state_display.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 <iomanip>
7#include <ostream>
9
10inline std::ostream& operator<<(std::ostream& os, const DspFrameStartToggle& v)
11{
12 switch (v)
13 {
15 return os << "CW";
17 return os << "CCW";
18 default:
19 return os << "DspFrameStartToggle(" << static_cast<int>(v) << ")";
20 }
21}
22
23inline std::ostream& operator<<(std::ostream& os, const SdlRampLength& v)
24{
25 switch (v)
26 {
28 return os << "Unknown";
30 return os << "V8_192us";
32 return os << "V16_384us";
33 default:
34 return os << "SdlRampLength(" << static_cast<int>(v) << ")";
35 }
36}
37
38inline std::ostream& operator<<(std::ostream& os, const SdlState& v)
39{
40 switch (v)
41 {
43 return os << "Unknown";
45 return os << "ErrorFault";
46 case SdlState::Boot:
47 return os << "Boot";
49 return os << "Initialization";
51 return os << "Standby";
53 return os << "WarmUp";
54 case SdlState::Idle:
55 return os << "Idle";
57 return os << "PointCloud";
59 return os << "CoolDown";
61 return os << "DebugCalibration";
63 return os << "Reserved";
65 return os << "ReservedV11";
67 return os << "ReservedV12";
69 return os << "ReservedV13";
71 return os << "ReservedV14";
73 return os << "FirmwareUpdate";
74 default:
75 return os << "SdlState(" << static_cast<int>(v) << ")";
76 }
77}
78
79inline std::ostream& operator<<(std::ostream& os, const SdlStatus& v)
80{
81 switch (v)
82 {
84 return os << "Unknown";
85 case SdlStatus::Idle:
86 return os << "Idle";
88 return os << "Pending";
90 return os << "Applied";
92 return os << "BadFovCenterCombo";
94 return os << "InvalidParameter";
96 return os << "InvalidStateTransition";
98 return os << "MissingCalibration";
100 return os << "UnableToCalibrate";
102 return os << "ParseError";
104 return os << "ApplicationError";
106 return os << "FovFpsError";
108 return os << "CommandBuildFailed";
110 return os << "PreviousCommandPending";
112 return os << "SendFailed";
114 return os << "Timeout";
116 return os << "MaxRetriesExceeded";
118 return os << "StreamReset";
120 return os << "MessageReadyForMcu";
122 return os << "ValidMessageParsed";
123 default:
124 return os << "SdlStatus(" << static_cast<int>(v) << ")";
125 }
126}
127
128inline std::ostream& operator<<(std::ostream& os, const ProductId& v)
129{
130 switch (v)
131 {
133 return os << "Unknown";
134 case ProductId::Lark:
135 return os << "Lark";
137 return os << "Meadowlark";
139 return os << "Carbon Benchtop";
141 return os << "Carbon 30";
143 return os << "Vivado Simulator";
145 return os << "Verilator Simulator";
147 return os << "Xcelium Simulator";
149 return os << "Isaac Sim";
151 return os << "Software Simulator";
152 default:
153 return os << "ProductId(" << static_cast<int>(v) << ")";
154 }
155}
156
157inline std::ostream& operator<<(std::ostream& os, const SdlDeviceState& s)
158{
159 return os << "SdlDeviceState{"
160 << " state=" << s.device_state << " status=" << s.sdl_status << " fps=" << s.frame_rate_fps
161 << " hfov=" << s.hfov_deg << "deg"
162 << " hfov_center=" << s.hfov_center_deg << "deg"
163 << " bw=" << s.ramp_bandwidth_ghz << "GHz"
164 << " ramp_length=" << s.ramp_length << " }";
165}
166
167inline std::ostream& operator<<(std::ostream& os, const HealthState& h)
168{
169 std::ios_base::fmtflags flags(os.flags());
170 os << std::fixed << std::setprecision(1) << "HealthState{"
171 << " fpga=" << h.fpga_temp_c << "C"
172 << " clarity=" << h.clarity_board_temp_c << "C"
173 << " carat=" << h.carat_board_temp_c << "C"
174 << " pic=" << h.pic_temp_c << "C"
175 << " soa=" << h.soa_temp_c << "C"
176 << " adc=" << h.adc_temp_c << "C" << std::hex << " error=" << h.error_word << " hw_health=" << h.hardware_health
177 << " pwr=" << static_cast<int>(h.power_health) << std::dec << " lo_pwr=" << h.lo_power_mon << " }";
178 os.flags(flags);
179 return os;
180}
181
182inline std::ostream& operator<<(std::ostream& os, const CounterState& c)
183{
184 return os << "CounterState{"
185 << " frames=" << c.total_frame_count << " ramps=" << c.total_ramp_count
186 << " drops=" << c.total_drops_count << " any_drops=" << (c.any_drops_sticky != 0 ? "true" : "false")
187 << " mcu_cycles=" << c.mcu_cycles_counter << " }";
188}
189
190inline std::ostream& operator<<(std::ostream& os, const DeviceInfo& d)
191{
192 return os << "DeviceInfo{"
193 << " serial=" << d.serial_number << " product=" << d.product_id << " fpga=v"
194 << static_cast<int>(d.fpga_version_major) << "." << static_cast<int>(d.fpga_version_minor) << "."
195 << static_cast<int>(d.fpga_version_patch) << " mcu=v" << static_cast<int>(d.mcu_version_major) << "."
196 << static_cast<int>(d.mcu_version_minor) << "." << static_cast<int>(d.mcu_version_patch) << " }";
197}
198
199inline std::ostream& operator<<(std::ostream& os, const CalibrationState& c)
200{
201 std::ios_base::fmtflags flags(os.flags());
202 os << std::fixed << "CalibrationState{"
203 << " encoder_az_offset=" << c.encoder_azimuth_offset << std::setprecision(6)
204 << " doppler_bias=" << c.doppler_calibration_mirror_bias << "m/s"
205 << " doppler_offset=" << c.doppler_calibration_mirror_offset << "m" << std::setprecision(0)
206 << " chirp_bw=" << c.chirp_bandwidth_hz << "Hz" << std::setprecision(4) << " datum=(" << c.datum_delta_x_m << ","
207 << c.datum_delta_y_m << "," << c.datum_delta_z_m << ")m"
208 << " }";
209 os.flags(flags);
210 return os;
211}
212
213inline std::ostream& operator<<(std::ostream& os, const DspHeaderState& d)
214{
215 std::ios_base::fmtflags flags(os.flags());
216 os << "DspHeaderState{"
217 << " ts=" << d.timestamp_seconds << "." << std::setw(9) << std::setfill('0') << d.timestamp_nanoseconds
218 << std::setfill(' ') << " toggle=" << d.frame_start_toggle << " }";
219 os.flags(flags);
220 return os;
221}
222
223inline std::ostream& operator<<(std::ostream& os, const SensorState& s)
224{
225 return os << "SensorState{\n"
226 << " " << s.device << "\n"
227 << " " << s.sdl << "\n"
228 << " " << s.health << "\n"
229 << " " << s.counters << "\n"
230 << " " << s.calibration << "\n"
231 << " " << s.dsp_header << "\n"
232 << " peaks_per_frame=" << s.peaks_per_frame << " last_heartbeat_frame=" << s.last_heartbeat_frame << "\n}";
233}
234
235inline std::ostream& operator<<(std::ostream& os, const SyncQuality& q)
236{
237 switch (q)
238 {
240 return os << "Unsynced";
242 return os << "Poor";
244 return os << "Fair";
246 return os << "Good";
248 return os << "Excellent";
249 default:
250 return os << "SyncQuality(" << static_cast<int>(q) << ")";
251 }
252}
253
254inline std::ostream& operator<<(std::ostream& os, const TimeSyncState& t)
255{
256 std::ios_base::fmtflags flags = os.flags();
257 std::streamsize prec = os.precision();
258 // Offsets are nanoseconds on the wire; show microseconds for readability.
259 os << "TimeSyncState{ quality=" << t.quality << " valid=" << (t.valid != 0) << std::fixed << std::setprecision(1)
260 << " offset=" << static_cast<double>(t.offset_ns) / 1000.0 << "us"
261 << " round_trip=" << static_cast<double>(t.round_trip_ns) / 1000.0 << "us"
262 << " jitter=" << static_cast<double>(t.jitter_ns) / 1000.0 << "us"
263 << " samples=" << t.sample_count << " age_ms=" << t.age_ms << " }";
264 os.flags(flags);
265 os.precision(prec);
266 return os;
267}
DspFrameStartToggle
Enum for dsp::frame_start_toggle register.
Definition sdl_types_generated.hpp:9
@ CCW
Definition sdl_types_generated.hpp:11
@ CW
Definition sdl_types_generated.hpp:10
SdlRampLength
Enum for sdl::set_ramp_length register.
Definition sdl_types_generated.hpp:14
@ V16_384us
Definition sdl_types_generated.hpp:17
@ Unknown
Definition sdl_types_generated.hpp:15
@ V8_192us
Definition sdl_types_generated.hpp:16
SdlState
Enum for sdl::set_state register.
Definition sdl_types_generated.hpp:20
@ ReservedV14
Definition sdl_types_generated.hpp:35
@ Standby
Definition sdl_types_generated.hpp:25
@ DebugCalibration
Definition sdl_types_generated.hpp:30
@ FirmwareUpdate
Definition sdl_types_generated.hpp:36
@ CoolDown
Definition sdl_types_generated.hpp:29
@ ReservedV13
Definition sdl_types_generated.hpp:34
@ Initialization
Definition sdl_types_generated.hpp:24
@ Unknown
Definition sdl_types_generated.hpp:21
@ Reserved
Definition sdl_types_generated.hpp:31
@ ReservedV12
Definition sdl_types_generated.hpp:33
@ ReservedV11
Definition sdl_types_generated.hpp:32
@ Boot
Definition sdl_types_generated.hpp:23
@ WarmUp
Definition sdl_types_generated.hpp:26
@ ErrorFault
Definition sdl_types_generated.hpp:22
@ Idle
Definition sdl_types_generated.hpp:27
@ PointCloud
Definition sdl_types_generated.hpp:28
std::ostream & operator<<(std::ostream &os, const DspFrameStartToggle &v)
Definition sensor_state_display.hpp:10
Definition voyant_types_ffi.hpp:259
float datum_delta_y_m
Definition voyant_types_ffi.hpp:274
float doppler_calibration_mirror_offset
Definition voyant_types_ffi.hpp:271
int16_t encoder_azimuth_offset
Definition voyant_types_ffi.hpp:263
float datum_delta_x_m
Definition voyant_types_ffi.hpp:273
float datum_delta_z_m
Definition voyant_types_ffi.hpp:275
float chirp_bandwidth_hz
Definition voyant_types_ffi.hpp:272
float doppler_calibration_mirror_bias
Definition voyant_types_ffi.hpp:267
Definition voyant_types_ffi.hpp:226
uint64_t total_ramp_count
Definition voyant_types_ffi.hpp:228
uint32_t total_drops_count
Definition voyant_types_ffi.hpp:229
uint8_t any_drops_sticky
Definition voyant_types_ffi.hpp:234
uint64_t total_frame_count
Definition voyant_types_ffi.hpp:227
uint32_t mcu_cycles_counter
Definition voyant_types_ffi.hpp:235
Definition voyant_types_ffi.hpp:245
ProductId product_id
Definition voyant_types_ffi.hpp:247
uint8_t mcu_version_patch
Definition voyant_types_ffi.hpp:253
uint8_t fpga_version_minor
Definition voyant_types_ffi.hpp:249
uint8_t fpga_version_patch
Definition voyant_types_ffi.hpp:250
uint8_t mcu_version_major
Definition voyant_types_ffi.hpp:251
uint8_t mcu_version_minor
Definition voyant_types_ffi.hpp:252
uint32_t serial_number
Definition voyant_types_ffi.hpp:246
uint8_t fpga_version_major
Definition voyant_types_ffi.hpp:248
Definition voyant_types_ffi.hpp:303
int32_t timestamp_nanoseconds
Definition voyant_types_ffi.hpp:308
DspFrameStartToggle frame_start_toggle
Definition voyant_types_ffi.hpp:309
int64_t timestamp_seconds
Definition voyant_types_ffi.hpp:304
Definition voyant_types_ffi.hpp:190
float soa_temp_c
Definition voyant_types_ffi.hpp:206
float fpga_temp_c
Definition voyant_types_ffi.hpp:208
float carat_board_temp_c
Definition voyant_types_ffi.hpp:204
float pic_temp_c
Definition voyant_types_ffi.hpp:205
uint16_t lo_power_mon
Definition voyant_types_ffi.hpp:220
uint8_t power_health
Definition voyant_types_ffi.hpp:202
float adc_temp_c
Definition voyant_types_ffi.hpp:207
uint32_t hardware_health
Definition voyant_types_ffi.hpp:198
uint64_t error_word
Definition voyant_types_ffi.hpp:194
float clarity_board_temp_c
Definition voyant_types_ffi.hpp:203
Definition voyant_types_ffi.hpp:177
float ramp_bandwidth_ghz
Definition voyant_types_ffi.hpp:183
float hfov_center_deg
Definition voyant_types_ffi.hpp:182
float frame_rate_fps
Definition voyant_types_ffi.hpp:180
SdlStatus sdl_status
Definition voyant_types_ffi.hpp:179
SdlState device_state
Definition voyant_types_ffi.hpp:178
float hfov_deg
Definition voyant_types_ffi.hpp:181
SdlRampLength ramp_length
Definition voyant_types_ffi.hpp:184
Definition voyant_types_ffi.hpp:326
HealthState health
Definition voyant_types_ffi.hpp:328
uint64_t last_heartbeat_frame
Definition voyant_types_ffi.hpp:334
CalibrationState calibration
Definition voyant_types_ffi.hpp:331
DeviceInfo device
Definition voyant_types_ffi.hpp:330
CounterState counters
Definition voyant_types_ffi.hpp:329
SdlDeviceState sdl
Definition voyant_types_ffi.hpp:327
DspHeaderState dsp_header
Definition voyant_types_ffi.hpp:332
uint32_t peaks_per_frame
Definition voyant_types_ffi.hpp:333
Definition voyant_types_ffi.hpp:344
uint64_t age_ms
Definition voyant_types_ffi.hpp:370
uint32_t sample_count
Definition voyant_types_ffi.hpp:366
int64_t jitter_ns
Definition voyant_types_ffi.hpp:362
int64_t offset_ns
Definition voyant_types_ffi.hpp:353
uint8_t valid
Definition voyant_types_ffi.hpp:349
int64_t round_trip_ns
Definition voyant_types_ffi.hpp:358
SyncQuality quality
Definition voyant_types_ffi.hpp:345
SyncQuality
Definition voyant_types_ffi.hpp:151
@ Good
Definition voyant_types_ffi.hpp:167
@ Poor
Definition voyant_types_ffi.hpp:159
@ Unsynced
Definition voyant_types_ffi.hpp:155
@ Fair
Definition voyant_types_ffi.hpp:163
@ Excellent
Definition voyant_types_ffi.hpp:171
ProductId
Definition voyant_types_ffi.hpp:26
@ Lark
Definition voyant_types_ffi.hpp:28
@ XceliumSimulator
Definition voyant_types_ffi.hpp:34
@ VerilatorSimulator
Definition voyant_types_ffi.hpp:33
@ CarbonBenchtop
Definition voyant_types_ffi.hpp:30
@ SoftwareSimulator
Definition voyant_types_ffi.hpp:39
@ Meadowlark
Definition voyant_types_ffi.hpp:29
@ Unknown
Definition voyant_types_ffi.hpp:27
@ IsaacSim
Definition voyant_types_ffi.hpp:35
@ VivadoSimulator
Definition voyant_types_ffi.hpp:32
@ Carbon30
Definition voyant_types_ffi.hpp:31
SdlStatus
Definition voyant_types_ffi.hpp:50
@ SendFailed
Definition voyant_types_ffi.hpp:117
@ InvalidStateTransition
Definition voyant_types_ffi.hpp:84
@ Pending
Definition voyant_types_ffi.hpp:66
@ InvalidParameter
Definition voyant_types_ffi.hpp:80
@ Applied
Definition voyant_types_ffi.hpp:70
@ MessageReadyForMcu
Definition voyant_types_ffi.hpp:133
@ FovFpsError
Definition voyant_types_ffi.hpp:105
@ Unknown
Definition voyant_types_ffi.hpp:55
@ ValidMessageParsed
Definition voyant_types_ffi.hpp:137
@ BadFovCenterCombo
Definition voyant_types_ffi.hpp:75
@ PreviousCommandPending
Definition voyant_types_ffi.hpp:113
@ CommandBuildFailed
Definition voyant_types_ffi.hpp:109
@ UnableToCalibrate
Definition voyant_types_ffi.hpp:92
@ MissingCalibration
Definition voyant_types_ffi.hpp:88
@ MaxRetriesExceeded
Definition voyant_types_ffi.hpp:125
@ Timeout
Definition voyant_types_ffi.hpp:121
@ StreamReset
Definition voyant_types_ffi.hpp:129
@ ApplicationError
Definition voyant_types_ffi.hpp:100
@ ParseError
Definition voyant_types_ffi.hpp:96
@ Idle
Definition voyant_types_ffi.hpp:60