FM: Fix the issue state machine
As the state is setting to OFF state, next enable is processing
even though cleanup not happend for previous turn OFF.
Handle the disable response then set the state to OFF.
CRs-Fixed: 916321
Change-Id: Ieb8aae20cd859084479c1446f24243ac5f0fbcd0
diff --git a/qcom/fmradio/FmRxEventListner.java b/qcom/fmradio/FmRxEventListner.java
index 0f73a5c..0ad7c0c 100644
--- a/qcom/fmradio/FmRxEventListner.java
+++ b/qcom/fmradio/FmRxEventListner.java
@@ -213,18 +213,18 @@
case 18:
Log.d(TAG, "Got RADIO_DISABLED");
if (FmTransceiver.getFMPowerState() == FmTransceiver.subPwrLevel_FMTurning_Off) {
+ FmTransceiver.release("/dev/radio0");
+ cb.FmRxEvDisableReceiver();
/*Set the state as FMOff */
FmTransceiver.setFMPowerState(FmTransceiver.FMState_Turned_Off);
Log.v(TAG, "RxEvtList: CURRENT-STATE : FMTurningOff ---> NEW-STATE : FMOff");
- FmTransceiver.release("/dev/radio0");
- cb.FmRxEvDisableReceiver();
Thread.currentThread().interrupt();
} else {
- FmTransceiver.setFMPowerState(FmTransceiver.FMState_Turned_Off);
Log.d(TAG, "Unexpected RADIO_DISABLED recvd");
- Log.v(TAG, "RxEvtList: CURRENT-STATE : FMRxOn ---> NEW-STATE : FMOff");
FmTransceiver.release("/dev/radio0");
cb.FmRxEvRadioReset();
+ FmTransceiver.setFMPowerState(FmTransceiver.FMState_Turned_Off);
+ Log.v(TAG, "RxEvtList: CURRENT-STATE : FMRxOn ---> NEW-STATE : FMOff");
Thread.currentThread().interrupt();
}
break;