move most of patches to common tree
This commit is contained in:
parent
08936b8187
commit
e0c91d78fa
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
cd ../../../..
|
||||
cd frameworks/av
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_av/0001-libmedia-stub-out-MTK-specific-bits-audio-working.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_av/0002-camera.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_av/0003-frameworks_av_fmradio_patch.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_av/0001_engineering_mode_audio_settings_frameworks_av.patch
|
||||
cd ../..
|
||||
cd frameworks/base
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_base/0001-location-support-GNSS-extension-presumably-from-MTK.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_base/0002-location-add-some-logs-just-to-be-confident.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_base/0003-location-style-fix.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_base/0004_minimal_xlog_frameworks_base.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_base/0005-Update-for-mtk.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/framework_base/0001_engineering_mode_audio_settings_frameworks_base.patch
|
||||
cd ../..
|
||||
cd packages/apps/Settings/
|
||||
git apply -v ../../../device/elephone/p8000/patches/packages_apps_Settings/0001-multisim.patch
|
||||
cd ../../..
|
||||
cd frameworks/opt/telephony
|
||||
git apply -v ../../../device/elephone/p8000/patches/framework_opt_telephony/0001-Update-for-mtk.patch
|
||||
cd ../../..
|
||||
cd hardware/libhardware
|
||||
git apply -v ../../device/elephone/p8000/patches/hardware_libhardware/fix-gps-light-audio.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/hardware_libhardware/0001_engineering_mode_audio_settings_hardware_libhardware.patch
|
||||
cd ../..
|
||||
cd hardware/libhardware_legacy
|
||||
git apply -v ../../device/elephone/p8000/patches/hardware_libhardware_legacy/patch-for-mtk.patch
|
||||
cd ../..
|
||||
cd packages/services/Telephony
|
||||
git apply -v ../../../device/elephone/p8000/patches/packages_services_telephony/NeedsFakeIccid.patch
|
||||
cd ../../..
|
||||
cd system/core
|
||||
#git apply -v ../../device/elephone/p8000/patches/system_core/fix-boot-for-mtk.patch
|
||||
git apply -v ../../device/elephone/p8000/patches/system_core/prevent-MTK-audio-and-silead-fingerprint-libs-from-spamming-log.patch
|
||||
cd ../..
|
||||
cd system/netd
|
||||
git apply -v ../../device/elephone/p8000/patches/system_netd/hotpost-fix.patch
|
||||
cd ../..
|
||||
echo Patches Applied Successfully!
|
|
@ -0,0 +1,256 @@
|
|||
From 2914a74b5c21585ef16e2b76721ea48ca1bc835d Mon Sep 17 00:00:00 2001
|
||||
From: Wang Xuerui <idontknw.wang@gmail.com>
|
||||
Date: Tue, 25 Aug 2015 02:49:19 +0800
|
||||
Subject: [PATCH 1/2] libmedia: stub out MTK-specific bits, audio working
|
||||
|
||||
Change-Id: I2b437e41599d0262838f86e794bfc887acc82821
|
||||
---
|
||||
media/libmedia/Android.mk | 9 ++
|
||||
media/libmedia/mtkaudio_stubs.cpp | 215 ++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 224 insertions(+)
|
||||
create mode 100644 media/libmedia/mtkaudio_stubs.cpp
|
||||
|
||||
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk
|
||||
index 139d6f8..109ab26 100644
|
||||
--- a/media/libmedia/Android.mk
|
||||
+++ b/media/libmedia/Android.mk
|
||||
@@ -124,6 +124,15 @@ LOCAL_C_INCLUDES := \
|
||||
$(call include-path-for, audio-effects) \
|
||||
$(call include-path-for, audio-utils)
|
||||
|
||||
+
|
||||
+ifeq ($(MTK_HARDWARE),true)
|
||||
+LOCAL_SRC_FILES += \
|
||||
+ mtkaudio_stubs.cpp
|
||||
+
|
||||
+# StrongPointer.h
|
||||
+LOCAL_C_INCLUDES += $(TOP)/frameworks/rs/server
|
||||
+endif
|
||||
+
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
diff --git a/media/libmedia/mtkaudio_stubs.cpp b/media/libmedia/mtkaudio_stubs.cpp
|
||||
new file mode 100644
|
||||
index 0000000..f67277c
|
||||
--- /dev/null
|
||||
+++ b/media/libmedia/mtkaudio_stubs.cpp
|
||||
@@ -0,0 +1,215 @@
|
||||
+// #include <MtpTypes.h>
|
||||
+#include <system/audio.h>
|
||||
+#include <StrongPointer.h>
|
||||
+#include <media/IAudioFlinger.h>
|
||||
+#include <hardware/audio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <dlfcn.h>
|
||||
+
|
||||
+namespace android {
|
||||
+
|
||||
+typedef void (*audio_error_callback)(status_t err);
|
||||
+
|
||||
+class AudioSystem
|
||||
+{
|
||||
+public:
|
||||
+ static bool getVoiceUnlockDLInstance();
|
||||
+ static int GetVoiceUnlockDLLatency();
|
||||
+ static int SetVoiceUnlockSRC(uint outSR, uint outChannel);
|
||||
+ static bool stopVoiceUnlockDL();
|
||||
+ static bool startVoiceUnlockDL();
|
||||
+ static int ReadRefFromRing(void*buf, uint32_t datasz,void* DLtime);
|
||||
+ static int GetVoiceUnlockULTime(void* DLtime);
|
||||
+ static void freeVoiceUnlockDLInstance();
|
||||
+
|
||||
+}; // class
|
||||
+
|
||||
+bool AudioSystem::getVoiceUnlockDLInstance()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int AudioSystem::GetVoiceUnlockDLLatency()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int AudioSystem::SetVoiceUnlockSRC(uint outSR, uint outChannel)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+bool AudioSystem::stopVoiceUnlockDL()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+bool AudioSystem::startVoiceUnlockDL()
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int AudioSystem::ReadRefFromRing(void*buf, uint32_t datasz,void* DLtime)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int AudioSystem::GetVoiceUnlockULTime(void* DLtime)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void AudioSystem::freeVoiceUnlockDLInstance()
|
||||
+{
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+class IATVCtrlClient
|
||||
+{
|
||||
+};
|
||||
+
|
||||
+class IATVCtrlService: public IInterface
|
||||
+{
|
||||
+public:
|
||||
+ DECLARE_META_INTERFACE(ATVCtrlService);
|
||||
+};
|
||||
+
|
||||
+class BpATVCtrlService : public BpInterface<IATVCtrlService>
|
||||
+{
|
||||
+public:
|
||||
+ BpATVCtrlService(const sp<IBinder>& impl)
|
||||
+ : BpInterface<IATVCtrlService>(impl)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual ~BpATVCtrlService()
|
||||
+ {
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_init()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_ps_init(int on)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_set_parameterb(int in)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_suspend(int on)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_shutdown()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_chscan(int mode)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_chscan_stop()
|
||||
+ {
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_get_chtable(int ch, void *entry, int len)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_set_chtable(int ch, void *entry, int len)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_clear_chtable()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_change_channel(int ch)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_set_country(int country)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_set_tparam(int mode)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_audio_play()
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_audio_stop()
|
||||
+ {
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_audio_get_format()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_audio_set_format(int val)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_audio_get_sound_system()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_adjust(int item, int val)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_get_chipdep(int item)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_matv_set_chipdep(int item, int val)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual void ATVCS_matv_register_callback()
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void registerClient(const sp<IATVCtrlClient>& client)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void registerClient_FM(const sp<IATVCtrlClient>& client)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual void CLI(char input)
|
||||
+ {
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_powerup(void *parm, int len)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_powerdown()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_getrssi()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_tune(void *parm, int len)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_seek(void *parm, int len)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_scan(void *parm, int len)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_mute(int val)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_getchipid()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ virtual int ATVCS_fm_isFMPowerUp()
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+IMPLEMENT_META_INTERFACE(ATVCtrlService, "android.media.IATVCtrlService");
|
||||
+
|
||||
+} // namespace
|
||||
--
|
||||
1.9.1
|
||||
|
|
@ -0,0 +1,223 @@
|
|||
commit 9984de64aa6511eea71611dbe2d7d20b210c05db
|
||||
Author: Dmitry Smirnov <divis1969@gmail.com>
|
||||
Date: Fri Apr 15 22:59:57 2016 +0300
|
||||
|
||||
Add MTK-specific APIs to access NV audio data
|
||||
|
||||
These data are used by Engineering app to configure audio parameters (volume)
|
||||
|
||||
Change-Id: I6786517942b1311c543262df0c62ca528c461d48
|
||||
|
||||
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
|
||||
index 698bf2e..606b015 100644
|
||||
--- a/include/media/AudioSystem.h
|
||||
+++ b/include/media/AudioSystem.h
|
||||
@@ -332,6 +332,9 @@ public:
|
||||
|
||||
static status_t registerPolicyMixes(Vector<AudioMix> mixes, bool registration);
|
||||
|
||||
+ static status_t getAudioData(int par, unsigned long size, char * buffer);
|
||||
+ static status_t setAudioData(int par, unsigned long size, char * buffer);
|
||||
+
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class AudioPortCallback : public RefBase
|
||||
diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h
|
||||
index 54be5f3..dc88930 100644
|
||||
--- a/include/media/IAudioFlinger.h
|
||||
+++ b/include/media/IAudioFlinger.h
|
||||
@@ -258,6 +258,9 @@ public:
|
||||
|
||||
/* Get the HW synchronization source used for an audio session */
|
||||
virtual audio_hw_sync_t getAudioHwSyncForSession(audio_session_t sessionId) = 0;
|
||||
+
|
||||
+ virtual status_t getAudioData(int par, unsigned long size, char * buffer) = 0;
|
||||
+ virtual status_t setAudioData(int par, unsigned long size, char * buffer) = 0;
|
||||
};
|
||||
|
||||
|
||||
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
|
||||
index 9cae21c..d7b28b1 100644
|
||||
--- a/media/libmedia/AudioSystem.cpp
|
||||
+++ b/media/libmedia/AudioSystem.cpp
|
||||
@@ -999,4 +999,18 @@ void AudioSystem::AudioPolicyServiceClient::onAudioPatchListUpdate()
|
||||
}
|
||||
}
|
||||
|
||||
+status_t AudioSystem::getAudioData(int par, unsigned long size, char * buffer)
|
||||
+{
|
||||
+ const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
|
||||
+ if (af == 0) return 0;
|
||||
+ return af->getAudioData(par, size, buffer);
|
||||
+}
|
||||
+
|
||||
+status_t AudioSystem::setAudioData(int par, unsigned long size, char * buffer)
|
||||
+{
|
||||
+ const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
|
||||
+ if (af == 0) return 0;
|
||||
+ return af->setAudioData(par, size, buffer);
|
||||
+}
|
||||
+
|
||||
}; // namespace android
|
||||
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
|
||||
index 3f76506..366f42c 100644
|
||||
--- a/media/libmedia/IAudioFlinger.cpp
|
||||
+++ b/media/libmedia/IAudioFlinger.cpp
|
||||
@@ -85,6 +85,8 @@ enum {
|
||||
#ifdef QCOM_DIRECTTRACK
|
||||
CREATE_DIRECT_TRACK,
|
||||
#endif
|
||||
+ GET_AUDIO_DATA,
|
||||
+ SET_AUDIO_DATA,
|
||||
};
|
||||
|
||||
#define MAX_ITEMS_PER_LIST 1024
|
||||
@@ -944,6 +946,44 @@ public:
|
||||
}
|
||||
return (audio_hw_sync_t)reply.readInt32();
|
||||
}
|
||||
+
|
||||
+ virtual status_t getAudioData(int par, unsigned long size, char * buffer)
|
||||
+ {
|
||||
+ ALOGV("getAudioData: %d, %d, %p", par, size, buffer);
|
||||
+ if (buffer == NULL || size == 0) {
|
||||
+ return BAD_VALUE;
|
||||
+ }
|
||||
+ Parcel data, reply;
|
||||
+ data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
|
||||
+ data.writeInt32(par);
|
||||
+ data.writeInt32(size);
|
||||
+ data.write(buffer, size);
|
||||
+ status_t status = remote()->transact(GET_AUDIO_DATA, data, &reply);
|
||||
+ if (status != NO_ERROR ||
|
||||
+ (status = (status_t)reply.readInt32()) != NO_ERROR) {
|
||||
+ return status;
|
||||
+ }
|
||||
+ reply.read(buffer, size);
|
||||
+ return status;
|
||||
+ }
|
||||
+
|
||||
+ virtual status_t setAudioData(int par, unsigned long size, char * buffer)
|
||||
+ {
|
||||
+ ALOGV("setAudioData: %d, %d, %p", par, size, buffer);
|
||||
+ if (buffer == NULL || size == 0) {
|
||||
+ return BAD_VALUE;
|
||||
+ }
|
||||
+ Parcel data, reply;
|
||||
+ data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
|
||||
+ data.writeInt32(par);
|
||||
+ data.writeInt32(size);
|
||||
+ data.write(buffer, size);
|
||||
+ status_t status = remote()->transact(SET_AUDIO_DATA, data, &reply);
|
||||
+ if (status == NO_ERROR) {
|
||||
+ status = (status_t)reply.readInt32();
|
||||
+ }
|
||||
+ return status;
|
||||
+ }
|
||||
};
|
||||
|
||||
IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger");
|
||||
@@ -1465,6 +1505,42 @@ status_t BnAudioFlinger::onTransact(
|
||||
reply->writeInt32(getAudioHwSyncForSession((audio_session_t)data.readInt32()));
|
||||
return NO_ERROR;
|
||||
} break;
|
||||
+ case GET_AUDIO_DATA: {
|
||||
+ CHECK_INTERFACE(IAudioFlinger, data, reply);
|
||||
+ int par = data.readInt32();
|
||||
+ unsigned long size = data.readInt32();
|
||||
+ ALOGV("GET_AUDIO_DATA: %d, %d", par, size);
|
||||
+ char * buffer = (char*)calloc(size, 1);
|
||||
+ if (buffer == NULL) {
|
||||
+ reply->writeInt32(NO_MEMORY);
|
||||
+ reply->writeInt32(0);
|
||||
+ return NO_ERROR;
|
||||
+ }
|
||||
+ status_t status = getAudioData(par, size, buffer);
|
||||
+ reply->writeInt32(status);
|
||||
+ if (status == NO_ERROR) {
|
||||
+ reply->write(buffer, size);
|
||||
+ }
|
||||
+ free(buffer);
|
||||
+ return NO_ERROR;
|
||||
+ } break;
|
||||
+ case SET_AUDIO_DATA: {
|
||||
+ CHECK_INTERFACE(IAudioFlinger, data, reply);
|
||||
+ int par = data.readInt32();
|
||||
+ unsigned long size = data.readInt32();
|
||||
+ ALOGV("SET_AUDIO_DATA: %d, %d", par, size);
|
||||
+ char * buffer = (char*)calloc(size, 1);
|
||||
+ if (buffer == NULL) {
|
||||
+ reply->writeInt32(NO_MEMORY);
|
||||
+ reply->writeInt32(0);
|
||||
+ return NO_ERROR;
|
||||
+ }
|
||||
+ data.read(buffer, size);
|
||||
+ status_t status = setAudioData(par, size, buffer);
|
||||
+ reply->writeInt32(status);
|
||||
+ free(buffer);
|
||||
+ return NO_ERROR;
|
||||
+ } break;
|
||||
default:
|
||||
return BBinder::onTransact(code, data, reply, flags);
|
||||
}
|
||||
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
|
||||
index 0c9b646..1e39951 100644
|
||||
--- a/services/audioflinger/AudioFlinger.cpp
|
||||
+++ b/services/audioflinger/AudioFlinger.cpp
|
||||
@@ -3334,6 +3334,42 @@ void AudioFlinger::dumpTee(int fd, const sp<NBAIO_Source>& source, audio_io_hand
|
||||
}
|
||||
#endif
|
||||
|
||||
+status_t AudioFlinger::getAudioData(int par, unsigned long size, char * buffer)
|
||||
+{
|
||||
+ status_t result = BAD_VALUE;
|
||||
+ ALOGV("getAudioData: par=%d, size=%d, buffer=%p", par, size, buffer);
|
||||
+ Mutex::Autolock _l(mLock);
|
||||
+ if (mPrimaryHardwareDev != NULL) {
|
||||
+ audio_hw_device_t *dev = mPrimaryHardwareDev->hwDevice();
|
||||
+ if (dev != NULL && dev->get_audio_data != NULL) {
|
||||
+ result = dev->get_audio_data(dev, par, size, buffer);
|
||||
+ } else {
|
||||
+ ALOGE("getAudioData: dev or get_audio_data is NULL");
|
||||
+ }
|
||||
+ } else {
|
||||
+ ALOGE("getAudioData: mPrimaryHardwareDev is NULL");
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+status_t AudioFlinger::setAudioData(int par, unsigned long size, char * buffer)
|
||||
+{
|
||||
+ status_t result = BAD_VALUE;
|
||||
+ ALOGV("setAudioData: par=%d, size=%d, buffer=%p", par, size, buffer);
|
||||
+ Mutex::Autolock _l(mLock);
|
||||
+ if (mPrimaryHardwareDev != NULL) {
|
||||
+ audio_hw_device_t *dev = mPrimaryHardwareDev->hwDevice();
|
||||
+ if (dev != NULL && dev->set_audio_data != NULL) {
|
||||
+ result = dev->set_audio_data(dev, par, size, buffer);
|
||||
+ } else {
|
||||
+ ALOGE("setAudioData: dev or get_audio_data is NULL");
|
||||
+ }
|
||||
+ } else {
|
||||
+ ALOGE("setAudioData: mPrimaryHardwareDev is NULL");
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
status_t AudioFlinger::onTransact(
|
||||
uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
|
||||
{
|
||||
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
|
||||
index 60eed29..4067df8 100644
|
||||
--- a/services/audioflinger/AudioFlinger.h
|
||||
+++ b/services/audioflinger/AudioFlinger.h
|
||||
@@ -295,6 +295,9 @@ public:
|
||||
/* Get the HW synchronization source used for an audio session */
|
||||
virtual audio_hw_sync_t getAudioHwSyncForSession(audio_session_t sessionId);
|
||||
|
||||
+ virtual status_t getAudioData(int par, unsigned long size, char * buffer);
|
||||
+ virtual status_t setAudioData(int par, unsigned long size, char * buffer);
|
||||
+
|
||||
virtual status_t onTransact(
|
||||
uint32_t code,
|
||||
const Parcel& data,
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,139 @@
|
|||
commit 0c5b6c0502f6feff62ec97405ea76aaacdde25fd
|
||||
Author: Jan Engelmohr <jan.engelmohr@mailbox.tu-dresden.de>
|
||||
Date: Thu May 5 00:47:41 2016 +0200
|
||||
|
||||
added frameworks_av patch for MTKs FM Radio
|
||||
|
||||
Change-Id: I50724ad6535650f376d13df992f1e5695da580bd
|
||||
|
||||
diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h
|
||||
index b95f949..4760ba2 100644
|
||||
--- a/include/media/MediaPlayerInterface.h
|
||||
+++ b/include/media/MediaPlayerInterface.h
|
||||
@@ -54,6 +54,7 @@ enum player_type {
|
||||
// argument to the 'test:' url in the setDataSource call.
|
||||
TEST_PLAYER = 5,
|
||||
DASH_PLAYER = 6,
|
||||
+ FM_AUDIO_PLAYER=7,
|
||||
};
|
||||
|
||||
|
||||
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
|
||||
index 8f06c55..7425a76 100644
|
||||
--- a/media/libmediaplayerservice/Android.mk
|
||||
+++ b/media/libmediaplayerservice/Android.mk
|
||||
@@ -43,6 +43,7 @@ LOCAL_SHARED_LIBRARIES := \
|
||||
libutils \
|
||||
libvorbisidec \
|
||||
libdrmframework \
|
||||
+ libmtkplayer
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libstagefright_nuplayer \
|
||||
@@ -55,6 +56,7 @@ LOCAL_C_INCLUDES := \
|
||||
$(TOP)/frameworks/av/media/libstagefright/webm \
|
||||
$(TOP)/frameworks/native/include/media/openmax \
|
||||
$(TOP)/external/tremolo/Tremolo \
|
||||
+ $(TOP)/device/elephone/p8000/MediaTek/fmaudioplayer
|
||||
|
||||
LOCAL_MODULE:= libmediaplayerservice
|
||||
|
||||
diff --git a/media/libmediaplayerservice/MediaPlayerFactory.cpp b/media/libmediaplayerservice/MediaPlayerFactory.cpp
|
||||
index 03fae91..54ea2cf 100644
|
||||
--- a/media/libmediaplayerservice/MediaPlayerFactory.cpp
|
||||
+++ b/media/libmediaplayerservice/MediaPlayerFactory.cpp
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
**
|
||||
** Copyright 2012, The Android Open Source Project
|
||||
**
|
||||
@@ -33,6 +38,7 @@
|
||||
#include "TestPlayerStub.h"
|
||||
#include "StagefrightPlayer.h"
|
||||
#include "nuplayer/NuPlayerDriver.h"
|
||||
+#include "FMAudioPlayer.h"
|
||||
#include <dlfcn.h>
|
||||
|
||||
namespace android {
|
||||
@@ -387,6 +393,21 @@ class TestPlayerFactory : public MediaPlayerFactory::IFactory {
|
||||
return new TestPlayerStub();
|
||||
}
|
||||
};
|
||||
+class FMPlayerFactory : public MediaPlayerFactory::IFactory {
|
||||
+ public:
|
||||
+ virtual float scoreFactory(const sp<IMediaPlayer>& client,
|
||||
+ const char* url,
|
||||
+ float curScore) {
|
||||
+ if(strncmp(url, "THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM", 38) == 0)
|
||||
+ return 1.0;
|
||||
+ return 0.0;
|
||||
+ }
|
||||
+
|
||||
+ virtual sp<MediaPlayerBase> createPlayer() {
|
||||
+ return new FMAudioPlayer();
|
||||
+ return NULL;
|
||||
+ }
|
||||
+};
|
||||
|
||||
void MediaPlayerFactory::registerBuiltinFactories() {
|
||||
Mutex::Autolock lock_(&sLock);
|
||||
@@ -398,6 +419,7 @@ void MediaPlayerFactory::registerBuiltinFactories() {
|
||||
registerFactory_l(new NuPlayerFactory(), NU_PLAYER);
|
||||
registerFactory_l(new SonivoxPlayerFactory(), SONIVOX_PLAYER);
|
||||
registerFactory_l(new TestPlayerFactory(), TEST_PLAYER);
|
||||
+ registerFactory_l(new FMPlayerFactory(), FM_AUDIO_PLAYER);
|
||||
|
||||
const char* FACTORY_LIB = "libdashplayer.so";
|
||||
const char* FACTORY_CREATE_FN = "CreateDASHFactory";
|
||||
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
|
||||
index 0c9b646..4d89d05 100644
|
||||
--- a/services/audioflinger/AudioFlinger.cpp
|
||||
+++ b/services/audioflinger/AudioFlinger.cpp
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
** Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
|
||||
** Not a Contribution.
|
||||
** Copyright 2007, The Android Open Source Project
|
||||
@@ -1151,6 +1156,19 @@ status_t AudioFlinger::setStreamVolume(audio_stream_type_t stream, float value,
|
||||
thread->setStreamVolume(stream, value);
|
||||
}
|
||||
|
||||
+ // change by hochi for fm volume
|
||||
+ if(stream == AUDIO_STREAM_MUSIC)
|
||||
+ {
|
||||
+ sp<ThreadBase> thread;
|
||||
+ thread = checkPlaybackThread_l(output);
|
||||
+ if (thread == primaryPlaybackThread_l())
|
||||
+ {
|
||||
+ //MTK_ALOG_D("setStreamVolume FM value = %f",value);
|
||||
+ audio_hw_device_t *dev = mPrimaryHardwareDev->hwDevice();
|
||||
+ dev->set_parameters (dev,String8::format("SetFmVolume=%f",value));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -1165,6 +1183,12 @@ status_t AudioFlinger::setStreamMute(audio_stream_type_t stream, bool muted)
|
||||
if (status != NO_ERROR) {
|
||||
return status;
|
||||
}
|
||||
+ if(stream == AUDIO_STREAM_MUSIC)
|
||||
+ {
|
||||
+ //MTK_ALOG_D("setStreamMute MATV muted=%d",muted);
|
||||
+ audio_hw_device_t *dev = mPrimaryHardwareDev->hwDevice();
|
||||
+ dev->set_parameters (dev,String8::format("SetMatvMute=%d",muted));
|
||||
+ }
|
||||
ALOG_ASSERT(stream != AUDIO_STREAM_PATCH, "attempt to mute AUDIO_STREAM_PATCH");
|
||||
|
||||
if (uint32_t(stream) == AUDIO_STREAM_ENFORCED_AUDIBLE) {
|
|
@ -0,0 +1,366 @@
|
|||
commit ffa414aa4983229d7423c6b57e73c5c299513b72
|
||||
Author: Jan Engelmohr <jan.engelmohr@mailbox.tu-dresden.de>
|
||||
Date: Mon Mar 28 16:21:53 2016 +0200
|
||||
|
||||
first silead fingerprint patch
|
||||
|
||||
Change-Id: Ice6b8be45223d1e0e5f4f02cb1e5aadc9b32252c
|
||||
|
||||
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
|
||||
index ddd21e6..3d5b720 100644
|
||||
--- a/core/java/android/app/KeyguardManager.java
|
||||
+++ b/core/java/android/app/KeyguardManager.java
|
||||
@@ -289,4 +289,14 @@ public class KeyguardManager {
|
||||
|
||||
}
|
||||
}
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:09:00 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ public void dismissKeyguard() {
|
||||
+ try {
|
||||
+ mWM.dismissKeyguard();
|
||||
+ } catch (RemoteException ex) {
|
||||
+ }
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
}
|
||||
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
|
||||
index 4042abc..68199cc 100644
|
||||
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
|
||||
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -1959,4 +1964,13 @@ public class LockPatternUtils {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.REQUIRE_PASSWORD_TO_DECRYPT, required ? 1 : 0);
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * @internal
|
||||
+ * M: reset Lockout attempt Dead line, to reset it as 0
|
||||
+ * The deadline value has to be reset after each time system rebooted
|
||||
+ */
|
||||
+ public void resetLockoutAttemptDeadline() {
|
||||
+ setLong(LOCKOUT_ATTEMPT_DEADLINE, 0L);
|
||||
+ }
|
||||
}
|
||||
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
|
||||
index 28f3a9d..5483ada 100644
|
||||
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
|
||||
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSecurityContainer.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -31,6 +36,10 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.FrameLayout;
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:09:48 +0800
|
||||
+ */
|
||||
+import android.os.Handler;
|
||||
+// End of Vanzo:hanshengpeng
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
|
||||
@@ -355,6 +364,28 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
|
||||
}
|
||||
}
|
||||
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:09:54 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ public void showAutoDismissDialog(String message, int timeout) {
|
||||
+ final AlertDialog dialog = new AlertDialog.Builder(mContext)
|
||||
+ .setMessage(message).create();
|
||||
+ if (!(mContext instanceof Activity)) {
|
||||
+ dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
|
||||
+ }
|
||||
+ dialog.show();
|
||||
+ Handler handler = new Handler();
|
||||
+ handler.postDelayed(new Runnable() {
|
||||
+ @Override
|
||||
+ public void run () {
|
||||
+ Log.d(TAG, "before dialog dismiss ");
|
||||
+ dialog.dismiss();
|
||||
+ }
|
||||
+ },timeout);
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
+
|
||||
+
|
||||
private void showAlmostAtAccountLoginDialog() {
|
||||
final int timeoutInSeconds = (int) LockPatternUtils.FAILED_ATTEMPT_TIMEOUT_MS / 1000;
|
||||
final int count = LockPatternUtils.FAILED_ATTEMPTS_BEFORE_RESET
|
||||
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
index 264e4b4..a8ef034 100644
|
||||
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -123,6 +128,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
private static final int MSG_SIM_SUBSCRIPTION_INFO_CHANGED = 326;
|
||||
private static final int MSG_SERVICE_STATE_CHANGED = 327;
|
||||
private static final int MSG_FINGERPRINT_STATE_CHANGED = 328;
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:03:15 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ private static final int MSG_FINGER_UNMATCH = 330;
|
||||
+ public final static String FINGER_PRINT_UNMATCH_ACTION = "com.silead.fp.lockscreen.action.UNMATCH";
|
||||
+ private KeyguardFingerPrintCallback mFPCallback;
|
||||
+// End of Vanzo:hanshengpeng
|
||||
|
||||
private static KeyguardUpdateMonitor sInstance;
|
||||
|
||||
@@ -244,6 +256,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
case MSG_SIM_SUBSCRIPTION_INFO_CHANGED:
|
||||
handleSimSubscriptionInfoChanged();
|
||||
break;
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:04:15 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ case MSG_FINGER_UNMATCH:
|
||||
+ handleFingerUnmatch((String) msg.obj);
|
||||
+ break;
|
||||
+// End of Vanzo:hanshengpeng
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -441,6 +460,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
}
|
||||
}
|
||||
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:11:30 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ private void handleFingerUnmatch(String msg) {
|
||||
+ Log.d(TAG, "handleFingerUnmatch msg: " + msg+":"+mFPCallback);
|
||||
+ if (mFPCallback != null) {
|
||||
+ mFPCallback.onFingerPrintUnmatch(msg);
|
||||
+ }
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
public boolean isFaceUnlockRunning(int userId) {
|
||||
return mUserFaceUnlockRunning.get(userId);
|
||||
}
|
||||
@@ -545,6 +574,17 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
Message msg = mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGED, subId, 0, state);
|
||||
msg.sendToTarget();
|
||||
}
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:11:48 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ else if (FINGER_PRINT_UNMATCH_ACTION.equals(action)) {
|
||||
+ final String msg_shown = intent.getStringExtra("msg_shown");
|
||||
+ final int timeout = intent.getIntExtra("msg_timeout", 2000);
|
||||
+ if (DEBUG) Log.d(TAG, "received FINGER_PRINT_UNMATCH_ACTION with msg = "
|
||||
+ + msg_shown);
|
||||
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_FINGER_UNMATCH, msg_shown));
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
}
|
||||
};
|
||||
|
||||
@@ -797,6 +837,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
bootCompleteFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
|
||||
context.registerReceiver(mBroadcastReceiver, bootCompleteFilter);
|
||||
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:12:04 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ // if (com.android.featureoption.FeatureOption.VANZO_FEATURE_ADD_SILEADINC_FP) {
|
||||
+ context.registerReceiver(mBroadcastReceiver, new IntentFilter(FINGER_PRINT_UNMATCH_ACTION));
|
||||
+ // }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
final IntentFilter allUserFilter = new IntentFilter();
|
||||
allUserFilter.addAction(Intent.ACTION_USER_INFO_CHANGED);
|
||||
allUserFilter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED);
|
||||
@@ -832,6 +879,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
trustManager.registerTrustListener(this);
|
||||
|
||||
mLockPatternUtils = new LockPatternUtils(mContext);
|
||||
+ //visi0nary
|
||||
+ FingerprintManager fpm;
|
||||
+ fpm = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
|
||||
+ fpm.startListening(mFingerprintManagerReceiver);
|
||||
}
|
||||
|
||||
private boolean isDeviceProvisionedInSettingsDb() {
|
||||
@@ -1232,6 +1283,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
|
||||
sendUpdates(callback);
|
||||
}
|
||||
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:12:26 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ public void registerFingerPrintCallback(KeyguardFingerPrintCallback callback) {
|
||||
+ if (DEBUG) Log.v(TAG, "registerFingerPrintCallback for " + callback);
|
||||
+ mFPCallback = callback;
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
private void sendUpdates(KeyguardUpdateMonitorCallback callback) {
|
||||
// Notify listener of the current state
|
||||
callback.onRefreshBatteryInfo(mBatteryStatus);
|
||||
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java b/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java
|
||||
index a89a446..46cf9b4 100644
|
||||
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java
|
||||
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardViewBase.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -149,6 +154,13 @@ public abstract class KeyguardViewBase extends FrameLayout implements SecurityCa
|
||||
return false;
|
||||
}
|
||||
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:13:38 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ public void showAutoDismissDialog(String msg, int timeout) {
|
||||
+ mSecurityContainer.showAutoDismissDialog(msg,timeout);
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
protected void announceCurrentSecurityMethod() {
|
||||
mSecurityContainer.announceCurrentSecurityMethod();
|
||||
}
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
|
||||
index 352bfba..d920208 100755
|
||||
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -92,6 +97,7 @@ import java.util.List;
|
||||
|
||||
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
|
||||
|
||||
+import com.android.keyguard.KeyguardFingerPrintCallback;
|
||||
|
||||
/**
|
||||
* Mediates requests related to the keyguard. This includes queries about the
|
||||
@@ -376,6 +382,20 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
|
||||
private final ArrayList<IKeyguardStateCallback> mKeyguardStateCallbacks = new ArrayList<>();
|
||||
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:05:26 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ private KeyguardFingerPrintCallback mFingerPrintCallback =
|
||||
+ new KeyguardFingerPrintCallback() {
|
||||
+ @Override
|
||||
+ public void onFingerPrintUnmatch(String msg) {
|
||||
+ Log.d(TAG, "onFingerPrintUnmatch msg = "+msg);
|
||||
+ mStatusBarKeyguardViewManager.showAutoDismissDialog(msg, 2000);
|
||||
+ }
|
||||
+ };
|
||||
+// End of Vanzo:hanshengpeng
|
||||
+
|
||||
+
|
||||
private boolean mCryptKeeperEnabled = true;
|
||||
|
||||
KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() {
|
||||
@@ -918,6 +938,15 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
if (DEBUG) Log.d(TAG, "onSystemReady");
|
||||
mSystemReady = true;
|
||||
mUpdateMonitor.registerCallback(mUpdateCallback);
|
||||
+ mLockPatternUtils.resetLockoutAttemptDeadline();
|
||||
+ //mPowerOffAlarmManager.onSystemReady();
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:14:32 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ //if (FeatureOption.VANZO_FEATURE_ADD_SILEADINC_FP) {
|
||||
+ mUpdateMonitor.registerFingerPrintCallback(mFingerPrintCallback);
|
||||
+ //}
|
||||
+// End of Vanzo:hanshengpeng
|
||||
|
||||
// Suppress biometric unlock right after boot until things have settled if it is the
|
||||
// selected security method, otherwise unsuppress it. It must be unsuppressed if it is
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
|
||||
index ffe6862..278256e 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -261,4 +266,11 @@ public class KeyguardBouncer {
|
||||
ensureView();
|
||||
return mKeyguardView.interceptMediaKey(event);
|
||||
}
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:15:38 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ public void showAutoDismissDialog(String msg, int timeout) {
|
||||
+ mKeyguardView.showAutoDismissDialog(msg,timeout);
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
}
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
|
||||
index afdf8b2..17f20a9 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
|
||||
@@ -1,4 +1,9 @@
|
||||
/*
|
||||
+* Copyright (C) 2014 MediaTek Inc.
|
||||
+* Modification based on code covered by the mentioned copyright
|
||||
+* and/or permission notice(s).
|
||||
+*/
|
||||
+/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@@ -493,4 +498,12 @@ public class StatusBarKeyguardViewManager {
|
||||
public boolean isKeyguardShowingMedia() {
|
||||
return mPhoneStatusBar.isKeyguardShowingMedia();
|
||||
}
|
||||
+
|
||||
+/* Vanzo:hanshengpeng on: Thu, 21 May 2015 17:05:53 +0800
|
||||
+ * fingerprint add by sileadinc
|
||||
+ */
|
||||
+ public void showAutoDismissDialog(String msg, int timeout) {
|
||||
+ mBouncer.showAutoDismissDialog(msg,timeout);
|
||||
+ }
|
||||
+// End of Vanzo:hanshengpeng
|
||||
}
|
|
@ -0,0 +1,379 @@
|
|||
From d34940d327f07ccfdb1be9b59e6d1d35aa5f45a5 Mon Sep 17 00:00:00 2001
|
||||
From: Wang Xuerui <idontknw.wang@gmail.com>
|
||||
Date: Fri, 28 Aug 2015 05:33:39 +0800
|
||||
Subject: [PATCH 1/5] location: support GNSS extension presumably from MTK
|
||||
|
||||
Change-Id: Ic1ed2e75389a34fc975e1afd6a4cb14d6982b316
|
||||
---
|
||||
location/java/android/location/GpsStatus.java | 36 +++++++++
|
||||
.../java/android/location/IGpsStatusListener.aidl | 5 ++
|
||||
.../java/android/location/LocationManager.java | 25 +++++++
|
||||
.../server/location/GpsLocationProvider.java | 86 +++++++++++++++++++++-
|
||||
.../server/location/GpsStatusListenerHelper.java | 26 +++++++
|
||||
...android_server_location_GpsLocationProvider.cpp | 55 ++++++++++++++
|
||||
6 files changed, 229 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/location/java/android/location/GpsStatus.java b/location/java/android/location/GpsStatus.java
|
||||
index 4af55a6..a647488 100644
|
||||
--- a/location/java/android/location/GpsStatus.java
|
||||
+++ b/location/java/android/location/GpsStatus.java
|
||||
@@ -165,6 +165,42 @@ public final class GpsStatus {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Used internally within {@link LocationManager} to copy GPS status
|
||||
+ * data from the Location Manager Service to its cached GpsStatus instance.
|
||||
+ * Is synchronized to ensure that GPS status updates are atomic.
|
||||
+ *
|
||||
+ * This is modified to become aware of explicit GNSS support of >32
|
||||
+ * satellites.
|
||||
+ */
|
||||
+ synchronized void setStatusFromGnss(int gnssSvCount, int[] prns, float[] snrs,
|
||||
+ float[] elevations, float[] azimuths,
|
||||
+ boolean[] ephemerisPresences,
|
||||
+ boolean[] almanacPresences,
|
||||
+ boolean[] usedInFix) {
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < mSatellites.length; i++) {
|
||||
+ mSatellites[i].mValid = false;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < gnssSvCount; i++) {
|
||||
+ int prn = prns[i] - 1;
|
||||
+
|
||||
+ if (prn >= 0 && prn < mSatellites.length) {
|
||||
+ GpsSatellite satellite = mSatellites[prn];
|
||||
+
|
||||
+ satellite.mValid = true;
|
||||
+ satellite.mSnr = snrs[i];
|
||||
+ satellite.mElevation = elevations[i];
|
||||
+ satellite.mAzimuth = azimuths[i];
|
||||
+ satellite.mHasEphemeris = ephemerisPresences[i];
|
||||
+ satellite.mHasAlmanac = almanacPresences[i];
|
||||
+ satellite.mUsedInFix = usedInFix[i];
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* Used by {@link LocationManager#getGpsStatus} to copy LocationManager's
|
||||
* cached GpsStatus instance to the client's copy.
|
||||
* Since this method is only used within {@link LocationManager#getGpsStatus},
|
||||
diff --git a/location/java/android/location/IGpsStatusListener.aidl b/location/java/android/location/IGpsStatusListener.aidl
|
||||
index 62b1c6b..52865b7 100644
|
||||
--- a/location/java/android/location/IGpsStatusListener.aidl
|
||||
+++ b/location/java/android/location/IGpsStatusListener.aidl
|
||||
@@ -29,5 +29,10 @@ oneway interface IGpsStatusListener
|
||||
void onSvStatusChanged(int svCount, in int[] prns, in float[] snrs,
|
||||
in float[] elevations, in float[] azimuths,
|
||||
int ephemerisMask, int almanacMask, int usedInFixMask);
|
||||
+ void onGnssSvStatusChanged(int gnssSvCount, in int[] prns, in float[] snrs,
|
||||
+ in float[] elevations, in float[] azimuths,
|
||||
+ in boolean[] ephemerisPresences,
|
||||
+ in boolean[] almanacPresences,
|
||||
+ in boolean[] usedInFix);
|
||||
void onNmeaReceived(long timestamp, String nmea);
|
||||
}
|
||||
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
|
||||
index 0eb4fdc..b4682e7 100644
|
||||
--- a/location/java/android/location/LocationManager.java
|
||||
+++ b/location/java/android/location/LocationManager.java
|
||||
@@ -1448,6 +1448,31 @@ public class LocationManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
+ public void onGnssSvStatusChanged(int gnssSvCount, int[] prns, float[] snrs,
|
||||
+ float[] elevations, float[] azimuths,
|
||||
+ boolean[] ephemerisPresences,
|
||||
+ boolean[] almanacPresences,
|
||||
+ boolean[] usedInFix) {
|
||||
+ if (mListener != null) {
|
||||
+ mGpsStatus.setStatusFromGnss(
|
||||
+ gnssSvCount,
|
||||
+ prns,
|
||||
+ snrs,
|
||||
+ elevations,
|
||||
+ azimuths,
|
||||
+ ephemerisPresences,
|
||||
+ almanacPresences,
|
||||
+ usedInFix);
|
||||
+
|
||||
+ Message msg = Message.obtain();
|
||||
+ msg.what = GpsStatus.GPS_EVENT_SATELLITE_STATUS;
|
||||
+ // remove any SV status messages already in the queue
|
||||
+ mGpsHandler.removeMessages(GpsStatus.GPS_EVENT_SATELLITE_STATUS);
|
||||
+ mGpsHandler.sendMessage(msg);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
public void onNmeaReceived(long timestamp, String nmea) {
|
||||
if (mNmeaListener != null) {
|
||||
synchronized (mNmeaBuffer) {
|
||||
diff --git a/services/core/java/com/android/server/location/GpsLocationProvider.java b/services/core/java/com/android/server/location/GpsLocationProvider.java
|
||||
index 4e58c6c..92a74ea 100644
|
||||
--- a/services/core/java/com/android/server/location/GpsLocationProvider.java
|
||||
+++ b/services/core/java/com/android/server/location/GpsLocationProvider.java
|
||||
@@ -1719,6 +1719,72 @@ public class GpsLocationProvider implements LocationProviderInterface {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Count number of GNSS satellites used in fix.
|
||||
+ *
|
||||
+ * We could not rely on Integer.bitCount as GNSS used-in-fix info is not
|
||||
+ * represented as a bit-mask.
|
||||
+ */
|
||||
+ private int countGnssSvUsedInFix(final int gnssSvCount) {
|
||||
+ int result = 0;
|
||||
+
|
||||
+ for (int i = 0; i < gnssSvCount; i++) {
|
||||
+ if (mSvUsedInFix[i]) {
|
||||
+ result++;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * called from native code to update GNSS SV info
|
||||
+ */
|
||||
+ private void reportGnssSvStatus() {
|
||||
+ final int svCount = native_read_gnss_sv_status(
|
||||
+ mSvs,
|
||||
+ mSnrs,
|
||||
+ mSvElevations,
|
||||
+ mSvAzimuths,
|
||||
+ mSvEphemerisPresences,
|
||||
+ mSvAlmanacPresences,
|
||||
+ mSvUsedInFix);
|
||||
+ mListenerHelper.onGnssSvStatusChanged(
|
||||
+ svCount,
|
||||
+ mSvs,
|
||||
+ mSnrs,
|
||||
+ mSvElevations,
|
||||
+ mSvAzimuths,
|
||||
+ mSvEphemerisPresences,
|
||||
+ mSvAlmanacPresences,
|
||||
+ mSvUsedInFix);
|
||||
+
|
||||
+ if (VERBOSE) {
|
||||
+ Log.v(TAG, "GNSS SV count: " + svCount);
|
||||
+ for (int i = 0; i < svCount; i++) {
|
||||
+ Log.v(TAG, "sv: " + mSvs[i] +
|
||||
+ " snr: " + mSnrs[i]/10 +
|
||||
+ " elev: " + mSvElevations[i] +
|
||||
+ " azimuth: " + mSvAzimuths[i] +
|
||||
+ (!mSvEphemerisPresences[i] ? " " : " E") +
|
||||
+ (!mSvAlmanacPresences[i] ? " " : " A") +
|
||||
+ (!mSvUsedInFix[i] ? "" : "U"));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // return number of sets used in fix instead of total
|
||||
+ updateStatus(mStatus, countGnssSvUsedInFix(svCount));
|
||||
+
|
||||
+ if (mNavigating && mStatus == LocationProvider.AVAILABLE && mLastFixTime > 0 &&
|
||||
+ System.currentTimeMillis() - mLastFixTime > RECENT_FIX_TIMEOUT) {
|
||||
+ // send an intent to notify that the GPS is no longer receiving fixes.
|
||||
+ Intent intent = new Intent(LocationManager.GPS_FIX_CHANGE_ACTION);
|
||||
+ intent.putExtra(LocationManager.EXTRA_GPS_ENABLED, false);
|
||||
+ mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
|
||||
+ updateStatus(LocationProvider.TEMPORARILY_UNAVAILABLE, mSvCount);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* called from native code to update AGPS status
|
||||
*/
|
||||
private void reportAGpsStatus(int type, int status, byte[] ipaddr) {
|
||||
@@ -2352,12 +2418,18 @@ public class GpsLocationProvider implements LocationProviderInterface {
|
||||
private static final int ALMANAC_MASK = 1;
|
||||
private static final int USED_FOR_FIX_MASK = 2;
|
||||
|
||||
+ // GNSS extension
|
||||
+ private static final int MAX_GNSS_SVS = 256;
|
||||
+
|
||||
// preallocated arrays, to avoid memory allocation in reportStatus()
|
||||
- private int mSvs[] = new int[MAX_SVS];
|
||||
- private float mSnrs[] = new float[MAX_SVS];
|
||||
- private float mSvElevations[] = new float[MAX_SVS];
|
||||
- private float mSvAzimuths[] = new float[MAX_SVS];
|
||||
+ private int mSvs[] = new int[MAX_GNSS_SVS];
|
||||
+ private float mSnrs[] = new float[MAX_GNSS_SVS];
|
||||
+ private float mSvElevations[] = new float[MAX_GNSS_SVS];
|
||||
+ private float mSvAzimuths[] = new float[MAX_GNSS_SVS];
|
||||
private int mSvMasks[] = new int[3];
|
||||
+ private boolean mSvEphemerisPresences[] = new boolean[MAX_GNSS_SVS];
|
||||
+ private boolean mSvAlmanacPresences[] = new boolean[MAX_GNSS_SVS];
|
||||
+ private boolean mSvUsedInFix[] = new boolean[MAX_GNSS_SVS];
|
||||
private int mSvCount;
|
||||
// preallocated to avoid memory allocation in reportNmea()
|
||||
private byte[] mNmeaBuffer = new byte[120];
|
||||
@@ -2377,6 +2449,12 @@ public class GpsLocationProvider implements LocationProviderInterface {
|
||||
// mask[0] is ephemeris mask and mask[1] is almanac mask
|
||||
private native int native_read_sv_status(int[] svs, float[] snrs,
|
||||
float[] elevations, float[] azimuths, int[] masks);
|
||||
+ // returns number of GNSS SVs
|
||||
+ private native int native_read_gnss_sv_status(int[] svs, float[] snrs,
|
||||
+ float[] elevations, float[] azimuths,
|
||||
+ boolean[] ephemerisPresences,
|
||||
+ boolean[] almanacPresences,
|
||||
+ boolean[] usedInFix);
|
||||
private native int native_read_nmea(byte[] buffer, int bufferSize);
|
||||
private native void native_inject_location(double latitude, double longitude, float accuracy);
|
||||
|
||||
diff --git a/services/core/java/com/android/server/location/GpsStatusListenerHelper.java b/services/core/java/com/android/server/location/GpsStatusListenerHelper.java
|
||||
index 376b4a5..9155c7f 100644
|
||||
--- a/services/core/java/com/android/server/location/GpsStatusListenerHelper.java
|
||||
+++ b/services/core/java/com/android/server/location/GpsStatusListenerHelper.java
|
||||
@@ -104,6 +104,32 @@ abstract class GpsStatusListenerHelper extends RemoteListenerHelper<IGpsStatusLi
|
||||
foreach(operation);
|
||||
}
|
||||
|
||||
+ public void onGnssSvStatusChanged(
|
||||
+ final int svCount,
|
||||
+ final int[] prns,
|
||||
+ final float[] snrs,
|
||||
+ final float[] elevations,
|
||||
+ final float[] azimuths,
|
||||
+ final boolean[] ephemerisPresences,
|
||||
+ final boolean[] almanacPresences,
|
||||
+ final boolean[] usedInFix) {
|
||||
+ Operation operation = new Operation() {
|
||||
+ @Override
|
||||
+ public void execute(IGpsStatusListener listener) throws RemoteException {
|
||||
+ listener.onGnssSvStatusChanged(
|
||||
+ svCount,
|
||||
+ prns,
|
||||
+ snrs,
|
||||
+ elevations,
|
||||
+ azimuths,
|
||||
+ ephemerisPresences,
|
||||
+ almanacPresences,
|
||||
+ usedInFix);
|
||||
+ }
|
||||
+ };
|
||||
+ foreach(operation);
|
||||
+ }
|
||||
+
|
||||
public void onNmeaReceived(final long timestamp, final String nmea) {
|
||||
Operation operation = new Operation() {
|
||||
@Override
|
||||
diff --git a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
index 0d3fdf6..49727e9 100644
|
||||
--- a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
+++ b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
@@ -39,6 +39,7 @@ static jobject mCallbacksObj = NULL;
|
||||
static jmethodID method_reportLocation;
|
||||
static jmethodID method_reportStatus;
|
||||
static jmethodID method_reportSvStatus;
|
||||
+static jmethodID method_reportGnssSvStatus;
|
||||
static jmethodID method_reportAGpsStatus;
|
||||
static jmethodID method_reportNmea;
|
||||
static jmethodID method_setEngineCapabilities;
|
||||
@@ -69,6 +70,7 @@ static const GnssConfigurationInterface* sGnssConfigurationInterface = NULL;
|
||||
|
||||
// temporary storage for GPS callbacks
|
||||
static GpsSvStatus sGpsSvStatus;
|
||||
+static GnssSvStatus sGnssSvStatus;
|
||||
static const char* sNmeaString;
|
||||
static int sNmeaStringLength;
|
||||
|
||||
@@ -105,11 +107,21 @@ static void status_callback(GpsStatus* status)
|
||||
static void sv_status_callback(GpsSvStatus* sv_status)
|
||||
{
|
||||
JNIEnv* env = AndroidRuntime::getJNIEnv();
|
||||
+ ALOGD("sv_status_callback(%p)", sv_status);
|
||||
memcpy(&sGpsSvStatus, sv_status, sizeof(sGpsSvStatus));
|
||||
env->CallVoidMethod(mCallbacksObj, method_reportSvStatus);
|
||||
checkAndClearExceptionFromCallback(env, __FUNCTION__);
|
||||
}
|
||||
|
||||
+static void gnss_sv_status_callback(GnssSvStatus* sv_status)
|
||||
+{
|
||||
+ JNIEnv* env = AndroidRuntime::getJNIEnv();
|
||||
+ ALOGD("gnss_sv_status_callback(%p)", sv_status);
|
||||
+ memcpy(&sGnssSvStatus, sv_status, sizeof(sGnssSvStatus));
|
||||
+ env->CallVoidMethod(mCallbacksObj, method_reportGnssSvStatus);
|
||||
+ checkAndClearExceptionFromCallback(env, __FUNCTION__);
|
||||
+}
|
||||
+
|
||||
static void nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)
|
||||
{
|
||||
JNIEnv* env = AndroidRuntime::getJNIEnv();
|
||||
@@ -156,6 +168,7 @@ GpsCallbacks sGpsCallbacks = {
|
||||
location_callback,
|
||||
status_callback,
|
||||
sv_status_callback,
|
||||
+ gnss_sv_status_callback,
|
||||
nmea_callback,
|
||||
set_capabilities_callback,
|
||||
acquire_wakelock_callback,
|
||||
@@ -446,6 +459,7 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env,
|
||||
method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V");
|
||||
method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V");
|
||||
method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "()V");
|
||||
+ method_reportGnssSvStatus = env->GetMethodID(clazz, "reportGnssSvStatus", "()V");
|
||||
method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(II[B)V");
|
||||
method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V");
|
||||
method_setEngineCapabilities = env->GetMethodID(clazz, "setEngineCapabilities", "(I)V");
|
||||
@@ -627,6 +641,44 @@ static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, job
|
||||
return (jint) num_svs;
|
||||
}
|
||||
|
||||
+static jint android_location_GpsLocationProvider_read_gnss_sv_status(JNIEnv* env, jobject obj,
|
||||
+ jintArray prnArray, jfloatArray snrArray, jfloatArray elevArray, jfloatArray azumArray,
|
||||
+ jbooleanArray ephemerisPresencesArray,
|
||||
+ jbooleanArray almanacPresencesArray,
|
||||
+ jbooleanArray usedInFixArray)
|
||||
+{
|
||||
+ // this should only be called from within a call to reportGnssSvStatus
|
||||
+
|
||||
+ jint* prns = env->GetIntArrayElements(prnArray, 0);
|
||||
+ jfloat* snrs = env->GetFloatArrayElements(snrArray, 0);
|
||||
+ jfloat* elev = env->GetFloatArrayElements(elevArray, 0);
|
||||
+ jfloat* azim = env->GetFloatArrayElements(azumArray, 0);
|
||||
+ jboolean* ephemeris_presences = env->GetBooleanArrayElements(ephemerisPresencesArray, 0);
|
||||
+ jboolean* almanac_presences = env->GetBooleanArrayElements(almanacPresencesArray, 0);
|
||||
+ jboolean* used_in_fix = env->GetBooleanArrayElements(usedInFixArray, 0);
|
||||
+
|
||||
+ int num_svs = sGnssSvStatus.num_svs;
|
||||
+ for (int i = 0; i < num_svs; i++) {
|
||||
+ prns[i] = sGnssSvStatus.sv_list[i].prn;
|
||||
+ snrs[i] = sGnssSvStatus.sv_list[i].snr;
|
||||
+ elev[i] = sGnssSvStatus.sv_list[i].elevation;
|
||||
+ azim[i] = sGnssSvStatus.sv_list[i].azimuth;
|
||||
+
|
||||
+ ephemeris_presences[i] = sGnssSvStatus.sv_list[i].has_ephemeris ? 1 : 0;
|
||||
+ almanac_presences[i] = sGnssSvStatus.sv_list[i].has_almanac ? 1 : 0;
|
||||
+ used_in_fix[i] = sGnssSvStatus.sv_list[i].used_in_fix ? 1 : 0;
|
||||
+ }
|
||||
+
|
||||
+ env->ReleaseIntArrayElements(prnArray, prns, 0);
|
||||
+ env->ReleaseFloatArrayElements(snrArray, snrs, 0);
|
||||
+ env->ReleaseFloatArrayElements(elevArray, elev, 0);
|
||||
+ env->ReleaseFloatArrayElements(azumArray, azim, 0);
|
||||
+ env->ReleaseBooleanArrayElements(ephemerisPresencesArray, ephemeris_presences, 0);
|
||||
+ env->ReleaseBooleanArrayElements(almanacPresencesArray, almanac_presences, 0);
|
||||
+ env->ReleaseBooleanArrayElements(usedInFixArray, used_in_fix, 0);
|
||||
+ return (jint) num_svs;
|
||||
+}
|
||||
+
|
||||
static void android_location_GpsLocationProvider_agps_set_reference_location_cellid(JNIEnv* env,
|
||||
jobject obj, jint type, jint mcc, jint mnc, jint lac, jint psc, jint cid)
|
||||
{
|
||||
@@ -1444,6 +1496,9 @@ static JNINativeMethod sMethods[] = {
|
||||
{"native_read_sv_status",
|
||||
"([I[F[F[F[I)I",
|
||||
(void*)android_location_GpsLocationProvider_read_sv_status},
|
||||
+ {"native_read_gnss_sv_status",
|
||||
+ "([I[F[F[F[Z[Z[Z)I",
|
||||
+ (void*)android_location_GpsLocationProvider_read_gnss_sv_status},
|
||||
{"native_read_nmea", "([BI)I", (void*)android_location_GpsLocationProvider_read_nmea},
|
||||
{"native_inject_time", "(JJI)V", (void*)android_location_GpsLocationProvider_inject_time},
|
||||
{"native_inject_location",
|
||||
--
|
||||
1.9.1
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
commit 0b06f324c638dddae0f644d939c3a863dab49008
|
||||
Author: Dmitry Smirnov <divis1969@gmail.com>
|
||||
Date: Fri Apr 15 23:06:58 2016 +0300
|
||||
|
||||
Add MTK-speific APIs to access NV audio data
|
||||
|
||||
These data is used by Engineering app to configure audio params (volume)
|
||||
|
||||
Change-Id: Id4a6736b00ca7e3dac8683e182bb02b03aedeae6
|
||||
|
||||
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
|
||||
index fee1ead..5626a15 100644
|
||||
--- a/core/jni/android_media_AudioSystem.cpp
|
||||
+++ b/core/jni/android_media_AudioSystem.cpp
|
||||
@@ -1480,7 +1480,43 @@ exit:
|
||||
return jStatus;
|
||||
}
|
||||
|
||||
+static jint
|
||||
+android_media_AudioSystem_setAudioData(JNIEnv *env, jobject clazz,
|
||||
+ jint jA, jint jB, jbyteArray jArray)
|
||||
+{
|
||||
+ ALOGV("setAudioData");
|
||||
+ if (jArray == NULL || env->GetArrayLength(jArray) == 0) {
|
||||
+ ALOGE("setAudioData: emply buffer");
|
||||
+ return (jint)AUDIO_JAVA_BAD_VALUE;
|
||||
+ }
|
||||
+
|
||||
+ jbyte * buffer = env->GetByteArrayElements(jArray, NULL);
|
||||
+
|
||||
+ int status = AudioSystem::setAudioData((int)jA, (unsigned long)jB, (char*)buffer);
|
||||
+
|
||||
+ env->ReleaseByteArrayElements(jArray, buffer, 0);
|
||||
+ ALOGV("setAudioData: status %d", status);
|
||||
+ return (jint)status;
|
||||
+}
|
||||
|
||||
+static jint
|
||||
+android_media_AudioSystem_getAudioData(JNIEnv *env, jobject clazz,
|
||||
+ jint jA, jint jB, jbyteArray jArray)
|
||||
+{
|
||||
+ ALOGV("getAudioData");
|
||||
+ if (jArray == NULL || env->GetArrayLength(jArray) == 0) {
|
||||
+ ALOGE("getAudioData: emply buffer");
|
||||
+ return (jint)AUDIO_JAVA_BAD_VALUE;
|
||||
+ }
|
||||
+
|
||||
+ jbyte * buffer = env->GetByteArrayElements(jArray, NULL);
|
||||
+
|
||||
+ int status = AudioSystem::getAudioData((int)jA, (unsigned long)jB, (char*)buffer);
|
||||
+
|
||||
+ env->ReleaseByteArrayElements(jArray, buffer, 0);
|
||||
+ ALOGV("getAudioData: status %d", status);
|
||||
+ return (jint)status;
|
||||
+}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@@ -1525,6 +1561,10 @@ static JNINativeMethod gMethods[] = {
|
||||
(void *)android_media_AudioSystem_getAudioHwSyncForSession},
|
||||
{"registerPolicyMixes", "(Ljava/util/ArrayList;Z)I",
|
||||
(void *)android_media_AudioSystem_registerPolicyMixes},
|
||||
+ {"getAudioData", "(II[B)I",
|
||||
+ (void *)android_media_AudioSystem_getAudioData},
|
||||
+ {"setAudioData", "(II[B)I",
|
||||
+ (void *)android_media_AudioSystem_setAudioData},
|
||||
|
||||
};
|
||||
|
||||
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
|
||||
index bf79e9a..50b94ae 100644
|
||||
--- a/media/java/android/media/AudioSystem.java
|
||||
+++ b/media/java/android/media/AudioSystem.java
|
||||
@@ -604,5 +604,8 @@ public class AudioSystem
|
||||
public static native int getAudioHwSyncForSession(int sessionId);
|
||||
|
||||
public static native int registerPolicyMixes(ArrayList<AudioMix> mixes, boolean register);
|
||||
+
|
||||
+ public static native int getAudioData(int par, int size, byte[] data);
|
||||
+ public static native int setAudioData(int par, int size, byte[] data);
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
commit 7087ac5dfe4196fa3b51a9e534a43854e382cc02
|
||||
Author: Jan Engelmohr <jan.engelmohr@mailbox.tu-dresden.de>
|
||||
Date: Sun Apr 3 21:22:13 2016 +0200
|
||||
|
||||
added missing fingerprint callback class
|
||||
|
||||
Change-Id: Ibfc1ab6608042f485de96a07fe4898b7af93774f
|
||||
|
||||
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardFingerPrintCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardFingerPrintCallback.java
|
||||
new file mode 100644
|
||||
index 0000000..36cfdf1
|
||||
--- /dev/null
|
||||
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardFingerPrintCallback.java
|
||||
@@ -0,0 +1,24 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2012 The Android Open Source Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
+package com.android.keyguard;
|
||||
+
|
||||
+/**
|
||||
+ * Callback for general information relevant to lock screen.
|
||||
+ */
|
||||
+public class KeyguardFingerPrintCallback {
|
||||
+ public void onFingerPrintUnmatch(String msg) { }
|
||||
+}
|
|
@ -0,0 +1,90 @@
|
|||
From f19189f89c5a9c77c3f8635117c739126f6a25d0 Mon Sep 17 00:00:00 2001
|
||||
From: Wang Xuerui <idontknw.wang@gmail.com>
|
||||
Date: Fri, 28 Aug 2015 05:35:12 +0800
|
||||
Subject: [PATCH 2/5] location: add some logs, just to be confident
|
||||
|
||||
you know, this is MTK...
|
||||
|
||||
Change-Id: Ie16cdec573d24f1a23d09ddb3b864c4fcec8e39d
|
||||
---
|
||||
...android_server_location_GpsLocationProvider.cpp | 35 ++++++++++++++++++++--
|
||||
1 file changed, 32 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
index 49727e9..84d17b9 100644
|
||||
--- a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
+++ b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
@@ -491,12 +491,15 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env,
|
||||
"(Landroid/location/GpsNavigationMessageEvent;)V");
|
||||
|
||||
err = hw_get_module(GPS_HARDWARE_MODULE_ID, (hw_module_t const**)&module);
|
||||
+ ALOGV("hw_get_module err=%d module=%p", err, module);
|
||||
if (err == 0) {
|
||||
hw_device_t* device;
|
||||
err = module->methods->open(module, GPS_HARDWARE_MODULE_ID, &device);
|
||||
+ ALOGV("module->methods->open err=%d device=%p", err, device);
|
||||
if (err == 0) {
|
||||
gps_device_t* gps_device = (gps_device_t *)device;
|
||||
sGpsInterface = gps_device->get_gps_interface(gps_device);
|
||||
+ ALOGV("gps_device->get_gps_interface() = %p", sGpsInterface);
|
||||
}
|
||||
}
|
||||
if (sGpsInterface) {
|
||||
@@ -521,6 +524,16 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env,
|
||||
(const GnssConfigurationInterface*)sGpsInterface->get_extension(
|
||||
GNSS_CONFIGURATION_INTERFACE);
|
||||
}
|
||||
+
|
||||
+ ALOGV("sGpsXtraInterface = %p", sGpsXtraInterface);
|
||||
+ ALOGV("sAGpsInterface = %p", sAGpsInterface);
|
||||
+ ALOGV("sGpsNiInterface = %p", sGpsNiInterface);
|
||||
+ ALOGV("sGpsDebugInterface = %p", sGpsDebugInterface);
|
||||
+ ALOGV("sAGpsRilInterface = %p", sAGpsRilInterface);
|
||||
+ ALOGV("sGpsGeofencingInterface = %p", sGpsGeofencingInterface);
|
||||
+ ALOGV("sGpsMeasurementInterface = %p", sGpsMeasurementInterface);
|
||||
+ ALOGV("sGpsNavigationMessageInterface = %p", sGpsNavigationMessageInterface);
|
||||
+ ALOGV("sGnssConfigurationInterface = %p", sGnssConfigurationInterface);
|
||||
}
|
||||
|
||||
static jboolean android_location_GpsLocationProvider_is_supported(JNIEnv* env, jclass clazz) {
|
||||
@@ -533,18 +546,34 @@ static jboolean android_location_GpsLocationProvider_is_supported(JNIEnv* env, j
|
||||
|
||||
static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject obj)
|
||||
{
|
||||
+ ALOGV("GpsLocationProvider_init");
|
||||
// this must be set before calling into the HAL library
|
||||
if (!mCallbacksObj)
|
||||
mCallbacksObj = env->NewGlobalRef(obj);
|
||||
|
||||
// fail if the main interface fails to initialize
|
||||
- if (!sGpsInterface || sGpsInterface->init(&sGpsCallbacks) != 0)
|
||||
+ int ret;
|
||||
+
|
||||
+ ALOGV("init: sGpsInterface=%p sGpsXtraInterface=%p", sGpsInterface, sGpsXtraInterface);
|
||||
+ if (sGpsInterface) {
|
||||
+ ret = sGpsInterface->init(&sGpsCallbacks);
|
||||
+ ALOGV("init: sGpsInterface->init() ret=%d", ret);
|
||||
+ if (ret != 0) {
|
||||
+ return JNI_FALSE;
|
||||
+ }
|
||||
+ } else {
|
||||
return JNI_FALSE;
|
||||
+ }
|
||||
|
||||
// if XTRA initialization fails we will disable it by sGpsXtraInterface to NULL,
|
||||
// but continue to allow the rest of the GPS interface to work.
|
||||
- if (sGpsXtraInterface && sGpsXtraInterface->init(&sGpsXtraCallbacks) != 0)
|
||||
- sGpsXtraInterface = NULL;
|
||||
+ if (sGpsXtraInterface) {
|
||||
+ ret = sGpsXtraInterface->init(&sGpsXtraCallbacks);
|
||||
+ ALOGV("init: sGpsXtraInterface->init() ret=%d", ret);
|
||||
+ if (ret != 0) {
|
||||
+ sGpsXtraInterface = NULL;
|
||||
+ }
|
||||
+ }
|
||||
if (sAGpsInterface)
|
||||
sAGpsInterface->init(&sAGpsCallbacks);
|
||||
if (sGpsNiInterface)
|
||||
--
|
||||
1.9.1
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
From 4b81d92c16297d7dd0eabe771f455068dbfc74aa Mon Sep 17 00:00:00 2001
|
||||
From: Wang Xuerui <idontknw.wang@gmail.com>
|
||||
Date: Fri, 28 Aug 2015 06:18:05 +0800
|
||||
Subject: [PATCH 3/5] location: style fix
|
||||
|
||||
Change-Id: Ia7cc4b44f418273eec9154d1ce7e58e950e48ec2
|
||||
---
|
||||
services/core/jni/com_android_server_location_GpsLocationProvider.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
index 84d17b9..7d2fbe1 100644
|
||||
--- a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
+++ b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
|
||||
@@ -107,7 +107,7 @@ static void status_callback(GpsStatus* status)
|
||||
static void sv_status_callback(GpsSvStatus* sv_status)
|
||||
{
|
||||
JNIEnv* env = AndroidRuntime::getJNIEnv();
|
||||
- ALOGD("sv_status_callback(%p)", sv_status);
|
||||
+ ALOGD("sv_status_callback(%p)", sv_status);
|
||||
memcpy(&sGpsSvStatus, sv_status, sizeof(sGpsSvStatus));
|
||||
env->CallVoidMethod(mCallbacksObj, method_reportSvStatus);
|
||||
checkAndClearExceptionFromCallback(env, __FUNCTION__);
|
||||
@@ -116,7 +116,7 @@ static void sv_status_callback(GpsSvStatus* sv_status)
|
||||
static void gnss_sv_status_callback(GnssSvStatus* sv_status)
|
||||
{
|
||||
JNIEnv* env = AndroidRuntime::getJNIEnv();
|
||||
- ALOGD("gnss_sv_status_callback(%p)", sv_status);
|
||||
+ ALOGD("gnss_sv_status_callback(%p)", sv_status);
|
||||
memcpy(&sGnssSvStatus, sv_status, sizeof(sGnssSvStatus));
|
||||
env->CallVoidMethod(mCallbacksObj, method_reportGnssSvStatus);
|
||||
checkAndClearExceptionFromCallback(env, __FUNCTION__);
|
||||
--
|
||||
1.9.1
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
commit 5dc569d2ff6c2d9fdb7db6df5a772df17fbff428
|
||||
Author: Jan Engelmohr <jan.engelmohr@mailbox.tu-dresden.de>
|
||||
Date: Tue May 17 11:08:10 2016 +0200
|
||||
|
||||
minimal Xlog implmentation
|
||||
|
||||
Change-Id: I27a1e6b46c004c2d4d571f466eb54e8b094e71ac
|
||||
|
||||
diff --git a/core/java/com/mediatek/xlog/Xlog.java b/core/java/com/mediatek/xlog/Xlog.java
|
||||
new file mode 100755
|
||||
index 0000000..4be6749
|
||||
--- /dev/null
|
||||
+++ b/core/java/com/mediatek/xlog/Xlog.java
|
||||
@@ -0,0 +1,123 @@
|
||||
+/* Copyright Statement:
|
||||
+ *
|
||||
+ * This software/firmware and related documentation ("MediaTek Software") are
|
||||
+ * protected under relevant copyright laws. The information contained herein is
|
||||
+ * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
|
||||
+ * the prior written permission of MediaTek inc. and/or its licensors, any
|
||||
+ * reproduction, modification, use or disclosure of MediaTek Software, and
|
||||
+ * information contained herein, in whole or in part, shall be strictly
|
||||
+ * prohibited.
|
||||
+ *
|
||||
+ * MediaTek Inc. (C) 2010. All rights reserved.
|
||||
+ *
|
||||
+ * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
|
||||
+ * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
|
||||
+ * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
|
||||
+ * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
|
||||
+ * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
|
||||
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
|
||||
+ * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
|
||||
+ * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
|
||||
+ * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
|
||||
+ * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
|
||||
+ * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
|
||||
+ * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
|
||||
+ * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
|
||||
+ * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
|
||||
+ * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
|
||||
+ * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
|
||||
+ * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
|
||||
+ * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
|
||||
+ * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
|
||||
+ *
|
||||
+ * The following software/firmware and/or related documentation ("MediaTek
|
||||
+ * Software") have been modified by MediaTek Inc. All revisions are subject to
|
||||
+ * any receiver's applicable license agreements with MediaTek Inc.
|
||||
+ */
|
||||
+
|
||||
+package com.mediatek.xlog;
|
||||
+
|
||||
+import android.util.Log;
|
||||
+
|
||||
+public final class Xlog {
|
||||
+ /**
|
||||
+ * API for verbose log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int v(String tag, String msg) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for verbose log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int v(String tag, String msg, Throwable tr) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for debug log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int d(String tag, String msg) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for debug log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int d(String tag, String msg, Throwable tr) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for info log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int i(String tag, String msg) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for info log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int i(String tag, String msg, Throwable tr) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for info log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int w(String tag, String msg) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for warning log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int w(String tag, String msg, Throwable tr) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for warning log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int e(String tag, String msg) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * API for verbose log.
|
||||
+ * @internal
|
||||
+ */
|
||||
+ public static int e(String tag, String msg, Throwable tr) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,27 @@
|
|||
commit b7a4c9488cc2b00ee019ea03016a65027d4e9018
|
||||
Author: Dmitry Smirnov <divis1969@gmail.com>
|
||||
Date: Fri Apr 15 22:51:05 2016 +0300
|
||||
|
||||
Add MTK-specific APIs of the audio HAL
|
||||
|
||||
These APIs allow Engineering app to read/write audio data from/to NV
|
||||
|
||||
Change-Id: Ic1b59119081b41b8d1f59abfbf24a33b3d97a7a6
|
||||
|
||||
diff --git a/include/hardware/audio.h b/include/hardware/audio.h
|
||||
index c3cb740..02372f5 100644
|
||||
--- a/include/hardware/audio.h
|
||||
+++ b/include/hardware/audio.h
|
||||
@@ -753,6 +753,12 @@ struct audio_hw_device {
|
||||
int (*listen_set_parameters)(struct audio_hw_device *dev,
|
||||
const char *kv_pairs);
|
||||
#endif
|
||||
+ int (*dummy1)(void);
|
||||
+ int (*dummy2)(void);
|
||||
+ int (*dummy3)(void);
|
||||
+ int (*dummy4)(void);
|
||||
+ int (*set_audio_data)(struct audio_hw_device *dev, int par1, size_t len, void *ptr);
|
||||
+ int (*get_audio_data)(struct audio_hw_device *dev, int par1, size_t len, void *ptr);
|
||||
};
|
||||
typedef struct audio_hw_device audio_hw_device_t;
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
diff -ur libhardware/include/hardware/gps.h libhardware_mtk/include/hardware/gps.h
|
||||
--- libhardware/include/hardware/gps.h 2016-01-22 15:47:44.063878000 -0800
|
||||
+++ libhardware_mtk/include/hardware/gps.h 2016-01-23 05:25:12.364466000 -0800
|
||||
@@ -37,6 +37,9 @@
|
||||
/** Milliseconds since January 1, 1970 */
|
||||
typedef int64_t GpsUtcTime;
|
||||
|
||||
+/** Maximum number of GNSS SVs for gps_sv_status_callback(). */
|
||||
+#define GNSS_MAX_SVS 256
|
||||
+
|
||||
/** Maximum number of SVs for gps_sv_status_callback(). */
|
||||
#define GPS_MAX_SVS 32
|
||||
|
||||
@@ -482,6 +485,33 @@
|
||||
float azimuth;
|
||||
} GpsSvInfo;
|
||||
|
||||
+
|
||||
+/** Represents GNSS SV information. */
|
||||
+typedef struct {
|
||||
+ /** set to sizeof(GnssSvInfo) */
|
||||
+ size_t size;
|
||||
+ /** Pseudo-random number for the SV. */
|
||||
+ int prn;
|
||||
+ /** Signal to noise ratio. */
|
||||
+ float snr;
|
||||
+ /** Elevation of SV in degrees. */
|
||||
+ float elevation;
|
||||
+ /** Azimuth of SV in degrees. */
|
||||
+ float azimuth;
|
||||
+ /**
|
||||
+ * SVs have ephemeris data.
|
||||
+ */
|
||||
+ bool has_ephemeris;
|
||||
+ /**
|
||||
+ * SVs have almanac data.
|
||||
+ */
|
||||
+ bool has_almanac;
|
||||
+ /**
|
||||
+ * SVs were used for computing the most recent position fix.
|
||||
+ */
|
||||
+ bool used_in_fix;
|
||||
+} GnssSvInfo;
|
||||
+
|
||||
/** Represents SV status. */
|
||||
typedef struct {
|
||||
/** set to sizeof(GpsSvStatus) */
|
||||
@@ -511,6 +541,18 @@
|
||||
} GpsSvStatus;
|
||||
|
||||
|
||||
+/** Represents GNSS SV status. */
|
||||
+typedef struct {
|
||||
+ /** set to sizeof(GnssSvStatus) */
|
||||
+ size_t size;
|
||||
+
|
||||
+ /** Number of SVs currently visible. */
|
||||
+ int num_svs;
|
||||
+
|
||||
+ /** Contains an array of GNSS SV information. */
|
||||
+ GnssSvInfo sv_list[GNSS_MAX_SVS];
|
||||
+} GnssSvStatus;
|
||||
+
|
||||
/* 2G and 3G */
|
||||
/* In 3G lac is discarded */
|
||||
typedef struct {
|
||||
@@ -550,6 +592,12 @@
|
||||
*/
|
||||
typedef void (* gps_sv_status_callback)(GpsSvStatus* sv_info);
|
||||
|
||||
+/**
|
||||
+ * Callback with GNSS SV status information.
|
||||
+ * Can only be called from a thread created by create_thread_cb.
|
||||
+ */
|
||||
+typedef void (* gnss_sv_status_callback)(GnssSvStatus* sv_info);
|
||||
+
|
||||
/** Callback for reporting NMEA sentences.
|
||||
* Can only be called from a thread created by create_thread_cb.
|
||||
*/
|
||||
@@ -583,6 +631,7 @@
|
||||
gps_location_callback location_cb;
|
||||
gps_status_callback status_cb;
|
||||
gps_sv_status_callback sv_status_cb;
|
||||
+ gnss_sv_status_callback gnss_sv_status_cb;
|
||||
gps_nmea_callback nmea_cb;
|
||||
gps_set_capabilities set_capabilities_cb;
|
||||
gps_acquire_wakelock acquire_wakelock_cb;
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
diff -ur libhardware_legacy/vibrator/Android.mk libhardware_legacy_mtk/vibrator/Android.mk
|
||||
--- libhardware_legacy/vibrator/Android.mk 2016-01-22 15:47:44.299870000 -0800
|
||||
+++ libhardware_legacy_mtk/vibrator/Android.mk 2016-01-23 05:25:45.217410359 -0800
|
||||
@@ -2,3 +2,8 @@
|
||||
|
||||
LOCAL_SRC_FILES += vibrator/vibrator.c
|
||||
|
||||
+ifdef BOARD_HAVE_OPENSOURCE_IMMVIBE
|
||||
+LOCAL_SHARED_LIBRARIES += libimmvibeconnector
|
||||
+LOCAL_CFLAGS += -DHAVE_OPENSOURCE_IMMVIBE
|
||||
+LOCAL_CPPFLAGS += -DHAVE_OPENSOURCE_IMMVIBE
|
||||
+endif
|
||||
diff -ur libhardware_legacy/vibrator/vibrator.c libhardware_legacy_mtk/vibrator/vibrator.c
|
||||
--- libhardware_legacy/vibrator/vibrator.c 2016-01-22 15:47:44.299870000 -0800
|
||||
+++ libhardware_legacy_mtk/vibrator/vibrator.c 2016-01-23 05:25:45.217410359 -0800
|
||||
@@ -13,6 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
+
|
||||
#include <hardware_legacy/vibrator.h>
|
||||
#include "qemu.h"
|
||||
|
||||
@@ -21,6 +22,12 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
+#include <cutils/log.h>
|
||||
+
|
||||
+#ifdef HAVE_OPENSOURCE_IMMVIBE
|
||||
+#include <immvibeconn.h>
|
||||
+#endif
|
||||
+
|
||||
#define THE_DEVICE "/sys/class/timed_output/vibrator/enable"
|
||||
|
||||
int vibrator_exists()
|
||||
@@ -33,6 +40,11 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_OPENSOURCE_IMMVIBE
|
||||
+ /* TODO */
|
||||
+ return 1;
|
||||
+#endif
|
||||
+
|
||||
fd = open(THE_DEVICE, O_RDWR);
|
||||
if(fd < 0)
|
||||
return 0;
|
||||
@@ -51,6 +63,23 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_OPENSOURCE_IMMVIBE
|
||||
+ fd = immvibe_conn_open();
|
||||
+ if (fd < 0) {
|
||||
+ return errno;
|
||||
+ }
|
||||
+
|
||||
+ if (timeout_ms) {
|
||||
+ ret = immvibe_conn_vibrate(fd, timeout_ms);
|
||||
+ } else {
|
||||
+ ret = immvibe_conn_stop(fd);
|
||||
+ }
|
||||
+
|
||||
+ close(fd);
|
||||
+
|
||||
+ return ret ? -1 : 0;
|
||||
+#endif
|
||||
+
|
||||
fd = open(THE_DEVICE, O_RDWR);
|
||||
if(fd < 0)
|
||||
return errno;
|
|
@ -0,0 +1,71 @@
|
|||
commit a30f5239dedbd4d6fe3e0035cfa9fd1e535adc0a
|
||||
Author: Jan Engelmohr <jan.engelmohr@mailbox.tu-dresden.de>
|
||||
Date: Mon Apr 25 18:25:38 2016 +0200
|
||||
|
||||
first shots at multiSIM disabling
|
||||
|
||||
Change-Id: Ifbfbdaf644c327d421632af8a306d171bae9818b
|
||||
|
||||
diff --git a/src/com/android/settings/sim/MultiSimEnablerPreference.java b/src/com/android/settings/sim/MultiSimEnablerPreference.java
|
||||
index a7fbf7d..81d95e0 100644
|
||||
--- a/src/com/android/settings/sim/MultiSimEnablerPreference.java
|
||||
+++ b/src/com/android/settings/sim/MultiSimEnablerPreference.java
|
||||
@@ -42,6 +42,8 @@ import android.graphics.drawable.ShapeDrawable;
|
||||
import android.graphics.drawable.shapes.OvalShape;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
+import android.os.RemoteException;
|
||||
+import android.os.ServiceManager;
|
||||
import android.preference.Preference;
|
||||
import android.preference.SwitchPreference;
|
||||
import android.provider.Settings;
|
||||
@@ -64,6 +66,7 @@ import android.widget.Toast;
|
||||
|
||||
import com.android.internal.telephony.SubscriptionController;
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
+import com.android.internal.telephony.ITelephony;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
|
||||
@@ -99,6 +102,7 @@ public class MultiSimEnablerPreference extends SwitchPreference implements
|
||||
private boolean mExplicitlyDisabled = false;
|
||||
|
||||
private SubscriptionManager mSubscriptionManager;
|
||||
+ private ITelephony mITelephony;
|
||||
|
||||
private int[] mTintArr;
|
||||
private String[] mColorStrings;
|
||||
@@ -115,6 +119,7 @@ public class MultiSimEnablerPreference extends SwitchPreference implements
|
||||
mTintArr = context.getResources().getIntArray(com.android.internal.R.array.sim_colors);
|
||||
mColorStrings = context.getResources().getStringArray(R.array.color_picker);
|
||||
mTintSelectorPos = 0;
|
||||
+ mITelephony = ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
|
||||
|
||||
setOnPreferenceChangeListener(this);
|
||||
setPersistent(false);
|
||||
@@ -354,6 +359,17 @@ public class MultiSimEnablerPreference extends SwitchPreference implements
|
||||
Toast.makeText(getContext(), textResId, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
+ private void setRadioStateForSpecificSIM(boolean checked, int subscriberID) {
|
||||
+ if(subscriberID != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||
+ try {
|
||||
+ mITelephony.setRadioForSubscriber(subscriberID, checked);
|
||||
+ }
|
||||
+ catch (RemoteException re) {
|
||||
+ re.printStackTrace();
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
private void sendSubConfigurationRequest(boolean enable) {
|
||||
if (mParentHandler == null) {
|
||||
return;
|
||||
@@ -361,6 +377,7 @@ public class MultiSimEnablerPreference extends SwitchPreference implements
|
||||
mTargetState = enable;
|
||||
|
||||
showProgressDialog(enable);
|
||||
+ setRadioStateForSpecificSIM(enable, mSir.getSubscriptionId());
|
||||
if (enable) {
|
||||
SubscriptionManager.activateSubId(mSir.getSubscriptionId());
|
||||
} else {
|
|
@ -0,0 +1,49 @@
|
|||
From a945c5e9b1d19788cbd414795f6bfb2325c11024 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=E7=A7=8B=E5=8F=B6=E9=9A=8F=E9=A3=8Eivan?=
|
||||
<yanziily@gmail.com>
|
||||
Date: Sun, 3 Jan 2016 22:03:19 +0800
|
||||
Subject: [PATCH] Update for mtk
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Change-Id: Ia628e1992fd978c17da6f9c526160adcdae9a693
|
||||
Signed-off-by: 秋叶随风ivan <yanziily@gmail.com>
|
||||
---
|
||||
src/com/android/phone/CardStateMonitor.java | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/com/android/phone/CardStateMonitor.java b/src/com/android/phone/CardStateMonitor.java
|
||||
index da128c9..9288005 100644
|
||||
--- a/src/com/android/phone/CardStateMonitor.java
|
||||
+++ b/src/com/android/phone/CardStateMonitor.java
|
||||
@@ -70,6 +70,8 @@ public class CardStateMonitor extends Handler {
|
||||
private static final int EVENT_ICC_CHANGED = 1;
|
||||
private static final int EVENT_ICCID_LOAD_DONE = 2;
|
||||
|
||||
+ private boolean mNeedsFakeIccid = false;
|
||||
+
|
||||
static class CardInfo {
|
||||
boolean mLoadingIcc;
|
||||
String mIccId;
|
||||
@@ -185,6 +187,9 @@ public class CardStateMonitor extends Handler {
|
||||
String iccId = null;
|
||||
if (iccIdResult.exception != null) {
|
||||
logd("Exception in GET ICCID," + iccIdResult.exception);
|
||||
+ if(mNeedsFakeIccid) {
|
||||
+ iccId = IccConstants.FAKE_ICCID;
|
||||
+ }
|
||||
} else {
|
||||
iccId = IccUtils.bcdToString(data, 0, data.length);
|
||||
logd("get iccid on card" + cardIndex + ", iccId=" + iccId);
|
||||
@@ -229,6 +234,7 @@ public class CardStateMonitor extends Handler {
|
||||
if (validApp != null) {
|
||||
IccFileHandler fileHandler = validApp.getIccFileHandler();
|
||||
if (fileHandler != null) {
|
||||
+ mNeedsFakeIccid = fileHandler.needsFakeIccid();
|
||||
fileHandler.loadEFTransparent(IccConstants.EF_ICCID,
|
||||
obtainMessage(EVENT_ICCID_LOAD_DONE, sub));
|
||||
request = true;
|
||||
--
|
||||
1.9.1
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,80 @@
|
|||
From d6dad36eaa04fcaf481afad5807d31403ec865be Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <d6dad36eaa04fcaf481afad5807d31403ec865be.1469614455.git.gzwalter79@gmail.com>
|
||||
From: walter79 <gzwalter79@gmail.com>
|
||||
Date: Wed, 27 Jul 2016 12:14:03 +0200
|
||||
Subject: [PATCH] Prevent MTK audio and silead fingerprint libs from spamming
|
||||
in the log
|
||||
|
||||
thanks to fire855
|
||||
---
|
||||
liblog/logd_write.c | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
diff --git a/liblog/logd_write.c b/liblog/logd_write.c
|
||||
index 4b9c7c7..34fb9b1 100644
|
||||
--- a/liblog/logd_write.c
|
||||
+++ b/liblog/logd_write.c
|
||||
@@ -457,6 +457,61 @@ int __android_log_write(int prio, const char *tag, const char *msg)
|
||||
if (!tag)
|
||||
tag = "";
|
||||
|
||||
+ // Prevent MTK audio and silead fingerprint libs from spamming in the log
|
||||
+ if (!strcmp(tag, "AudioMTKFilterManager") ||
|
||||
+ !strcmp(tag, "AudioMTKFilter") ||
|
||||
+ !strcmp(tag, "AudioMTKStreamOut") ||
|
||||
+ !strcmp(tag, "AudioVPWStreamIn") ||
|
||||
+ !strcmp(tag, "AudioDigitalControl") ||
|
||||
+ !strcmp(tag, "AudioLoopbackController") ||
|
||||
+ !strcmp(tag, "AudioMTKVolumeController") ||
|
||||
+ !strcmp(tag, "AudioDigitalControl") ||
|
||||
+ !strcmp(tag, "AudioAnalogControl") ||
|
||||
+ !strcmp(tag, "AudioAfeReg") ||
|
||||
+ !strcmp(tag, "AudioAnalogReg") ||
|
||||
+ !strcmp(tag, "AudioPlatformDevice") ||
|
||||
+ !strcmp(tag, "AudioMachineDevice") ||
|
||||
+ !strcmp(tag, "MtkAudioLoud") ||
|
||||
+ !strcmp(tag, "LoopbackManager") ||
|
||||
+ !strcmp(tag, "AudioInterConnection") ||
|
||||
+ !strcmp(tag, "SLCODE") ||
|
||||
+ (strstr(tag, "ccci") != NULL) ||
|
||||
+ (strstr(tag, "Eis") != NULL) ||
|
||||
+ (strstr(tag, "aaa") != NULL) ||
|
||||
+ (strstr(tag, "af_") != NULL) ||
|
||||
+ (strstr(tag, "ae_") != NULL) ||
|
||||
+ (strstr(tag, "IMem") != NULL) ||
|
||||
+ (strstr(tag, "iio") != NULL) ||
|
||||
+ (strstr(tag, "Mdp") != NULL) ||
|
||||
+ (strstr(tag, "isp_tuning") != NULL) ||
|
||||
+ (strstr(tag, "Ae") != NULL) ||
|
||||
+ (strstr(tag, "flash") != NULL) ||
|
||||
+ (strstr(tag, "flicker_hal") != NULL) ||
|
||||
+ (strstr(tag, "NVRAM") != NULL) ||
|
||||
+ (strstr(tag, "Flicker") != NULL) ||
|
||||
+ (strstr(tag, "TuningMgr") != NULL) ||
|
||||
+ (strstr(tag, "MDP") != NULL) ||
|
||||
+ (strstr(tag, "Iop") != NULL) ||
|
||||
+ (strstr(tag, "Isp") != NULL) ||
|
||||
+ (strstr(tag, "VDO") != NULL) ||
|
||||
+ (strstr(tag, "MtkOmx") != NULL) ||
|
||||
+ (strstr(tag, "MtkCam") != NULL) ||
|
||||
+ (strstr(tag, "AfAlgo") != NULL) ||
|
||||
+ (strstr(tag, "isp_mgr_") != NULL) ||
|
||||
+ (strstr(tag, "SeninfDrvImp") != NULL) ||
|
||||
+ (strstr(tag, "NormalPipe") != NULL) ||
|
||||
+ (strstr(tag, "awb_state") != NULL) ||
|
||||
+ (strstr(tag, "paramctrl_attributes") != NULL) ||
|
||||
+ (strstr(tag, "LensMCU") != NULL) ||
|
||||
+ (strstr(tag, "GraphicBuffer") != NULL) ||
|
||||
+ (strstr(tag, "MALI") != NULL) ||
|
||||
+ (strstr(tag, "GED") != NULL) ||
|
||||
+ (strstr(tag, "SocketClient") != NULL) ||
|
||||
+ (strstr(tag, "BT3") != NULL)) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
/* XXX: This needs to go! */
|
||||
if (!strcmp(tag, "HTC_RIL") ||
|
||||
!strncmp(tag, "RIL", 3) || /* Any log tag with "RIL" as the prefix */
|
||||
--
|
||||
1.9.1
|
|
@ -0,0 +1,30 @@
|
|||
diff -ur netd/server/SoftapController.cpp netd_mtk/server/SoftapController.cpp
|
||||
--- netd/server/SoftapController.cpp 2016-01-22 15:55:47.409331000 -0800
|
||||
+++ netd_mtk/server/SoftapController.cpp 2016-01-23 05:24:28.098782000 -0800
|
||||
@@ -48,7 +48,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef LIBWPA_CLIENT_EXISTS
|
||||
-static const char HOSTAPD_UNIX_FILE[] = "/data/misc/wifi/hostapd/wlan0";
|
||||
+static const char HOSTAPD_UNIX_FILE[] = "/data/misc/wifi/hostapd/ap0";
|
||||
static const char HOSTAPD_SOCKETS_DIR[] = "/data/misc/wifi/sockets";
|
||||
static const char HOSTAPD_DHCP_DIR[] = "/data/misc/dhcp";
|
||||
#endif
|
||||
@@ -161,7 +161,7 @@
|
||||
|
||||
if (!pid) {
|
||||
ensure_entropy_file_exists();
|
||||
- if (execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE,
|
||||
+ if (execl(HOSTAPD_BIN_FILE, HOSTAPD_BIN_FILE, "-d",
|
||||
"-e", WIFI_ENTROPY_FILE,
|
||||
HOSTAPD_CONF_FILE, (char *) NULL)) {
|
||||
ALOGE("execl failed (%s)", strerror(errno));
|
||||
@@ -246,7 +246,7 @@
|
||||
asprintf(&wbuf, "interface=%s\ndriver=nl80211\nctrl_interface="
|
||||
"/data/misc/wifi/hostapd\nssid=%s\nchannel=%d\nieee80211n=1\n"
|
||||
"hw_mode=g\nignore_broadcast_ssid=%d\nwowlan_triggers=any\n",
|
||||
- argv[2], argv[3], channel, hidden);
|
||||
+ /*argv[2]*/"ap0", argv[3], channel, hidden);
|
||||
|
||||
if (argc > 7) {
|
||||
if (!strcmp(argv[6], "wpa-psk")) {
|
Loading…
Reference in New Issue