aboutsummaryrefslogtreecommitdiff
path: root/libshims/gui/SensorManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libshims/gui/SensorManager.cpp')
-rw-r--r--libshims/gui/SensorManager.cpp170
1 files changed, 0 insertions, 170 deletions
diff --git a/libshims/gui/SensorManager.cpp b/libshims/gui/SensorManager.cpp
deleted file mode 100644
index 2ae473b..0000000
--- a/libshims/gui/SensorManager.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "Sensors"
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <utils/Errors.h>
-#include <utils/RefBase.h>
-#include <utils/Singleton.h>
-
-#include <binder/IBinder.h>
-#include <binder/IServiceManager.h>
-
-#include <gui/ISensorServer.h>
-#include <gui/ISensorEventConnection.h>
-#include "gui/Sensor.h"
-#include "gui/SensorManager.h"
-#include <gui/SensorEventQueue.h>
-
-// ----------------------------------------------------------------------------
-namespace android {
-// ----------------------------------------------------------------------------
-
-static String16 gPackageName = String16("packageName");
-
-ANDROID_SINGLETON_STATIC_INSTANCE(SensorManager)
-
-SensorManager::SensorManager()
- : mSensorList(0)
-{
- // okay we're not locked here, but it's not needed during construction
- assertStateLocked();
-}
-
-SensorManager::~SensorManager()
-{
- free(mSensorList);
-}
-
-void SensorManager::sensorManagerDied()
-{
- Mutex::Autolock _l(mLock);
- mSensorServer.clear();
- free(mSensorList);
- mSensorList = NULL;
- mSensors.clear();
-}
-
-status_t SensorManager::assertStateLocked() const {
- if (mSensorServer == NULL) {
- // try for one second
- const String16 name("sensorservice");
- status_t err = NO_ERROR;
-
- for (int i=0 ; i<4 ; i++) {
- if (i > 0) {
- // Don't sleep on the first try or after the last failed try
- usleep(250000);
- }
- err = getService(name, &mSensorServer);
- if (err != NAME_NOT_FOUND) {
- break;
- }
- }
-
- if (err != NO_ERROR) {
- ALOGI("find sensorservice failed: %d", err);
- return err;
- }
-
- class DeathObserver : public IBinder::DeathRecipient {
- SensorManager& mSensorManger;
- virtual void binderDied(const wp<IBinder>& who) {
- ALOGW("sensorservice died [%p]", who.unsafe_get());
- mSensorManger.sensorManagerDied();
- }
- public:
- DeathObserver(SensorManager& mgr) : mSensorManger(mgr) { }
- };
-
- mDeathObserver = new DeathObserver(*const_cast<SensorManager *>(this));
- IInterface::asBinder(mSensorServer)->linkToDeath(mDeathObserver);
-
- mSensors = mSensorServer->getSensorList(gPackageName);
- size_t count = mSensors.size();
- mSensorList = (Sensor const**)malloc(count * sizeof(Sensor*));
- for (size_t i=0 ; i<count ; i++) {
- mSensorList[i] = mSensors.array() + i;
- }
- }
-
- return NO_ERROR;
-}
-
-
-
-ssize_t SensorManager::getSensorList(Sensor const* const** list) const
-{
- Mutex::Autolock _l(mLock);
- status_t err = assertStateLocked();
- if (err < 0) {
- return ssize_t(err);
- }
- *list = mSensorList;
- return mSensors.size();
-}
-
-Sensor const* SensorManager::getDefaultSensor(int type)
-{
- Mutex::Autolock _l(mLock);
- if (assertStateLocked() == NO_ERROR) {
- bool wakeUpSensor = false;
- // For the following sensor types, return a wake-up sensor. These types are by default
- // defined as wake-up sensors. For the rest of the sensor types defined in sensors.h return
- // a non_wake-up version.
- if (type == SENSOR_TYPE_PROXIMITY || type == SENSOR_TYPE_SIGNIFICANT_MOTION ||
- type == SENSOR_TYPE_TILT_DETECTOR || type == SENSOR_TYPE_WAKE_GESTURE ||
- type == SENSOR_TYPE_GLANCE_GESTURE || type == SENSOR_TYPE_PICK_UP_GESTURE) {
- wakeUpSensor = true;
- }
- // For now we just return the first sensor of that type we find.
- // in the future it will make sense to let the SensorService make
- // that decision.
- for (size_t i=0 ; i<mSensors.size() ; i++) {
- if (mSensorList[i]->getType() == type &&
- mSensorList[i]->isWakeUpSensor() == wakeUpSensor) {
- return mSensorList[i];
- }
- }
- }
- return NULL;
-}
-
-sp<SensorEventQueue> SensorManager::createEventQueue()
-{
- sp<SensorEventQueue> queue;
-
- Mutex::Autolock _l(mLock);
- while (assertStateLocked() == NO_ERROR) {
- sp<ISensorEventConnection> connection =
- mSensorServer->createSensorEventConnection(String8(""), 0, gPackageName);
- if (connection == NULL) {
- // SensorService just died.
- ALOGE("createEventQueue: connection is NULL. SensorService died.");
- continue;
- }
- queue = new SensorEventQueue(connection);
- break;
- }
- return queue;
-}
-
-// ----------------------------------------------------------------------------
-}; // namespace android
-