1pub mod audio_capture;
2pub mod body_capture;
3pub mod body_index_capture;
4pub mod color_capture;
5pub mod depth_capture;
6pub mod infrared_capture;
7pub mod multi_source_capture;
8
9pub use kinect_v2_sys::bindings::Activity;
10pub use kinect_v2_sys::bindings::Appearance;
11pub use kinect_v2_sys::bindings::AudioBeamMode;
12pub use kinect_v2_sys::bindings::ColorImageFormat;
13pub use kinect_v2_sys::bindings::DetectionResult;
14pub use kinect_v2_sys::bindings::Expression;
15pub use kinect_v2_sys::bindings::FrameCapturedStatus;
16pub use kinect_v2_sys::bindings::FrameEdges;
17pub use kinect_v2_sys::bindings::FrameSourceTypes;
18pub use kinect_v2_sys::bindings::HandState;
19pub use kinect_v2_sys::bindings::HandType;
20pub use kinect_v2_sys::bindings::JointType;
21pub use kinect_v2_sys::bindings::KinectAudioCalibrationState;
22pub use kinect_v2_sys::bindings::KinectCapabilities;
23pub use kinect_v2_sys::bindings::KinectEngagementMode;
24pub use kinect_v2_sys::bindings::KinectGestureSettings;
25pub use kinect_v2_sys::bindings::KinectHoldingState;
26pub use kinect_v2_sys::bindings::KinectInteractionMode;
27pub use kinect_v2_sys::bindings::PointerDeviceType;
28pub use kinect_v2_sys::bindings::TrackingConfidence;
29pub use kinect_v2_sys::bindings::TrackingState;
30
31use kinect_v2_sys::kinect::KinectSensor;
32use windows::core::Error;
33
34#[derive(Debug, Clone)]
35pub struct Kinect {
36 sensor: KinectSensor,
37 opened: bool,
38}
39
40impl Kinect {
41 pub fn new() -> Result<Self, Error> {
43 let sensor = kinect_v2_sys::kinect::get_default_kinect_sensor()?;
44 sensor.open()?;
46 Ok(Kinect {
47 sensor,
48 opened: true,
49 })
50 }
51
52 pub fn is_available(&self) -> Result<bool, Error> {
54 self.sensor.is_available()
55 }
56
57 pub fn close(&mut self) -> Result<(), Error> {
59 if self.opened {
60 self.sensor.close()?;
61 self.opened = false;
62 }
63 Ok(())
64 }
65}
66
67impl Drop for Kinect {
68 fn drop(&mut self) {
69 log::trace!("Kinect sensor is being closed");
70 let _ = self.sensor.close();
72 }
73}
74
75#[cfg(test)]
76mod tests {
77 }