diff options
author | hans@chromium.org <hans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 14:34:41 +0000 |
---|---|---|
committer | hans@chromium.org <hans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 14:34:41 +0000 |
commit | ac7e4e15c1ba2485f4a14b28b879aed8a62a3b3d (patch) | |
tree | 99144282dafd180218f607d11f263ffbcb482b52 /chrome/browser/device_orientation/accelerometer_mac.h | |
parent | fe13bf66690fa7bc1ff25c4714b9c72c3777ee2d (diff) | |
download | chromium_src-ac7e4e15c1ba2485f4a14b28b879aed8a62a3b3d.zip chromium_src-ac7e4e15c1ba2485f4a14b28b879aed8a62a3b3d.tar.gz chromium_src-ac7e4e15c1ba2485f4a14b28b879aed8a62a3b3d.tar.bz2 |
Adding MacBook Pro accelerometer support.
A class for handling Sudden Motion Sensors. It's only compiled under Mac OS.
Landing for Leandro Gracia Gil <leandrogracia@google.com>.
Original code review: http://codereview.chromium.org/3169040/show
BUG=44654
TEST=none
Review URL: http://codereview.chromium.org/3187025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57521 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/device_orientation/accelerometer_mac.h')
-rw-r--r-- | chrome/browser/device_orientation/accelerometer_mac.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/chrome/browser/device_orientation/accelerometer_mac.h b/chrome/browser/device_orientation/accelerometer_mac.h new file mode 100644 index 0000000..873ff79 --- /dev/null +++ b/chrome/browser/device_orientation/accelerometer_mac.h @@ -0,0 +1,102 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This file is based on the SMSLib library. +// +// SMSLib Sudden Motion Sensor Access Library +// Copyright (c) 2010 Suitable Systems +// All rights reserved. +// +// Developed by: Daniel Griscom +// Suitable Systems +// http://www.suitable.com +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal with the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// - Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimers. +// +// - Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimers in the +// documentation and/or other materials provided with the distribution. +// +// - Neither the names of Suitable Systems nor the names of its +// contributors may be used to endorse or promote products derived from +// this Software without specific prior written permission. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR +// ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. +// +// For more information about SMSLib, see +// <http://www.suitable.com/tools/smslib.html> +// or contact +// Daniel Griscom +// Suitable Systems +// 1 Centre Street, Suite 204 +// Wakefield, MA 01880 +// (781) 665-0053 + +#ifndef CHROME_BROWSER_DEVICE_ORIENTATION_ACCELEROMETER_MAC_H_ +#define CHROME_BROWSER_DEVICE_ORIENTATION_ACCELEROMETER_MAC_H_ +#pragma once + +#include <vector> + +#include <IOKit/IOKitLib.h> + +#include "chrome/browser/device_orientation/data_fetcher.h" + +namespace device_orientation { + +// Provides an easy-to-use interface to retrieve data +// from the MacBook family accelerometer. +class AccelerometerMac : public DataFetcher { + public: + static DataFetcher* Create(); + + // Implement DataFetcher. + virtual bool GetOrientation(Orientation* orientation); + + virtual ~AccelerometerMac(); + + private: + AccelerometerMac(); + bool Init(); + + // Extend the sign of an integer of size bytes to a 32-bit one. + static int ExtendSign(int value, size_t size); + + struct SensorDescriptor; + struct AxisData; + + // List of supported sensors. + static const SensorDescriptor kSupportedSensors[]; + + // Local sensor if supported, else NULL. + const SensorDescriptor* sensor_; + + // IOKit connection to the local sensor. + io_connect_t io_connection_; + + // Input memory used for sensor I/O. + std::vector<char> input_record_; + + // Output memory used for sensor I/O. + std::vector<char> output_record_; +}; + +} // namespace device_orientation + +#endif // CHROME_BROWSER_DEVICE_ORIENTATION_ACCELEROMETER_MAC_H_ |