1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#ifndef ASH_ACCELEROMETER_ACCELEROMETER_CONTROLLER_H_ 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define ASH_ACCELEROMETER_ACCELEROMETER_CONTROLLER_H_ 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ash/ash_export.h" 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/memory/ref_counted.h" 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/memory/scoped_ptr.h" 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/observer_list.h" 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS) 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chromeos/accelerometer/accelerometer_reader.h" 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace base { 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass TaskRunner; 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace ash { 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass AccelerometerObserver; 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// This class owns the communication interface for talking to the accelerometer 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// on supporting devices. Observers will be delivered OnAccelerometerRead 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// notifications if an accelerometer was detected. 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass ASH_EXPORT AccelerometerController 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS) 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch : public chromeos::AccelerometerReader::Delegate { 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#else 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch { 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public: 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch AccelerometerController(); 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ~AccelerometerController(); 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Initialize the accelerometer reader. 39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void Initialize(scoped_refptr<base::TaskRunner> blocking_task_runner); 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Add/remove observer. 42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void AddObserver(AccelerometerObserver* observer); 43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void RemoveObserver(AccelerometerObserver* observer); 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS) 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // This needs to be CHROMEOS only as on other platforms it does not actually 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // override a method. 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // chromeos::AccelerometerReader::Delegate: 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void HandleAccelerometerUpdate( 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ui::AccelerometerUpdate& update) OVERRIDE; 51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch private: 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS) 55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // The AccelerometerReader which directly triggers and reads from the 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // accelerometer device. 57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch scoped_ptr<chromeos::AccelerometerReader> reader_; 58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif 59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ObserverList<AccelerometerObserver, true> observers_; 61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DISALLOW_COPY_AND_ASSIGN(AccelerometerController); 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}; 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace ash 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // ASH_ACCELEROMETER_ACCELEROMETER_CONTROLLER_H_ 68