1use num_derive::{FromPrimitive, ToPrimitive};
3use realsense_sys as sys;
4
5#[allow(missing_docs)]
91#[repr(i32)]
92#[derive(FromPrimitive, ToPrimitive, Debug, Clone, Copy, PartialEq, Eq, Hash)]
93pub enum Rs2Extension {
94 ColorSensor = sys::rs2_extension_RS2_EXTENSION_COLOR_SENSOR as i32,
97 MotionSensor = sys::rs2_extension_RS2_EXTENSION_MOTION_SENSOR as i32,
99 FishEyeSensor = sys::rs2_extension_RS2_EXTENSION_FISHEYE_SENSOR as i32,
101 DepthSensor = sys::rs2_extension_RS2_EXTENSION_DEPTH_SENSOR as i32,
103 DepthStereoSensor = sys::rs2_extension_RS2_EXTENSION_DEPTH_STEREO_SENSOR as i32,
105 SoftwareSensor = sys::rs2_extension_RS2_EXTENSION_SOFTWARE_SENSOR as i32,
107 PoseSensor = sys::rs2_extension_RS2_EXTENSION_POSE_SENSOR as i32,
109 L500DepthSensor = sys::rs2_extension_RS2_EXTENSION_L500_DEPTH_SENSOR as i32,
111 Tm2Sensor = sys::rs2_extension_RS2_EXTENSION_TM2_SENSOR as i32,
113 CalibratedSensor = sys::rs2_extension_RS2_EXTENSION_CALIBRATED_SENSOR as i32,
115 MaxUsableRangeSensor = sys::rs2_extension_RS2_EXTENSION_MAX_USABLE_RANGE_SENSOR as i32,
117 DebugStreamSensor = sys::rs2_extension_RS2_EXTENSION_DEBUG_STREAM_SENSOR as i32,
119
120 VideoFrame = sys::rs2_extension_RS2_EXTENSION_VIDEO_FRAME as i32,
123 MotionFrame = sys::rs2_extension_RS2_EXTENSION_MOTION_FRAME as i32,
125 CompositeFrame = sys::rs2_extension_RS2_EXTENSION_COMPOSITE_FRAME as i32,
127 DepthFrame = sys::rs2_extension_RS2_EXTENSION_DEPTH_FRAME as i32,
129 DisparityFrame = sys::rs2_extension_RS2_EXTENSION_DISPARITY_FRAME as i32,
131 PoseFrame = sys::rs2_extension_RS2_EXTENSION_POSE_FRAME as i32,
133 Points = sys::rs2_extension_RS2_EXTENSION_POINTS as i32,
135
136 DecimationFilter = sys::rs2_extension_RS2_EXTENSION_DECIMATION_FILTER as i32,
139 ThresholdFilter = sys::rs2_extension_RS2_EXTENSION_THRESHOLD_FILTER as i32,
141 DisparityFilter = sys::rs2_extension_RS2_EXTENSION_DISPARITY_FILTER as i32,
143 SpatialFilter = sys::rs2_extension_RS2_EXTENSION_SPATIAL_FILTER as i32,
145 TemporalFilter = sys::rs2_extension_RS2_EXTENSION_TEMPORAL_FILTER as i32,
147 HoleFillingFilter = sys::rs2_extension_RS2_EXTENSION_HOLE_FILLING_FILTER as i32,
149 ZeroOrderFilter = sys::rs2_extension_RS2_EXTENSION_ZERO_ORDER_FILTER as i32,
151 RecommendedFilters = sys::rs2_extension_RS2_EXTENSION_RECOMMENDED_FILTERS as i32,
153 AutoCalibrationFilter = sys::rs2_extension_RS2_EXTENSION_AUTO_CALIBRATION_FILTER as i32,
155 SequenceIdFilter = sys::rs2_extension_RS2_EXTENSION_SEQUENCE_ID_FILTER as i32,
157
158 VideoProfile = sys::rs2_extension_RS2_EXTENSION_VIDEO_PROFILE as i32,
161 MotionProfile = sys::rs2_extension_RS2_EXTENSION_MOTION_PROFILE as i32,
163 PoseProfile = sys::rs2_extension_RS2_EXTENSION_POSE_PROFILE as i32,
165
166 SoftwareDevice = sys::rs2_extension_RS2_EXTENSION_SOFTWARE_DEVICE as i32,
169 UpdateDevice = sys::rs2_extension_RS2_EXTENSION_UPDATE_DEVICE as i32,
171 AutoCalibratedDevice = sys::rs2_extension_RS2_EXTENSION_AUTO_CALIBRATED_DEVICE as i32,
173 CalibrationChangeDevice = sys::rs2_extension_RS2_EXTENSION_CALIBRATION_CHANGE_DEVICE as i32,
175
176 AdvancedMode = sys::rs2_extension_RS2_EXTENSION_ADVANCED_MODE as i32,
179 Record = sys::rs2_extension_RS2_EXTENSION_RECORD as i32,
181 Playback = sys::rs2_extension_RS2_EXTENSION_PLAYBACK as i32,
183 Pose = sys::rs2_extension_RS2_EXTENSION_POSE as i32,
185 WheelOdometer = sys::rs2_extension_RS2_EXTENSION_WHEEL_ODOMETER as i32,
187 GlobalTimer = sys::rs2_extension_RS2_EXTENSION_GLOBAL_TIMER as i32,
189 Updatable = sys::rs2_extension_RS2_EXTENSION_UPDATABLE as i32,
191 Tm2 = sys::rs2_extension_RS2_EXTENSION_TM2 as i32,
193 Unknown = sys::rs2_extension_RS2_EXTENSION_UNKNOWN as i32,
195 Debug = sys::rs2_extension_RS2_EXTENSION_DEBUG as i32,
197 Info = sys::rs2_extension_RS2_EXTENSION_INFO as i32,
199 Motion = sys::rs2_extension_RS2_EXTENSION_MOTION as i32,
201 Options = sys::rs2_extension_RS2_EXTENSION_OPTIONS as i32,
203 Video = sys::rs2_extension_RS2_EXTENSION_VIDEO as i32,
205 Roi = sys::rs2_extension_RS2_EXTENSION_ROI as i32,
207 DepthHuffmanDecoder = sys::rs2_extension_RS2_EXTENSION_DEPTH_HUFFMAN_DECODER as i32,
209 Serializable = sys::rs2_extension_RS2_EXTENSION_SERIALIZABLE as i32,
211 FirmwareLogger = sys::rs2_extension_RS2_EXTENSION_FW_LOGGER as i32,
213 DeviceCalibration = sys::rs2_extension_RS2_EXTENSION_DEVICE_CALIBRATION as i32,
215 HdrMerge = sys::rs2_extension_RS2_EXTENSION_HDR_MERGE as i32,
217 RotationFilter = sys::rs2_extension_RS2_EXTENSION_ROTATION_FILTER as i32,
219 }
223
224pub const SENSOR_EXTENSIONS: [Rs2Extension; 12] = [
226 Rs2Extension::ColorSensor,
227 Rs2Extension::MotionSensor,
228 Rs2Extension::FishEyeSensor,
229 Rs2Extension::DepthSensor,
230 Rs2Extension::DepthStereoSensor,
231 Rs2Extension::SoftwareSensor,
232 Rs2Extension::PoseSensor,
233 Rs2Extension::L500DepthSensor,
234 Rs2Extension::Tm2Sensor,
235 Rs2Extension::CalibratedSensor,
236 Rs2Extension::MaxUsableRangeSensor,
237 Rs2Extension::DebugStreamSensor,
238];
239
240pub const FRAME_EXTENSIONS: [Rs2Extension; 7] = [
242 Rs2Extension::VideoFrame,
243 Rs2Extension::MotionFrame,
244 Rs2Extension::CompositeFrame,
245 Rs2Extension::DepthFrame,
246 Rs2Extension::DisparityFrame,
247 Rs2Extension::PoseFrame,
248 Rs2Extension::Points,
249];
250
251pub const FILTER_EXTENSIONS: [Rs2Extension; 9] = [
253 Rs2Extension::DecimationFilter,
254 Rs2Extension::ThresholdFilter,
255 Rs2Extension::DisparityFilter,
256 Rs2Extension::SpatialFilter,
257 Rs2Extension::TemporalFilter,
258 Rs2Extension::HoleFillingFilter,
259 Rs2Extension::ZeroOrderFilter,
260 Rs2Extension::RecommendedFilters,
261 Rs2Extension::AutoCalibrationFilter,
262];
263
264pub const PROFILE_EXTENSIONS: [Rs2Extension; 3] = [
266 Rs2Extension::VideoProfile,
267 Rs2Extension::MotionProfile,
268 Rs2Extension::PoseProfile,
269];
270
271pub const DEVICE_EXTENSIONS: [Rs2Extension; 4] = [
273 Rs2Extension::SoftwareDevice,
274 Rs2Extension::UpdateDevice,
275 Rs2Extension::AutoCalibratedDevice,
276 Rs2Extension::CalibrationChangeDevice,
277];
278
279pub const MISC_EXTENSIONS: [Rs2Extension; 15] = [
281 Rs2Extension::AdvancedMode,
282 Rs2Extension::Record,
283 Rs2Extension::Playback,
284 Rs2Extension::Pose,
285 Rs2Extension::WheelOdometer,
286 Rs2Extension::GlobalTimer,
287 Rs2Extension::Updatable,
288 Rs2Extension::Tm2,
289 Rs2Extension::Unknown,
290 Rs2Extension::Debug,
291 Rs2Extension::Info,
292 Rs2Extension::Motion,
293 Rs2Extension::Options,
294 Rs2Extension::Video,
295 Rs2Extension::Roi,
296];
297
298#[cfg(test)]
299mod tests {
300 use super::*;
301 use num_traits::FromPrimitive;
302
303 #[test]
304 fn all_variants_exist() {
305 for i in 0..sys::rs2_extension_RS2_EXTENSION_COUNT as i32 {
306 assert!(
307 Rs2Extension::from_i32(i).is_some(),
308 "Rs2Extension variant for ordinal {} does not exist.",
309 i,
310 );
311 }
312 }
313}