Mat
An owned image buffer filled byretrieve_image(). The fields are private
(the SDK is the sole producer) and consumers read through accessors:
Copies and assignment are deep.
alloc(w, h, type) / free() manage a
standalone buffer, and copyTo(dst) deep-copies pixels; MEM::GPU is not
supported and returns UNSUPPORTED.
ImuSample / SensorsData
Timestamp
Nanoseconds since epoch with unit accessors:nanoseconds(),
microseconds(), milliseconds(), seconds().
DeviceInformation
Cached atopen(), returned by get_device_information():
CameraConfiguration::calibrationholds the double-sphere intrinsics (fx fy cx cy xi alpha) plusrectifyandfov_scale. See Calibration.SensorsConfiguration::camera_imu_transformis the 4×4 camera→IMU extrinsic. The struct also round-trips the full IMU field calibration:accel_bias,gyro_bias,accel_scale_misalignandgyro_scale_misalign(3×3 row-major, identity when uncalibrated), andtime_offset_ns.Capabilities::modesis the selectable resolution/fps menu; values outside it are rejected atopen(). EachSupportedModecarriesresolution,fps, andbinning("none"or"2x2", how the mode derives from the full sensor).hw_revis currently baked per firmware build, so every unit on a given image returns the same value. Treat"1.00"as an unknown revision.session_unlockedis reported alongsideusb_locked, which remains true. The stored policy is still locked, but gated verbs respond until the device is re-locked or loses power. See Access Control and Encryption.
WirelessConfiguration
Thewireless block of DeviceInformation. All fields come from the cached
snapshot, so call refresh_device_information() before relying on them from a
long-lived handle.
unknown is set host-side when a refresh could not complete, and is distinct
from an empty wifi_state, which means the firmware did not report one. The
association detail fields are best-effort for the same reason: empty or 0
indicates a value not reported by this firmware rather than a measured zero.
bt_paired is deprecated and never populated. The device clears the Bluetooth
bond on every disconnect, so no persistent paired state exists to report. Use
ble_connected instead, which reports whether a central currently holds the
link. Because a false value cannot be distinguished from a field the firmware
does not report, treat false as “not reported” rather than as a positive
indication that no central is connected.Status structs
EncryptionKey::key is populated only by the calls that hand the key over,
meaning create_encryption_key, get_encryption_key, and
delete_encryption_key returning what it destroyed. Everywhere else the device
reports key_id alone, which names a key without revealing it.
RecordingStatus::encrypted comes from the container magic on disk rather than
from the current setting, so it stays correct for recordings written before the
setting last changed.
DeviceProperties
One row ofget_device_list():
Location
latitude, longitude, altitude and covariance_diag, written into each
recording’s LocationFix.
