Skip to main content

Mat

An owned image buffer filled by retrieve_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 at open(), returned by get_device_information():
  • CameraConfiguration::calibration holds the double-sphere intrinsics (fx fy cx cy xi alpha) plus rectify and fov_scale. See Calibration.
  • SensorsConfiguration::camera_imu_transform is the 4×4 camera→IMU extrinsic. The struct also round-trips the full IMU field calibration: accel_bias, gyro_bias, accel_scale_misalign and gyro_scale_misalign (3×3 row-major, identity when uncalibrated), and time_offset_ns.
  • Capabilities::modes is the selectable resolution/fps menu; values outside it are rejected at open(). Each SupportedMode carries resolution, fps, and binning ("none" or "2x2", how the mode derives from the full sensor).
  • hw_rev is currently baked per firmware build, so every unit on a given image returns the same value. Treat "1.00" as an unknown revision.
  • session_unlocked is reported alongside usb_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

The wireless 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 of get_device_list():

Location

latitude, longitude, altitude and covariance_diag, written into each recording’s LocationFix.