int CompOriSensor::enable(int32_t handle, int en) { char enable_path[PATH_MAX]; bool enable = !!en; int sensor; int fd; int ret; switch (handle) { case ID_M: ALOGE("Compass: enable=%d", en); sensor = MAG; ret = sspEnable("Compass", SSP_MAG, en); if (ret < 0) { ALOGE("Compass: could not change sensor state"); } break; case ID_O: ALOGE("Orientation: enable=%d", en); sensor = ORI; ret = sspEnable("Orientation", SSP_ORIENTATION, en); if (ret < 0) { ALOGE("Compass: could not change sensor state"); } break; default: ALOGE("CompOriSensor: unknown handle %d", handle); ret = -1; return -EINVAL; } if (enable == mEnabled[sensor]) return 0; if (ret == 0){ mEnabled[sensor] = enable; } return ret; }
int MagneticSensor::enable(int32_t handle, int en) { int flags = en ? 1 : 0; int err; if (flags != mEnabled) { ALOGE("Magnetic Sensor: Enable"); err = sspEnable(LOGTAG, SSP_MAG, en); if(err >= 0){ mEnabled = flags; setInitialState(); return 0; } return -1; } return 0; }
int AccelSensor::enable(int32_t handle, int en) { int flags = en ? 1 : 0; int err; if (flags != mEnabled) { err = sspEnable(LOGTAG, SSP_ACCEL, en); if(err >= 0){ mEnabled = flags; setInitialState(); return 0; } return -1; } return 0; }
int GyroscopeSensor::enable(int32_t, int en) { int enable = en ? 1 : 0; if (mEnabled == enable) return 0; int ret = sspEnable("Gyroscope", SSP_GYRO, en); if (ret < 0) { ALOGE("Gyroscope: could not change sensor state"); return ret; } mEnabled = enable; return 0; }
int ProximitySensor::enable(int32_t handle, int en) { int flags = en ? 1 : 0; int err; //ALOGD("%s: Enable: %i", __func__, en); if (flags != mEnabled) { err = sspEnable(LOGTAG, SSP_PROX, en); if(err >= 0){ mEnabled = flags; setInitialState(); return 0; } return -1; } return 0; }
int PressureSensor::enable(int32_t handle, int en) { uint32_t enable = en ? 1 : 0; uint32_t flag = mEnabled; int mask; switch (handle) { case ID_PRS: ALOGE("PressureSensor (PRS): enable=%d", en); mask = MODE_PRESSURE; mPressureActive = en; mLastTemperature = 0; break; case ID_TMP: ALOGE("PressureSensor (TMP): enable=%d", en); mask = MODE_TEMPERATURE; mTemperatureActive = en; break; default: ALOGE("PressureSensor: unknown handle %d", handle); return -1; } if ((mEnabled & mask) == enable) return 0; if (enable) flag |= mask; else flag &= ~mask; int ret = sspEnable("PressureSensor", SSP_PRESS, en); if (ret < 0) { ALOGE("PressureSensor: could not change sensor state"); return ret; } mEnabled = flag; return 0; }
int AkmSensor::enable(int32_t handle, int en) { int what = -1; switch (handle) { case ID_M: what = MagneticField; break; case ID_O: what = Orientation; break; } if (uint32_t(what) >= numSensors) return -EINVAL; int newState = en ? 1 : 0; int err = 0; if ((uint32_t(newState)<<what) != (mEnabled & (1<<what))) { uint32_t sensor_type; switch (what) { case MagneticField: sensor_type = SENSOR_TYPE_MAGNETIC_FIELD; break; } short flags = newState; if (en){ err = akm_enable_sensor(sensor_type); }else{ err = akm_disable_sensor(sensor_type); } err = sspEnable(LOGTAG, SSP_MAG, en); setInitialState(); ALOGE_IF(err, "Could not change sensor state (%s)", strerror(-err)); if (!err) { mEnabled &= ~(1<<what); mEnabled |= (uint32_t(flags)<<what); } } return err; }