diff options
-rwxr-xr-x | bcm4329.ko | bin | 263236 -> 258840 bytes | |||
-rwxr-xr-x | init.herring.rc | 4 | ||||
-rwxr-xr-x | kernel | bin | 2403024 -> 2837932 bytes | |||
-rwxr-xr-x | libaudio/AudioHardwareALSA.cpp | 91 | ||||
-rwxr-xr-x | libaudio/AudioHardwareALSA.h | 4 | ||||
-rw-r--r-- | liboverlay/overlay.cpp | 7 | ||||
-rw-r--r-- | libsensors/sensors.cpp | 10 |
7 files changed, 89 insertions, 27 deletions
Binary files differ diff --git a/init.herring.rc b/init.herring.rc index a029716..944151e 100755 --- a/init.herring.rc +++ b/init.herring.rc @@ -19,6 +19,10 @@ on boot # phone setprop ro.telephony.call_ring.multiple 0 +# change permission for uart_switch + chown radio radio /sys/class/sec/uart_switch/UART_SEL/value + chmod 660 /sys/class/sec/uart_switch/UART_SEL/value + # create data/gps for GPS demon mkdir /data/gps 700 gps system chown gps system /data/gps Binary files differdiff --git a/libaudio/AudioHardwareALSA.cpp b/libaudio/AudioHardwareALSA.cpp index 4df3c42..db2a767 100755 --- a/libaudio/AudioHardwareALSA.cpp +++ b/libaudio/AudioHardwareALSA.cpp @@ -210,7 +210,8 @@ AudioHardwareALSA::AudioHardwareALSA() : mSecRilLibHandle(NULL), mRilClient(0), mVrModeEnabled(false), - mActivatedCP(false) + mActivatedCP(false), + mBluetoothECOff(false) { snd_lib_error_set_handler(&ALSAErrorHandler); mMixer = new ALSAMixer; @@ -539,8 +540,11 @@ status_t AudioHardwareALSA::doRouting_l(uint32_t device, bool force) case AudioSystem::ROUTE_BLUETOOTH_SCO: case AudioSystem::ROUTE_BLUETOOTH_SCO_HEADSET: case AudioSystem::ROUTE_BLUETOOTH_SCO_CARKIT: - LOGI("### incall mode bluetooth route"); - setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH); + LOGI("### incall mode bluetooth route %s NR", mBluetoothECOff ? "NO" : ""); + if (mBluetoothECOff) + setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH_NO_NR); + else + setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH); break; case AudioSystem::ROUTE_HEADSET : @@ -562,21 +566,6 @@ status_t AudioHardwareALSA::doRouting_l(uint32_t device, bool force) ret = mOutput->setDevice(mode, device, PLAYBACK, force); - if (mSecRilLibHandle && (connectRILDIfRequired() == OK) ) { - if (AudioSystem::MODE_IN_CALL == mode) { - if (!mActivatedCP) { - setCallClockSync(mRilClient, SOUND_CLOCK_START); - mActivatedCP = true; - } - } - - if (AudioSystem::MODE_NORMAL == mode) { - if(mActivatedCP) - mActivatedCP = false; - } - } - - return ret; } @@ -665,6 +654,14 @@ status_t AudioHardwareALSA::setMode(int mode) status_t status = AudioHardwareBase::setMode(mode); LOGV("setMode() : new %d, old %d", mMode, prevMode); if (status == NO_ERROR) { + if ( (mMode == AudioSystem::MODE_RINGTONE) || (mMode == AudioSystem::MODE_IN_CALL) ) + { + if ( (!mActivatedCP) && (mSecRilLibHandle) && (connectRILDIfRequired() == OK) ) { + setCallClockSync(mRilClient, SOUND_CLOCK_START); + mActivatedCP = true; + } + } + // make sure that doAudioRouteOrMute() is called by doRouting() // when entering or exiting in call mode even if the new device // selected is the same as current one. @@ -680,6 +677,11 @@ status_t AudioHardwareALSA::setMode(int mode) mOutput->close(); } } + + if (mMode == AudioSystem::MODE_NORMAL) { + if(mActivatedCP) + mActivatedCP = false; + } } return status; @@ -705,6 +707,54 @@ int AudioHardwareALSA::setVoiceRecordGain_l(bool enable) return NO_ERROR; } +status_t AudioHardwareALSA::setParameters(const String8& keyValuePairs) +{ + AudioParameter param = AudioParameter(keyValuePairs); + String8 bt_nrec_key = String8("bt_headset_nrec"); + String8 value; + + LOGV("setParameters(%s)", keyValuePairs.string()); + + if (param.get(bt_nrec_key, value) == NO_ERROR) { + setBluetoothNrEcOnOff((value == "on") ? false : true); + } + + return NO_ERROR; +} + +void AudioHardwareALSA::setBluetoothNrEcOnOff(bool disable) +{ + LOGV("setBluetoothNrEcOnOff(%s)", disable ? "true" : "false"); + + if (disable != mBluetoothECOff) + { + mBluetoothECOff = disable; + + if ( (mOutput) && (AudioSystem::MODE_IN_CALL == mMode) && + (mSecRilLibHandle) && (connectRILDIfRequired() == OK)) { + + uint32_t device = mOutput->device(); + + switch (device) { + case AudioSystem::ROUTE_BLUETOOTH_SCO: + case AudioSystem::ROUTE_BLUETOOTH_SCO_HEADSET: + case AudioSystem::ROUTE_BLUETOOTH_SCO_CARKIT: + LOGV("### incall mode bluetooth EC %s route", mBluetoothECOff ? "OFF" : "ON"); + if (mBluetoothECOff) + setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH_NO_NR); + else + setCallAudioPath(mRilClient, SOUND_AUDIO_PATH_BLUETOOTH); + break; + + default : + LOGE("Bluetooth path is not activated!!"); + break; + } + } + } +} + + // ---------------------------------------------------------------------------- ALSAStreamOps::ALSAStreamOps() : @@ -1627,6 +1677,7 @@ ssize_t AudioStreamInALSA::read(void *buffer, ssize_t bytes) } else { n = status; } + frames = snd_pcm_bytes_to_frames(mHandle, bytes); } else { n = frames; } @@ -1736,7 +1787,7 @@ status_t AudioStreamInALSA::getNextBuffer(ALSABufferProvider::Buffer* buffer) (uint8_t *)mPcmIn + (mInPcmInBuf * mDefaults->channelCount * sizeof(int16_t)), PERIOD_SZ_CAPTURE - mInPcmInBuf); - if (mReadStatus <= 0) { + if (mReadStatus < 0) { buffer->raw = NULL; buffer->frameCount = 0; LOGV("resampler read error %d", mReadStatus); @@ -2452,7 +2503,7 @@ int ALSADownsampler::resample(int16_t* out, size_t *outFrameCount) } if (out == NULL || outFrameCount == NULL) { - return mStatus; + return BAD_VALUE; } int16_t *outLeft = mTmp2Left; diff --git a/libaudio/AudioHardwareALSA.h b/libaudio/AudioHardwareALSA.h index eac7b7a..c3b6caa 100755 --- a/libaudio/AudioHardwareALSA.h +++ b/libaudio/AudioHardwareALSA.h @@ -350,6 +350,8 @@ namespace android int setVoiceRecordGain(bool enable); int setVoiceRecordGain_l(bool enable); + virtual status_t setParameters(const String8& keyValuePairs); + protected: /** * doRouting actually initiates the routing. A call to setRouting @@ -375,6 +377,7 @@ namespace android HRilClient mRilClient; bool mVrModeEnabled; bool mActivatedCP; + bool mBluetoothECOff; HRilClient (*openClientRILD) (void); int (*disconnectRILD) (HRilClient); @@ -387,6 +390,7 @@ namespace android void loadRILD(void); status_t connectRILDIfRequired(void); + void setBluetoothNrEcOnOff(bool disable); }; diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp index 73c3501..12b747f 100644 --- a/liboverlay/overlay.cpp +++ b/liboverlay/overlay.cpp @@ -802,13 +802,16 @@ static int overlay_setParameter(struct overlay_control_device_t *dev, stage->rotation = 0; stage->flip = V4L2_CID_VFLIP; break; + /* + * FIMC rotates first. but android devices flip first. + */ case OVERLAY_TRANSFORM_ROT_90+OVERLAY_TRANSFORM_FLIP_H: stage->rotation = 90; - stage->flip = V4L2_CID_HFLIP; + stage->flip = V4L2_CID_VFLIP; break; case OVERLAY_TRANSFORM_ROT_90+OVERLAY_TRANSFORM_FLIP_V: stage->rotation = 90; - stage->flip = V4L2_CID_VFLIP; + stage->flip = V4L2_CID_HFLIP; break; default: diff --git a/libsensors/sensors.cpp b/libsensors/sensors.cpp index 6f77007..7f342d0 100644 --- a/libsensors/sensors.cpp +++ b/libsensors/sensors.cpp @@ -70,11 +70,11 @@ static const struct sensor_t sSensorList[] = { { "KR3DM 3-axis Accelerometer", "STMicroelectronics", 1, SENSORS_ACCELERATION_HANDLE, - SENSOR_TYPE_ACCELEROMETER, 4.0f, 1.0f/720.0f, 1.0f, 0, { } }, + SENSOR_TYPE_ACCELEROMETER, 2*GRAVITY_EARTH, (2*GRAVITY_EARTH)/(256*8), 0.23f, 0, { } }, { "AK8973 3-axis Magnetic field sensor", "Asahi Kasei Microdevices", 1, SENSORS_MAGNETIC_FIELD_HANDLE, - SENSOR_TYPE_MAGNETIC_FIELD, 2000.0f, 1.0f, 6.8f, 0, { } }, + SENSOR_TYPE_MAGNETIC_FIELD, 2000.0f, 1.0f/256, 6.8f, 0, { } }, { "AK8973 Orientation sensor", "Asahi Kasei Microdevices", 1, SENSORS_ORIENTATION_HANDLE, @@ -82,15 +82,15 @@ static const struct sensor_t sSensorList[] = { { "GP2A Light sensor", "Sharp", 1, SENSORS_LIGHT_HANDLE, - SENSOR_TYPE_LIGHT, 1.0, 1, 20, 0, { } }, + SENSOR_TYPE_LIGHT, 3000.0f, 1.0f, 0.75f, 0, { } }, { "GP2A Proximity sensor", "Sharp", 1, SENSORS_PROXIMITY_HANDLE, - SENSOR_TYPE_PROXIMITY, 1.0, 1, 20, 0, { } }, + SENSOR_TYPE_PROXIMITY, 5.0f, 5.0f, 0.75f, 0, { } }, { "K3G Gyroscope sensor", "STMicroelectronics", 1, SENSORS_GYROSCOPE_HANDLE, - SENSOR_TYPE_GYROSCOPE, 1.0, 1, 20, 0, { } }, + SENSOR_TYPE_GYROSCOPE, 2000*M_PI/180.0f, (70.0f/1000.0f)*((float)M_PI/180.0f), 6.1f, 0, { } }, }; |