@@ -126,6 +126,7 @@ typedef class _ComboDevice
126126 ULONG m_StartTime;
127127 ULONGLONG m_SampleCount;
128128 BOOLEAN m_WakeEnabled;
129+ HANDLE m_CrosEcHandle;
129130
130131 //
131132 // Sensor Specific Properties
@@ -142,7 +143,7 @@ typedef class _ComboDevice
142143 // Sensor specific functions
143144 //
144145 virtual NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj) = NULL;
145- virtual NTSTATUS GetData () = NULL;
146+ virtual NTSTATUS GetData (_In_ HANDLE Handle) = NULL;
146147 virtual NTSTATUS UpdateCachedThreshold () = NULL;
147148 virtual NTSTATUS EnableWake () { return STATUS_NOT_SUPPORTED; }
148149 virtual NTSTATUS DisableWake () { return STATUS_NOT_SUPPORTED; }
@@ -197,127 +198,13 @@ typedef class _AlsDevice : public _ComboDevice
197198public:
198199
199200 NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
200- NTSTATUS GetData ();
201+ NTSTATUS GetData (_In_ HANDLE Device );
201202 NTSTATUS UpdateCachedThreshold ();
202203
203204} AlsDevice, *PAlsDevice;
204205
205206
206207
207- //
208- // Barometer --------------------------------------------------------------
209- //
210- typedef class _BarDevice : public _ComboDevice
211- {
212- private:
213-
214- FLOAT m_CachedThresholds;
215- FLOAT m_CachedData;
216- FLOAT m_LastSample;
217-
218- public:
219-
220- NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
221- NTSTATUS GetData ();
222- NTSTATUS UpdateCachedThreshold ();
223-
224- } BarDevice, *PBarDevice;
225-
226-
227-
228- //
229- // Gyroscope ------------------------------------------------------------------
230- //
231- typedef class _GyrDevice : public _ComboDevice
232- {
233- private:
234-
235- VEC3D m_CachedThresholds;
236- VEC3D m_CachedData;
237- VEC3D m_LastSample;
238-
239- public:
240-
241- NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
242- NTSTATUS GetData ();
243- NTSTATUS UpdateCachedThreshold ();
244-
245- } GyrDevice, *PGyrDevice;
246-
247-
248-
249- //
250- // Magnetometer ---------------------------------------------------------------
251- //
252- typedef struct _MagData
253- {
254- VEC3D Axis;
255- ULONG Accuracy;
256- } MagData, *PMagData;
257-
258- typedef class _MagDevice : public _ComboDevice
259- {
260- private:
261-
262- VEC3D m_CachedThresholds;
263- MagData m_CachedData;
264- MagData m_LastSample;
265-
266- public:
267-
268- NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
269- NTSTATUS GetData ();
270- NTSTATUS UpdateCachedThreshold ();
271-
272- } MagDevice, *PMagDevice;
273-
274-
275-
276- //
277- // Proximity ------------------------------------------------------------------
278- //
279- typedef struct
280- {
281- BOOL Detected;
282- ULONG DistanceMillimeters;
283- } PrxData, *PPrxData;
284-
285- typedef class _PrxDevice : public _ComboDevice
286- {
287- private:
288-
289- PrxData m_CachedData;
290- PrxData m_LastSample;
291-
292- public:
293-
294- NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
295- NTSTATUS GetData ();
296- NTSTATUS UpdateCachedThreshold ();
297-
298- } PrxDevice, *PPrxDevice;
299-
300-
301-
302- //
303- // Relative Fusion ------------------------------------------------------------------
304- //
305- typedef class _RelativeFusionDevice : public _ComboDevice
306- {
307- private:
308-
309- QUATERNION m_CachedThresholds;
310- QUATERNION m_CachedData;
311- QUATERNION m_LastSample;
312-
313- public:
314-
315- NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
316- NTSTATUS GetData ();
317- NTSTATUS UpdateCachedThreshold ();
318-
319- } RelativeFusionDevice, *PRelativeFusionDevice;
320-
321208//
322209// Linear Accelerometer --------------------------------------------------------------
323210//
@@ -338,52 +225,34 @@ typedef class _LinearAccelerometerDevice : public _ComboDevice
338225public:
339226
340227 NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
341- NTSTATUS GetData ();
228+ NTSTATUS GetData (_In_ HANDLE Device );
342229 NTSTATUS UpdateCachedThreshold ();
343230
344231} LinearAccelerometerDevice, *PLinearAccelerometerDevice;
345232
346- //
347- // Gravity Vector --------------------------------------------------------------
348- //
349- typedef class _GravityVectorDevice : public _ComboDevice
350- {
351- private:
352-
353- VEC3D m_CachedThresholds;
354- VEC3D m_CachedData;
355- VEC3D m_LastSample;
356-
357- public:
358233
359- NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
360- NTSTATUS GetData ();
361- NTSTATUS UpdateCachedThreshold ();
362-
363- } GravityVectorDevice, *PGravityVectorDevice;
364234
365235//
366- // Geomagnetic Orientation ---------------- --------------------------------------------------
236+ // Simple Device Orientation --------------------------------------------------
367237//
368- typedef class _GeomagneticOrientationDevice : public _ComboDevice
238+ typedef class _SimpleDeviceOrientationDevice : public _ComboDevice
369239{
370240private:
371241
372- typedef struct _GeomagneticOrientationSample
242+ typedef struct _SimpleDeviceOrientationSample
373243 {
374- QUATERNION Quaternion;
375- FLOAT RotationAngle_Degrees;
376- FLOAT DeclinationAngle_Degrees;
377- } GeomagneticOrientationSample, *PGeomagneticOrientationSample;
244+ FLOAT X;
245+ BOOL Shake;
246+ } SimpleDeviceOrientationSample, *PSimpleDeviceOrientationSample;
378247
379- GeomagneticOrientationSample m_CachedThresholds;
380- GeomagneticOrientationSample m_CachedData;
381- GeomagneticOrientationSample m_LastSample;
248+ SimpleDeviceOrientationSample m_CachedThresholds;
249+ SimpleDeviceOrientationSample m_CachedData;
250+ SimpleDeviceOrientationSample m_LastSample;
382251
383252public:
384253
385254 NTSTATUS Initialize (_In_ WDFDEVICE Device, _In_ SENSOROBJECT SensorObj);
386- NTSTATUS GetData ();
255+ NTSTATUS GetData (_In_ HANDLE Device );
387256 NTSTATUS UpdateCachedThreshold ();
388257
389- } GeomagneticOrientationDevice , *PGeomagneticOrientationDevice ;
258+ } SimpleDeviceOrientationDevice , *PSimpleDeviceOrientationDevice ;
0 commit comments