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 */