diff options
author | Mike J. Chen <mjchen@sta.samsung.com> | 2010-11-11 17:31:07 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2010-12-07 20:34:41 -0800 |
commit | ca4a11b441a7645b2a01f40aaaa1767194dc2d22 (patch) | |
tree | ca0e711cfa5468f017367195163b08dd985085e8 /libsensors/AkmSensor.cpp | |
parent | 0c14befe3750d2d5c27cfb0c2183d31a9ad5c014 (diff) | |
download | device_samsung_crespo-ca4a11b441a7645b2a01f40aaaa1767194dc2d22.zip device_samsung_crespo-ca4a11b441a7645b2a01f40aaaa1767194dc2d22.tar.gz device_samsung_crespo-ca4a11b441a7645b2a01f40aaaa1767194dc2d22.tar.bz2 |
S5PC11X: libsensor: Changes to match libakm change
Changes to match libakm change to get raw acc data from
driver and to allow setting acc driver delay separately
from mag/orientation driver.
Change-Id: Ibe5648f1395334ef3bf5975ec0660f10199c9833
Signed-off-by: Mike J. Chen <mjchen@sta.samsung.com>
Diffstat (limited to 'libsensors/AkmSensor.cpp')
-rw-r--r-- | libsensors/AkmSensor.cpp | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/libsensors/AkmSensor.cpp b/libsensors/AkmSensor.cpp index 68d2fc2..32bdd6d 100644 --- a/libsensors/AkmSensor.cpp +++ b/libsensors/AkmSensor.cpp @@ -34,7 +34,7 @@ int (*akm_is_sensor_enabled)(uint32_t sensor_type); int (*akm_enable_sensor)(uint32_t sensor_type); int (*akm_disable_sensor)(uint32_t sensor_type); -int (*akm_set_delay)(uint64_t delay); +int (*akm_set_delay)(uint32_t sensor_type, uint64_t delay); int stub_is_sensor_enabled(uint32_t sensor_type) { return 0; @@ -44,7 +44,7 @@ int stub_enable_disable_sensor(uint32_t sensor_type) { return -ENODEV; } -int stub_set_delay(uint64_t delay) { +int stub_set_delay(uint32_t sensor_type, uint64_t delay) { return -ENODEV; } @@ -79,9 +79,6 @@ AkmSensor::AkmSensor() mPendingEvents[Orientation ].type = SENSOR_TYPE_ORIENTATION; mPendingEvents[Orientation ].orientation.status = SENSOR_STATUS_ACCURACY_HIGH; - for (int i=0 ; i<numSensors ; i++) - mDelays[i] = 200000000; // 200 ms by default - // read the actual value of all sensors if they're enabled already struct input_absinfo absinfo; short flags = 0; @@ -170,7 +167,6 @@ int AkmSensor::enable(int32_t handle, int en) if (!err) { mEnabled &= ~(1<<what); mEnabled |= (uint32_t(flags)<<what); - update_delay(); } } return err; @@ -178,36 +174,21 @@ int AkmSensor::enable(int32_t handle, int en) int AkmSensor::setDelay(int32_t handle, int64_t ns) { - int what = -1; - switch (handle) { - case ID_A: what = Accelerometer; break; - case ID_M: what = MagneticField; break; - case ID_O: what = Orientation; break; - } - - if (uint32_t(what) >= numSensors) - return -EINVAL; + uint32_t sensor_type = 0; if (ns < 0) return -EINVAL; - mDelays[what] = ns; - return update_delay(); -} - -int AkmSensor::update_delay() -{ - if (mEnabled) { - uint64_t wanted = -1LLU; - for (int i=0 ; i<numSensors ; i++) { - if (mEnabled & (1<<i)) { - uint64_t ns = mDelays[i]; - wanted = wanted < ns ? wanted : ns; - } - } - return akm_set_delay(int64_t(wanted)); + switch (handle) { + case ID_A: sensor_type = SENSOR_TYPE_ACCELEROMETER; break; + case ID_M: sensor_type = SENSOR_TYPE_MAGNETIC_FIELD; break; + case ID_O: sensor_type = SENSOR_TYPE_ORIENTATION; break; } - return 0; + + if (sensor_type == 0) + return -EINVAL; + + return akm_set_delay(sensor_type, ns); } int AkmSensor::loadAKMLibrary() |