FM: Extract AF_LIST data

- Extracting wrong data from AF_LIST.
- Extract AF_LIST data for wcn3660 target based.

Change-Id: I58b04ddc23b74f654216f64c28a37cc1db2567f8
CRs-Fixed: 476076
diff --git a/fmapp/src/com/codeaurora/fmradio/FMRadioService.java b/fmapp/src/com/codeaurora/fmradio/FMRadioService.java
index 909a5a4..20f0262 100644
--- a/fmapp/src/com/codeaurora/fmradio/FMRadioService.java
+++ b/fmapp/src/com/codeaurora/fmradio/FMRadioService.java
@@ -2890,6 +2890,7 @@
       public void FmRxEvRdsAfInfo()
       {
          Log.d(LOGTAG, "FmRxEvRdsAfInfo");
+         mReceiver.getAFInfo();
       }
       public void FmRxEvRTPlus()
       {
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index a474680..533814b 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -29,6 +29,7 @@
 package qcom.fmradio;
 
 import android.util.Log;
+import android.os.SystemProperties;
 
 /**
  * This class contains all interfaces and types needed to
@@ -1528,6 +1529,13 @@
       return mRdsData;
    }
 
+   public boolean IsSmdTransportLayer() {
+       String transportLayer = SystemProperties.get("ro.qualcomm.bt.hci_transport");
+       if (transportLayer.equals("smd"))
+           return true;
+       else
+           return false;
+   }
    /*==============================================================
    FUNCTION:  getAFInfo
    ==============================================================*/
@@ -1553,26 +1561,53 @@
    public int[] getAFInfo() {
 
       byte [] buff = new byte[STD_BUF_SIZE];
-      int  [] AfList = new int [40];
-      int lowerBand;
+      int  [] AfList = new int [50];
+      int lowerBand, i;
+      int tunedFreq, PI, size_AFLIST;
 
       FmReceiverJNI.getBufferNative(sFd, buff, TAVARUA_BUF_AF_LIST);
 
-      if ((buff[4] <= 0) || (buff[4] > 25))
-        return null;
+      if (IsSmdTransportLayer()) {
+          Log.d(TAG, "SMD transport layer");
 
-      lowerBand = FmReceiverJNI.getLowerBandNative(sFd);
-      Log.d (TAG, "Low band " + lowerBand);
+          tunedFreq = (buff[0] & 0xFF) |
+                      ((buff[1] & 0xFF) << 8) |
+                      ((buff[2] & 0xFF) << 16) |
+                      ((buff[3] & 0xFF) << 24) ;
+          Log.d(TAG, "tunedFreq = " +tunedFreq);
 
-      Log.d (TAG, "AF_buff 0: " + (buff[0] & 0xff));
-      Log.d (TAG, "AF_buff 1: " + (buff[1] & 0xff));
-      Log.d (TAG, "AF_buff 2: " + (buff[2] & 0xff));
-      Log.d (TAG, "AF_buff 3: " + (buff[3] & 0xff));
-      Log.d (TAG, "AF_buff 4: " + (buff[4] & 0xff));
+          PI = (buff[4] & 0xFF) |
+               ((buff[5] & 0xFF) << 8);
+          Log.d(TAG, "PI: " + PI);
 
-      for (int i=0; i<buff[4]; i++) {
-        AfList[i] = ((buff[i+4] & 0xFF) * 1000) + lowerBand;
-        Log.d (TAG, "AF : " + AfList[i]);
+          size_AFLIST = buff[6] & 0xFF;
+          Log.d(TAG, "size_AFLIST : " +size_AFLIST);
+
+          for (i = 0;i < size_AFLIST;i++) {
+                AfList[i] = (buff[6 + i * 4 + 1] & 0xFF) |
+                           ((buff[6 + i * 4 + 2] & 0xFF) << 8) |
+                           ((buff[6 + i * 4 + 3] & 0xFF) << 16) |
+                           ((buff[6 + i * 4 + 4] & 0xFF) << 24) ;
+                Log.d(TAG, "AF: " + AfList[i]);
+          }
+      } else {
+
+          if ((buff[4] <= 0) || (buff[4] > 25))
+              return null;
+
+          lowerBand = FmReceiverJNI.getLowerBandNative(sFd);
+          Log.d (TAG, "Low band " + lowerBand);
+
+          Log.d (TAG, "AF_buff 0: " + (buff[0] & 0xff));
+          Log.d (TAG, "AF_buff 1: " + (buff[1] & 0xff));
+          Log.d (TAG, "AF_buff 2: " + (buff[2] & 0xff));
+          Log.d (TAG, "AF_buff 3: " + (buff[3] & 0xff));
+          Log.d (TAG, "AF_buff 4: " + (buff[4] & 0xff));
+
+          for (i=0; i<buff[4]; i++) {
+               AfList[i] = ((buff[i+4] & 0xFF) * 1000) + lowerBand;
+               Log.d (TAG, "AF : " + AfList[i]);
+          }
       }
 
       return AfList;