audio: add Dual MIC scenario in call feature
- Dual MIC solution(Fluence) feature in Built-in MIC used scenarioes.
1. Handset
2. 3-Pole Headphones
Change-Id: I5cb7d909785ac583ced01276b987c4ba811d8404
diff --git a/alsa_sound/Android.mk b/alsa_sound/Android.mk
index b3ef6ec..dcf51c9 100644
--- a/alsa_sound/Android.mk
+++ b/alsa_sound/Android.mk
@@ -13,6 +13,10 @@
LOCAL_CFLAGS := -D_POSIX_SOURCE
LOCAL_CFLAGS += -DQCOM_CSDCLIENT_ENABLED
+ifeq ($(strip $(BOARD_USES_FLUENCE_INCALL)),true)
+LOCAL_CFLAGS += -DUSES_FLUENCE_INCALL
+endif
+
LOCAL_SRC_FILES := \
AudioHardwareALSA.cpp \
AudioStreamOutALSA.cpp \
@@ -108,6 +112,10 @@
LOCAL_CFLAGS := -D_POSIX_SOURCE -Wno-multichar
+ifeq ($(strip $(BOARD_USES_FLUENCE_INCALL)),true)
+LOCAL_CFLAGS += -DUSES_FLUENCE_INCALL
+endif
+
ifneq ($(ALSA_DEFAULT_SAMPLE_RATE),)
LOCAL_CFLAGS += -DALSA_DEFAULT_SAMPLE_RATE=$(ALSA_DEFAULT_SAMPLE_RATE)
endif
diff --git a/alsa_sound/AudioHardwareALSA.cpp b/alsa_sound/AudioHardwareALSA.cpp
index d108d22..4c63990 100644
--- a/alsa_sound/AudioHardwareALSA.cpp
+++ b/alsa_sound/AudioHardwareALSA.cpp
@@ -98,7 +98,11 @@
musbPlaybackState = 0;
musbRecordingState = 0;
#endif
+#ifdef USES_FLUENCE_INCALL
+ mDevSettingsFlag |= TTY_OFF | DMIC_FLAG;
+#else
mDevSettingsFlag |= TTY_OFF;
+#endif
mBluetoothVGS = false;
mFusion3Platform = false;
diff --git a/alsa_sound/alsa_default.cpp b/alsa_sound/alsa_default.cpp
old mode 100755
new mode 100644
index 7c34da9..6c329e8
--- a/alsa_sound/alsa_default.cpp
+++ b/alsa_sound/alsa_default.cpp
@@ -73,7 +73,11 @@
static char curTxUCMDevice[50];
static int fluence_mode;
static int fmVolume;
+#ifdef USES_FLUENCE_INCALL
+static uint32_t mDevSettingsFlag = TTY_OFF | DMIC_FLAG;
+#else
static uint32_t mDevSettingsFlag = TTY_OFF;
+#endif
static int btsco_samplerate = 8000;
static bool pflag = false;
static ALSAUseCaseList mUseCaseList;
@@ -1236,7 +1240,7 @@
if (!(mDevSettingsFlag & TTY_OFF) &&
(callMode == AudioSystem::MODE_IN_CALL) &&
((devices & AudioSystem::DEVICE_OUT_WIRED_HEADSET) ||
- (devices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE))) {
+ (devices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE))) {
#ifdef QCOM_ANC_HEADSET_ENABLED
||
(devices & AudioSystem::DEVICE_OUT_ANC_HEADSET) ||
@@ -1320,7 +1324,7 @@
} else {
if (!(mDevSettingsFlag & TTY_OFF) &&
(callMode == AudioSystem::MODE_IN_CALL) &&
- ((devices & AudioSystem::DEVICE_IN_WIRED_HEADSET))) {
+ ((devices & AudioSystem::DEVICE_IN_WIRED_HEADSET))) {
#ifdef QCOM_ANC_HEADSET_ENABLED
||(devices & AudioSystem::DEVICE_IN_ANC_HEADSET))) {
#endif
@@ -1340,6 +1344,17 @@
return strdup(SND_USE_CASE_DEV_HANDSET); /* HANDSET TX */
} else {
if (mDevSettingsFlag & DMIC_FLAG) {
+#ifdef USES_FLUENCE_INCALL
+ if(callMode == AudioSystem::MODE_IN_CALL) {
+ if (fluence_mode == FLUENCE_MODE_ENDFIRE) {
+ return strdup(SND_USE_CASE_DEV_DUAL_MIC_ENDFIRE); /* DUALMIC EF TX */
+ } else if (fluence_mode == FLUENCE_MODE_BROADSIDE) {
+ return strdup(SND_USE_CASE_DEV_DUAL_MIC_BROADSIDE); /* DUALMIC BS TX */
+ } else {
+ return strdup(SND_USE_CASE_DEV_HANDSET); /* BUILTIN-MIC TX */
+ }
+ }
+#else
if (((rxDevice != NULL) &&
!strncmp(rxDevice, SND_USE_CASE_DEV_SPEAKER,
(strlen(SND_USE_CASE_DEV_SPEAKER)+1))) ||
@@ -1357,15 +1372,16 @@
return strdup(SND_USE_CASE_DEV_DUAL_MIC_BROADSIDE); /* DUALMIC BS TX */
}
}
+#endif
} else if (mDevSettingsFlag & QMIC_FLAG){
return strdup(SND_USE_CASE_DEV_QUAD_MIC);
- }
+ }
#ifdef QCOM_SSR_ENABLED
else if (mDevSettingsFlag & SSRQMIC_FLAG){
ALOGV("return SSRQMIC_FLAG: 0x%x devices:0x%x",mDevSettingsFlag,devices);
// Mapping for quad mic input device.
return strdup(SND_USE_CASE_DEV_SSR_QUAD_MIC); /* SSR Quad MIC */
- }
+ }
#endif
else {
return strdup(SND_USE_CASE_DEV_LINE); /* BUILTIN-MIC TX */