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 }
221
222pub const SENSOR_EXTENSIONS: [Rs2Extension; 12] = [
224 Rs2Extension::ColorSensor,
225 Rs2Extension::MotionSensor,
226 Rs2Extension::FishEyeSensor,
227 Rs2Extension::DepthSensor,
228 Rs2Extension::DepthStereoSensor,
229 Rs2Extension::SoftwareSensor,
230 Rs2Extension::PoseSensor,
231 Rs2Extension::L500DepthSensor,
232 Rs2Extension::Tm2Sensor,
233 Rs2Extension::CalibratedSensor,
234 Rs2Extension::MaxUsableRangeSensor,
235 Rs2Extension::DebugStreamSensor,
236];
237
238pub const FRAME_EXTENSIONS: [Rs2Extension; 7] = [
240 Rs2Extension::VideoFrame,
241 Rs2Extension::MotionFrame,
242 Rs2Extension::CompositeFrame,
243 Rs2Extension::DepthFrame,
244 Rs2Extension::DisparityFrame,
245 Rs2Extension::PoseFrame,
246 Rs2Extension::Points,
247];
248
249pub const FILTER_EXTENSIONS: [Rs2Extension; 9] = [
251 Rs2Extension::DecimationFilter,
252 Rs2Extension::ThresholdFilter,
253 Rs2Extension::DisparityFilter,
254 Rs2Extension::SpatialFilter,
255 Rs2Extension::TemporalFilter,
256 Rs2Extension::HoleFillingFilter,
257 Rs2Extension::ZeroOrderFilter,
258 Rs2Extension::RecommendedFilters,
259 Rs2Extension::AutoCalibrationFilter,
260];
261
262pub const PROFILE_EXTENSIONS: [Rs2Extension; 3] = [
264 Rs2Extension::VideoProfile,
265 Rs2Extension::MotionProfile,
266 Rs2Extension::PoseProfile,
267];
268
269pub const DEVICE_EXTENSIONS: [Rs2Extension; 4] = [
271 Rs2Extension::SoftwareDevice,
272 Rs2Extension::UpdateDevice,
273 Rs2Extension::AutoCalibratedDevice,
274 Rs2Extension::CalibrationChangeDevice,
275];
276
277pub const MISC_EXTENSIONS: [Rs2Extension; 15] = [
279 Rs2Extension::AdvancedMode,
280 Rs2Extension::Record,
281 Rs2Extension::Playback,
282 Rs2Extension::Pose,
283 Rs2Extension::WheelOdometer,
284 Rs2Extension::GlobalTimer,
285 Rs2Extension::Updatable,
286 Rs2Extension::Tm2,
287 Rs2Extension::Unknown,
288 Rs2Extension::Debug,
289 Rs2Extension::Info,
290 Rs2Extension::Motion,
291 Rs2Extension::Options,
292 Rs2Extension::Video,
293 Rs2Extension::Roi,
294];
295
296#[cfg(test)]
297mod tests {
298 use super::*;
299 use num_traits::FromPrimitive;
300
301 #[test]
302 fn all_variants_exist() {
303 for i in 0..sys::rs2_extension_RS2_EXTENSION_COUNT as i32 {
304 assert!(
305 Rs2Extension::from_i32(i).is_some(),
306 "Rs2Extension variant for ordinal {} does not exist.",
307 i,
308 );
309 }
310 }
311}