FM: Use btconfigstore interface to fetch vendor features

 Use btconfigstore interface to dynamically set and get property.

CRs-Fixed: 2445111
Change-Id: I42ed713a0ee2d1ae8be51816c3555d4c114d4153
diff --git a/jni/android_hardware_fm.cpp b/jni/android_hardware_fm.cpp
index 451cbf0..1a5cbba 100644
--- a/jni/android_hardware_fm.cpp
+++ b/jni/android_hardware_fm.cpp
@@ -663,17 +663,37 @@
     fm_enable_softmute_cb
 };
 /* native interface */
+
+static bool is_soc_pronto() {
+    if(strcmp(soc_name, "pronto") == 0)
+        return true;
+    else
+        return false;
+}
+
+static void get_property(int ptype, char *value)
+{
+    std::vector<vendor_property_t> vPropList;
+    bt_configstore_intf->get_vendor_properties(ptype, vPropList);
+
+    for (auto&& vendorProp : vPropList) {
+        if (vendorProp.type == ptype) {
+            strlcpy(value, vendorProp.value,PROPERTY_VALUE_MAX);
+        }
+    }
+}
+
 static jint android_hardware_fmradio_FmReceiverJNI_acquireFdNative
         (JNIEnv* env, jobject thiz, jstring path)
 {
     int fd;
     int i, retval=0, err;
     char value[PROPERTY_VALUE_MAX] = {'\0'};
-    char versionStr[40] = {'\0'};
     int init_success = 0;
     jboolean isCopy;
     v4l2_capability cap;
     const char* radio_path = env->GetStringUTFChars(path, &isCopy);
+
     if(radio_path == NULL){
         return FM_JNI_FAILURE;
     }
@@ -689,39 +709,33 @@
 
     ALOGD("VIDIOC_QUERYCAP returns :%d: version: %d \n", err , cap.version );
 
-    if( err >= 0 ) {
-       ALOGD("Driver Version(Same as ChipId): %x \n",  cap.version );
-       /*Conver the integer to string */
-       snprintf(versionStr, sizeof(versionStr), "%d", cap.version);
-       property_set("vendor.hw.fm.version", versionStr);
-    } else {
-       close(fd);
-       return FM_JNI_FAILURE;
-    }
-
-    if ((strcmp(soc_name, "rome") != 0) && (strcmp(soc_name, "hastings") != 0))
+    if (is_soc_pronto())
     {
        /*Set the mode for soc downloader*/
-       property_set("vendor.hw.fm.mode", "normal");
-       /* Need to clear the hw.fm.init firstly */
-       property_set("vendor.hw.fm.init", "0");
-       property_set("ctl.start", "fm_dl");
-       sched_yield();
-       for(i=0; i<45; i++) {
-         property_get("vendor.hw.fm.init", value, NULL);
-         if (strcmp(value, "1") == 0) {
-            init_success = 1;
-            break;
-         } else {
-            usleep(WAIT_TIMEOUT);
-         }
-       }
-       ALOGE("init_success:%d after %f seconds \n", init_success, 0.2*i);
-       if(!init_success) {
-         property_set("ctl.stop", "fm_dl");
-         // close the fd(power down)
-         close(fd);
-         return FM_JNI_FAILURE;
+       if (bt_configstore_intf != NULL) {
+           bt_configstore_intf->set_vendor_property(FM_PROP_HW_MODE, "normal");
+
+          /* Need to clear the hw.fm.init firstly */
+          bt_configstore_intf->set_vendor_property(FM_PROP_HW_INIT, "0");
+          bt_configstore_intf->set_vendor_property(FM_PROP_CTL_START, "fm_dl");
+
+          sched_yield();
+          for(i=0; i<45; i++) {
+              get_property(FM_PROP_HW_INIT, value);
+              if (strcmp(value, "1") == 0) {
+                  init_success = 1;
+                  break;
+              } else {
+                  usleep(WAIT_TIMEOUT);
+              }
+          }
+          ALOGE("init_success:%d after %f seconds \n", init_success, 0.2*i);
+          if(!init_success) {
+             bt_configstore_intf->set_vendor_property(FM_PROP_CTL_STOP,"fm_dl");
+             // close the fd(power down)
+             close(fd);
+             return FM_JNI_FAILURE;
+          }
        }
     }
     return fd;
@@ -735,9 +749,9 @@
     int cleanup_success = 0;
     char retval =0;
 
-    if ((strcmp(soc_name, "rome") != 0) && (strcmp(soc_name, "hastings") != 0))
+    if (is_soc_pronto() && bt_configstore_intf != NULL)
     {
-       property_set("ctl.stop", "fm_dl");
+        bt_configstore_intf->set_vendor_property(FM_PROP_CTL_STOP,"fm_dl");
     }
     close(fd);
     return FM_JNI_SUCCESS;
@@ -749,6 +763,7 @@
     else
         return false;
 }
+
 /********************************************************************
  * Current JNI
  *******************************************************************/
@@ -1204,29 +1219,33 @@
     int band;
     int err = 0;
 
-    if ((strcmp(soc_name, "rome") != 0) && (strcmp(soc_name, "hastings") != 0))
+    if (is_soc_pronto() && bt_configstore_intf != NULL)
     {
-       /*Enable/Disable the WAN avoidance*/
-       property_set("vendor.hw.fm.init", "0");
-       if (aValue)
-          property_set("vendor.hw.fm.mode", "wa_enable");
-       else
-          property_set("vendor.hw.fm.mode", "wa_disable");
+        /* Need to clear the hw.fm.init firstly */
+        bt_configstore_intf->set_vendor_property(FM_PROP_HW_INIT, "0");
 
-       property_set("ctl.start", "fm_dl");
-       sched_yield();
-       for(i=0; i<10; i++) {
-          property_get("vendor.hw.fm.init", value, NULL);
-          if (strcmp(value, "1") == 0) {
-             init_success = 1;
-             break;
-          } else {
-             usleep(WAIT_TIMEOUT);
-          }
-       }
+        /*Enable/Disable the WAN avoidance*/
+        if (aValue)
+            bt_configstore_intf->set_vendor_property(FM_PROP_HW_MODE, "wa_enable");
+        else
+            bt_configstore_intf->set_vendor_property(FM_PROP_HW_MODE, "wa_disable");
+
+        bt_configstore_intf->set_vendor_property(FM_PROP_CTL_START, "fm_dl");
+
+        sched_yield();
+        for(i=0; i<10; i++) {
+            get_property(FM_PROP_HW_INIT, value);
+
+            if (strcmp(value, "1") == 0) {
+                init_success = 1;
+                break;
+            } else {
+                usleep(WAIT_TIMEOUT);
+            }
+        }
        ALOGE("init_success:%d after %f seconds \n", init_success, 0.2*i);
 
-       property_get("vendor.notch.value", notch, NULL);
+       get_property(FM_PROP_NOTCH_VALUE, notch);
        ALOGE("Notch = %s",notch);
        if (!strncmp("HIGH",notch,strlen("HIGH")))
            band = HIGH_BAND;
@@ -1256,33 +1275,10 @@
 /* native interface */
 static jint android_hardware_fmradio_FmReceiverJNI_setAnalogModeNative(JNIEnv * env, jobject thiz, jboolean aValue)
 {
-    int i=0;
-    char value[PROPERTY_VALUE_MAX] = {'\0'};
-    char firmwareVersion[80];
-
-    if ((strcmp(soc_name, "rome") != 0) && (strcmp(soc_name, "hastings") != 0))
-    {
-       /*Enable/Disable Analog Mode FM*/
-       property_set("vendor.hw.fm.init", "0");
-       property_set("vendor.hw.fm.mode","config_dac");
-       property_set("ctl.start", "fm_dl");
-       sched_yield();
-       for(i=0; i<10; i++) {
-          property_get("vendor.hw.fm.init", value, NULL);
-          if (strcmp(value, "1") == 0) {
-             return 1;
-          } else {
-             usleep(WAIT_TIMEOUT);
-          }
-       }
-    }
-
+    /*DAC configuration is applicable only msm7627a target*/
     return 0;
 }
 
-
-
-
 /*
  * Interfaces added for Tx
 */