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

Side by Side Diff: device/sensors/data_fetcher_shared_memory_win.cc

Issue 2845763002: Remove DeviceLightEvent implementation (Closed)
Patch Set: same as previous patch 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
« no previous file with comments | « device/sensors/data_fetcher_shared_memory_mac.cc ('k') | device/sensors/device_sensor_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/sensors/data_fetcher_shared_memory.h" 5 #include "device/sensors/data_fetcher_shared_memory.h"
6 6
7 #include <GuidDef.h> 7 #include <GuidDef.h>
8 #include <InitGuid.h> 8 #include <InitGuid.h>
9 #include <PortableDeviceTypes.h> 9 #include <PortableDeviceTypes.h>
10 #include <Sensors.h> 10 #include <Sensors.h>
11 #include <objbase.h> 11 #include <objbase.h>
12 12
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/metrics/histogram_macros.h" 15 #include "base/metrics/histogram_macros.h"
16 #include "base/win/iunknown_impl.h" 16 #include "base/win/iunknown_impl.h"
17 #include "base/win/windows_version.h" 17 #include "base/win/windows_version.h"
18 18
19 namespace { 19 namespace {
20 20
21 const double kMeanGravity = 9.80665; 21 const double kMeanGravity = 9.80665;
22 22
23 void SetLightBuffer(device::DeviceLightHardwareBuffer* buffer, double lux) {
24 DCHECK(buffer);
25 buffer->seqlock.WriteBegin();
26 buffer->data.value = lux;
27 buffer->seqlock.WriteEnd();
28 }
29
30 } // namespace 23 } // namespace
31 24
32 namespace device { 25 namespace device {
33 26
34 class DataFetcherSharedMemory::SensorEventSink 27 class DataFetcherSharedMemory::SensorEventSink
35 : public ISensorEvents, 28 : public ISensorEvents,
36 public base::win::IUnknownImpl { 29 public base::win::IUnknownImpl {
37 public: 30 public:
38 SensorEventSink() {} 31 SensorEventSink() {}
39 ~SensorEventSink() override {} 32 ~SensorEventSink() override {}
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 210
218 return true; 211 return true;
219 } 212 }
220 213
221 private: 214 private:
222 DeviceMotionHardwareBuffer* const buffer_; 215 DeviceMotionHardwareBuffer* const buffer_;
223 216
224 DISALLOW_COPY_AND_ASSIGN(SensorEventSinkMotion); 217 DISALLOW_COPY_AND_ASSIGN(SensorEventSinkMotion);
225 }; 218 };
226 219
227 class DataFetcherSharedMemory::SensorEventSinkLight
228 : public DataFetcherSharedMemory::SensorEventSink {
229 public:
230 explicit SensorEventSinkLight(DeviceLightHardwareBuffer* const buffer)
231 : buffer_(buffer) {}
232 ~SensorEventSinkLight() override {}
233
234 protected:
235 bool UpdateSharedMemoryBuffer(ISensor* sensor,
236 ISensorDataReport* new_data) override {
237 double lux;
238 bool has_lux;
239
240 GetSensorValue(SENSOR_DATA_TYPE_LIGHT_LEVEL_LUX, new_data, &lux, &has_lux);
241
242 if (!has_lux) {
243 // Could not get lux value.
244 return false;
245 }
246
247 SetLightBuffer(buffer_, lux);
248
249 return true;
250 }
251
252 private:
253 DeviceLightHardwareBuffer* const buffer_;
254
255 DISALLOW_COPY_AND_ASSIGN(SensorEventSinkLight);
256 };
257
258 DataFetcherSharedMemory::DataFetcherSharedMemory() {} 220 DataFetcherSharedMemory::DataFetcherSharedMemory() {}
259 221
260 DataFetcherSharedMemory::~DataFetcherSharedMemory() {} 222 DataFetcherSharedMemory::~DataFetcherSharedMemory() {}
261 223
262 DataFetcherSharedMemory::FetcherType DataFetcherSharedMemory::GetType() const { 224 DataFetcherSharedMemory::FetcherType DataFetcherSharedMemory::GetType() const {
263 return FETCHER_TYPE_SEPARATE_THREAD; 225 return FETCHER_TYPE_SEPARATE_THREAD;
264 } 226 }
265 227
266 bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) { 228 bool DataFetcherSharedMemory::Start(ConsumerType consumer_type, void* buffer) {
267 DCHECK(buffer); 229 DCHECK(buffer);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 gyrometer_available); 273 gyrometer_available);
312 if (accelerometer_available || gyrometer_available) { 274 if (accelerometer_available || gyrometer_available) {
313 motion_buffer_->seqlock.WriteBegin(); 275 motion_buffer_->seqlock.WriteBegin();
314 motion_buffer_->data.interval = GetInterval().InMilliseconds(); 276 motion_buffer_->data.interval = GetInterval().InMilliseconds();
315 motion_buffer_->seqlock.WriteEnd(); 277 motion_buffer_->seqlock.WriteEnd();
316 return true; 278 return true;
317 } 279 }
318 // if no sensors are available set buffer to ready, to fire null-events. 280 // if no sensors are available set buffer to ready, to fire null-events.
319 SetBufferAvailableState(consumer_type, true); 281 SetBufferAvailableState(consumer_type, true);
320 } break; 282 } break;
321 case CONSUMER_TYPE_LIGHT: {
322 light_buffer_ = static_cast<DeviceLightHardwareBuffer*>(buffer);
323 scoped_refptr<SensorEventSink> sink(
324 new SensorEventSinkLight(light_buffer_));
325 bool sensor_light_available = RegisterForSensor(
326 SENSOR_TYPE_AMBIENT_LIGHT, sensor_light_.Receive(), sink);
327 if (sensor_light_available) {
328 SetLightBuffer(light_buffer_, -1);
329 return true;
330 }
331
332 // if no sensors are available, fire an Infinity event.
333 SetLightBuffer(light_buffer_, std::numeric_limits<double>::infinity());
334 } break;
335 default: 283 default:
336 NOTREACHED(); 284 NOTREACHED();
337 } 285 }
338 return false; 286 return false;
339 } 287 }
340 288
341 bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) { 289 bool DataFetcherSharedMemory::Stop(ConsumerType consumer_type) {
342 DisableSensors(consumer_type); 290 DisableSensors(consumer_type);
343 switch (consumer_type) { 291 switch (consumer_type) {
344 case CONSUMER_TYPE_ORIENTATION: 292 case CONSUMER_TYPE_ORIENTATION:
345 SetBufferAvailableState(consumer_type, false); 293 SetBufferAvailableState(consumer_type, false);
346 orientation_buffer_ = nullptr; 294 orientation_buffer_ = nullptr;
347 return true; 295 return true;
348 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE: 296 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
349 SetBufferAvailableState(consumer_type, false); 297 SetBufferAvailableState(consumer_type, false);
350 orientation_absolute_buffer_ = nullptr; 298 orientation_absolute_buffer_ = nullptr;
351 return true; 299 return true;
352 case CONSUMER_TYPE_MOTION: 300 case CONSUMER_TYPE_MOTION:
353 SetBufferAvailableState(consumer_type, false); 301 SetBufferAvailableState(consumer_type, false);
354 motion_buffer_ = nullptr; 302 motion_buffer_ = nullptr;
355 return true; 303 return true;
356 case CONSUMER_TYPE_LIGHT:
357 SetLightBuffer(light_buffer_, -1);
358 light_buffer_ = nullptr;
359 return true;
360 default: 304 default:
361 NOTREACHED(); 305 NOTREACHED();
362 } 306 }
363 return false; 307 return false;
364 } 308 }
365 309
366 bool DataFetcherSharedMemory::RegisterForSensor( 310 bool DataFetcherSharedMemory::RegisterForSensor(
367 REFSENSOR_TYPE_ID sensor_type, 311 REFSENSOR_TYPE_ID sensor_type,
368 ISensor** sensor, 312 ISensor** sensor,
369 scoped_refptr<SensorEventSink> event_sink) { 313 scoped_refptr<SensorEventSink> event_sink) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 case CONSUMER_TYPE_MOTION: 374 case CONSUMER_TYPE_MOTION:
431 if (sensor_accelerometer_.Get()) { 375 if (sensor_accelerometer_.Get()) {
432 sensor_accelerometer_->SetEventSink(nullptr); 376 sensor_accelerometer_->SetEventSink(nullptr);
433 sensor_accelerometer_.Reset(); 377 sensor_accelerometer_.Reset();
434 } 378 }
435 if (sensor_gyrometer_.Get()) { 379 if (sensor_gyrometer_.Get()) {
436 sensor_gyrometer_->SetEventSink(nullptr); 380 sensor_gyrometer_->SetEventSink(nullptr);
437 sensor_gyrometer_.Reset(); 381 sensor_gyrometer_.Reset();
438 } 382 }
439 break; 383 break;
440 case CONSUMER_TYPE_LIGHT:
441 if (sensor_light_.Get()) {
442 sensor_light_->SetEventSink(nullptr);
443 sensor_light_.Reset();
444 }
445 break;
446 default: 384 default:
447 NOTREACHED(); 385 NOTREACHED();
448 } 386 }
449 } 387 }
450 388
451 void DataFetcherSharedMemory::SetBufferAvailableState( 389 void DataFetcherSharedMemory::SetBufferAvailableState(
452 ConsumerType consumer_type, 390 ConsumerType consumer_type,
453 bool enabled) { 391 bool enabled) {
454 switch (consumer_type) { 392 switch (consumer_type) {
455 case CONSUMER_TYPE_ORIENTATION: 393 case CONSUMER_TYPE_ORIENTATION:
(...skipping 17 matching lines...) Expand all
473 motion_buffer_->data.all_available_sensors_are_active = enabled; 411 motion_buffer_->data.all_available_sensors_are_active = enabled;
474 motion_buffer_->seqlock.WriteEnd(); 412 motion_buffer_->seqlock.WriteEnd();
475 } 413 }
476 break; 414 break;
477 default: 415 default:
478 NOTREACHED(); 416 NOTREACHED();
479 } 417 }
480 } 418 }
481 419
482 } // namespace device 420 } // namespace device
OLDNEW
« no previous file with comments | « device/sensors/data_fetcher_shared_memory_mac.cc ('k') | device/sensors/device_sensor_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698