summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/gui/ISensorServer.h1
-rw-r--r--include/gui/SensorManager.h2
-rw-r--r--libs/gui/ISensorServer.cpp21
-rw-r--r--libs/gui/SensorManager.cpp17
-rw-r--r--services/sensorservice/SensorDevice.cpp15
-rw-r--r--services/sensorservice/SensorDevice.h1
-rw-r--r--services/sensorservice/SensorService.cpp8
-rw-r--r--services/sensorservice/SensorService.h1
8 files changed, 64 insertions, 2 deletions
diff --git a/include/gui/ISensorServer.h b/include/gui/ISensorServer.h
index 3dca2a3..e590ce9 100644
--- a/include/gui/ISensorServer.h
+++ b/include/gui/ISensorServer.h
@@ -41,6 +41,7 @@ public:
virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName,
int mode, const String16& opPackageName) = 0;
virtual int32_t isDataInjectionEnabled() = 0;
+ virtual status_t setSensorPhysicalData(const char* physicaldata) = 0;
};
// ----------------------------------------------------------------------------
diff --git a/include/gui/SensorManager.h b/include/gui/SensorManager.h
index 0cff46c..2b07ca7 100644
--- a/include/gui/SensorManager.h
+++ b/include/gui/SensorManager.h
@@ -58,7 +58,7 @@ public:
Sensor const* getDefaultSensor(int type);
sp<SensorEventQueue> createEventQueue(String8 packageName = String8(""), int mode = 0);
bool isDataInjectionEnabled();
-
+ bool SetPhysicalData(const char* data);
private:
// DeathRecipient interface
void sensorManagerDied();
diff --git a/libs/gui/ISensorServer.cpp b/libs/gui/ISensorServer.cpp
index f581b5c..8cd1725 100644
--- a/libs/gui/ISensorServer.cpp
+++ b/libs/gui/ISensorServer.cpp
@@ -35,7 +35,8 @@ namespace android {
enum {
GET_SENSOR_LIST = IBinder::FIRST_CALL_TRANSACTION,
CREATE_SENSOR_EVENT_CONNECTION,
- ENABLE_DATA_INJECTION
+ ENABLE_DATA_INJECTION,
+ SET_SENSOR_PHYSICAL_DATA,
};
class BpSensorServer : public BpInterface<ISensorServer>
@@ -83,6 +84,16 @@ public:
remote()->transact(ENABLE_DATA_INJECTION, data, &reply);
return reply.readInt32();
}
+
+ virtual status_t setSensorPhysicalData(const char* physicaldata)
+ {
+ Parcel data, reply;
+ //ALOGD("ISensorManager::SetSensorPhysicalData(%s)",physicaldata);
+ data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor());
+ data.writeCString(physicaldata);
+ remote()->transact(SET_SENSOR_PHYSICAL_DATA, data, &reply);
+ return reply.readInt32();
+ }
};
// Out-of-line virtual method definition to trigger vtable emission in this
@@ -124,6 +135,14 @@ status_t BnSensorServer::onTransact(
reply->writeInt32(static_cast<int32_t>(ret));
return NO_ERROR;
}
+ case SET_SENSOR_PHYSICAL_DATA: {
+ CHECK_INTERFACE(ISensorServer, data, reply);
+ const char* physicaldata = data.readCString();
+ //ALOGD("ISensorManager, BnSensorServer::onTransact, physicaldata is: (%s)",physicaldata);
+ status_t result = setSensorPhysicalData(physicaldata);
+ reply->writeInt32(result);
+ return NO_ERROR;
+ }
}
return BBinder::onTransact(code, data, reply, flags);
}
diff --git a/libs/gui/SensorManager.cpp b/libs/gui/SensorManager.cpp
index 33608b5..343131f 100644
--- a/libs/gui/SensorManager.cpp
+++ b/libs/gui/SensorManager.cpp
@@ -227,5 +227,22 @@ bool SensorManager::isDataInjectionEnabled() {
return false;
}
+bool SensorManager::SetPhysicalData(const char* data)
+{
+ status_t reply;
+ //ALOGD("SensorManager::SetPhysicalData(%s)",data);
+
+ reply = mSensorServer->setSensorPhysicalData(data);
+
+ if(reply == NO_ERROR)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
// ----------------------------------------------------------------------------
}; // namespace android
diff --git a/services/sensorservice/SensorDevice.cpp b/services/sensorservice/SensorDevice.cpp
index dd1bccf..48ae2fb 100644
--- a/services/sensorservice/SensorDevice.cpp
+++ b/services/sensorservice/SensorDevice.cpp
@@ -407,6 +407,21 @@ status_t SensorDevice::setMode(uint32_t mode) {
return mSensorModule->set_operation_mode(mode);
}
+status_t SensorDevice::setSensorPhysicalData(const char* physicaldata)
+{
+ //ALOGD("SensorDevice::setSensorPhysicalData(%s)",physicaldata);
+ Mutex::Autolock _l(mLock);
+ if((mSensorModule->set_sensor_physical_data == NULL) || (getHalDeviceVersion() < SENSORS_DEVICE_API_VERSION_1_3_5))
+ {
+ return NO_INIT;
+ }
+ else
+ {
+ return mSensorModule->set_sensor_physical_data(physicaldata);
+ }
+}
+
+
// ---------------------------------------------------------------------------
int SensorDevice::Info::numActiveClients() {
diff --git a/services/sensorservice/SensorDevice.h b/services/sensorservice/SensorDevice.h
index c484849..f658497 100644
--- a/services/sensorservice/SensorDevice.h
+++ b/services/sensorservice/SensorDevice.h
@@ -104,6 +104,7 @@ public:
void autoDisable(void *ident, int handle);
status_t injectSensorData(const sensors_event_t *event);
void dump(String8& result);
+ status_t setSensorPhysicalData(const char* physicaldata);
};
// ---------------------------------------------------------------------------
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index fd72b23..2548a3e 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -735,6 +735,14 @@ Vector<Sensor> SensorService::getSensorList(const String16& opPackageName)
return accessibleSensorList;
}
+status_t SensorService::setSensorPhysicalData(const char* physicaldata)
+{
+ SensorDevice& dev(SensorDevice::getInstance());
+
+ //ALOGD("SensorService::setSensorPhysicalData(%s)",physicaldata);
+ return dev.setSensorPhysicalData(physicaldata);
+}
+
sp<ISensorEventConnection> SensorService::createSensorEventConnection(const String8& packageName,
int requestedMode, const String16& opPackageName) {
// Only 2 modes supported for a SensorEventConnection ... NORMAL and DATA_INJECTION.
diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h
index 9a573ae..3a1ffb2 100644
--- a/services/sensorservice/SensorService.h
+++ b/services/sensorservice/SensorService.h
@@ -130,6 +130,7 @@ class SensorService :
virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName,
int requestedMode, const String16& opPackageName);
virtual int isDataInjectionEnabled();
+ virtual status_t setSensorPhysicalData(const char* physicaldata);
virtual status_t dump(int fd, const Vector<String16>& args);
class SensorEventConnection : public BnSensorEventConnection, public LooperCallback {