Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: device/generic_sensor/platform_sensor_reader_win.h

Issue 2865263002: Move //device/generic_sensor to be part of the internal implementation of the Device Service. (Closed)
Patch Set: code rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_READER_WIN_H_
6 #define DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_READER_WIN_H_
7
8 #include <SensorsApi.h>
9
10 #include "base/win/scoped_comptr.h"
11 #include "device/generic_sensor/public/interfaces/sensor.mojom.h"
12
13 namespace device {
14
15 class PlatformSensorConfiguration;
16 struct ReaderInitParams;
17 struct SensorReading;
18
19 // Generic class that uses ISensor interface to fetch sensor data. Used
20 // by PlatformSensorWin and delivers notifications via Client interface.
21 // Instances of this class must be created and destructed on the same thread.
22 class PlatformSensorReaderWin {
23 public:
24 // Client interface that can be used to receive notifications about sensor
25 // error or data change events.
26 class Client {
27 public:
28 virtual void OnReadingUpdated(const SensorReading& reading) = 0;
29 virtual void OnSensorError() = 0;
30
31 protected:
32 virtual ~Client() {}
33 };
34
35 static std::unique_ptr<PlatformSensorReaderWin> Create(
36 mojom::SensorType type,
37 base::win::ScopedComPtr<ISensorManager> sensor_manager);
38
39 // Following methods are thread safe.
40 void SetClient(Client* client);
41 unsigned long GetMinimalReportingIntervalMs() const;
42 bool StartSensor(const PlatformSensorConfiguration& configuration);
43 void StopSensor();
44
45 // Must be destructed on the same thread that was used during construction.
46 ~PlatformSensorReaderWin();
47
48 private:
49 PlatformSensorReaderWin(base::win::ScopedComPtr<ISensor> sensor,
50 std::unique_ptr<ReaderInitParams> params);
51
52 static base::win::ScopedComPtr<ISensor> GetSensorForType(
53 REFSENSOR_TYPE_ID sensor_type,
54 base::win::ScopedComPtr<ISensorManager> sensor_manager);
55
56 bool SetReportingInterval(const PlatformSensorConfiguration& configuration);
57 void ListenSensorEvent();
58 HRESULT SensorReadingChanged(ISensorDataReport* report,
59 SensorReading* reading) const;
60 void SensorError();
61
62 private:
63 friend class EventListener;
64
65 const std::unique_ptr<ReaderInitParams> init_params_;
66 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
67 // Following class members are protected by lock, because SetClient,
68 // StartSensor and StopSensor are called from another thread by
69 // PlatformSensorWin that can modify internal state of the object.
70 base::Lock lock_;
71 bool sensor_active_;
72 Client* client_;
73 base::win::ScopedComPtr<ISensor> sensor_;
74 scoped_refptr<EventListener> event_listener_;
75 base::WeakPtrFactory<PlatformSensorReaderWin> weak_factory_;
76
77 DISALLOW_COPY_AND_ASSIGN(PlatformSensorReaderWin);
78 };
79
80 } // namespace device
81
82 #endif // DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_READER_WIN_H_
OLDNEW
« no previous file with comments | « device/generic_sensor/platform_sensor_reader_linux.cc ('k') | device/generic_sensor/platform_sensor_reader_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698