fm: Check proper FM state before enabling FM Rx/Tx

FM Tx on/off does not work when following steps are
followed: Enable FM Rx, launch Tx app, unplug headset,
wait untill Tx turns on, plug in headset, wait for Tx
to turn off, go to home screen, unplug the headset
and turn on/off Tx.

Do not update FM state for Rx enable requests while
Tx is on or vice versa

Change-Id: I8bd5d6d7d027e083c32d1cbf69689f96bfa58858
CRs-Fixed: 485895
diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index ac32ff9..a474680 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -433,14 +433,16 @@
       if (state == FMState_Rx_Turned_On || state == FMState_Srch_InProg) {
          Log.d(TAG, "enable: FM already turned On and running");
          return status;
-      }
-      else if (state == subPwrLevel_FMTurning_Off) {
+      }else if (state == subPwrLevel_FMTurning_Off) {
          Log.v(TAG, "FM is in the process of turning off.Pls wait for sometime.");
          return status;
-      }
-      else if (state == subPwrLevel_FMRx_Starting) {
+      }else if (state == subPwrLevel_FMRx_Starting) {
          Log.v(TAG, "FM is in the process of turning On.Pls wait for sometime.");
          return status;
+      }else if ((state == FMState_Tx_Turned_On)
+                || (state == subPwrLevel_FMTx_Starting)) {
+         Log.v(TAG, "FM Tx is turned on or in the process of turning on.");
+         return status;
       }
 
       setFMPowerState(subPwrLevel_FMRx_Starting);
diff --git a/qcom/fmradio/FmTransmitter.java b/qcom/fmradio/FmTransmitter.java
index f13e4a7..287da3c 100644
--- a/qcom/fmradio/FmTransmitter.java
+++ b/qcom/fmradio/FmTransmitter.java
@@ -146,18 +146,23 @@
     *
     */
    public boolean enable (FmConfig configSettings){
-      boolean status = true;
+      boolean status = false;
 
       int state = getFMState();
       if (state == FMState_Tx_Turned_On) {
           Log.d(TAG, "enable: FM Tx already turned On and running");
           return status;
-      } else if (state == subPwrLevel_FMTurning_Off) {
+      }else if (state == subPwrLevel_FMTurning_Off) {
           Log.v(TAG, "FM is in the process of turning off.Pls wait for sometime.");
           return status;
-      } else if(state == subPwrLevel_FMTx_Starting) {
+      }else if((state == subPwrLevel_FMTx_Starting)
+                ||(state == subPwrLevel_FMRx_Starting)) {
           Log.v(TAG, "FM is in the process of turning On.Pls wait for sometime.");
           return status;
+      }else if((state == FMState_Srch_InProg)
+                ||(state == FMState_Rx_Turned_On)) {
+          Log.v(TAG, "FM Rx is turned on");
+          return status;
       }
       setFMPowerState(subPwrLevel_FMTx_Starting);
       Log.v(TAG, "enable: CURRENT-STATE : FMOff ---> NEW-STATE : FMTxStarting");