diff options
author | The Android Automerger <android-build@android.com> | 2010-11-10 09:25:12 -0800 |
---|---|---|
committer | The Android Automerger <android-build@android.com> | 2010-11-10 09:25:12 -0800 |
commit | f325c261d2c83fc1a6fb8e5e1724cb5bde28937d (patch) | |
tree | 83afe0aad35e0d66128cb922f28363b891565a93 | |
parent | cf0fd819901aaf9c44c9292ac9f196ffb5a8664e (diff) | |
parent | 82d5df491f920e7dc8d13059c5887c8e896c84d6 (diff) | |
download | device_samsung_crespo-f325c261d2c83fc1a6fb8e5e1724cb5bde28937d.zip device_samsung_crespo-f325c261d2c83fc1a6fb8e5e1724cb5bde28937d.tar.gz device_samsung_crespo-f325c261d2c83fc1a6fb8e5e1724cb5bde28937d.tar.bz2 |
Merge branch 'gingerbread' into gingerbread-release
-rw-r--r-- | bcm4329.ko | bin | 259028 -> 259028 bytes | |||
-rwxr-xr-x | init.herring.rc | 4 | ||||
-rw-r--r-- | kernel | bin | 2800164 -> 2800408 bytes | |||
-rw-r--r-- | libaudio2/AudioHardware.cpp | 59 | ||||
-rw-r--r-- | libaudio2/AudioHardware.h | 6 | ||||
-rw-r--r-- | libaudio2/AudioPolicyManager.cpp | 29 | ||||
-rw-r--r-- | libaudio2/AudioPolicyManager.h | 1 | ||||
-rw-r--r-- | libcamera/SecCameraHWInterface.cpp | 42 | ||||
-rw-r--r-- | libsensors/AkmSensor.cpp | 4 | ||||
-rw-r--r-- | libsensors/GyroSensor.cpp | 2 | ||||
-rw-r--r-- | libsensors/sensors.cpp | 8 | ||||
-rw-r--r-- | libsensors/sensors.h | 34 |
12 files changed, 117 insertions, 72 deletions
Binary files differ diff --git a/init.herring.rc b/init.herring.rc index 1c8c1b5..d7620cf 100755 --- a/init.herring.rc +++ b/init.herring.rc @@ -43,6 +43,10 @@ on fs chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type +# We chown/chmod /efs because mount is run as root + defaults + chown radio radio /efs + chmod 0775 /efs + # permissions for NFC setprop ro.nfc.port "I2C" chmod 0600 /dev/pn544 Binary files differdiff --git a/libaudio2/AudioHardware.cpp b/libaudio2/AudioHardware.cpp index 53e9c65..86a2f80 100644 --- a/libaudio2/AudioHardware.cpp +++ b/libaudio2/AudioHardware.cpp @@ -80,7 +80,7 @@ AudioHardware::AudioHardware() : mPcmOpenCnt(0), mMixerOpenCnt(0), mInCallAudioMode(false), - mVrModeEnabled(false), + mInputSource("Default"), mBluetoothNrec(true), mSecRilLibHandle(NULL), mRilClient(0), @@ -331,11 +331,11 @@ status_t AudioHardware::setMode(int mode) LOGV("setMode() openPcmOut_l()"); openPcmOut_l(); openMixer_l(); - setVoiceRecognition_l(false); + setInputSource_l(String8("Default")); mInCallAudioMode = true; } if (mMode == AudioSystem::MODE_NORMAL && mInCallAudioMode) { - setVoiceRecognition_l(mVrModeEnabled); + setInputSource_l(mInputSource); LOGV("setMode() closeMixer_l()"); closeMixer_l(); LOGV("setMode() closePcmOut_l()"); @@ -549,8 +549,7 @@ status_t AudioHardware::dump(int fd, const Vector<String16>& args) snprintf(buffer, SIZE, "\tIn Call Audio Mode %s\n", (mInCallAudioMode) ? "ON" : "OFF"); result.append(buffer); - snprintf(buffer, SIZE, "\tVr Mode %s\n", - (mVrModeEnabled) ? "Enabled" : "Disabled"); + snprintf(buffer, SIZE, "\tInput source %s\n", mInputSource.string()); result.append(buffer); snprintf(buffer, SIZE, "\tmSecRilLibHandle: %p\n", mSecRilLibHandle); result.append(buffer); @@ -705,7 +704,10 @@ struct mixer *AudioHardware::openMixer_l() TRACE_DRIVER_IN(DRV_MIXER_OPEN) mMixer = mixer_open(); TRACE_DRIVER_OUT - LOGE_IF(mMixer == NULL, "openMixer_l() cannot open mixer"); + if (mMixer == NULL) { + LOGE("openMixer_l() cannot open mixer"); + mMixerOpenCnt--; + } } return mMixer; } @@ -822,27 +824,25 @@ sp <AudioHardware::AudioStreamInALSA> AudioHardware::getActiveInput_l() return spIn; } -status_t AudioHardware::setVoiceRecognition_l(bool enable) +status_t AudioHardware::setInputSource_l(String8 source) { - LOGV("setVoiceRecognition_l(%d)", enable); - if (enable != mVrModeEnabled) { - if (!(enable && (mMode == AudioSystem::MODE_IN_CALL))) { + LOGV("setInputSource_l(%s)", source.string()); + if (source != mInputSource) { + if ((source == "Default") || (mMode != AudioSystem::MODE_IN_CALL)) { if (mMixer) { TRACE_DRIVER_IN(DRV_MIXER_GET) - struct mixer_ctl *ctl= mixer_get_control(mMixer, "Recognition Control", 0); + struct mixer_ctl *ctl= mixer_get_control(mMixer, "Input Source", 0); TRACE_DRIVER_OUT if (ctl == NULL) { - closeMixer_l(); return NO_INIT; } - const char *mode = enable ? "RECOGNITION_ON" : "RECOGNITION_OFF"; - LOGV("mixer_ctl_select, Recognition Control, (%s)", mode); + LOGV("mixer_ctl_select, Input Source, (%s)", source.string()); TRACE_DRIVER_IN(DRV_MIXER_SEL) - mixer_ctl_select(ctl, mode); + mixer_ctl_select(ctl, source.string()); TRACE_DRIVER_OUT } } - mVrModeEnabled = enable; + mInputSource = source; } return NO_ERROR; @@ -934,9 +934,11 @@ ssize_t AudioHardware::AudioStreamOutALSA::write(const void* buffer, size_t byte if (mHardware->mode() != AudioSystem::MODE_IN_CALL) { next_route = mHardware->getOutputRouteFromDevice(mDevices); LOGV("write() wakeup setting route %s", next_route); - TRACE_DRIVER_IN(DRV_MIXER_SEL) - mixer_ctl_select(mRouteCtl, next_route); - TRACE_DRIVER_OUT + if (next_route && mRouteCtl) { + TRACE_DRIVER_IN(DRV_MIXER_SEL) + mixer_ctl_select(mRouteCtl, next_route); + TRACE_DRIVER_OUT + } } next_route = 0; acquire_wake_lock (PARTIAL_WAKE_LOCK, "AudioOutLock"); @@ -965,7 +967,7 @@ Error: standby(); // Simulate audio output timing in case of error - usleep(bytes * 1000000 / frameSize() / sampleRate()); + usleep((((bytes * 1000) / frameSize()) * 1000) / sampleRate()); return status; } @@ -1230,9 +1232,11 @@ ssize_t AudioHardware::AudioStreamInALSA::read(void* buffer, ssize_t bytes) if (mHardware->mode() != AudioSystem::MODE_IN_CALL) { next_route = mHardware->getInputRouteFromDevice(mDevices); LOGV("read() wakeup setting route %s", next_route); - TRACE_DRIVER_IN(DRV_MIXER_SEL) - mixer_ctl_select(mRouteCtl, next_route); - TRACE_DRIVER_OUT + if (next_route && mRouteCtl) { + TRACE_DRIVER_IN(DRV_MIXER_SEL) + mixer_ctl_select(mRouteCtl, next_route); + TRACE_DRIVER_OUT + } } next_route = 0; @@ -1273,7 +1277,7 @@ Error: standby(); // Simulate audio output timing in case of error - usleep(bytes * 1000000 / frameSize() / sampleRate()); + usleep((((bytes * 1000) / frameSize()) * 1000) / sampleRate()); return status; } @@ -1358,6 +1362,7 @@ status_t AudioHardware::AudioStreamInALSA::setParameters(const String8& keyValue AudioParameter param = AudioParameter(keyValuePairs); status_t status = NO_ERROR; int value; + String8 source; bool forceStandby = false; LOGD("AudioStreamInALSA::setParameters() %s", keyValuePairs.string()); @@ -1367,14 +1372,14 @@ status_t AudioHardware::AudioStreamInALSA::setParameters(const String8& keyValue { AutoMutex lock(mLock); - if (param.getInt(String8(VOICE_REC_MODE_KEY), value) == NO_ERROR) { + if (param.get(String8(INPUT_SOURCE_KEY), source) == NO_ERROR) { AutoMutex hwLock(mHardware->lock()); mHardware->openMixer_l(); - mHardware->setVoiceRecognition_l((value != 0)); + mHardware->setInputSource_l(source); mHardware->closeMixer_l(); - param.remove(String8(VOICE_REC_MODE_KEY)); + param.remove(String8(INPUT_SOURCE_KEY)); } if (param.getInt(String8(AudioParameter::keyRouting), value) == NO_ERROR) diff --git a/libaudio2/AudioHardware.h b/libaudio2/AudioHardware.h index 69e4140..256624b 100644 --- a/libaudio2/AudioHardware.h +++ b/libaudio2/AudioHardware.h @@ -66,7 +66,7 @@ namespace android { // Default audio input buffer size in bytes (8kHz mono) #define AUDIO_HW_IN_PERIOD_BYTES ((AUDIO_HW_IN_PERIOD_SZ*sizeof(int16_t))/8) -#define VOICE_REC_MODE_KEY "vr_mode" +#define INPUT_SOURCE_KEY "Input Source" class AudioHardware : public AudioHardwareBase { @@ -111,7 +111,7 @@ public: status_t setIncallPath_l(uint32_t device); - status_t setVoiceRecognition_l(bool enable); + status_t setInputSource_l(String8 source); static uint32_t getInputSampleRate(uint32_t sampleRate); sp <AudioStreamInALSA> getActiveInput_l(); @@ -140,7 +140,7 @@ private: uint32_t mMixerOpenCnt; bool mInCallAudioMode; - bool mVrModeEnabled; + String8 mInputSource; bool mBluetoothNrec; void* mSecRilLibHandle; HRilClient mRilClient; diff --git a/libaudio2/AudioPolicyManager.cpp b/libaudio2/AudioPolicyManager.cpp index 41c0fd0..93d70d8 100644 --- a/libaudio2/AudioPolicyManager.cpp +++ b/libaudio2/AudioPolicyManager.cpp @@ -42,4 +42,33 @@ extern "C" void destroyAudioPolicyManager(AudioPolicyInterface *interface) delete interface; } + +status_t AudioPolicyManager::startInput(audio_io_handle_t input) +{ + status_t status = AudioPolicyManagerBase::startInput(input); + + if (status == NO_ERROR) { + AudioInputDescriptor *inputDesc = mInputs.valueFor(input); + String8 key = String8("Input Source"); + String8 value; + switch(inputDesc->mInputSource) { + case AUDIO_SOURCE_VOICE_RECOGNITION: + value = String8("Voice Recognition"); + break; + case AUDIO_SOURCE_CAMCORDER: + value = String8("Camcorder"); + break; + case AUDIO_SOURCE_DEFAULT: + case AUDIO_SOURCE_MIC: + value = String8("Default"); + default: + break; + } + AudioParameter param = AudioParameter(); + param.add(key, value); + mpClientInterface->setParameters(input, param.toString()); + } + return status; +} + }; // namespace android diff --git a/libaudio2/AudioPolicyManager.h b/libaudio2/AudioPolicyManager.h index 03141e5..ae283db 100644 --- a/libaudio2/AudioPolicyManager.h +++ b/libaudio2/AudioPolicyManager.h @@ -34,6 +34,7 @@ public: virtual ~AudioPolicyManager() {} + virtual status_t startInput(audio_io_handle_t input); protected: // true is current platform implements a back microphone virtual bool hasBackMicrophone() const { return false; } diff --git a/libcamera/SecCameraHWInterface.cpp b/libcamera/SecCameraHWInterface.cpp index 9d5c775..9be2cb9 100644 --- a/libcamera/SecCameraHWInterface.cpp +++ b/libcamera/SecCameraHWInterface.cpp @@ -1748,6 +1748,10 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) } } + // scene mode + const char *new_scene_mode_str = params.get(CameraParameters::KEY_SCENE_MODE); + const char *current_scene_mode_str = mParameters.get(CameraParameters::KEY_SCENE_MODE); + // fps range int new_min_fps = 0; int new_max_fps = 0; @@ -1756,31 +1760,36 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) mParameters.getPreviewFpsRange(¤t_min_fps, ¤t_max_fps); /* our fps range is determined by the sensor, reject any request * that isn't exactly what we're already at. + * but the check is performed when requesting only changing fps range */ - if ((new_min_fps != current_min_fps) || (new_max_fps != current_max_fps)) { - LOGW("%s : requested new_min_fps = %d, new_max_fps = %d not allowed", - __func__, new_min_fps, new_max_fps); - LOGE("%s : current_min_fps = %d, current_max_fps = %d", - __func__, current_min_fps, current_max_fps); + if (new_scene_mode_str && current_scene_mode_str) { + if (!strcmp(new_scene_mode_str, current_scene_mode_str)) { + if ((new_min_fps != current_min_fps) || (new_max_fps != current_max_fps)) { + LOGW("%s : requested new_min_fps = %d, new_max_fps = %d not allowed", + __func__, new_min_fps, new_max_fps); + LOGE("%s : current_min_fps = %d, current_max_fps = %d", + __func__, current_min_fps, current_max_fps); + ret = UNKNOWN_ERROR; + } + } + } else { + /* Check basic validation if scene mode is different */ + if ((new_min_fps > new_max_fps) || + (new_min_fps < 0) || (new_max_fps < 0)) ret = UNKNOWN_ERROR; } - // scene mode - const char *new_scene_mode_str = params.get(CameraParameters::KEY_SCENE_MODE); - - LOGV("%s : new_scene_mode_str %s", __func__, new_scene_mode_str); - if (new_scene_mode_str != NULL) { int new_scene_mode = -1; const char *new_flash_mode_str = params.get(CameraParameters::KEY_FLASH_MODE); const char *new_focus_mode_str; - if (mSecCamera->getCameraId() == SecCamera::CAMERA_ID_BACK) { - new_focus_mode_str = params.get(CameraParameters::KEY_FOCUS_MODE); - } else { - new_focus_mode_str = NULL; - } + new_focus_mode_str = params.get(CameraParameters::KEY_FOCUS_MODE); + // fps range is (15000,30000) by default. + mParameters.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE, "(15000,30000)"); + mParameters.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, + "15000,30000"); if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_AUTO)) { new_scene_mode = SCENE_MODE_NONE; @@ -1790,9 +1799,6 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) new_focus_mode_str = CameraParameters::FOCUS_MODE_AUTO; } new_flash_mode_str = CameraParameters::FLASH_MODE_OFF; - mParameters.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE, "(15000,30000)"); - mParameters.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, - "15000,30000"); if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_PORTRAIT)) { diff --git a/libsensors/AkmSensor.cpp b/libsensors/AkmSensor.cpp index f2470c3..68d2fc2 100644 --- a/libsensors/AkmSensor.cpp +++ b/libsensors/AkmSensor.cpp @@ -245,7 +245,7 @@ int AkmSensor::readEvents(sensors_event_t* data, int count) while (count && mInputReader.readEvent(&event)) { int type = event->type; - if (type == EV_ABS) { + if (type == EV_REL) { processEvent(event->code, event->value); mInputReader.next(); } else if (type == EV_SYN) { @@ -320,4 +320,4 @@ void AkmSensor::processEvent(int code, int value) uint8_t(value & SENSOR_STATE_MASK); break; } -}
\ No newline at end of file +} diff --git a/libsensors/GyroSensor.cpp b/libsensors/GyroSensor.cpp index c478e40..7f6b864 100644 --- a/libsensors/GyroSensor.cpp +++ b/libsensors/GyroSensor.cpp @@ -143,7 +143,7 @@ again: #endif while (count && mInputReader.readEvent(&event)) { int type = event->type; - if (type == EV_ABS) { + if (type == EV_REL) { float value = event->value; if (event->code == EVENT_TYPE_GYRO_X) { mPendingEvent.data[0] = value * CONVERT_GYRO_X; diff --git a/libsensors/sensors.cpp b/libsensors/sensors.cpp index 7f342d0..2f85225 100644 --- a/libsensors/sensors.cpp +++ b/libsensors/sensors.cpp @@ -70,15 +70,15 @@ static const struct sensor_t sSensorList[] = { { "KR3DM 3-axis Accelerometer", "STMicroelectronics", 1, SENSORS_ACCELERATION_HANDLE, - SENSOR_TYPE_ACCELEROMETER, 2*GRAVITY_EARTH, (2*GRAVITY_EARTH)/(256*8), 0.23f, 0, { } }, + SENSOR_TYPE_ACCELEROMETER, RANGE_A, RESOLUTION_A, 0.23f, 20000, { } }, { "AK8973 3-axis Magnetic field sensor", "Asahi Kasei Microdevices", 1, SENSORS_MAGNETIC_FIELD_HANDLE, - SENSOR_TYPE_MAGNETIC_FIELD, 2000.0f, 1.0f/256, 6.8f, 0, { } }, + SENSOR_TYPE_MAGNETIC_FIELD, 2000.0f, CONVERT_M, 6.8f, 30000, { } }, { "AK8973 Orientation sensor", "Asahi Kasei Microdevices", 1, SENSORS_ORIENTATION_HANDLE, - SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f/64.0f, 7.8f, 0, { } }, + SENSOR_TYPE_ORIENTATION, 360.0f, CONVERT_O, 7.8f, 30000, { } }, { "GP2A Light sensor", "Sharp", 1, SENSORS_LIGHT_HANDLE, @@ -90,7 +90,7 @@ static const struct sensor_t sSensorList[] = { { "K3G Gyroscope sensor", "STMicroelectronics", 1, SENSORS_GYROSCOPE_HANDLE, - SENSOR_TYPE_GYROSCOPE, 2000*M_PI/180.0f, (70.0f/1000.0f)*((float)M_PI/180.0f), 6.1f, 0, { } }, + SENSOR_TYPE_GYROSCOPE, RANGE_GYRO, CONVERT_GYRO, 6.1f, 1200, { } }, }; diff --git a/libsensors/sensors.h b/libsensors/sensors.h index 008aad2..20884b6 100644 --- a/libsensors/sensors.h +++ b/libsensors/sensors.h @@ -54,29 +54,26 @@ __BEGIN_DECLS #define AKM_DEVICE_NAME "/dev/akm8973_aot" -#define EVENT_TYPE_ACCEL_X ABS_Y -#define EVENT_TYPE_ACCEL_Y ABS_X -#define EVENT_TYPE_ACCEL_Z ABS_Z -#define EVENT_TYPE_ACCEL_STATUS ABS_WHEEL +#define EVENT_TYPE_ACCEL_X REL_Y +#define EVENT_TYPE_ACCEL_Y REL_X +#define EVENT_TYPE_ACCEL_Z REL_Z -#define EVENT_TYPE_YAW ABS_RX -#define EVENT_TYPE_PITCH ABS_RY -#define EVENT_TYPE_ROLL ABS_RZ -#define EVENT_TYPE_ORIENT_STATUS ABS_RUDDER +#define EVENT_TYPE_YAW REL_RX +#define EVENT_TYPE_PITCH REL_RY +#define EVENT_TYPE_ROLL REL_RZ +#define EVENT_TYPE_ORIENT_STATUS REL_WHEEL /* For AK8973iB */ -#define EVENT_TYPE_MAGV_X ABS_HAT0Y -#define EVENT_TYPE_MAGV_Y ABS_HAT0X -#define EVENT_TYPE_MAGV_Z ABS_BRAKE -#define EVENT_TYPE_TEMPERATURE ABS_THROTTLE -#define EVENT_TYPE_STEP_COUNT ABS_GAS +#define EVENT_TYPE_MAGV_X REL_DIAL +#define EVENT_TYPE_MAGV_Y REL_HWHEEL +#define EVENT_TYPE_MAGV_Z REL_MISC #define EVENT_TYPE_PROXIMITY ABS_DISTANCE #define EVENT_TYPE_LIGHT ABS_MISC -#define EVENT_TYPE_GYRO_X ABS_RX -#define EVENT_TYPE_GYRO_Y ABS_RY -#define EVENT_TYPE_GYRO_Z ABS_RZ +#define EVENT_TYPE_GYRO_X REL_RY +#define EVENT_TYPE_GYRO_Y REL_RX +#define EVENT_TYPE_GYRO_Z REL_RZ // 720 LSG = 1G @@ -84,6 +81,8 @@ __BEGIN_DECLS #define NUMOFACCDATA 8 // conversion of acceleration data to SI units (m/s^2) +#define RANGE_A (2*GRAVITY_EARTH) +#define RESOLUTION_A (RANGE_A/(256*NUMOFACCDATA)) #define CONVERT_A (GRAVITY_EARTH / LSG / NUMOFACCDATA) #define CONVERT_A_X (CONVERT_A) #define CONVERT_A_Y (-CONVERT_A) @@ -102,9 +101,10 @@ __BEGIN_DECLS #define CONVERT_O_R (-CONVERT_O) // conversion of gyro data to SI units (radian/sec) +#define RANGE_GYRO (2000.0f*(float)M_PI/180.0f) #define CONVERT_GYRO ((70.0f / 1000.0f) * ((float)M_PI / 180.0f)) #define CONVERT_GYRO_X (CONVERT_GYRO) -#define CONVERT_GYRO_Y (CONVERT_GYRO) +#define CONVERT_GYRO_Y (-CONVERT_GYRO) #define CONVERT_GYRO_Z (CONVERT_GYRO) #define SENSOR_STATE_MASK (0x7FFF) |